aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.babelrc9
-rw-r--r--.eslintignore1
-rw-r--r--.eslintrc11
-rw-r--r--.gitignore6
-rw-r--r--.nvmrc2
-rw-r--r--.travis.yml6
-rw-r--r--CHANGELOG.md65
-rw-r--r--appveyor.yml10
-rw-r--r--docs/example-feature/actions.js10
-rw-r--r--docs/example-feature/api.js5
-rw-r--r--docs/example-feature/index.js36
-rw-r--r--docs/example-feature/state.js14
-rw-r--r--docs/example-feature/store.js32
-rw-r--r--electron-builder.yml4
-rw-r--r--gulpfile.babel.js31
-rw-r--r--jest.config.js3
-rw-r--r--lerna.json14
-rw-r--r--package-lock.json18064
-rw-r--r--package.json80
-rw-r--r--packages/forms/.gitignore2
-rw-r--r--packages/forms/package-lock.json220
-rw-r--r--packages/forms/package.json39
-rw-r--r--packages/forms/src/button/index.tsx275
-rw-r--r--packages/forms/src/error/index.tsx29
-rw-r--r--packages/forms/src/error/styles.ts9
-rw-r--r--packages/forms/src/index.ts4
-rw-r--r--packages/forms/src/input/index.tsx211
-rw-r--r--packages/forms/src/input/scorePassword.ts42
-rw-r--r--packages/forms/src/input/styles.ts101
-rw-r--r--packages/forms/src/label/index.tsx51
-rw-r--r--packages/forms/src/label/styles.ts12
-rw-r--r--packages/forms/src/select/index.tsx445
-rw-r--r--packages/forms/src/toggle/index.tsx117
-rw-r--r--packages/forms/src/typings/generic.ts17
-rw-r--r--packages/forms/src/wrapper/index.tsx37
-rw-r--r--packages/forms/src/wrapper/styles.ts5
-rw-r--r--packages/forms/tsconfig.json12
-rw-r--r--packages/forms/tslint.json3
-rw-r--r--packages/misty.yml11
-rw-r--r--packages/theme/.gitignore2
-rw-r--r--packages/theme/README.md11
-rw-r--r--packages/theme/package-lock.json52
-rw-r--r--packages/theme/package.json29
-rw-r--r--packages/theme/src/index.ts18
-rw-r--r--packages/theme/src/themes/dark/index.ts120
-rw-r--r--packages/theme/src/themes/default/index.ts209
-rw-r--r--packages/theme/src/themes/legacy/index.ts38
-rw-r--r--packages/theme/test/index.test.js17
-rw-r--r--packages/theme/tsconfig.json7
-rw-r--r--packages/theme/tslint.json3
-rw-r--r--packages/typings/package.json22
-rw-r--r--packages/typings/types/mobx-react-form.d.ts1
-rw-r--r--packages/typings/types/react-html-attributes.d.ts1
-rw-r--r--packages/typings/types/react-jss.d.ts1
-rw-r--r--packages/typings/types/react-loader.d.ts45
-rw-r--r--packages/ui/.gitignore2
-rw-r--r--packages/ui/package-lock.json207
-rw-r--r--packages/ui/package.json38
-rw-r--r--packages/ui/src/badge/ProBadge.tsx64
-rw-r--r--packages/ui/src/badge/index.tsx76
-rw-r--r--packages/ui/src/headline/index.tsx71
-rw-r--r--packages/ui/src/icon/index.tsx55
-rw-r--r--packages/ui/src/index.ts6
-rw-r--r--packages/ui/src/infobox/index.tsx204
-rw-r--r--packages/ui/src/loader/index.tsx50
-rw-r--r--packages/ui/src/typings/generic.ts10
-rw-r--r--packages/ui/tsconfig.json12
-rw-r--r--packages/ui/tslint.json3
-rw-r--r--src/actions/index.js8
-rw-r--r--src/actions/lib/actions.js33
-rw-r--r--src/actions/service.js5
-rw-r--r--src/api/PaymentApi.js8
-rw-r--r--src/api/server/ServerApi.js198
-rw-r--r--src/api/utils/auth.js28
-rw-r--r--src/app.js7
-rw-r--r--src/components/layout/AppLayout.js78
-rw-r--r--src/components/layout/Sidebar.js49
-rw-r--r--src/components/services/content/ServiceView.js139
-rw-r--r--src/components/services/content/ServiceWebview.js145
-rw-r--r--src/components/services/content/Services.js7
-rw-r--r--src/components/services/content/WebviewCrashHandler.js7
-rw-r--r--src/components/services/tabs/Tabbar.js4
-rw-r--r--src/components/settings/account/AccountDashboard.js199
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js46
-rw-r--r--src/components/settings/services/EditServiceForm.js16
-rw-r--r--src/components/settings/services/ServicesDashboard.js2
-rw-r--r--src/components/settings/settings/EditSettingsForm.js9
-rw-r--r--src/components/settings/team/TeamDashboard.js152
-rw-r--r--src/components/settings/user/EditUserForm.js25
-rw-r--r--src/components/subscription/SubscriptionForm.js67
-rw-r--r--src/components/subscription/SubscriptionPopup.js3
-rw-r--r--src/components/ui/AppLoader/index.js4
-rw-r--r--src/components/ui/FullscreenLoader/index.js4
-rw-r--r--src/components/ui/Infobox.js17
-rw-r--r--src/components/ui/Modal/index.js26
-rw-r--r--src/components/ui/Modal/styles.js1
-rw-r--r--src/components/ui/PremiumFeatureContainer/index.js21
-rw-r--r--src/components/ui/PremiumFeatureContainer/styles.js5
-rw-r--r--src/components/ui/ServiceIcon.js67
-rw-r--r--src/components/ui/WebviewLoader/index.js18
-rw-r--r--src/config.js35
-rw-r--r--src/containers/auth/AuthLayoutContainer.js38
-rw-r--r--src/containers/auth/ImportScreen.js5
-rw-r--r--src/containers/auth/InviteScreen.js5
-rw-r--r--src/containers/auth/LoginScreen.js5
-rw-r--r--src/containers/auth/PasswordScreen.js5
-rw-r--r--src/containers/auth/PricingScreen.js5
-rw-r--r--src/containers/auth/SignupScreen.js5
-rw-r--r--src/containers/auth/WelcomeScreen.js5
-rw-r--r--src/containers/layout/AppLayoutContainer.js21
-rw-r--r--src/containers/settings/AccountScreen.js56
-rw-r--r--src/containers/settings/EditServiceScreen.js45
-rw-r--r--src/containers/settings/EditSettingsScreen.js21
-rw-r--r--src/containers/settings/EditUserScreen.js49
-rw-r--r--src/containers/settings/InviteScreen.js6
-rw-r--r--src/containers/settings/RecipesScreen.js6
-rw-r--r--src/containers/settings/ServicesScreen.js5
-rw-r--r--src/containers/settings/SettingsWindow.js2
-rw-r--r--src/containers/settings/TeamScreen.js57
-rw-r--r--src/containers/subscription/SubscriptionFormScreen.js39
-rw-r--r--src/electron/ipc-api/autoUpdate.js9
-rw-r--r--src/environment.js29
-rw-r--r--src/features/announcements/actions.js10
-rw-r--r--src/features/announcements/api.js33
-rw-r--r--src/features/announcements/components/AnnouncementScreen.js286
-rw-r--r--src/features/announcements/index.js32
-rw-r--r--src/features/announcements/store.js144
-rw-r--r--src/features/basicAuth/Component.js1
-rw-r--r--src/features/basicAuth/index.js12
-rw-r--r--src/features/delayApp/Component.js2
-rw-r--r--src/features/delayApp/index.js11
-rwxr-xr-xsrc/features/settingsWS/actions.js10
-rwxr-xr-xsrc/features/settingsWS/index.js29
-rwxr-xr-xsrc/features/settingsWS/state.js13
-rwxr-xr-xsrc/features/settingsWS/store.js130
-rw-r--r--src/features/shareFranz/Component.js166
-rw-r--r--src/features/shareFranz/index.js52
-rw-r--r--src/features/spellchecker/index.js6
-rw-r--r--src/features/utils/ActionBinding.js29
-rw-r--r--src/features/utils/FeatureStore.js40
-rw-r--r--src/features/utils/FeatureStore.test.js92
-rw-r--r--src/features/workspaces/actions.js26
-rw-r--r--src/features/workspaces/api.js66
-rw-r--r--src/features/workspaces/components/CreateWorkspaceForm.js100
-rw-r--r--src/features/workspaces/components/EditWorkspaceForm.js212
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.js246
-rw-r--r--src/features/workspaces/components/WorkspaceDrawerItem.js137
-rw-r--r--src/features/workspaces/components/WorkspaceItem.js45
-rw-r--r--src/features/workspaces/components/WorkspaceServiceListItem.js75
-rw-r--r--src/features/workspaces/components/WorkspaceSwitchingIndicator.js91
-rw-r--r--src/features/workspaces/components/WorkspacesDashboard.js209
-rw-r--r--src/features/workspaces/containers/EditWorkspaceScreen.js60
-rw-r--r--src/features/workspaces/containers/WorkspacesScreen.js42
-rw-r--r--src/features/workspaces/index.js37
-rw-r--r--src/features/workspaces/models/Workspace.js25
-rw-r--r--src/features/workspaces/store.js323
-rw-r--r--src/helpers/asar-helpers.js3
-rw-r--r--src/helpers/i18n-helpers.js27
-rw-r--r--src/helpers/url-helpers.js15
-rw-r--r--src/i18n/globalMessages.js20
-rw-r--r--src/i18n/languages.js3
-rw-r--r--src/i18n/locales/ca.json78
-rw-r--r--src/i18n/locales/cs.json88
-rw-r--r--src/i18n/locales/de.json152
-rw-r--r--src/i18n/locales/defaultMessages.json4603
-rw-r--r--src/i18n/locales/el.json74
-rw-r--r--src/i18n/locales/en-US.json498
-rw-r--r--src/i18n/locales/es.json84
-rw-r--r--src/i18n/locales/fr.json94
-rw-r--r--src/i18n/locales/ga.json70
-rw-r--r--src/i18n/locales/hr.json70
-rw-r--r--src/i18n/locales/hu.json150
-rw-r--r--src/i18n/locales/id.json100
-rw-r--r--src/i18n/locales/it.json106
-rw-r--r--src/i18n/locales/ja.json88
-rw-r--r--src/i18n/locales/ka.json70
-rw-r--r--src/i18n/locales/nl-BE.json252
-rw-r--r--src/i18n/locales/nl.json88
-rw-r--r--src/i18n/locales/pl.json96
-rw-r--r--src/i18n/locales/pt-BR.json88
-rw-r--r--src/i18n/locales/pt.json138
-rw-r--r--src/i18n/locales/ru.json116
-rw-r--r--src/i18n/locales/sk.json70
-rw-r--r--src/i18n/locales/sr.json70
-rw-r--r--src/i18n/locales/tr.json132
-rw-r--r--src/i18n/locales/uk.json122
-rw-r--r--src/i18n/locales/whitelist_en-US.json2
-rw-r--r--src/i18n/locales/zh-TW.json152
-rw-r--r--src/i18n/manage-translations.js9
-rw-r--r--src/i18n/messages/src/components/auth/Import.json54
-rw-r--r--src/i18n/messages/src/components/auth/Invite.json93
-rw-r--r--src/i18n/messages/src/components/auth/Login.json119
-rw-r--r--src/i18n/messages/src/components/auth/Password.json93
-rw-r--r--src/i18n/messages/src/components/auth/Pricing.json54
-rw-r--r--src/i18n/messages/src/components/auth/Signup.json158
-rw-r--r--src/i18n/messages/src/components/auth/Welcome.json28
-rw-r--r--src/i18n/messages/src/components/layout/AppLayout.json80
-rw-r--r--src/i18n/messages/src/components/layout/Sidebar.json80
-rw-r--r--src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json67
-rw-r--r--src/i18n/messages/src/components/services/content/ServiceDisabled.json28
-rw-r--r--src/i18n/messages/src/components/services/content/Services.json28
-rw-r--r--src/i18n/messages/src/components/services/content/WebviewCrashHandler.json54
-rw-r--r--src/i18n/messages/src/components/services/tabs/TabItem.json119
-rw-r--r--src/i18n/messages/src/components/settings/account/AccountDashboard.json197
-rw-r--r--src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json106
-rw-r--r--src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json106
-rw-r--r--src/i18n/messages/src/components/settings/services/EditServiceForm.json288
-rw-r--r--src/i18n/messages/src/components/settings/services/ServiceError.json54
-rw-r--r--src/i18n/messages/src/components/settings/services/ServiceItem.json41
-rw-r--r--src/i18n/messages/src/components/settings/services/ServicesDashboard.json119
-rw-r--r--src/i18n/messages/src/components/settings/settings/EditSettingsForm.json236
-rw-r--r--src/i18n/messages/src/components/settings/team/TeamDashboard.json80
-rw-r--r--src/i18n/messages/src/components/settings/user/EditUserForm.json80
-rw-r--r--src/i18n/messages/src/components/subscription/SubscriptionForm.json184
-rw-r--r--src/i18n/messages/src/components/subscription/SubscriptionPopup.json28
-rw-r--r--src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json15
-rw-r--r--src/i18n/messages/src/components/ui/WebviewLoader/index.json15
-rw-r--r--src/i18n/messages/src/components/util/ErrorBoundary/index.json28
-rw-r--r--src/i18n/messages/src/containers/settings/EditServiceScreen.json197
-rw-r--r--src/i18n/messages/src/containers/settings/EditSettingsScreen.json158
-rw-r--r--src/i18n/messages/src/containers/settings/EditUserScreen.json119
-rw-r--r--src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json15
-rw-r--r--src/i18n/messages/src/features/delayApp/Component.json41
-rw-r--r--src/i18n/messages/src/features/shareFranz/Component.json93
-rw-r--r--src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json28
-rw-r--r--src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json93
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json106
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json28
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json15
-rw-r--r--src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json106
-rw-r--r--src/i18n/messages/src/helpers/validation-helpers.json67
-rw-r--r--src/i18n/messages/src/i18n/globalMessages.json80
-rw-r--r--src/i18n/messages/src/lib/Menu.json691
-rw-r--r--src/index.js161
-rw-r--r--src/lib/Menu.js218
-rw-r--r--src/lib/Tray.js8
-rw-r--r--src/lib/analytics.js26
-rw-r--r--src/models/Service.js2
-rw-r--r--src/stores/AppStore.js84
-rw-r--r--src/stores/FeaturesStore.js35
-rw-r--r--src/stores/PaymentStore.js17
-rw-r--r--src/stores/RecipePreviewsStore.js3
-rw-r--r--src/stores/RequestStore.js3
-rw-r--r--src/stores/ServicesStore.js30
-rw-r--r--src/stores/UIStore.js14
-rw-r--r--src/stores/UserStore.js32
-rw-r--r--src/stores/index.js4
-rw-r--r--src/stores/lib/Reaction.js19
-rw-r--r--src/stores/lib/Request.js6
-rw-r--r--src/styles/auth.scss2
-rw-r--r--src/styles/badge.scss3
-rw-r--r--src/styles/info-bar.scss4
-rw-r--r--src/styles/layout.scss22
-rw-r--r--src/styles/settings.scss40
-rw-r--r--src/styles/toggle.scss2
-rw-r--r--src/theme/dark/index.js19
-rw-r--r--src/theme/default/index.js35
-rw-r--r--src/webview/contextMenu.js33
-rw-r--r--src/webview/recipe.js56
-rw-r--r--src/webview/spellchecker.js11
-rw-r--r--tsconfig.json7
-rw-r--r--tsconfig.settings.json24
-rw-r--r--tslint.json12
-rw-r--r--uidev/src/app.html12
-rw-r--r--uidev/src/app.tsx125
-rw-r--r--uidev/src/index.tsx9
-rw-r--r--uidev/src/stores/index.ts5
-rw-r--r--uidev/src/stores/stories.ts43
-rw-r--r--uidev/src/stories/badge.stories.tsx31
-rw-r--r--uidev/src/stories/button.stories.tsx102
-rw-r--r--uidev/src/stories/headline.stories.tsx54
-rw-r--r--uidev/src/stories/icon.stories.tsx53
-rw-r--r--uidev/src/stories/infobox.stories.tsx135
-rw-r--r--uidev/src/stories/input.stories.tsx105
-rw-r--r--uidev/src/stories/loader.stories.tsx14
-rw-r--r--uidev/src/stories/select.stories.tsx320
-rw-r--r--uidev/src/stories/toggle.stories.tsx70
-rw-r--r--uidev/src/withTheme/index.tsx50
-rw-r--r--uidev/tsconfig.json14
-rw-r--r--uidev/tslint.json3
-rw-r--r--uidev/webpack.config.js29
-rw-r--r--webpack.config.base.js24
282 files changed, 31551 insertions, 8838 deletions
diff --git a/.babelrc b/.babelrc
index 299d5b4a0..6277978b9 100644
--- a/.babelrc
+++ b/.babelrc
@@ -25,7 +25,12 @@
25 } 25 }
26 ], 26 ],
27 "@babel/proposal-throw-expressions", 27 "@babel/proposal-throw-expressions",
28 "@babel/syntax-dynamic-import" 28 "@babel/syntax-dynamic-import",
29 ["react-intl", {
30 "messagesDir": "./src/i18n/messages/",
31 "enforceDescriptions": false,
32 "extractSourceLocation": true
33 }]
29 ], 34 ],
30 "sourceMaps": "inline" 35 "sourceMaps": "inline"
31} \ No newline at end of file 36}
diff --git a/.eslintignore b/.eslintignore
index 3c0160d04..f01f6d6e6 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,2 +1,3 @@
1build/ 1build/
2out/ 2out/
3packages/*/lib
diff --git a/.eslintrc b/.eslintrc
index 1843e560e..c85bee1fa 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,7 +1,10 @@
1{ 1{
2 "parser": "babel-eslint", 2 "parser": "babel-eslint",
3 "extends": "eslint-config-airbnb", 3 "extends": "eslint-config-airbnb",
4 "plugins": ["jest"],
4 "rules": { 5 "rules": {
6 "consistent-return": 0,
7 "no-param-reassign": 0,
5 "import/extensions": 0, 8 "import/extensions": 0,
6 "import/no-extraneous-dependencies": 0, 9 "import/no-extraneous-dependencies": 0,
7 "import/no-unresolved": [2, { 10 "import/no-unresolved": [2, {
@@ -13,7 +16,7 @@
13 "react/jsx-filename-extension": [1, { 16 "react/jsx-filename-extension": [1, {
14 "extensions": [".js", ".jsx"] 17 "extensions": [".js", ".jsx"]
15 }], 18 }],
16 "react/forbid-prop-types": 1, 19 "react/forbid-prop-types": 0,
17 "react/destructuring-assignment": 1, 20 "react/destructuring-assignment": 1,
18 "prefer-destructuring": 1, 21 "prefer-destructuring": 1,
19 "no-underscore-dangle": 0, 22 "no-underscore-dangle": 0,
@@ -51,6 +54,10 @@
51 "Worker": true, 54 "Worker": true,
52 "atob": true, 55 "atob": true,
53 "btoa": true, 56 "btoa": true,
54 "ga": true 57 "ga": true,
58 "mocha": true
59 },
60 "env": {
61 "jest/globals": true
55 } 62 }
56} 63}
diff --git a/.gitignore b/.gitignore
index 0a12f84d9..d38c475bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,14 @@
1.idea
1node_modules 2node_modules
2flow-typed 3flow-typed
3out 4out
4.DS_Store 5.DS_Store
6.idea
5build 7build
6.tmp 8.tmp
7.stage 9.stage
8.env 10.env
9yarn-error.log 11yarn-error.log
10npm-debug.log* \ No newline at end of file 12npm-debug.log*
13lerna-debug.log
14uidev/lib
diff --git a/.nvmrc b/.nvmrc
index 714ea4c61..0ca1348de 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
10.13.0 \ No newline at end of file 10.14.0
diff --git a/.travis.yml b/.travis.yml
index 2c2004b3a..3be759099 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,11 +14,15 @@ matrix:
14 14
15language: node_js 15language: node_js
16 16
17install:
18- echo do nothing
19
17before_script: 20before_script:
21- npx lerna bootstrap
18- npm install node-sass -g 22- npm install node-sass -g
19 23
20script: 24script:
21- npm run lint 25- npm run test
22- travis_wait 30 npm run build 26- travis_wait 30 npm run build
23 27
24cache: npm 28cache: npm
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 08fd79aaa..c7a93f2b3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,68 @@
1# [5.1.0](https://github.com/meetfranz/franz/compare/v5.1.0...v5.1.0-beta.1) (2019-04-16)
2
3### Features
4
5* **App:** Added Workspaces for all your daily routines đŸ‰ ([47c1c99](https://github.com/meetfranz/franz/commit/47c1c99))
6* **App:** Added [Team Management](https://meetfranz.com/user/team) đŸ‰ ([47c1c99](https://github.com/meetfranz/franz/commit/47c1c99))
7* **App:** Added Kerberos Support via Command Line Switches ([#1331](https://github.com/meetfranz/franz/issues/1331)) ([@frumania](https://github.com/frumania)) ([a1950d7](https://github.com/meetfranz/franz/commit/a1950d7))
8* **App:** Open changelog in app
9* **App:** Various small fixes and improvements
10
11### General
12
13* **Translations:** Improved translations. **[A million thanks to the amazing community. đŸ‰](http://i18n.meetfranz.com/)**
14* **App:** Update electron to 4.1.4 ([2604914](https://github.com/meetfranz/franz/commit/2604914))
15
16
17# [5.1.0-beta.1](https://github.com/meetfranz/franz/compare/v5.0.1-beta.1...v5.1.0-beta.1) (2019-04-16)
18
19[See 5.1.0 changelog.](#5-1-0--2019-04-16-)
20
21# [5.0.1](https://github.com/meetfranz/franz/compare/v5.0.0...v5.0.1) (2019-03-25)
22
23### Features
24
25* **App:** Add security checks for external URLs ([6e5531a](https://github.com/meetfranz/franz/commit/6e5531a))
26* **Linux:** Add auto updater for Linux AppImage builds ([d641b4e](https://github.com/meetfranz/franz/commit/d641b4e))
27* **Spell check:** Add British English as spell check language ([#1306](https://github.com/meetfranz/franz/issues/1306)) ([67fa325](https://github.com/meetfranz/franz/commit/67fa325))
28* **Windows:** Add option to quit Franz from Taskbar icon ([952fc8b](https://github.com/meetfranz/franz/commit/952fc8b))
29
30### Bug Fixes
31
32* **Linux:** Fix minimized window focusing ([#1304](https://github.com/meetfranz/franz/issues/1304)) ([@skoruppa](https://github.com/skoruppa)) ([5b02c4d](https://github.com/meetfranz/franz/commit/5b02c4d))
33* **Notifications:** Fix notifications & notification click when icon is blob ([03589f6](https://github.com/meetfranz/franz/commit/03589f6))
34* **Service:** Fix service zoom (cmd/ctrl+ & cmd/ctrl-) ([91a0f59](https://github.com/meetfranz/franz/commit/91a0f59))
35* **Service:** Fix shortcut for (un)muting notifications & audio ([1df3342](https://github.com/meetfranz/franz/commit/1df3342))
36* **Windows:** Fix copy & paste in service context menus ([e66fcaa](https://github.com/meetfranz/franz/commit/e66fcaa)), closes [#1316](https://github.com/meetfranz/franz/issues/1316)
37* **Windows:** Fix losing window when "Keep Franz in background" is enabled ([78a3722](https://github.com/meetfranz/franz/commit/78a3722))
38
39### General
40
41* **Translations:** Improved translations. **[A million thanks to the amazing community. đŸ‰](http://i18n.meetfranz.com/)**
42* **App:** Update electron to 4.0.8 ([8336d17](https://github.com/meetfranz/franz/commit/8336d17))
43
44
45# [5.0.1-beta.1](https://github.com/meetfranz/franz/compare/v5.0.0...v5.0.1-beta.1) (2019-03-18)
46
47[See 5.0.1 changelog.](#5-0-1--2019-03-25-)
48
49# [5.0.0](https://github.com/meetfranz/franz/compare/5.0.0-beta.24...5.0.0) (2019-02-15)
50
51### Features
52
53* **Spellchecker:** Add automatic spellcheck language detection ([a5e7171](https://github.com/meetfranz/franz/commit/a5e7171))
54* **Windows:** Add option to quit Franz from Taskbar ([8808601](https://github.com/meetfranz/franz/commit/8808601))
55
56### Bug Fixes
57
58* **App:** Various bugfixes and improvements
59
60### General
61
62* **App:** Updated electron to 4.0.4
63
64
65
1# [5.0.0-beta.24](https://github.com/meetfranz/franz/compare/v5.0.0-beta.23...v5.0.0-beta.24) (2019-02-03) 66# [5.0.0-beta.24](https://github.com/meetfranz/franz/compare/v5.0.0-beta.23...v5.0.0-beta.24) (2019-02-03)
2 67
3 68
diff --git a/appveyor.yml b/appveyor.yml
index 1d614b4c7..77c25df7e 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -6,20 +6,18 @@ environment:
6 CSC_KEY_PASSWORD: 6 CSC_KEY_PASSWORD:
7 secure: t8ypNTPKTmvRfd3hHA4aMOtC5KOFqOw3AsKhpU7140Q= 7 secure: t8ypNTPKTmvRfd3hHA4aMOtC5KOFqOw3AsKhpU7140Q=
8 8
9version: 5.0.0.{build} 9version: 5.0.1.{build}
10 10
11install: 11install:
12 - ps: $version = Get-Content .\.nvmrc -Raw 12 - ps: Install-Product node 10
13 - ps: Install-Product node $version 13 - npx lerna bootstrap
14 - npm ci
15 - node --version
16 - npm --version
17 14
18cache: 15cache:
19 - '%APPDATA%\npm-cache' 16 - '%APPDATA%\npm-cache'
20 17
21before_build: 18before_build:
22 - npm run lint 19 - npm run lint
20 - npm run test
23 21
24build_script: 22build_script:
25 - npm run build 23 - npm run build
diff --git a/docs/example-feature/actions.js b/docs/example-feature/actions.js
new file mode 100644
index 000000000..c4d49b708
--- /dev/null
+++ b/docs/example-feature/actions.js
@@ -0,0 +1,10 @@
1import PropTypes from 'prop-types';
2import { createActionsFromDefinitions } from '../../src/actions/lib/actions';
3
4export const exampleFeatureActions = createActionsFromDefinitions({
5 greet: {
6 name: PropTypes.string.isRequired,
7 },
8}, PropTypes.checkPropTypes);
9
10export default exampleFeatureActions;
diff --git a/docs/example-feature/api.js b/docs/example-feature/api.js
new file mode 100644
index 000000000..65207e877
--- /dev/null
+++ b/docs/example-feature/api.js
@@ -0,0 +1,5 @@
1export default {
2 async getName() {
3 return Promise.resolve('Franz');
4 },
5};
diff --git a/docs/example-feature/index.js b/docs/example-feature/index.js
new file mode 100644
index 000000000..af859af26
--- /dev/null
+++ b/docs/example-feature/index.js
@@ -0,0 +1,36 @@
1import { reaction, runInAction } from 'mobx';
2import { ExampleFeatureStore } from './store';
3import state, { resetState } from './state';
4import api from './api';
5
6const debug = require('debug')('Franz:feature:EXAMPLE_FEATURE');
7
8let store = null;
9
10export default function initAnnouncements(stores, actions) {
11 const { features } = stores;
12
13 // Toggle workspace feature
14 reaction(
15 () => (
16 features.features.isExampleFeatureEnabled
17 ),
18 (isEnabled) => {
19 if (isEnabled) {
20 debug('Initializing `EXAMPLE_FEATURE` feature');
21 store = new ExampleFeatureStore(stores, api, actions, state);
22 store.initialize();
23 runInAction(() => { state.isFeatureActive = true; });
24 } else if (store) {
25 debug('Disabling `EXAMPLE_FEATURE` feature');
26 runInAction(() => { state.isFeatureActive = false; });
27 store.teardown();
28 store = null;
29 resetState(); // Reset state to default
30 }
31 },
32 {
33 fireImmediately: true,
34 },
35 );
36}
diff --git a/docs/example-feature/state.js b/docs/example-feature/state.js
new file mode 100644
index 000000000..676717da7
--- /dev/null
+++ b/docs/example-feature/state.js
@@ -0,0 +1,14 @@
1import { observable } from 'mobx';
2
3const defaultState = {
4 name: null,
5 isFeatureActive: false,
6};
7
8export const exampleFeatureState = observable(defaultState);
9
10export function resetState() {
11 Object.assign(exampleFeatureState, defaultState);
12}
13
14export default exampleFeatureState;
diff --git a/docs/example-feature/store.js b/docs/example-feature/store.js
new file mode 100644
index 000000000..d8acfdca3
--- /dev/null
+++ b/docs/example-feature/store.js
@@ -0,0 +1,32 @@
1import { action, observable, reaction } from 'mobx';
2import Store from '../../src/stores/lib/Store';
3import Request from '../../src/stores/lib/Request';
4
5const debug = require('debug')('Franz:feature:EXAMPLE_FEATURE:store');
6
7export class ExampleFeatureStore extends Store {
8 @observable getNameRequest = new Request(this.api, 'getName');
9
10 constructor(stores, api, actions, state) {
11 super(stores, api, actions);
12 this.state = state;
13 }
14
15 setup() {
16 debug('fetching name from api');
17 this.getNameRequest.execute();
18
19 // Update the name on the state when the request resolved
20 reaction(
21 () => this.getNameRequest.result,
22 name => this._setName(name),
23 );
24 }
25
26 @action _setName = (name) => {
27 debug('setting name', name);
28 this.state.name = name;
29 };
30}
31
32export default ExampleFeatureStore;
diff --git a/electron-builder.yml b/electron-builder.yml
index 1d62669bf..97aafa207 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -43,4 +43,6 @@ protocols:
43 name: Franz 43 name: Franz
44 schemes: [franz] 44 schemes: [franz]
45 45
46asarUnpack: "./dictionaries" 46asarUnpack:
47 - ./dictionaries
48 - ./assets/images/taskbar
diff --git a/gulpfile.babel.js b/gulpfile.babel.js
index ae7002eb2..06e995d07 100644
--- a/gulpfile.babel.js
+++ b/gulpfile.babel.js
@@ -41,7 +41,18 @@ const paths = {
41 scripts: { 41 scripts: {
42 src: 'src/**/*.js', 42 src: 'src/**/*.js',
43 dest: 'build/', 43 dest: 'build/',
44 watch: 'src/**/*.js', 44 watch: [
45 // 'packages/**/*.js',
46 'src/**/*.js',
47 ],
48 },
49 packages: {
50 watch: 'packages/**/*',
51 // dest: 'build/',
52 // watch: [
53 // // 'packages/**/*.js',
54 // 'src/**/*.js',
55 // ],
45 }, 56 },
46}; 57};
47 58
@@ -74,8 +85,9 @@ export function mvSrc() {
74 [ 85 [
75 `${paths.src}/*`, 86 `${paths.src}/*`,
76 `${paths.src}/*/**`, 87 `${paths.src}/*/**`,
77 `!${paths.scripts.watch}`, 88 `!${paths.scripts.watch[1]}`,
78 `!${paths.src}/styles/**`, 89 `!${paths.src}/styles/**`,
90 `!${paths.src}/**/*.js`,
79 ], { since: gulp.lastRun(mvSrc) }, 91 ], { since: gulp.lastRun(mvSrc) },
80 ) 92 )
81 .pipe(gulp.dest(paths.dest)); 93 .pipe(gulp.dest(paths.dest));
@@ -90,6 +102,15 @@ export function mvPackageJson() {
90 .pipe(gulp.dest(paths.dest)); 102 .pipe(gulp.dest(paths.dest));
91} 103}
92 104
105export function mvLernaPackages() {
106 return gulp.src(
107 [
108 'packages/**',
109 ],
110 )
111 .pipe(gulp.dest(`${paths.dest}/packages`));
112}
113
93export function html() { 114export function html() {
94 return gulp.src(paths.html.src, { since: gulp.lastRun(html) }) 115 return gulp.src(paths.html.src, { since: gulp.lastRun(html) })
95 .pipe(gulp.dest(paths.html.dest)); 116 .pipe(gulp.dest(paths.html.dest));
@@ -118,7 +139,7 @@ export function scripts() {
118} 139}
119 140
120export function watch() { 141export function watch() {
121 gulp.watch(paths.scripts.watch, scripts); 142 gulp.watch(paths.packages.watch, mvLernaPackages);
122 gulp.watch(paths.styles.watch, styles); 143 gulp.watch(paths.styles.watch, styles);
123 144
124 gulp.watch([ 145 gulp.watch([
@@ -126,6 +147,8 @@ export function watch() {
126 `${paths.scripts.src}`, 147 `${paths.scripts.src}`,
127 `${paths.styles.src}`, 148 `${paths.styles.src}`,
128 ], mvSrc); 149 ], mvSrc);
150
151 gulp.watch(paths.scripts.watch, scripts);
129} 152}
130 153
131export function webserver() { 154export function webserver() {
@@ -161,7 +184,7 @@ export function sign(done) {
161 184
162const build = gulp.series( 185const build = gulp.series(
163 clean, 186 clean,
164 gulp.parallel(mvSrc, mvPackageJson), 187 gulp.parallel(mvSrc, mvPackageJson, mvLernaPackages),
165 gulp.parallel(html, scripts, styles), 188 gulp.parallel(html, scripts, styles),
166 dictionaries, 189 dictionaries,
167); 190);
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 000000000..8c9b59cf5
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,3 @@
1module.exports = {
2 roots: ['src'],
3};
diff --git a/lerna.json b/lerna.json
new file mode 100644
index 000000000..6bd5b5fca
--- /dev/null
+++ b/lerna.json
@@ -0,0 +1,14 @@
1{
2 "packages": [
3 "packages/theme",
4 "packages/forms",
5 "packages/ui",
6 "packages/typings"
7 ],
8 "version": "independent",
9 "ignoreChanges": [
10 "**/*.md",
11 "**/.eslintrc.{js,json,yaml,yml}",
12 "**/package-lock.json"
13 ]
14}
diff --git a/package-lock.json b/package-lock.json
index f339aaf51..cd43fcda6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
1{ 1{
2 "name": "franz", 2 "name": "franz",
3 "version": "5.0.0-beta.24", 3 "version": "5.0.1",
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
@@ -23,37 +23,6 @@
23 "lodash": "^4.17.10", 23 "lodash": "^4.17.10",
24 "minimist": "^1.2.0", 24 "minimist": "^1.2.0",
25 "wait-on": "^3.0.1" 25 "wait-on": "^3.0.1"
26 },
27 "dependencies": {
28 "ansi-styles": {
29 "version": "3.2.1",
30 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
31 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
32 "dev": true,
33 "requires": {
34 "color-convert": "^1.9.0"
35 }
36 },
37 "chalk": {
38 "version": "2.4.1",
39 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
40 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
41 "dev": true,
42 "requires": {
43 "ansi-styles": "^3.2.1",
44 "escape-string-regexp": "^1.0.5",
45 "supports-color": "^5.3.0"
46 }
47 },
48 "supports-color": {
49 "version": "5.5.0",
50 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
51 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
52 "dev": true,
53 "requires": {
54 "has-flag": "^3.0.0"
55 }
56 }
57 } 26 }
58 }, 27 },
59 "@babel/cli": { 28 "@babel/cli": {
@@ -74,16 +43,11 @@
74 "source-map": "^0.5.0" 43 "source-map": "^0.5.0"
75 }, 44 },
76 "dependencies": { 45 "dependencies": {
77 "output-file-sync": { 46 "source-map": {
78 "version": "2.0.1", 47 "version": "0.5.7",
79 "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", 48 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
80 "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", 49 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
81 "dev": true, 50 "dev": true
82 "requires": {
83 "graceful-fs": "^4.1.11",
84 "is-plain-obj": "^1.1.0",
85 "mkdirp": "^0.5.1"
86 }
87 } 51 }
88 } 52 }
89 }, 53 },
@@ -97,21 +61,21 @@
97 } 61 }
98 }, 62 },
99 "@babel/core": { 63 "@babel/core": {
100 "version": "7.0.0", 64 "version": "7.2.2",
101 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz", 65 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz",
102 "integrity": "sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ==", 66 "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==",
103 "dev": true, 67 "dev": true,
104 "requires": { 68 "requires": {
105 "@babel/code-frame": "^7.0.0", 69 "@babel/code-frame": "^7.0.0",
106 "@babel/generator": "^7.0.0", 70 "@babel/generator": "^7.2.2",
107 "@babel/helpers": "^7.0.0", 71 "@babel/helpers": "^7.2.0",
108 "@babel/parser": "^7.0.0", 72 "@babel/parser": "^7.2.2",
109 "@babel/template": "^7.0.0", 73 "@babel/template": "^7.2.2",
110 "@babel/traverse": "^7.0.0", 74 "@babel/traverse": "^7.2.2",
111 "@babel/types": "^7.0.0", 75 "@babel/types": "^7.2.2",
112 "convert-source-map": "^1.1.0", 76 "convert-source-map": "^1.1.0",
113 "debug": "^3.1.0", 77 "debug": "^4.1.0",
114 "json5": "^0.5.0", 78 "json5": "^2.1.0",
115 "lodash": "^4.17.10", 79 "lodash": "^4.17.10",
116 "resolve": "^1.3.2", 80 "resolve": "^1.3.2",
117 "semver": "^5.4.1", 81 "semver": "^5.4.1",
@@ -119,9 +83,9 @@
119 }, 83 },
120 "dependencies": { 84 "dependencies": {
121 "debug": { 85 "debug": {
122 "version": "3.2.6", 86 "version": "4.1.1",
123 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 87 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
124 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 88 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
125 "dev": true, 89 "dev": true,
126 "requires": { 90 "requires": {
127 "ms": "^2.1.1" 91 "ms": "^2.1.1"
@@ -132,20 +96,34 @@
132 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 96 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
133 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 97 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
134 "dev": true 98 "dev": true
99 },
100 "source-map": {
101 "version": "0.5.7",
102 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
103 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
104 "dev": true
135 } 105 }
136 } 106 }
137 }, 107 },
138 "@babel/generator": { 108 "@babel/generator": {
139 "version": "7.1.3", 109 "version": "7.3.2",
140 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.3.tgz", 110 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.2.tgz",
141 "integrity": "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==", 111 "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==",
142 "dev": true, 112 "dev": true,
143 "requires": { 113 "requires": {
144 "@babel/types": "^7.1.3", 114 "@babel/types": "^7.3.2",
145 "jsesc": "^2.5.1", 115 "jsesc": "^2.5.1",
146 "lodash": "^4.17.10", 116 "lodash": "^4.17.10",
147 "source-map": "^0.5.0", 117 "source-map": "^0.5.0",
148 "trim-right": "^1.0.1" 118 "trim-right": "^1.0.1"
119 },
120 "dependencies": {
121 "source-map": {
122 "version": "0.5.7",
123 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
124 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
125 "dev": true
126 }
149 } 127 }
150 }, 128 },
151 "@babel/helper-annotate-as-pure": { 129 "@babel/helper-annotate-as-pure": {
@@ -168,12 +146,12 @@
168 } 146 }
169 }, 147 },
170 "@babel/helper-builder-react-jsx": { 148 "@babel/helper-builder-react-jsx": {
171 "version": "7.0.0", 149 "version": "7.3.0",
172 "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz", 150 "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz",
173 "integrity": "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==", 151 "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==",
174 "dev": true, 152 "dev": true,
175 "requires": { 153 "requires": {
176 "@babel/types": "^7.0.0", 154 "@babel/types": "^7.3.0",
177 "esutils": "^2.0.0" 155 "esutils": "^2.0.0"
178 } 156 }
179 }, 157 },
@@ -188,6 +166,19 @@
188 "@babel/types": "^7.0.0" 166 "@babel/types": "^7.0.0"
189 } 167 }
190 }, 168 },
169 "@babel/helper-create-class-features-plugin": {
170 "version": "7.3.2",
171 "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.2.tgz",
172 "integrity": "sha512-tdW8+V8ceh2US4GsYdNVNoohq5uVwOf9k6krjwW4E1lINcHgttnWcNqgdoessn12dAy8QkbezlbQh2nXISNY+A==",
173 "dev": true,
174 "requires": {
175 "@babel/helper-function-name": "^7.1.0",
176 "@babel/helper-member-expression-to-functions": "^7.0.0",
177 "@babel/helper-optimise-call-expression": "^7.0.0",
178 "@babel/helper-plugin-utils": "^7.0.0",
179 "@babel/helper-replace-supers": "^7.2.3"
180 }
181 },
191 "@babel/helper-define-map": { 182 "@babel/helper-define-map": {
192 "version": "7.1.0", 183 "version": "7.1.0",
193 "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", 184 "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz",
@@ -257,16 +248,16 @@
257 } 248 }
258 }, 249 },
259 "@babel/helper-module-transforms": { 250 "@babel/helper-module-transforms": {
260 "version": "7.1.0", 251 "version": "7.2.2",
261 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz", 252 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz",
262 "integrity": "sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw==", 253 "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==",
263 "dev": true, 254 "dev": true,
264 "requires": { 255 "requires": {
265 "@babel/helper-module-imports": "^7.0.0", 256 "@babel/helper-module-imports": "^7.0.0",
266 "@babel/helper-simple-access": "^7.1.0", 257 "@babel/helper-simple-access": "^7.1.0",
267 "@babel/helper-split-export-declaration": "^7.0.0", 258 "@babel/helper-split-export-declaration": "^7.0.0",
268 "@babel/template": "^7.1.0", 259 "@babel/template": "^7.2.2",
269 "@babel/types": "^7.0.0", 260 "@babel/types": "^7.2.2",
270 "lodash": "^4.17.10" 261 "lodash": "^4.17.10"
271 } 262 }
272 }, 263 },
@@ -308,14 +299,14 @@
308 } 299 }
309 }, 300 },
310 "@babel/helper-replace-supers": { 301 "@babel/helper-replace-supers": {
311 "version": "7.1.0", 302 "version": "7.2.3",
312 "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz", 303 "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz",
313 "integrity": "sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==", 304 "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==",
314 "dev": true, 305 "dev": true,
315 "requires": { 306 "requires": {
316 "@babel/helper-member-expression-to-functions": "^7.0.0", 307 "@babel/helper-member-expression-to-functions": "^7.0.0",
317 "@babel/helper-optimise-call-expression": "^7.0.0", 308 "@babel/helper-optimise-call-expression": "^7.0.0",
318 "@babel/traverse": "^7.1.0", 309 "@babel/traverse": "^7.2.3",
319 "@babel/types": "^7.0.0" 310 "@babel/types": "^7.0.0"
320 } 311 }
321 }, 312 },
@@ -339,35 +330,35 @@
339 } 330 }
340 }, 331 },
341 "@babel/helper-wrap-function": { 332 "@babel/helper-wrap-function": {
342 "version": "7.1.0", 333 "version": "7.2.0",
343 "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz", 334 "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
344 "integrity": "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==", 335 "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
345 "dev": true, 336 "dev": true,
346 "requires": { 337 "requires": {
347 "@babel/helper-function-name": "^7.1.0", 338 "@babel/helper-function-name": "^7.1.0",
348 "@babel/template": "^7.1.0", 339 "@babel/template": "^7.1.0",
349 "@babel/traverse": "^7.1.0", 340 "@babel/traverse": "^7.1.0",
350 "@babel/types": "^7.0.0" 341 "@babel/types": "^7.2.0"
351 } 342 }
352 }, 343 },
353 "@babel/helpers": { 344 "@babel/helpers": {
354 "version": "7.2.0", 345 "version": "7.3.1",
355 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz", 346 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz",
356 "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==", 347 "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==",
357 "dev": true, 348 "dev": true,
358 "requires": { 349 "requires": {
359 "@babel/template": "^7.1.2", 350 "@babel/template": "^7.1.2",
360 "@babel/traverse": "^7.1.5", 351 "@babel/traverse": "^7.1.5",
361 "@babel/types": "^7.2.0" 352 "@babel/types": "^7.3.0"
362 }, 353 },
363 "dependencies": { 354 "dependencies": {
364 "@babel/generator": { 355 "@babel/generator": {
365 "version": "7.2.0", 356 "version": "7.3.2",
366 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz", 357 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.2.tgz",
367 "integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==", 358 "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==",
368 "dev": true, 359 "dev": true,
369 "requires": { 360 "requires": {
370 "@babel/types": "^7.2.0", 361 "@babel/types": "^7.3.2",
371 "jsesc": "^2.5.1", 362 "jsesc": "^2.5.1",
372 "lodash": "^4.17.10", 363 "lodash": "^4.17.10",
373 "source-map": "^0.5.0", 364 "source-map": "^0.5.0",
@@ -375,32 +366,32 @@
375 } 366 }
376 }, 367 },
377 "@babel/parser": { 368 "@babel/parser": {
378 "version": "7.2.0", 369 "version": "7.3.2",
379 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.0.tgz", 370 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz",
380 "integrity": "sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg==", 371 "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==",
381 "dev": true 372 "dev": true
382 }, 373 },
383 "@babel/traverse": { 374 "@babel/traverse": {
384 "version": "7.1.6", 375 "version": "7.2.3",
385 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", 376 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz",
386 "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", 377 "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==",
387 "dev": true, 378 "dev": true,
388 "requires": { 379 "requires": {
389 "@babel/code-frame": "^7.0.0", 380 "@babel/code-frame": "^7.0.0",
390 "@babel/generator": "^7.1.6", 381 "@babel/generator": "^7.2.2",
391 "@babel/helper-function-name": "^7.1.0", 382 "@babel/helper-function-name": "^7.1.0",
392 "@babel/helper-split-export-declaration": "^7.0.0", 383 "@babel/helper-split-export-declaration": "^7.0.0",
393 "@babel/parser": "^7.1.6", 384 "@babel/parser": "^7.2.3",
394 "@babel/types": "^7.1.6", 385 "@babel/types": "^7.2.2",
395 "debug": "^4.1.0", 386 "debug": "^4.1.0",
396 "globals": "^11.1.0", 387 "globals": "^11.1.0",
397 "lodash": "^4.17.10" 388 "lodash": "^4.17.10"
398 } 389 }
399 }, 390 },
400 "@babel/types": { 391 "@babel/types": {
401 "version": "7.2.0", 392 "version": "7.3.2",
402 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.0.tgz", 393 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.2.tgz",
403 "integrity": "sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A==", 394 "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==",
404 "dev": true, 395 "dev": true,
405 "requires": { 396 "requires": {
406 "esutils": "^2.0.2", 397 "esutils": "^2.0.2",
@@ -409,30 +400,24 @@
409 } 400 }
410 }, 401 },
411 "debug": { 402 "debug": {
412 "version": "4.1.0", 403 "version": "4.1.1",
413 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", 404 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
414 "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", 405 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
415 "dev": true, 406 "dev": true,
416 "requires": { 407 "requires": {
417 "ms": "^2.1.1" 408 "ms": "^2.1.1"
418 } 409 }
419 }, 410 },
420 "globals": {
421 "version": "11.9.0",
422 "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
423 "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==",
424 "dev": true
425 },
426 "ms": { 411 "ms": {
427 "version": "2.1.1", 412 "version": "2.1.1",
428 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 413 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
429 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 414 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
430 "dev": true 415 "dev": true
431 }, 416 },
432 "to-fast-properties": { 417 "source-map": {
433 "version": "2.0.0", 418 "version": "0.5.7",
434 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 419 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
435 "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 420 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
436 "dev": true 421 "dev": true
437 } 422 }
438 } 423 }
@@ -446,136 +431,100 @@
446 "chalk": "^2.0.0", 431 "chalk": "^2.0.0",
447 "esutils": "^2.0.2", 432 "esutils": "^2.0.2",
448 "js-tokens": "^4.0.0" 433 "js-tokens": "^4.0.0"
449 },
450 "dependencies": {
451 "ansi-styles": {
452 "version": "3.2.1",
453 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
454 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
455 "dev": true,
456 "requires": {
457 "color-convert": "^1.9.0"
458 }
459 },
460 "chalk": {
461 "version": "2.4.1",
462 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
463 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
464 "dev": true,
465 "requires": {
466 "ansi-styles": "^3.2.1",
467 "escape-string-regexp": "^1.0.5",
468 "supports-color": "^5.3.0"
469 }
470 },
471 "supports-color": {
472 "version": "5.5.0",
473 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
474 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
475 "dev": true,
476 "requires": {
477 "has-flag": "^3.0.0"
478 }
479 }
480 } 434 }
481 }, 435 },
482 "@babel/parser": { 436 "@babel/parser": {
483 "version": "7.1.3", 437 "version": "7.3.2",
484 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz", 438 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz",
485 "integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==", 439 "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==",
486 "dev": true 440 "dev": true
487 }, 441 },
488 "@babel/plugin-proposal-async-generator-functions": { 442 "@babel/plugin-proposal-async-generator-functions": {
489 "version": "7.1.0", 443 "version": "7.2.0",
490 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz", 444 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
491 "integrity": "sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew==", 445 "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
492 "dev": true, 446 "dev": true,
493 "requires": { 447 "requires": {
494 "@babel/helper-plugin-utils": "^7.0.0", 448 "@babel/helper-plugin-utils": "^7.0.0",
495 "@babel/helper-remap-async-to-generator": "^7.1.0", 449 "@babel/helper-remap-async-to-generator": "^7.1.0",
496 "@babel/plugin-syntax-async-generators": "^7.0.0" 450 "@babel/plugin-syntax-async-generators": "^7.2.0"
497 } 451 }
498 }, 452 },
499 "@babel/plugin-proposal-class-properties": { 453 "@babel/plugin-proposal-class-properties": {
500 "version": "7.1.0", 454 "version": "7.3.0",
501 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz", 455 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz",
502 "integrity": "sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw==", 456 "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==",
503 "dev": true, 457 "dev": true,
504 "requires": { 458 "requires": {
505 "@babel/helper-function-name": "^7.1.0", 459 "@babel/helper-create-class-features-plugin": "^7.3.0",
506 "@babel/helper-member-expression-to-functions": "^7.0.0", 460 "@babel/helper-plugin-utils": "^7.0.0"
507 "@babel/helper-optimise-call-expression": "^7.0.0",
508 "@babel/helper-plugin-utils": "^7.0.0",
509 "@babel/helper-replace-supers": "^7.1.0",
510 "@babel/plugin-syntax-class-properties": "^7.0.0"
511 } 461 }
512 }, 462 },
513 "@babel/plugin-proposal-decorators": { 463 "@babel/plugin-proposal-decorators": {
514 "version": "7.1.2", 464 "version": "7.3.0",
515 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.1.2.tgz", 465 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz",
516 "integrity": "sha512-YooynBO6PmBgHvAd0fl5e5Tq/a0pEC6RqF62ouafme8FzdIVH41Mz/u1dn8fFVm4jzEJ+g/MsOxouwybJPuP8Q==", 466 "integrity": "sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==",
517 "dev": true, 467 "dev": true,
518 "requires": { 468 "requires": {
469 "@babel/helper-create-class-features-plugin": "^7.3.0",
519 "@babel/helper-plugin-utils": "^7.0.0", 470 "@babel/helper-plugin-utils": "^7.0.0",
520 "@babel/helper-replace-supers": "^7.1.0", 471 "@babel/plugin-syntax-decorators": "^7.2.0"
521 "@babel/helper-split-export-declaration": "^7.0.0",
522 "@babel/plugin-syntax-decorators": "^7.1.0"
523 } 472 }
524 }, 473 },
525 "@babel/plugin-proposal-export-default-from": { 474 "@babel/plugin-proposal-export-default-from": {
526 "version": "7.0.0", 475 "version": "7.2.0",
527 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.0.0.tgz", 476 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz",
528 "integrity": "sha512-cWhkx6SyjZ4caFOanoPmDNgQCuYYTmou4QXy886JsyLTw/vhWQbop2gLKsWyyswrJkKTB7fSNxVYbP/oEsoySA==", 477 "integrity": "sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug==",
529 "dev": true, 478 "dev": true,
530 "requires": { 479 "requires": {
531 "@babel/helper-plugin-utils": "^7.0.0", 480 "@babel/helper-plugin-utils": "^7.0.0",
532 "@babel/plugin-syntax-export-default-from": "^7.0.0" 481 "@babel/plugin-syntax-export-default-from": "^7.2.0"
533 } 482 }
534 }, 483 },
535 "@babel/plugin-proposal-json-strings": { 484 "@babel/plugin-proposal-json-strings": {
536 "version": "7.0.0", 485 "version": "7.2.0",
537 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz", 486 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
538 "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==", 487 "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
539 "dev": true, 488 "dev": true,
540 "requires": { 489 "requires": {
541 "@babel/helper-plugin-utils": "^7.0.0", 490 "@babel/helper-plugin-utils": "^7.0.0",
542 "@babel/plugin-syntax-json-strings": "^7.0.0" 491 "@babel/plugin-syntax-json-strings": "^7.2.0"
543 } 492 }
544 }, 493 },
545 "@babel/plugin-proposal-object-rest-spread": { 494 "@babel/plugin-proposal-object-rest-spread": {
546 "version": "7.0.0", 495 "version": "7.3.2",
547 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", 496 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz",
548 "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", 497 "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==",
549 "dev": true, 498 "dev": true,
550 "requires": { 499 "requires": {
551 "@babel/helper-plugin-utils": "^7.0.0", 500 "@babel/helper-plugin-utils": "^7.0.0",
552 "@babel/plugin-syntax-object-rest-spread": "^7.0.0" 501 "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
553 } 502 }
554 }, 503 },
555 "@babel/plugin-proposal-optional-catch-binding": { 504 "@babel/plugin-proposal-optional-catch-binding": {
556 "version": "7.0.0", 505 "version": "7.2.0",
557 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz", 506 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
558 "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==", 507 "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
559 "dev": true, 508 "dev": true,
560 "requires": { 509 "requires": {
561 "@babel/helper-plugin-utils": "^7.0.0", 510 "@babel/helper-plugin-utils": "^7.0.0",
562 "@babel/plugin-syntax-optional-catch-binding": "^7.0.0" 511 "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
563 } 512 }
564 }, 513 },
565 "@babel/plugin-proposal-throw-expressions": { 514 "@babel/plugin-proposal-throw-expressions": {
566 "version": "7.0.0", 515 "version": "7.2.0",
567 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0.tgz", 516 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.2.0.tgz",
568 "integrity": "sha512-CA2EUiwnbXrsdV4hy3jYghm91WaL7zL7xYfu628dyItRr6gylbRxshghGEK/Hhm//rR58N3PBmEeuYqSW57IUQ==", 517 "integrity": "sha512-adsydM8DQF4i5DLNO4ySAU5VtHTPewOtNBV3u7F4lNMPADFF9bWQ+iDtUUe8+033cYCUz+bFlQdXQJmJOwoLpw==",
569 "dev": true, 518 "dev": true,
570 "requires": { 519 "requires": {
571 "@babel/helper-plugin-utils": "^7.0.0", 520 "@babel/helper-plugin-utils": "^7.0.0",
572 "@babel/plugin-syntax-throw-expressions": "^7.0.0" 521 "@babel/plugin-syntax-throw-expressions": "^7.2.0"
573 } 522 }
574 }, 523 },
575 "@babel/plugin-proposal-unicode-property-regex": { 524 "@babel/plugin-proposal-unicode-property-regex": {
576 "version": "7.0.0", 525 "version": "7.2.0",
577 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz", 526 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz",
578 "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==", 527 "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==",
579 "dev": true, 528 "dev": true,
580 "requires": { 529 "requires": {
581 "@babel/helper-plugin-utils": "^7.0.0", 530 "@babel/helper-plugin-utils": "^7.0.0",
@@ -584,108 +533,99 @@
584 } 533 }
585 }, 534 },
586 "@babel/plugin-syntax-async-generators": { 535 "@babel/plugin-syntax-async-generators": {
587 "version": "7.0.0", 536 "version": "7.2.0",
588 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz", 537 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
589 "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==", 538 "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
590 "dev": true,
591 "requires": {
592 "@babel/helper-plugin-utils": "^7.0.0"
593 }
594 },
595 "@babel/plugin-syntax-class-properties": {
596 "version": "7.0.0",
597 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz",
598 "integrity": "sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w==",
599 "dev": true, 539 "dev": true,
600 "requires": { 540 "requires": {
601 "@babel/helper-plugin-utils": "^7.0.0" 541 "@babel/helper-plugin-utils": "^7.0.0"
602 } 542 }
603 }, 543 },
604 "@babel/plugin-syntax-decorators": { 544 "@babel/plugin-syntax-decorators": {
605 "version": "7.1.0", 545 "version": "7.2.0",
606 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.1.0.tgz", 546 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz",
607 "integrity": "sha512-uQvRSbgQ0nQg3jsmIixXXDCgSpkBolJ9X7NYThMKCcjvE8dN2uWJUzTUNNAeuKOjARTd+wUQV0ztXpgunZYKzQ==", 547 "integrity": "sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==",
608 "dev": true, 548 "dev": true,
609 "requires": { 549 "requires": {
610 "@babel/helper-plugin-utils": "^7.0.0" 550 "@babel/helper-plugin-utils": "^7.0.0"
611 } 551 }
612 }, 552 },
613 "@babel/plugin-syntax-dynamic-import": { 553 "@babel/plugin-syntax-dynamic-import": {
614 "version": "7.0.0", 554 "version": "7.2.0",
615 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz", 555 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
616 "integrity": "sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw==", 556 "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
617 "dev": true, 557 "dev": true,
618 "requires": { 558 "requires": {
619 "@babel/helper-plugin-utils": "^7.0.0" 559 "@babel/helper-plugin-utils": "^7.0.0"
620 } 560 }
621 }, 561 },
622 "@babel/plugin-syntax-export-default-from": { 562 "@babel/plugin-syntax-export-default-from": {
623 "version": "7.0.0", 563 "version": "7.2.0",
624 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.0.0.tgz", 564 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz",
625 "integrity": "sha512-HNnjg/fFFbnuLAqr/Ocp1Y3GB4AjmXcu1xxn3ql3bS2kGrB/qi+Povshb8i3hOkE5jNozzh8r/0/lq1w8oOWbQ==", 565 "integrity": "sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw==",
626 "dev": true, 566 "dev": true,
627 "requires": { 567 "requires": {
628 "@babel/helper-plugin-utils": "^7.0.0" 568 "@babel/helper-plugin-utils": "^7.0.0"
629 } 569 }
630 }, 570 },
631 "@babel/plugin-syntax-json-strings": { 571 "@babel/plugin-syntax-json-strings": {
632 "version": "7.0.0", 572 "version": "7.2.0",
633 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz", 573 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
634 "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==", 574 "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
635 "dev": true, 575 "dev": true,
636 "requires": { 576 "requires": {
637 "@babel/helper-plugin-utils": "^7.0.0" 577 "@babel/helper-plugin-utils": "^7.0.0"
638 } 578 }
639 }, 579 },
640 "@babel/plugin-syntax-jsx": { 580 "@babel/plugin-syntax-jsx": {
641 "version": "7.0.0", 581 "version": "7.2.0",
642 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz", 582 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
643 "integrity": "sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg==", 583 "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
644 "dev": true, 584 "dev": true,
645 "requires": { 585 "requires": {
646 "@babel/helper-plugin-utils": "^7.0.0" 586 "@babel/helper-plugin-utils": "^7.0.0"
647 } 587 }
648 }, 588 },
649 "@babel/plugin-syntax-object-rest-spread": { 589 "@babel/plugin-syntax-object-rest-spread": {
650 "version": "7.0.0", 590 "version": "7.2.0",
651 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz", 591 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
652 "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==", 592 "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
653 "dev": true, 593 "dev": true,
654 "requires": { 594 "requires": {
655 "@babel/helper-plugin-utils": "^7.0.0" 595 "@babel/helper-plugin-utils": "^7.0.0"
656 } 596 }
657 }, 597 },
658 "@babel/plugin-syntax-optional-catch-binding": { 598 "@babel/plugin-syntax-optional-catch-binding": {
659 "version": "7.0.0", 599 "version": "7.2.0",
660 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz", 600 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
661 "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==", 601 "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
662 "dev": true, 602 "dev": true,
663 "requires": { 603 "requires": {
664 "@babel/helper-plugin-utils": "^7.0.0" 604 "@babel/helper-plugin-utils": "^7.0.0"
665 } 605 }
666 }, 606 },
667 "@babel/plugin-syntax-throw-expressions": { 607 "@babel/plugin-syntax-throw-expressions": {
668 "version": "7.0.0", 608 "version": "7.2.0",
669 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0.tgz", 609 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.2.0.tgz",
670 "integrity": "sha512-/5uORdWlPta/ALhI5zKtm0Y9vAYOa7HJMML0OnCGk9XZA4hpGjb0Xjt/OVDCJVawC/4FrlAGCHOaj9BtWeVDvg==", 610 "integrity": "sha512-ngwynuqu1Rx0JUS9zxSDuPgW1K8TyVZCi2hHehrL4vyjqE7RGoNHWlZsS7KQT2vw9Yjk4YLa0+KldBXTRdPLRg==",
671 "dev": true, 611 "dev": true,
672 "requires": { 612 "requires": {
673 "@babel/helper-plugin-utils": "^7.0.0" 613 "@babel/helper-plugin-utils": "^7.0.0"
674 } 614 }
675 }, 615 },
676 "@babel/plugin-transform-arrow-functions": { 616 "@babel/plugin-transform-arrow-functions": {
677 "version": "7.0.0", 617 "version": "7.2.0",
678 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz", 618 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
679 "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==", 619 "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
680 "dev": true, 620 "dev": true,
681 "requires": { 621 "requires": {
682 "@babel/helper-plugin-utils": "^7.0.0" 622 "@babel/helper-plugin-utils": "^7.0.0"
683 } 623 }
684 }, 624 },
685 "@babel/plugin-transform-async-to-generator": { 625 "@babel/plugin-transform-async-to-generator": {
686 "version": "7.1.0", 626 "version": "7.2.0",
687 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz", 627 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz",
688 "integrity": "sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g==", 628 "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==",
689 "dev": true, 629 "dev": true,
690 "requires": { 630 "requires": {
691 "@babel/helper-module-imports": "^7.0.0", 631 "@babel/helper-module-imports": "^7.0.0",
@@ -694,18 +634,18 @@
694 } 634 }
695 }, 635 },
696 "@babel/plugin-transform-block-scoped-functions": { 636 "@babel/plugin-transform-block-scoped-functions": {
697 "version": "7.0.0", 637 "version": "7.2.0",
698 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz", 638 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
699 "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==", 639 "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
700 "dev": true, 640 "dev": true,
701 "requires": { 641 "requires": {
702 "@babel/helper-plugin-utils": "^7.0.0" 642 "@babel/helper-plugin-utils": "^7.0.0"
703 } 643 }
704 }, 644 },
705 "@babel/plugin-transform-block-scoping": { 645 "@babel/plugin-transform-block-scoping": {
706 "version": "7.0.0", 646 "version": "7.2.0",
707 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz", 647 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz",
708 "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==", 648 "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==",
709 "dev": true, 649 "dev": true,
710 "requires": { 650 "requires": {
711 "@babel/helper-plugin-utils": "^7.0.0", 651 "@babel/helper-plugin-utils": "^7.0.0",
@@ -713,9 +653,9 @@
713 } 653 }
714 }, 654 },
715 "@babel/plugin-transform-classes": { 655 "@babel/plugin-transform-classes": {
716 "version": "7.1.0", 656 "version": "7.2.2",
717 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz", 657 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz",
718 "integrity": "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==", 658 "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==",
719 "dev": true, 659 "dev": true,
720 "requires": { 660 "requires": {
721 "@babel/helper-annotate-as-pure": "^7.0.0", 661 "@babel/helper-annotate-as-pure": "^7.0.0",
@@ -726,38 +666,30 @@
726 "@babel/helper-replace-supers": "^7.1.0", 666 "@babel/helper-replace-supers": "^7.1.0",
727 "@babel/helper-split-export-declaration": "^7.0.0", 667 "@babel/helper-split-export-declaration": "^7.0.0",
728 "globals": "^11.1.0" 668 "globals": "^11.1.0"
729 },
730 "dependencies": {
731 "globals": {
732 "version": "11.8.0",
733 "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz",
734 "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==",
735 "dev": true
736 }
737 } 669 }
738 }, 670 },
739 "@babel/plugin-transform-computed-properties": { 671 "@babel/plugin-transform-computed-properties": {
740 "version": "7.0.0", 672 "version": "7.2.0",
741 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz", 673 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
742 "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==", 674 "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
743 "dev": true, 675 "dev": true,
744 "requires": { 676 "requires": {
745 "@babel/helper-plugin-utils": "^7.0.0" 677 "@babel/helper-plugin-utils": "^7.0.0"
746 } 678 }
747 }, 679 },
748 "@babel/plugin-transform-destructuring": { 680 "@babel/plugin-transform-destructuring": {
749 "version": "7.1.3", 681 "version": "7.3.2",
750 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz", 682 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz",
751 "integrity": "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==", 683 "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==",
752 "dev": true, 684 "dev": true,
753 "requires": { 685 "requires": {
754 "@babel/helper-plugin-utils": "^7.0.0" 686 "@babel/helper-plugin-utils": "^7.0.0"
755 } 687 }
756 }, 688 },
757 "@babel/plugin-transform-dotall-regex": { 689 "@babel/plugin-transform-dotall-regex": {
758 "version": "7.0.0", 690 "version": "7.2.0",
759 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz", 691 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz",
760 "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==", 692 "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==",
761 "dev": true, 693 "dev": true,
762 "requires": { 694 "requires": {
763 "@babel/helper-plugin-utils": "^7.0.0", 695 "@babel/helper-plugin-utils": "^7.0.0",
@@ -766,18 +698,18 @@
766 } 698 }
767 }, 699 },
768 "@babel/plugin-transform-duplicate-keys": { 700 "@babel/plugin-transform-duplicate-keys": {
769 "version": "7.0.0", 701 "version": "7.2.0",
770 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz", 702 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz",
771 "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==", 703 "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==",
772 "dev": true, 704 "dev": true,
773 "requires": { 705 "requires": {
774 "@babel/helper-plugin-utils": "^7.0.0" 706 "@babel/helper-plugin-utils": "^7.0.0"
775 } 707 }
776 }, 708 },
777 "@babel/plugin-transform-exponentiation-operator": { 709 "@babel/plugin-transform-exponentiation-operator": {
778 "version": "7.1.0", 710 "version": "7.2.0",
779 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz", 711 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
780 "integrity": "sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==", 712 "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
781 "dev": true, 713 "dev": true,
782 "requires": { 714 "requires": {
783 "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", 715 "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
@@ -785,18 +717,18 @@
785 } 717 }
786 }, 718 },
787 "@babel/plugin-transform-for-of": { 719 "@babel/plugin-transform-for-of": {
788 "version": "7.0.0", 720 "version": "7.2.0",
789 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz", 721 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz",
790 "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==", 722 "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==",
791 "dev": true, 723 "dev": true,
792 "requires": { 724 "requires": {
793 "@babel/helper-plugin-utils": "^7.0.0" 725 "@babel/helper-plugin-utils": "^7.0.0"
794 } 726 }
795 }, 727 },
796 "@babel/plugin-transform-function-name": { 728 "@babel/plugin-transform-function-name": {
797 "version": "7.1.0", 729 "version": "7.2.0",
798 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz", 730 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz",
799 "integrity": "sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg==", 731 "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==",
800 "dev": true, 732 "dev": true,
801 "requires": { 733 "requires": {
802 "@babel/helper-function-name": "^7.1.0", 734 "@babel/helper-function-name": "^7.1.0",
@@ -804,18 +736,18 @@
804 } 736 }
805 }, 737 },
806 "@babel/plugin-transform-literals": { 738 "@babel/plugin-transform-literals": {
807 "version": "7.0.0", 739 "version": "7.2.0",
808 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz", 740 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
809 "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==", 741 "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
810 "dev": true, 742 "dev": true,
811 "requires": { 743 "requires": {
812 "@babel/helper-plugin-utils": "^7.0.0" 744 "@babel/helper-plugin-utils": "^7.0.0"
813 } 745 }
814 }, 746 },
815 "@babel/plugin-transform-modules-amd": { 747 "@babel/plugin-transform-modules-amd": {
816 "version": "7.1.0", 748 "version": "7.2.0",
817 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz", 749 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz",
818 "integrity": "sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A==", 750 "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==",
819 "dev": true, 751 "dev": true,
820 "requires": { 752 "requires": {
821 "@babel/helper-module-transforms": "^7.1.0", 753 "@babel/helper-module-transforms": "^7.1.0",
@@ -823,9 +755,9 @@
823 } 755 }
824 }, 756 },
825 "@babel/plugin-transform-modules-commonjs": { 757 "@babel/plugin-transform-modules-commonjs": {
826 "version": "7.1.0", 758 "version": "7.2.0",
827 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz", 759 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz",
828 "integrity": "sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA==", 760 "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==",
829 "dev": true, 761 "dev": true,
830 "requires": { 762 "requires": {
831 "@babel/helper-module-transforms": "^7.1.0", 763 "@babel/helper-module-transforms": "^7.1.0",
@@ -834,9 +766,9 @@
834 } 766 }
835 }, 767 },
836 "@babel/plugin-transform-modules-systemjs": { 768 "@babel/plugin-transform-modules-systemjs": {
837 "version": "7.1.3", 769 "version": "7.2.0",
838 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz", 770 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz",
839 "integrity": "sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw==", 771 "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==",
840 "dev": true, 772 "dev": true,
841 "requires": { 773 "requires": {
842 "@babel/helper-hoist-variables": "^7.0.0", 774 "@babel/helper-hoist-variables": "^7.0.0",
@@ -844,15 +776,24 @@
844 } 776 }
845 }, 777 },
846 "@babel/plugin-transform-modules-umd": { 778 "@babel/plugin-transform-modules-umd": {
847 "version": "7.1.0", 779 "version": "7.2.0",
848 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz", 780 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
849 "integrity": "sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig==", 781 "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
850 "dev": true, 782 "dev": true,
851 "requires": { 783 "requires": {
852 "@babel/helper-module-transforms": "^7.1.0", 784 "@babel/helper-module-transforms": "^7.1.0",
853 "@babel/helper-plugin-utils": "^7.0.0" 785 "@babel/helper-plugin-utils": "^7.0.0"
854 } 786 }
855 }, 787 },
788 "@babel/plugin-transform-named-capturing-groups-regex": {
789 "version": "7.3.0",
790 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz",
791 "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==",
792 "dev": true,
793 "requires": {
794 "regexp-tree": "^0.1.0"
795 }
796 },
856 "@babel/plugin-transform-new-target": { 797 "@babel/plugin-transform-new-target": {
857 "version": "7.0.0", 798 "version": "7.0.0",
858 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", 799 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz",
@@ -863,9 +804,9 @@
863 } 804 }
864 }, 805 },
865 "@babel/plugin-transform-object-super": { 806 "@babel/plugin-transform-object-super": {
866 "version": "7.1.0", 807 "version": "7.2.0",
867 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz", 808 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz",
868 "integrity": "sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw==", 809 "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==",
869 "dev": true, 810 "dev": true,
870 "requires": { 811 "requires": {
871 "@babel/helper-plugin-utils": "^7.0.0", 812 "@babel/helper-plugin-utils": "^7.0.0",
@@ -873,9 +814,9 @@
873 } 814 }
874 }, 815 },
875 "@babel/plugin-transform-parameters": { 816 "@babel/plugin-transform-parameters": {
876 "version": "7.1.0", 817 "version": "7.2.0",
877 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz", 818 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz",
878 "integrity": "sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw==", 819 "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==",
879 "dev": true, 820 "dev": true,
880 "requires": { 821 "requires": {
881 "@babel/helper-call-delegate": "^7.1.0", 822 "@babel/helper-call-delegate": "^7.1.0",
@@ -884,43 +825,43 @@
884 } 825 }
885 }, 826 },
886 "@babel/plugin-transform-react-display-name": { 827 "@babel/plugin-transform-react-display-name": {
887 "version": "7.0.0", 828 "version": "7.2.0",
888 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz", 829 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz",
889 "integrity": "sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg==", 830 "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==",
890 "dev": true, 831 "dev": true,
891 "requires": { 832 "requires": {
892 "@babel/helper-plugin-utils": "^7.0.0" 833 "@babel/helper-plugin-utils": "^7.0.0"
893 } 834 }
894 }, 835 },
895 "@babel/plugin-transform-react-jsx": { 836 "@babel/plugin-transform-react-jsx": {
896 "version": "7.0.0", 837 "version": "7.3.0",
897 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz", 838 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz",
898 "integrity": "sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ==", 839 "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==",
899 "dev": true, 840 "dev": true,
900 "requires": { 841 "requires": {
901 "@babel/helper-builder-react-jsx": "^7.0.0", 842 "@babel/helper-builder-react-jsx": "^7.3.0",
902 "@babel/helper-plugin-utils": "^7.0.0", 843 "@babel/helper-plugin-utils": "^7.0.0",
903 "@babel/plugin-syntax-jsx": "^7.0.0" 844 "@babel/plugin-syntax-jsx": "^7.2.0"
904 } 845 }
905 }, 846 },
906 "@babel/plugin-transform-react-jsx-self": { 847 "@babel/plugin-transform-react-jsx-self": {
907 "version": "7.0.0", 848 "version": "7.2.0",
908 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz", 849 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz",
909 "integrity": "sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA==", 850 "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==",
910 "dev": true, 851 "dev": true,
911 "requires": { 852 "requires": {
912 "@babel/helper-plugin-utils": "^7.0.0", 853 "@babel/helper-plugin-utils": "^7.0.0",
913 "@babel/plugin-syntax-jsx": "^7.0.0" 854 "@babel/plugin-syntax-jsx": "^7.2.0"
914 } 855 }
915 }, 856 },
916 "@babel/plugin-transform-react-jsx-source": { 857 "@babel/plugin-transform-react-jsx-source": {
917 "version": "7.0.0", 858 "version": "7.2.0",
918 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz", 859 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz",
919 "integrity": "sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w==", 860 "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==",
920 "dev": true, 861 "dev": true,
921 "requires": { 862 "requires": {
922 "@babel/helper-plugin-utils": "^7.0.0", 863 "@babel/helper-plugin-utils": "^7.0.0",
923 "@babel/plugin-syntax-jsx": "^7.0.0" 864 "@babel/plugin-syntax-jsx": "^7.2.0"
924 } 865 }
925 }, 866 },
926 "@babel/plugin-transform-regenerator": { 867 "@babel/plugin-transform-regenerator": {
@@ -933,27 +874,27 @@
933 } 874 }
934 }, 875 },
935 "@babel/plugin-transform-shorthand-properties": { 876 "@babel/plugin-transform-shorthand-properties": {
936 "version": "7.0.0", 877 "version": "7.2.0",
937 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz", 878 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
938 "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==", 879 "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
939 "dev": true, 880 "dev": true,
940 "requires": { 881 "requires": {
941 "@babel/helper-plugin-utils": "^7.0.0" 882 "@babel/helper-plugin-utils": "^7.0.0"
942 } 883 }
943 }, 884 },
944 "@babel/plugin-transform-spread": { 885 "@babel/plugin-transform-spread": {
945 "version": "7.0.0", 886 "version": "7.2.2",
946 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz", 887 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
947 "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==", 888 "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
948 "dev": true, 889 "dev": true,
949 "requires": { 890 "requires": {
950 "@babel/helper-plugin-utils": "^7.0.0" 891 "@babel/helper-plugin-utils": "^7.0.0"
951 } 892 }
952 }, 893 },
953 "@babel/plugin-transform-sticky-regex": { 894 "@babel/plugin-transform-sticky-regex": {
954 "version": "7.0.0", 895 "version": "7.2.0",
955 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz", 896 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
956 "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==", 897 "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
957 "dev": true, 898 "dev": true,
958 "requires": { 899 "requires": {
959 "@babel/helper-plugin-utils": "^7.0.0", 900 "@babel/helper-plugin-utils": "^7.0.0",
@@ -961,9 +902,9 @@
961 } 902 }
962 }, 903 },
963 "@babel/plugin-transform-template-literals": { 904 "@babel/plugin-transform-template-literals": {
964 "version": "7.0.0", 905 "version": "7.2.0",
965 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz", 906 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz",
966 "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==", 907 "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==",
967 "dev": true, 908 "dev": true,
968 "requires": { 909 "requires": {
969 "@babel/helper-annotate-as-pure": "^7.0.0", 910 "@babel/helper-annotate-as-pure": "^7.0.0",
@@ -971,18 +912,18 @@
971 } 912 }
972 }, 913 },
973 "@babel/plugin-transform-typeof-symbol": { 914 "@babel/plugin-transform-typeof-symbol": {
974 "version": "7.0.0", 915 "version": "7.2.0",
975 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz", 916 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
976 "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==", 917 "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
977 "dev": true, 918 "dev": true,
978 "requires": { 919 "requires": {
979 "@babel/helper-plugin-utils": "^7.0.0" 920 "@babel/helper-plugin-utils": "^7.0.0"
980 } 921 }
981 }, 922 },
982 "@babel/plugin-transform-unicode-regex": { 923 "@babel/plugin-transform-unicode-regex": {
983 "version": "7.0.0", 924 "version": "7.2.0",
984 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz", 925 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz",
985 "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==", 926 "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==",
986 "dev": true, 927 "dev": true,
987 "requires": { 928 "requires": {
988 "@babel/helper-plugin-utils": "^7.0.0", 929 "@babel/helper-plugin-utils": "^7.0.0",
@@ -991,58 +932,60 @@
991 } 932 }
992 }, 933 },
993 "@babel/polyfill": { 934 "@babel/polyfill": {
994 "version": "7.0.0", 935 "version": "7.2.5",
995 "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", 936 "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz",
996 "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", 937 "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==",
997 "requires": { 938 "requires": {
998 "core-js": "^2.5.7", 939 "core-js": "^2.5.7",
999 "regenerator-runtime": "^0.11.1" 940 "regenerator-runtime": "^0.12.0"
1000 } 941 }
1001 }, 942 },
1002 "@babel/preset-env": { 943 "@babel/preset-env": {
1003 "version": "7.1.0", 944 "version": "7.3.1",
1004 "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.1.0.tgz", 945 "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz",
1005 "integrity": "sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg==", 946 "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==",
1006 "dev": true, 947 "dev": true,
1007 "requires": { 948 "requires": {
1008 "@babel/helper-module-imports": "^7.0.0", 949 "@babel/helper-module-imports": "^7.0.0",
1009 "@babel/helper-plugin-utils": "^7.0.0", 950 "@babel/helper-plugin-utils": "^7.0.0",
1010 "@babel/plugin-proposal-async-generator-functions": "^7.1.0", 951 "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
1011 "@babel/plugin-proposal-json-strings": "^7.0.0", 952 "@babel/plugin-proposal-json-strings": "^7.2.0",
1012 "@babel/plugin-proposal-object-rest-spread": "^7.0.0", 953 "@babel/plugin-proposal-object-rest-spread": "^7.3.1",
1013 "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", 954 "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
1014 "@babel/plugin-proposal-unicode-property-regex": "^7.0.0", 955 "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
1015 "@babel/plugin-syntax-async-generators": "^7.0.0", 956 "@babel/plugin-syntax-async-generators": "^7.2.0",
1016 "@babel/plugin-syntax-object-rest-spread": "^7.0.0", 957 "@babel/plugin-syntax-json-strings": "^7.2.0",
1017 "@babel/plugin-syntax-optional-catch-binding": "^7.0.0", 958 "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
1018 "@babel/plugin-transform-arrow-functions": "^7.0.0", 959 "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
1019 "@babel/plugin-transform-async-to-generator": "^7.1.0", 960 "@babel/plugin-transform-arrow-functions": "^7.2.0",
1020 "@babel/plugin-transform-block-scoped-functions": "^7.0.0", 961 "@babel/plugin-transform-async-to-generator": "^7.2.0",
1021 "@babel/plugin-transform-block-scoping": "^7.0.0", 962 "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
1022 "@babel/plugin-transform-classes": "^7.1.0", 963 "@babel/plugin-transform-block-scoping": "^7.2.0",
1023 "@babel/plugin-transform-computed-properties": "^7.0.0", 964 "@babel/plugin-transform-classes": "^7.2.0",
1024 "@babel/plugin-transform-destructuring": "^7.0.0", 965 "@babel/plugin-transform-computed-properties": "^7.2.0",
1025 "@babel/plugin-transform-dotall-regex": "^7.0.0", 966 "@babel/plugin-transform-destructuring": "^7.2.0",
1026 "@babel/plugin-transform-duplicate-keys": "^7.0.0", 967 "@babel/plugin-transform-dotall-regex": "^7.2.0",
1027 "@babel/plugin-transform-exponentiation-operator": "^7.1.0", 968 "@babel/plugin-transform-duplicate-keys": "^7.2.0",
1028 "@babel/plugin-transform-for-of": "^7.0.0", 969 "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
1029 "@babel/plugin-transform-function-name": "^7.1.0", 970 "@babel/plugin-transform-for-of": "^7.2.0",
1030 "@babel/plugin-transform-literals": "^7.0.0", 971 "@babel/plugin-transform-function-name": "^7.2.0",
1031 "@babel/plugin-transform-modules-amd": "^7.1.0", 972 "@babel/plugin-transform-literals": "^7.2.0",
1032 "@babel/plugin-transform-modules-commonjs": "^7.1.0", 973 "@babel/plugin-transform-modules-amd": "^7.2.0",
1033 "@babel/plugin-transform-modules-systemjs": "^7.0.0", 974 "@babel/plugin-transform-modules-commonjs": "^7.2.0",
1034 "@babel/plugin-transform-modules-umd": "^7.1.0", 975 "@babel/plugin-transform-modules-systemjs": "^7.2.0",
976 "@babel/plugin-transform-modules-umd": "^7.2.0",
977 "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
1035 "@babel/plugin-transform-new-target": "^7.0.0", 978 "@babel/plugin-transform-new-target": "^7.0.0",
1036 "@babel/plugin-transform-object-super": "^7.1.0", 979 "@babel/plugin-transform-object-super": "^7.2.0",
1037 "@babel/plugin-transform-parameters": "^7.1.0", 980 "@babel/plugin-transform-parameters": "^7.2.0",
1038 "@babel/plugin-transform-regenerator": "^7.0.0", 981 "@babel/plugin-transform-regenerator": "^7.0.0",
1039 "@babel/plugin-transform-shorthand-properties": "^7.0.0", 982 "@babel/plugin-transform-shorthand-properties": "^7.2.0",
1040 "@babel/plugin-transform-spread": "^7.0.0", 983 "@babel/plugin-transform-spread": "^7.2.0",
1041 "@babel/plugin-transform-sticky-regex": "^7.0.0", 984 "@babel/plugin-transform-sticky-regex": "^7.2.0",
1042 "@babel/plugin-transform-template-literals": "^7.0.0", 985 "@babel/plugin-transform-template-literals": "^7.2.0",
1043 "@babel/plugin-transform-typeof-symbol": "^7.0.0", 986 "@babel/plugin-transform-typeof-symbol": "^7.2.0",
1044 "@babel/plugin-transform-unicode-regex": "^7.0.0", 987 "@babel/plugin-transform-unicode-regex": "^7.2.0",
1045 "browserslist": "^4.1.0", 988 "browserslist": "^4.3.4",
1046 "invariant": "^2.2.2", 989 "invariant": "^2.2.2",
1047 "js-levenshtein": "^1.1.3", 990 "js-levenshtein": "^1.1.3",
1048 "semver": "^5.3.0" 991 "semver": "^5.3.0"
@@ -1074,97 +1017,53 @@
1074 "mkdirp": "^0.5.1", 1017 "mkdirp": "^0.5.1",
1075 "pirates": "^4.0.0", 1018 "pirates": "^4.0.0",
1076 "source-map-support": "^0.5.9" 1019 "source-map-support": "^0.5.9"
1077 },
1078 "dependencies": {
1079 "find-cache-dir": {
1080 "version": "1.0.0",
1081 "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
1082 "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
1083 "dev": true,
1084 "requires": {
1085 "commondir": "^1.0.1",
1086 "make-dir": "^1.0.0",
1087 "pkg-dir": "^2.0.0"
1088 }
1089 },
1090 "find-up": {
1091 "version": "2.1.0",
1092 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
1093 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
1094 "dev": true,
1095 "requires": {
1096 "locate-path": "^2.0.0"
1097 }
1098 },
1099 "pkg-dir": {
1100 "version": "2.0.0",
1101 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
1102 "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
1103 "dev": true,
1104 "requires": {
1105 "find-up": "^2.1.0"
1106 }
1107 }
1108 } 1020 }
1109 }, 1021 },
1110 "@babel/runtime": { 1022 "@babel/runtime": {
1111 "version": "7.1.2", 1023 "version": "7.3.1",
1112 "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", 1024 "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz",
1113 "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==", 1025 "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==",
1114 "requires": { 1026 "requires": {
1115 "regenerator-runtime": "^0.12.0" 1027 "regenerator-runtime": "^0.12.0"
1116 },
1117 "dependencies": {
1118 "regenerator-runtime": {
1119 "version": "0.12.1",
1120 "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
1121 "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
1122 }
1123 } 1028 }
1124 }, 1029 },
1125 "@babel/template": { 1030 "@babel/template": {
1126 "version": "7.1.2", 1031 "version": "7.2.2",
1127 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", 1032 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
1128 "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", 1033 "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==",
1129 "dev": true, 1034 "dev": true,
1130 "requires": { 1035 "requires": {
1131 "@babel/code-frame": "^7.0.0", 1036 "@babel/code-frame": "^7.0.0",
1132 "@babel/parser": "^7.1.2", 1037 "@babel/parser": "^7.2.2",
1133 "@babel/types": "^7.1.2" 1038 "@babel/types": "^7.2.2"
1134 } 1039 }
1135 }, 1040 },
1136 "@babel/traverse": { 1041 "@babel/traverse": {
1137 "version": "7.1.4", 1042 "version": "7.2.3",
1138 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.4.tgz", 1043 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz",
1139 "integrity": "sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q==", 1044 "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==",
1140 "dev": true, 1045 "dev": true,
1141 "requires": { 1046 "requires": {
1142 "@babel/code-frame": "^7.0.0", 1047 "@babel/code-frame": "^7.0.0",
1143 "@babel/generator": "^7.1.3", 1048 "@babel/generator": "^7.2.2",
1144 "@babel/helper-function-name": "^7.1.0", 1049 "@babel/helper-function-name": "^7.1.0",
1145 "@babel/helper-split-export-declaration": "^7.0.0", 1050 "@babel/helper-split-export-declaration": "^7.0.0",
1146 "@babel/parser": "^7.1.3", 1051 "@babel/parser": "^7.2.3",
1147 "@babel/types": "^7.1.3", 1052 "@babel/types": "^7.2.2",
1148 "debug": "^3.1.0", 1053 "debug": "^4.1.0",
1149 "globals": "^11.1.0", 1054 "globals": "^11.1.0",
1150 "lodash": "^4.17.10" 1055 "lodash": "^4.17.10"
1151 }, 1056 },
1152 "dependencies": { 1057 "dependencies": {
1153 "debug": { 1058 "debug": {
1154 "version": "3.2.6", 1059 "version": "4.1.1",
1155 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 1060 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1156 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 1061 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1157 "dev": true, 1062 "dev": true,
1158 "requires": { 1063 "requires": {
1159 "ms": "^2.1.1" 1064 "ms": "^2.1.1"
1160 } 1065 }
1161 }, 1066 },
1162 "globals": {
1163 "version": "11.8.0",
1164 "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz",
1165 "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==",
1166 "dev": true
1167 },
1168 "ms": { 1067 "ms": {
1169 "version": "2.1.1", 1068 "version": "2.1.1",
1170 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1069 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
@@ -1174,24 +1073,1084 @@
1174 } 1073 }
1175 }, 1074 },
1176 "@babel/types": { 1075 "@babel/types": {
1177 "version": "7.1.3", 1076 "version": "7.3.2",
1178 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz", 1077 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.2.tgz",
1179 "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==", 1078 "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==",
1180 "dev": true, 1079 "dev": true,
1181 "requires": { 1080 "requires": {
1182 "esutils": "^2.0.2", 1081 "esutils": "^2.0.2",
1183 "lodash": "^4.17.10", 1082 "lodash": "^4.17.10",
1184 "to-fast-properties": "^2.0.0" 1083 "to-fast-properties": "^2.0.0"
1084 }
1085 },
1086 "@cnakazawa/watch": {
1087 "version": "1.0.3",
1088 "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
1089 "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==",
1090 "dev": true,
1091 "requires": {
1092 "exec-sh": "^0.3.2",
1093 "minimist": "^1.2.0"
1094 }
1095 },
1096 "@fimbul/bifrost": {
1097 "version": "0.17.0",
1098 "resolved": "https://registry.npmjs.org/@fimbul/bifrost/-/bifrost-0.17.0.tgz",
1099 "integrity": "sha512-gVTkJAOef5HtN6LPmrtt5fAUmBywwlgmObsU3FBhPoNeXPLaIl2zywXkJEtvvVLQnaFmtff3x+wIj5lHRCDE3Q==",
1100 "dev": true,
1101 "requires": {
1102 "@fimbul/ymir": "^0.17.0",
1103 "get-caller-file": "^2.0.0",
1104 "tslib": "^1.8.1",
1105 "tsutils": "^3.5.0"
1185 }, 1106 },
1186 "dependencies": { 1107 "dependencies": {
1187 "to-fast-properties": { 1108 "get-caller-file": {
1188 "version": "2.0.0", 1109 "version": "2.0.1",
1189 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1110 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.1.tgz",
1190 "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 1111 "integrity": "sha512-SpOZHfz845AH0wJYVuZk2jWDqFmu7Xubsx+ldIpwzy5pDUpu7OJHK7QYNSA2NPlDSKQwM1GFaAkciOWjjW92Sg==",
1191 "dev": true 1112 "dev": true
1113 },
1114 "tsutils": {
1115 "version": "3.8.0",
1116 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.8.0.tgz",
1117 "integrity": "sha512-XQdPhgcoTbCD8baXC38PQ0vpTZ8T3YrE+vR66YIj/xvDt1//8iAhafpIT/4DmvzzC1QFapEImERu48Pa01dIUA==",
1118 "dev": true,
1119 "requires": {
1120 "tslib": "^1.8.1"
1121 }
1122 }
1123 }
1124 },
1125 "@fimbul/ymir": {
1126 "version": "0.17.0",
1127 "resolved": "https://registry.npmjs.org/@fimbul/ymir/-/ymir-0.17.0.tgz",
1128 "integrity": "sha512-xMXM9KTXRLHLVS6dnX1JhHNEkmWHcAVCQ/4+DA1KKwC/AFnGHzu/7QfQttEPgw3xplT+ILf9e3i64jrFwB3JtA==",
1129 "dev": true,
1130 "requires": {
1131 "inversify": "^5.0.0",
1132 "reflect-metadata": "^0.1.12",
1133 "tslib": "^1.8.1"
1134 }
1135 },
1136 "@jest/console": {
1137 "version": "24.7.1",
1138 "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz",
1139 "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==",
1140 "dev": true,
1141 "requires": {
1142 "@jest/source-map": "^24.3.0",
1143 "chalk": "^2.0.1",
1144 "slash": "^2.0.0"
1145 }
1146 },
1147 "@jest/core": {
1148 "version": "24.7.1",
1149 "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.7.1.tgz",
1150 "integrity": "sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA==",
1151 "dev": true,
1152 "requires": {
1153 "@jest/console": "^24.7.1",
1154 "@jest/reporters": "^24.7.1",
1155 "@jest/test-result": "^24.7.1",
1156 "@jest/transform": "^24.7.1",
1157 "@jest/types": "^24.7.0",
1158 "ansi-escapes": "^3.0.0",
1159 "chalk": "^2.0.1",
1160 "exit": "^0.1.2",
1161 "graceful-fs": "^4.1.15",
1162 "jest-changed-files": "^24.7.0",
1163 "jest-config": "^24.7.1",
1164 "jest-haste-map": "^24.7.1",
1165 "jest-message-util": "^24.7.1",
1166 "jest-regex-util": "^24.3.0",
1167 "jest-resolve-dependencies": "^24.7.1",
1168 "jest-runner": "^24.7.1",
1169 "jest-runtime": "^24.7.1",
1170 "jest-snapshot": "^24.7.1",
1171 "jest-util": "^24.7.1",
1172 "jest-validate": "^24.7.0",
1173 "jest-watcher": "^24.7.1",
1174 "micromatch": "^3.1.10",
1175 "p-each-series": "^1.0.0",
1176 "pirates": "^4.0.1",
1177 "realpath-native": "^1.1.0",
1178 "rimraf": "^2.5.4",
1179 "strip-ansi": "^5.0.0"
1180 },
1181 "dependencies": {
1182 "ansi-regex": {
1183 "version": "4.1.0",
1184 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1185 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1186 "dev": true
1187 },
1188 "pirates": {
1189 "version": "4.0.1",
1190 "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
1191 "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
1192 "dev": true,
1193 "requires": {
1194 "node-modules-regexp": "^1.0.0"
1195 }
1196 },
1197 "strip-ansi": {
1198 "version": "5.2.0",
1199 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1200 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1201 "dev": true,
1202 "requires": {
1203 "ansi-regex": "^4.1.0"
1204 }
1192 } 1205 }
1193 } 1206 }
1194 }, 1207 },
1208 "@jest/environment": {
1209 "version": "24.7.1",
1210 "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.7.1.tgz",
1211 "integrity": "sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw==",
1212 "dev": true,
1213 "requires": {
1214 "@jest/fake-timers": "^24.7.1",
1215 "@jest/transform": "^24.7.1",
1216 "@jest/types": "^24.7.0",
1217 "jest-mock": "^24.7.0"
1218 }
1219 },
1220 "@jest/fake-timers": {
1221 "version": "24.7.1",
1222 "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.7.1.tgz",
1223 "integrity": "sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA==",
1224 "dev": true,
1225 "requires": {
1226 "@jest/types": "^24.7.0",
1227 "jest-message-util": "^24.7.1",
1228 "jest-mock": "^24.7.0"
1229 }
1230 },
1231 "@jest/reporters": {
1232 "version": "24.7.1",
1233 "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.7.1.tgz",
1234 "integrity": "sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw==",
1235 "dev": true,
1236 "requires": {
1237 "@jest/environment": "^24.7.1",
1238 "@jest/test-result": "^24.7.1",
1239 "@jest/transform": "^24.7.1",
1240 "@jest/types": "^24.7.0",
1241 "chalk": "^2.0.1",
1242 "exit": "^0.1.2",
1243 "glob": "^7.1.2",
1244 "istanbul-api": "^2.1.1",
1245 "istanbul-lib-coverage": "^2.0.2",
1246 "istanbul-lib-instrument": "^3.0.1",
1247 "istanbul-lib-source-maps": "^3.0.1",
1248 "jest-haste-map": "^24.7.1",
1249 "jest-resolve": "^24.7.1",
1250 "jest-runtime": "^24.7.1",
1251 "jest-util": "^24.7.1",
1252 "jest-worker": "^24.6.0",
1253 "node-notifier": "^5.2.1",
1254 "slash": "^2.0.0",
1255 "source-map": "^0.6.0",
1256 "string-length": "^2.0.0"
1257 }
1258 },
1259 "@jest/source-map": {
1260 "version": "24.3.0",
1261 "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz",
1262 "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==",
1263 "dev": true,
1264 "requires": {
1265 "callsites": "^3.0.0",
1266 "graceful-fs": "^4.1.15",
1267 "source-map": "^0.6.0"
1268 },
1269 "dependencies": {
1270 "callsites": {
1271 "version": "3.1.0",
1272 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1273 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1274 "dev": true
1275 }
1276 }
1277 },
1278 "@jest/test-result": {
1279 "version": "24.7.1",
1280 "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.7.1.tgz",
1281 "integrity": "sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg==",
1282 "dev": true,
1283 "requires": {
1284 "@jest/console": "^24.7.1",
1285 "@jest/types": "^24.7.0",
1286 "@types/istanbul-lib-coverage": "^2.0.0"
1287 }
1288 },
1289 "@jest/test-sequencer": {
1290 "version": "24.7.1",
1291 "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz",
1292 "integrity": "sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA==",
1293 "dev": true,
1294 "requires": {
1295 "@jest/test-result": "^24.7.1",
1296 "jest-haste-map": "^24.7.1",
1297 "jest-runner": "^24.7.1",
1298 "jest-runtime": "^24.7.1"
1299 }
1300 },
1301 "@jest/transform": {
1302 "version": "24.7.1",
1303 "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.7.1.tgz",
1304 "integrity": "sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw==",
1305 "dev": true,
1306 "requires": {
1307 "@babel/core": "^7.1.0",
1308 "@jest/types": "^24.7.0",
1309 "babel-plugin-istanbul": "^5.1.0",
1310 "chalk": "^2.0.1",
1311 "convert-source-map": "^1.4.0",
1312 "fast-json-stable-stringify": "^2.0.0",
1313 "graceful-fs": "^4.1.15",
1314 "jest-haste-map": "^24.7.1",
1315 "jest-regex-util": "^24.3.0",
1316 "jest-util": "^24.7.1",
1317 "micromatch": "^3.1.10",
1318 "realpath-native": "^1.1.0",
1319 "slash": "^2.0.0",
1320 "source-map": "^0.6.1",
1321 "write-file-atomic": "2.4.1"
1322 },
1323 "dependencies": {
1324 "write-file-atomic": {
1325 "version": "2.4.1",
1326 "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz",
1327 "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==",
1328 "dev": true,
1329 "requires": {
1330 "graceful-fs": "^4.1.11",
1331 "imurmurhash": "^0.1.4",
1332 "signal-exit": "^3.0.2"
1333 }
1334 }
1335 }
1336 },
1337 "@jest/types": {
1338 "version": "24.7.0",
1339 "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.7.0.tgz",
1340 "integrity": "sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA==",
1341 "dev": true,
1342 "requires": {
1343 "@types/istanbul-lib-coverage": "^2.0.0",
1344 "@types/yargs": "^12.0.9"
1345 }
1346 },
1347 "@lerna/add": {
1348 "version": "3.11.0",
1349 "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.11.0.tgz",
1350 "integrity": "sha512-A2u889e+GeZzL28jCpcN53iHq2cPWVnuy5tv5nvG/MIg0PxoAQOUvphexKsIbqzVd9Damdmv5W0u9kS8y8TTow==",
1351 "dev": true,
1352 "requires": {
1353 "@lerna/bootstrap": "3.11.0",
1354 "@lerna/command": "3.11.0",
1355 "@lerna/filter-options": "3.11.0",
1356 "@lerna/npm-conf": "3.7.0",
1357 "@lerna/validation-error": "3.11.0",
1358 "dedent": "^0.7.0",
1359 "npm-package-arg": "^6.1.0",
1360 "p-map": "^1.2.0",
1361 "pacote": "^9.4.1",
1362 "semver": "^5.5.0"
1363 }
1364 },
1365 "@lerna/batch-packages": {
1366 "version": "3.11.0",
1367 "resolved": "https://registry.npmjs.org/@lerna/batch-packages/-/batch-packages-3.11.0.tgz",
1368 "integrity": "sha512-ETO3prVqDZs/cpZo00ij61JEZ8/ADJx1OG/d/KtTdHlyRfQsb09Xzf0w+boimqa8fIqhpM3o5FV9GKd6GQ3iFQ==",
1369 "dev": true,
1370 "requires": {
1371 "@lerna/package-graph": "3.11.0",
1372 "@lerna/validation-error": "3.11.0",
1373 "npmlog": "^4.1.2"
1374 }
1375 },
1376 "@lerna/bootstrap": {
1377 "version": "3.11.0",
1378 "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.11.0.tgz",
1379 "integrity": "sha512-MqwviGJTy86joqSX2A3fmu2wXLBXc23tHJp5Xu4bVhynPegDnRrA3d9UI80UM3JcuYIQsxT4t2q2LNsZ4VdZKQ==",
1380 "dev": true,
1381 "requires": {
1382 "@lerna/batch-packages": "3.11.0",
1383 "@lerna/command": "3.11.0",
1384 "@lerna/filter-options": "3.11.0",
1385 "@lerna/has-npm-version": "3.10.0",
1386 "@lerna/npm-install": "3.11.0",
1387 "@lerna/package-graph": "3.11.0",
1388 "@lerna/pulse-till-done": "3.11.0",
1389 "@lerna/rimraf-dir": "3.11.0",
1390 "@lerna/run-lifecycle": "3.11.0",
1391 "@lerna/run-parallel-batches": "3.0.0",
1392 "@lerna/symlink-binary": "3.11.0",
1393 "@lerna/symlink-dependencies": "3.11.0",
1394 "@lerna/validation-error": "3.11.0",
1395 "dedent": "^0.7.0",
1396 "get-port": "^3.2.0",
1397 "multimatch": "^2.1.0",
1398 "npm-package-arg": "^6.1.0",
1399 "npmlog": "^4.1.2",
1400 "p-finally": "^1.0.0",
1401 "p-map": "^1.2.0",
1402 "p-map-series": "^1.0.0",
1403 "p-waterfall": "^1.0.0",
1404 "read-package-tree": "^5.1.6",
1405 "semver": "^5.5.0"
1406 },
1407 "dependencies": {
1408 "mime-types": {
1409 "version": "1.0.2",
1410 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
1411 "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
1412 }
1413 }
1414 },
1415 "@lerna/changed": {
1416 "version": "3.11.1",
1417 "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.11.1.tgz",
1418 "integrity": "sha512-A21h3DvMjDwhksmCmTQ1+3KPHg7gHVHFs3zC5lR9W+whYlm0JI2Yp70vYnqMv2hPAcJx+2tlCrqJkzCFkNQdqg==",
1419 "dev": true,
1420 "requires": {
1421 "@lerna/collect-updates": "3.11.0",
1422 "@lerna/command": "3.11.0",
1423 "@lerna/listable": "3.11.0",
1424 "@lerna/output": "3.11.0",
1425 "@lerna/version": "3.11.1"
1426 }
1427 },
1428 "@lerna/check-working-tree": {
1429 "version": "3.11.0",
1430 "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.11.0.tgz",
1431 "integrity": "sha512-uWKKmX4BKdK57MyX3rGNHNz4JmFP3tHnaIDDVeuSlgK5KwncPFyRXi3E9H0eiq6DUvDDLtztNOfWeGP2IY656Q==",
1432 "dev": true,
1433 "requires": {
1434 "@lerna/describe-ref": "3.11.0",
1435 "@lerna/validation-error": "3.11.0"
1436 }
1437 },
1438 "@lerna/child-process": {
1439 "version": "3.3.0",
1440 "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.3.0.tgz",
1441 "integrity": "sha512-q2d/OPlNX/cBXB6Iz1932RFzOmOHq6ZzPjqebkINNaTojHWuuRpvJJY4Uz3NGpJ3kEtPDvBemkZqUBTSO5wb1g==",
1442 "dev": true,
1443 "requires": {
1444 "chalk": "^2.3.1",
1445 "execa": "^1.0.0",
1446 "strong-log-transformer": "^2.0.0"
1447 }
1448 },
1449 "@lerna/clean": {
1450 "version": "3.11.0",
1451 "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.11.0.tgz",
1452 "integrity": "sha512-sHyMYv56MIVMH79+5vcxHVdgmd8BcsihI+RL2byW+PeoNlyDeGMjTRmnzLmbSD7dkinHGoa5cghlXy9GGIqpRw==",
1453 "dev": true,
1454 "requires": {
1455 "@lerna/command": "3.11.0",
1456 "@lerna/filter-options": "3.11.0",
1457 "@lerna/prompt": "3.11.0",
1458 "@lerna/pulse-till-done": "3.11.0",
1459 "@lerna/rimraf-dir": "3.11.0",
1460 "p-map": "^1.2.0",
1461 "p-map-series": "^1.0.0",
1462 "p-waterfall": "^1.0.0"
1463 }
1464 },
1465 "@lerna/cli": {
1466 "version": "3.11.0",
1467 "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.11.0.tgz",
1468 "integrity": "sha512-dn2m2PgUxcb2NyTvwfYOFZf8yN5CMf1uKxht3ajQYdDjRgFi5pUQt/DmdguOZ3CMJkENa0i3yPOmrxGPXLD2aw==",
1469 "dev": true,
1470 "requires": {
1471 "@lerna/global-options": "3.10.6",
1472 "dedent": "^0.7.0",
1473 "npmlog": "^4.1.2",
1474 "yargs": "^12.0.1"
1475 }
1476 },
1477 "@lerna/collect-updates": {
1478 "version": "3.11.0",
1479 "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.11.0.tgz",
1480 "integrity": "sha512-O0Y18OC2P6j9/RFq+u5Kdq7YxsDd+up3ZRoW6+i0XHWktqxXA9P4JBQppkpYtJVK2yH8QyOzuVLQgtL0xtHdYA==",
1481 "dev": true,
1482 "requires": {
1483 "@lerna/child-process": "3.3.0",
1484 "@lerna/describe-ref": "3.11.0",
1485 "minimatch": "^3.0.4",
1486 "npmlog": "^4.1.2",
1487 "slash": "^1.0.0"
1488 },
1489 "dependencies": {
1490 "slash": {
1491 "version": "1.0.0",
1492 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
1493 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
1494 "dev": true
1495 }
1496 }
1497 },
1498 "@lerna/command": {
1499 "version": "3.11.0",
1500 "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.11.0.tgz",
1501 "integrity": "sha512-N+Z5kauVHSb2VhSIfQexG2VlCAAQ9xYKwVTxYh0JFOFUnZ/QPcoqx4VjynDXASFXXDgcXs4FLaGsJxq83Mf5Zg==",
1502 "dev": true,
1503 "requires": {
1504 "@lerna/child-process": "3.3.0",
1505 "@lerna/package-graph": "3.11.0",
1506 "@lerna/project": "3.11.0",
1507 "@lerna/validation-error": "3.11.0",
1508 "@lerna/write-log-file": "3.11.0",
1509 "dedent": "^0.7.0",
1510 "execa": "^1.0.0",
1511 "is-ci": "^1.0.10",
1512 "lodash": "^4.17.5",
1513 "npmlog": "^4.1.2"
1514 },
1515 "dependencies": {
1516 "ci-info": {
1517 "version": "1.6.0",
1518 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
1519 "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
1520 "dev": true
1521 },
1522 "is-ci": {
1523 "version": "1.2.1",
1524 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
1525 "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
1526 "dev": true,
1527 "requires": {
1528 "ci-info": "^1.5.0"
1529 }
1530 }
1531 }
1532 },
1533 "@lerna/conventional-commits": {
1534 "version": "3.11.0",
1535 "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.11.0.tgz",
1536 "integrity": "sha512-ix1Ki5NiZdk2eMlCWNgLchWPKQTgkJdLeNjneep6OCF3ydSINizReGbFvCftRivun641cOHWswgWMsIxbqhMQw==",
1537 "dev": true,
1538 "requires": {
1539 "@lerna/validation-error": "3.11.0",
1540 "conventional-changelog-angular": "^5.0.2",
1541 "conventional-changelog-core": "^3.1.5",
1542 "conventional-recommended-bump": "^4.0.4",
1543 "fs-extra": "^7.0.0",
1544 "get-stream": "^4.0.0",
1545 "npm-package-arg": "^6.1.0",
1546 "npmlog": "^4.1.2",
1547 "pify": "^3.0.0",
1548 "semver": "^5.5.0"
1549 }
1550 },
1551 "@lerna/create": {
1552 "version": "3.11.0",
1553 "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.11.0.tgz",
1554 "integrity": "sha512-1izS82QML+H/itwEu1GPrcoXyugFaP9z9r6KuIQRQq8RtmNCGEmK85aiOw6mukyRcRziq2akALgFDyrundznPQ==",
1555 "dev": true,
1556 "requires": {
1557 "@lerna/child-process": "3.3.0",
1558 "@lerna/command": "3.11.0",
1559 "@lerna/npm-conf": "3.7.0",
1560 "@lerna/validation-error": "3.11.0",
1561 "camelcase": "^5.0.0",
1562 "dedent": "^0.7.0",
1563 "fs-extra": "^7.0.0",
1564 "globby": "^8.0.1",
1565 "init-package-json": "^1.10.3",
1566 "npm-package-arg": "^6.1.0",
1567 "p-reduce": "^1.0.0",
1568 "pacote": "^9.4.1",
1569 "pify": "^3.0.0",
1570 "semver": "^5.5.0",
1571 "slash": "^1.0.0",
1572 "validate-npm-package-license": "^3.0.3",
1573 "validate-npm-package-name": "^3.0.0",
1574 "whatwg-url": "^7.0.0"
1575 },
1576 "dependencies": {
1577 "slash": {
1578 "version": "1.0.0",
1579 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
1580 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
1581 "dev": true
1582 }
1583 }
1584 },
1585 "@lerna/create-symlink": {
1586 "version": "3.11.0",
1587 "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.11.0.tgz",
1588 "integrity": "sha512-UDR32uos8FIEc1keMKxXj5goZAHpCbpUd4u/btHXymUL9WqIym3cgz2iMr3ZNdZtjdMyUoHup5Dp0zjSgKCaEA==",
1589 "dev": true,
1590 "requires": {
1591 "cmd-shim": "^2.0.2",
1592 "fs-extra": "^7.0.0",
1593 "npmlog": "^4.1.2"
1594 }
1595 },
1596 "@lerna/describe-ref": {
1597 "version": "3.11.0",
1598 "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.11.0.tgz",
1599 "integrity": "sha512-lX/NVMqeODg4q/igN06L/KjtVUpW1oawh6IgOINy2oqm4RUR+1yDpsdVu3JyZZ4nHB572mJfbW56dl8qoxEVvQ==",
1600 "dev": true,
1601 "requires": {
1602 "@lerna/child-process": "3.3.0",
1603 "npmlog": "^4.1.2"
1604 }
1605 },
1606 "@lerna/diff": {
1607 "version": "3.11.0",
1608 "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.11.0.tgz",
1609 "integrity": "sha512-r3WASQix31ApA0tlkZejXhS8Z3SEg6Jw9YnKDt9V6wLjEUXGLauUDMrgx1YWu3cs9KB8/hqheRyRI7XAXGJS1w==",
1610 "dev": true,
1611 "requires": {
1612 "@lerna/child-process": "3.3.0",
1613 "@lerna/command": "3.11.0",
1614 "@lerna/validation-error": "3.11.0",
1615 "npmlog": "^4.1.2"
1616 }
1617 },
1618 "@lerna/exec": {
1619 "version": "3.11.0",
1620 "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.11.0.tgz",
1621 "integrity": "sha512-oIkI+Hj74kpsnHhw0qJj12H4XMPSlDbBsshLWY+f3BiwKhn6wkXoQZ1FC8/OVNHM67GtSRv4bkcOaM4ucHm9Hw==",
1622 "dev": true,
1623 "requires": {
1624 "@lerna/batch-packages": "3.11.0",
1625 "@lerna/child-process": "3.3.0",
1626 "@lerna/command": "3.11.0",
1627 "@lerna/filter-options": "3.11.0",
1628 "@lerna/run-parallel-batches": "3.0.0",
1629 "@lerna/validation-error": "3.11.0"
1630 }
1631 },
1632 "@lerna/filter-options": {
1633 "version": "3.11.0",
1634 "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.11.0.tgz",
1635 "integrity": "sha512-z0krgC/YBqz7i6MGHBsPLvsQ++XEpPdGnIkSpcN0Cjp5J67K9vb5gJ2hWp1c1bitNh3xiwZ69voGqN+DYk1mUg==",
1636 "dev": true,
1637 "requires": {
1638 "@lerna/collect-updates": "3.11.0",
1639 "@lerna/filter-packages": "3.11.0",
1640 "dedent": "^0.7.0"
1641 }
1642 },
1643 "@lerna/filter-packages": {
1644 "version": "3.11.0",
1645 "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.11.0.tgz",
1646 "integrity": "sha512-bnukkW1M0uMKWqM/m/IHou2PKRyk4fDAksAj3diHc1UVQkH2j8hXOfLl9+CgHA/cnTrf6/LARg8hKujqduqHyA==",
1647 "dev": true,
1648 "requires": {
1649 "@lerna/validation-error": "3.11.0",
1650 "multimatch": "^2.1.0",
1651 "npmlog": "^4.1.2"
1652 }
1653 },
1654 "@lerna/get-npm-exec-opts": {
1655 "version": "3.11.0",
1656 "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.11.0.tgz",
1657 "integrity": "sha512-EDxsbuq2AbB3LWwH/4SOcn4gWOnoIYrSHfITWo7xz/SbEKeHtiva99l424ZRWUJqLPGIpQiMTlmOET2ZEI8WZg==",
1658 "dev": true,
1659 "requires": {
1660 "npmlog": "^4.1.2"
1661 }
1662 },
1663 "@lerna/get-packed": {
1664 "version": "3.7.0",
1665 "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.7.0.tgz",
1666 "integrity": "sha512-yuFtjsUZIHjeIvIYQ/QuytC+FQcHwo3peB+yGBST2uWCLUCR5rx6knoQcPzbxdFDCuUb5IFccFGd3B1fHFg3RQ==",
1667 "dev": true,
1668 "requires": {
1669 "fs-extra": "^7.0.0",
1670 "ssri": "^6.0.1",
1671 "tar": "^4.4.8"
1672 }
1673 },
1674 "@lerna/github-client": {
1675 "version": "3.11.0",
1676 "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.11.0.tgz",
1677 "integrity": "sha512-yPMBhzShuth3uJo0kKu84RvgjSZgOYNT8fKfhZmzTeVGuPbYBKlK+UQ6jjpb6E9WW2BVdiUCrFhqIsbK5Lqe7A==",
1678 "dev": true,
1679 "requires": {
1680 "@lerna/child-process": "3.3.0",
1681 "@octokit/plugin-enterprise-rest": "^2.1.0",
1682 "@octokit/rest": "^16.15.0",
1683 "git-url-parse": "^11.1.2",
1684 "npmlog": "^4.1.2"
1685 }
1686 },
1687 "@lerna/global-options": {
1688 "version": "3.10.6",
1689 "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.10.6.tgz",
1690 "integrity": "sha512-k5Xkq1M/uREFC2R9uwN5gcvIgjj4iOXo0YyeEXCMWBiW3j2GL9xN4d1MmAIcrYlAzVYh6kLlWaFWl/rNIneHIw==",
1691 "dev": true
1692 },
1693 "@lerna/has-npm-version": {
1694 "version": "3.10.0",
1695 "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.10.0.tgz",
1696 "integrity": "sha512-N4RRYxGeivuaKgPDzrhkQOQs1Sg4tOnxnEe3akfqu1wDA4Ng5V6Y2uW3DbkAjFL3aNJhWF5Vbf7sBsGtfgDQ8w==",
1697 "dev": true,
1698 "requires": {
1699 "@lerna/child-process": "3.3.0",
1700 "semver": "^5.5.0"
1701 }
1702 },
1703 "@lerna/import": {
1704 "version": "3.11.0",
1705 "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.11.0.tgz",
1706 "integrity": "sha512-WgF0We+4k/MrC1vetT8pt3/SSJPMvXhyPYmL2W9rcvch3zV0IgLyso4tEs8gNbwZorDVEG1KcM+x8TG4v1nV5Q==",
1707 "dev": true,
1708 "requires": {
1709 "@lerna/child-process": "3.3.0",
1710 "@lerna/command": "3.11.0",
1711 "@lerna/prompt": "3.11.0",
1712 "@lerna/pulse-till-done": "3.11.0",
1713 "@lerna/validation-error": "3.11.0",
1714 "dedent": "^0.7.0",
1715 "fs-extra": "^7.0.0",
1716 "p-map-series": "^1.0.0"
1717 }
1718 },
1719 "@lerna/init": {
1720 "version": "3.11.0",
1721 "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.11.0.tgz",
1722 "integrity": "sha512-JZC5jpCVJgK34grye52kGWjrYCyh4LB8c0WBLaS8MOUt6rxTtPqubwvCDKPOF2H0Se6awsgEfX4wWNuqiQVpRQ==",
1723 "dev": true,
1724 "requires": {
1725 "@lerna/child-process": "3.3.0",
1726 "@lerna/command": "3.11.0",
1727 "fs-extra": "^7.0.0",
1728 "p-map": "^1.2.0",
1729 "write-json-file": "^2.3.0"
1730 }
1731 },
1732 "@lerna/link": {
1733 "version": "3.11.0",
1734 "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.11.0.tgz",
1735 "integrity": "sha512-QN+kxRWb6P9jrKpE2t6K9sGnFpqy1KOEjf68NpGhmp+J9Yt6Kvz9kG43CWoqg4Zyqqgqgn3NVV2Z7zSDNhdH0g==",
1736 "dev": true,
1737 "requires": {
1738 "@lerna/command": "3.11.0",
1739 "@lerna/package-graph": "3.11.0",
1740 "@lerna/symlink-dependencies": "3.11.0",
1741 "p-map": "^1.2.0",
1742 "slash": "^1.0.0"
1743 },
1744 "dependencies": {
1745 "slash": {
1746 "version": "1.0.0",
1747 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
1748 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
1749 "dev": true
1750 }
1751 }
1752 },
1753 "@lerna/list": {
1754 "version": "3.11.0",
1755 "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.11.0.tgz",
1756 "integrity": "sha512-hBAwZzEzF1LQOOB2/5vQkal/nSriuJbLY39BitIGkUxifsmu7JK0k3LYrwe1sxXv5SMf2HDaTLr+Z23mUslhaQ==",
1757 "dev": true,
1758 "requires": {
1759 "@lerna/command": "3.11.0",
1760 "@lerna/filter-options": "3.11.0",
1761 "@lerna/listable": "3.11.0",
1762 "@lerna/output": "3.11.0"
1763 }
1764 },
1765 "@lerna/listable": {
1766 "version": "3.11.0",
1767 "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.11.0.tgz",
1768 "integrity": "sha512-nCrtGSS3YiAlh5dU5mmTAU9aLRlmIUn2FnahqsksN2uQ5O4o+614tneDuO298/eWLZo00eGw69EFngaQEl8quw==",
1769 "dev": true,
1770 "requires": {
1771 "@lerna/batch-packages": "3.11.0",
1772 "chalk": "^2.3.1",
1773 "columnify": "^1.5.4"
1774 }
1775 },
1776 "@lerna/log-packed": {
1777 "version": "3.11.0",
1778 "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.11.0.tgz",
1779 "integrity": "sha512-TH//81TzSTMuNzJIQE7zqu+ymI5rH25jdEdmbYEWmaJ+T42GMQXKxP8cj2m+fWRaDML8ta0uzBOm5PKHdgoFYQ==",
1780 "dev": true,
1781 "requires": {
1782 "byte-size": "^4.0.3",
1783 "columnify": "^1.5.4",
1784 "has-unicode": "^2.0.1",
1785 "npmlog": "^4.1.2"
1786 }
1787 },
1788 "@lerna/npm-conf": {
1789 "version": "3.7.0",
1790 "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.7.0.tgz",
1791 "integrity": "sha512-+WSMDfPKcKzMfqq283ydz9RRpOU6p9wfx0wy4hVSUY/6YUpsyuk8SShjcRtY8zTM5AOrxvFBuuV90H4YpZ5+Ng==",
1792 "dev": true,
1793 "requires": {
1794 "config-chain": "^1.1.11",
1795 "pify": "^3.0.0"
1796 }
1797 },
1798 "@lerna/npm-dist-tag": {
1799 "version": "3.11.0",
1800 "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.11.0.tgz",
1801 "integrity": "sha512-WqZcyDb+wiqAKRFcYEK6R8AQfspyro85zGGHyjYw6ZPNgJX3qhwtQ+MidDmOesi2p5/0GfeVSWega+W7fPzVpg==",
1802 "dev": true,
1803 "requires": {
1804 "figgy-pudding": "^3.5.1",
1805 "npm-package-arg": "^6.1.0",
1806 "npm-registry-fetch": "^3.9.0",
1807 "npmlog": "^4.1.2"
1808 }
1809 },
1810 "@lerna/npm-install": {
1811 "version": "3.11.0",
1812 "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.11.0.tgz",
1813 "integrity": "sha512-iNKEgFvFHMmBqn9AnFye2rv7CdUBlYciwWSTNtpfVqtOnoL/lg+4A774oL4PDoxTCGmougztyxMkqLVSBYXTpw==",
1814 "dev": true,
1815 "requires": {
1816 "@lerna/child-process": "3.3.0",
1817 "@lerna/get-npm-exec-opts": "3.11.0",
1818 "fs-extra": "^7.0.0",
1819 "npm-package-arg": "^6.1.0",
1820 "npmlog": "^4.1.2",
1821 "signal-exit": "^3.0.2",
1822 "write-pkg": "^3.1.0"
1823 }
1824 },
1825 "@lerna/npm-publish": {
1826 "version": "3.11.0",
1827 "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.11.0.tgz",
1828 "integrity": "sha512-wgbb55gUXRlP8uTe60oW6c06ZhquaJu9xbi2vWNpb5Fmjh/KbZ2iNm9Kj2ciZlvb8D+k4Oc3qV7slBGxyMm8wg==",
1829 "dev": true,
1830 "requires": {
1831 "@lerna/run-lifecycle": "3.11.0",
1832 "figgy-pudding": "^3.5.1",
1833 "fs-extra": "^7.0.0",
1834 "libnpmpublish": "^1.1.1",
1835 "npmlog": "^4.1.2",
1836 "pify": "^3.0.0",
1837 "read-package-json": "^2.0.13"
1838 }
1839 },
1840 "@lerna/npm-run-script": {
1841 "version": "3.11.0",
1842 "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.11.0.tgz",
1843 "integrity": "sha512-cLnTMrRQlK/N5bCr6joOFMBfRyW2EbMdk3imtjHk0LwZxsvQx3naAPUB/2RgNfC8fGf/yHF/0bmBrpb5sa2IlA==",
1844 "dev": true,
1845 "requires": {
1846 "@lerna/child-process": "3.3.0",
1847 "@lerna/get-npm-exec-opts": "3.11.0",
1848 "npmlog": "^4.1.2"
1849 }
1850 },
1851 "@lerna/output": {
1852 "version": "3.11.0",
1853 "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.11.0.tgz",
1854 "integrity": "sha512-xHYGcEaZZ4cR0Jw368QgUgFvV27a6ZO5360BMNGNsjCjuY0aOPQC5+lBhgfydJtJteKjDna853PSjBK3uMhEjw==",
1855 "dev": true,
1856 "requires": {
1857 "npmlog": "^4.1.2"
1858 }
1859 },
1860 "@lerna/pack-directory": {
1861 "version": "3.11.0",
1862 "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.11.0.tgz",
1863 "integrity": "sha512-bgA3TxZx5AyZeqUadSPspktdecW7nIpg/ODq0o0gKFr7j+DC9Fqu8vQa2xmFSKsXDtOYkCV0jox6Ox9XSFSM3A==",
1864 "dev": true,
1865 "requires": {
1866 "@lerna/get-packed": "3.7.0",
1867 "@lerna/package": "3.11.0",
1868 "@lerna/run-lifecycle": "3.11.0",
1869 "figgy-pudding": "^3.5.1",
1870 "npm-packlist": "^1.1.12",
1871 "npmlog": "^4.1.2",
1872 "tar": "^4.4.8",
1873 "temp-write": "^3.4.0"
1874 }
1875 },
1876 "@lerna/package": {
1877 "version": "3.11.0",
1878 "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.11.0.tgz",
1879 "integrity": "sha512-hMzBhFEubhg+Tis5C8skwIfgOk+GTl0qudvzfPU9gQqLV8u4/Hs6mka6N0rKgbUb4VFVc5MJVe1eZ6Rv+kJAWw==",
1880 "dev": true,
1881 "requires": {
1882 "load-json-file": "^4.0.0",
1883 "npm-package-arg": "^6.1.0",
1884 "write-pkg": "^3.1.0"
1885 }
1886 },
1887 "@lerna/package-graph": {
1888 "version": "3.11.0",
1889 "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.11.0.tgz",
1890 "integrity": "sha512-ICYiOZvCfcmeH1qfzOkFYh0t0QA56OddQfI3ydxCiWi5G+UupJXnCIWSTh3edTAtw/kyxhCOWny/PJsG4CQfjA==",
1891 "dev": true,
1892 "requires": {
1893 "@lerna/validation-error": "3.11.0",
1894 "npm-package-arg": "^6.1.0",
1895 "semver": "^5.5.0"
1896 }
1897 },
1898 "@lerna/project": {
1899 "version": "3.11.0",
1900 "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.11.0.tgz",
1901 "integrity": "sha512-j3DGds+q/q2YNpoBImaEsMpkWgu5gP0IGKz1o1Ju39NZKrTPza+ARIzEByL4Jqu87tcoOj7RbZzhhrBP8JBbTg==",
1902 "dev": true,
1903 "requires": {
1904 "@lerna/package": "3.11.0",
1905 "@lerna/validation-error": "3.11.0",
1906 "cosmiconfig": "^5.0.2",
1907 "dedent": "^0.7.0",
1908 "dot-prop": "^4.2.0",
1909 "glob-parent": "^3.1.0",
1910 "globby": "^8.0.1",
1911 "load-json-file": "^4.0.0",
1912 "npmlog": "^4.1.2",
1913 "p-map": "^1.2.0",
1914 "resolve-from": "^4.0.0",
1915 "write-json-file": "^2.3.0"
1916 },
1917 "dependencies": {
1918 "dot-prop": {
1919 "version": "4.2.0",
1920 "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
1921 "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
1922 "dev": true,
1923 "requires": {
1924 "is-obj": "^1.0.0"
1925 }
1926 },
1927 "resolve-from": {
1928 "version": "4.0.0",
1929 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1930 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1931 "dev": true
1932 }
1933 }
1934 },
1935 "@lerna/prompt": {
1936 "version": "3.11.0",
1937 "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.11.0.tgz",
1938 "integrity": "sha512-SB/wvyDPQASze9txd+8/t24p6GiJuhhL30zxuRwvVwER5lIJR7kaXy1KhQ7kUAKPlNTVfCBm3GXReIMl4jhGhw==",
1939 "dev": true,
1940 "requires": {
1941 "inquirer": "^6.2.0",
1942 "npmlog": "^4.1.2"
1943 }
1944 },
1945 "@lerna/publish": {
1946 "version": "3.11.1",
1947 "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.11.1.tgz",
1948 "integrity": "sha512-UOvmSivuqzWoiTqoYWk+liPDZvC6O7NrT8DwoG2peRvjIPs5RKYMubwXPOrBBVVE+yX/vR6V1Y3o6vf3av52dg==",
1949 "dev": true,
1950 "requires": {
1951 "@lerna/batch-packages": "3.11.0",
1952 "@lerna/check-working-tree": "3.11.0",
1953 "@lerna/child-process": "3.3.0",
1954 "@lerna/collect-updates": "3.11.0",
1955 "@lerna/command": "3.11.0",
1956 "@lerna/describe-ref": "3.11.0",
1957 "@lerna/log-packed": "3.11.0",
1958 "@lerna/npm-conf": "3.7.0",
1959 "@lerna/npm-dist-tag": "3.11.0",
1960 "@lerna/npm-publish": "3.11.0",
1961 "@lerna/output": "3.11.0",
1962 "@lerna/pack-directory": "3.11.0",
1963 "@lerna/prompt": "3.11.0",
1964 "@lerna/pulse-till-done": "3.11.0",
1965 "@lerna/run-lifecycle": "3.11.0",
1966 "@lerna/run-parallel-batches": "3.0.0",
1967 "@lerna/validation-error": "3.11.0",
1968 "@lerna/version": "3.11.1",
1969 "figgy-pudding": "^3.5.1",
1970 "fs-extra": "^7.0.0",
1971 "libnpmaccess": "^3.0.1",
1972 "npm-package-arg": "^6.1.0",
1973 "npm-registry-fetch": "^3.9.0",
1974 "npmlog": "^4.1.2",
1975 "p-finally": "^1.0.0",
1976 "p-map": "^1.2.0",
1977 "p-pipe": "^1.2.0",
1978 "p-reduce": "^1.0.0",
1979 "pacote": "^9.4.1",
1980 "semver": "^5.5.0"
1981 }
1982 },
1983 "@lerna/pulse-till-done": {
1984 "version": "3.11.0",
1985 "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.11.0.tgz",
1986 "integrity": "sha512-nMwBa6S4+VI/ketN92oj1xr8y74Fz4ul2R5jdbrRqLLEU/IMBWIqn6NRM2P+OQBoLpPZ2MdWENLJVFNN8X1Q+A==",
1987 "dev": true,
1988 "requires": {
1989 "npmlog": "^4.1.2"
1990 }
1991 },
1992 "@lerna/resolve-symlink": {
1993 "version": "3.11.0",
1994 "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.11.0.tgz",
1995 "integrity": "sha512-lDer8zPXS36iL4vJdZwOk6AnuUjDXswoTWdYkl+HdAKXp7cBlS+VeGmcFIJS4R3mSSZE20h1oEDuH8h8GGORIQ==",
1996 "dev": true,
1997 "requires": {
1998 "fs-extra": "^7.0.0",
1999 "npmlog": "^4.1.2",
2000 "read-cmd-shim": "^1.0.1"
2001 }
2002 },
2003 "@lerna/rimraf-dir": {
2004 "version": "3.11.0",
2005 "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.11.0.tgz",
2006 "integrity": "sha512-roy4lKel7BMNLfFvyzK0HI251mgI9EwbpOccR2Waz0V22d0gaqLKzfVrzovat9dVHXrKNxAhJ5iKkKeT93IunQ==",
2007 "dev": true,
2008 "requires": {
2009 "@lerna/child-process": "3.3.0",
2010 "npmlog": "^4.1.2",
2011 "path-exists": "^3.0.0",
2012 "rimraf": "^2.6.2"
2013 }
2014 },
2015 "@lerna/run": {
2016 "version": "3.11.0",
2017 "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.11.0.tgz",
2018 "integrity": "sha512-8c2yzbKJFzgO6VTOftWmB0fOLTL7G1GFAG5UTVDSk95Z2Gnjof3I/Xkvtbzq8L+DIOLpr+Tpj3fRBjZd8rONlA==",
2019 "dev": true,
2020 "requires": {
2021 "@lerna/batch-packages": "3.11.0",
2022 "@lerna/command": "3.11.0",
2023 "@lerna/filter-options": "3.11.0",
2024 "@lerna/npm-run-script": "3.11.0",
2025 "@lerna/output": "3.11.0",
2026 "@lerna/run-parallel-batches": "3.0.0",
2027 "@lerna/timer": "3.5.0",
2028 "@lerna/validation-error": "3.11.0",
2029 "p-map": "^1.2.0"
2030 }
2031 },
2032 "@lerna/run-lifecycle": {
2033 "version": "3.11.0",
2034 "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.11.0.tgz",
2035 "integrity": "sha512-3xeeVz9s3Dh2ljKqJI/Fl+gkZD9Y8JblAN62f4WNM76d/zFlgpCXDs62OpxNjEuXujA7YFix0sJ+oPKMm8mDrw==",
2036 "dev": true,
2037 "requires": {
2038 "@lerna/npm-conf": "3.7.0",
2039 "figgy-pudding": "^3.5.1",
2040 "npm-lifecycle": "^2.1.0",
2041 "npmlog": "^4.1.2"
2042 }
2043 },
2044 "@lerna/run-parallel-batches": {
2045 "version": "3.0.0",
2046 "resolved": "https://registry.npmjs.org/@lerna/run-parallel-batches/-/run-parallel-batches-3.0.0.tgz",
2047 "integrity": "sha512-Mj1ravlXF7AkkewKd9YFq9BtVrsStNrvVLedD/b2wIVbNqcxp8lS68vehXVOzoL/VWNEDotvqCQtyDBilCodGw==",
2048 "dev": true,
2049 "requires": {
2050 "p-map": "^1.2.0",
2051 "p-map-series": "^1.0.0"
2052 }
2053 },
2054 "@lerna/symlink-binary": {
2055 "version": "3.11.0",
2056 "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.11.0.tgz",
2057 "integrity": "sha512-5sOED+1O8jI+ckDS6DRUKtAtbKo7lbxFIJs6sWWEu5qKzM5e21O6E2wTWimJkad8nJ1SJAuyc8DC8M8ki4kT4w==",
2058 "dev": true,
2059 "requires": {
2060 "@lerna/create-symlink": "3.11.0",
2061 "@lerna/package": "3.11.0",
2062 "fs-extra": "^7.0.0",
2063 "p-map": "^1.2.0"
2064 }
2065 },
2066 "@lerna/symlink-dependencies": {
2067 "version": "3.11.0",
2068 "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.11.0.tgz",
2069 "integrity": "sha512-XKNX8oOgcOmiKHUn7qT5GvvmKP3w5otZPOjRixUDUILWTc3P8nO5I1VNILNF6IE5ajNw6yiXOWikSxc6KuFqBQ==",
2070 "dev": true,
2071 "requires": {
2072 "@lerna/create-symlink": "3.11.0",
2073 "@lerna/resolve-symlink": "3.11.0",
2074 "@lerna/symlink-binary": "3.11.0",
2075 "fs-extra": "^7.0.0",
2076 "p-finally": "^1.0.0",
2077 "p-map": "^1.2.0",
2078 "p-map-series": "^1.0.0"
2079 }
2080 },
2081 "@lerna/timer": {
2082 "version": "3.5.0",
2083 "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.5.0.tgz",
2084 "integrity": "sha512-TAb99hqQN6E3JBGtG9iyZNPq1/DbmqgBOeNrKtdJsGvIeX/NGLgUDWMrj2h04V4O+jpBFmSf6HIld6triKmxCA==",
2085 "dev": true
2086 },
2087 "@lerna/validation-error": {
2088 "version": "3.11.0",
2089 "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.11.0.tgz",
2090 "integrity": "sha512-/mS4o6QYm4OXUqfPJnW1mKudGhvhLe9uiQ9eK2cgSxkCAVq9G2Sl/KVohpnqAgeRI3nXordGxHS745CdAhg7pA==",
2091 "dev": true,
2092 "requires": {
2093 "npmlog": "^4.1.2"
2094 }
2095 },
2096 "@lerna/version": {
2097 "version": "3.11.1",
2098 "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.11.1.tgz",
2099 "integrity": "sha512-+lFq4D8BpchIslIz6jyUY6TZO1kuAgQ+G1LjaYwUBiP2SzXVWgPoPoq/9dnaSq38Hhhvlf7FF6i15d+q8gk1xQ==",
2100 "dev": true,
2101 "requires": {
2102 "@lerna/batch-packages": "3.11.0",
2103 "@lerna/check-working-tree": "3.11.0",
2104 "@lerna/child-process": "3.3.0",
2105 "@lerna/collect-updates": "3.11.0",
2106 "@lerna/command": "3.11.0",
2107 "@lerna/conventional-commits": "3.11.0",
2108 "@lerna/github-client": "3.11.0",
2109 "@lerna/output": "3.11.0",
2110 "@lerna/prompt": "3.11.0",
2111 "@lerna/run-lifecycle": "3.11.0",
2112 "@lerna/validation-error": "3.11.0",
2113 "chalk": "^2.3.1",
2114 "dedent": "^0.7.0",
2115 "minimatch": "^3.0.4",
2116 "npmlog": "^4.1.2",
2117 "p-map": "^1.2.0",
2118 "p-pipe": "^1.2.0",
2119 "p-reduce": "^1.0.0",
2120 "p-waterfall": "^1.0.0",
2121 "semver": "^5.5.0",
2122 "slash": "^1.0.0",
2123 "temp-write": "^3.4.0"
2124 },
2125 "dependencies": {
2126 "slash": {
2127 "version": "1.0.0",
2128 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
2129 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
2130 "dev": true
2131 }
2132 }
2133 },
2134 "@lerna/write-log-file": {
2135 "version": "3.11.0",
2136 "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.11.0.tgz",
2137 "integrity": "sha512-skpTDMDOkQAN4lCeAoI6/rPhbNE431eD0i6Ts3kExUOrYTr0m5CIwVtMZ31Flpky0Jfh4ET6rOl5SDNMLbf4VA==",
2138 "dev": true,
2139 "requires": {
2140 "npmlog": "^4.1.2",
2141 "write-file-atomic": "^2.3.0"
2142 }
2143 },
2144 "@mdi/js": {
2145 "version": "3.4.93",
2146 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.4.93.tgz",
2147 "integrity": "sha512-SEzolEqT8ErlWdHz4AAtQ1lTfAnM6j67Ppm6k5s/I1aIuuoFP/D8d/z838C28xHO1KOqrsS1fw2wlf6fRiEEJA=="
2148 },
2149 "@mdi/react": {
2150 "version": "1.1.0",
2151 "resolved": "https://registry.npmjs.org/@mdi/react/-/react-1.1.0.tgz",
2152 "integrity": "sha512-c0+avMYEZ6i7Pg1ULLFs+p7k8bDPiie9rrgGYs8VWQhw2tUUYz7r0lIPVzD3bzMghWfyhfkArj88K5Of0WTMNw=="
2153 },
1195 "@meetfranz/electron-notification-state": { 2154 "@meetfranz/electron-notification-state": {
1196 "version": "1.0.0", 2155 "version": "1.0.0",
1197 "resolved": "https://registry.npmjs.org/@meetfranz/electron-notification-state/-/electron-notification-state-1.0.0.tgz", 2156 "resolved": "https://registry.npmjs.org/@meetfranz/electron-notification-state/-/electron-notification-state-1.0.0.tgz",
@@ -1202,10 +2161,450 @@
1202 "windows-quiet-hours": "^1.2.2" 2161 "windows-quiet-hours": "^1.2.2"
1203 } 2162 }
1204 }, 2163 },
2164 "@meetfranz/forms": {
2165 "version": "file:packages/forms",
2166 "requires": {
2167 "@mdi/js": "^3.3.92",
2168 "@mdi/react": "^1.1.0",
2169 "@meetfranz/theme": "^1.0.13",
2170 "react-html-attributes": "^1.4.3",
2171 "react-loader": "^2.4.5"
2172 }
2173 },
2174 "@meetfranz/theme": {
2175 "version": "file:packages/theme",
2176 "requires": {
2177 "color": "^3.1.0"
2178 }
2179 },
2180 "@meetfranz/ui": {
2181 "version": "file:packages/ui",
2182 "requires": {
2183 "@mdi/js": "^3.3.92",
2184 "@mdi/react": "^1.1.0",
2185 "@meetfranz/theme": "^1.0.13",
2186 "react-loader": "^2.4.5"
2187 }
2188 },
2189 "@mrmlnc/readdir-enhanced": {
2190 "version": "2.2.1",
2191 "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
2192 "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
2193 "dev": true,
2194 "requires": {
2195 "call-me-maybe": "^1.0.1",
2196 "glob-to-regexp": "^0.3.0"
2197 }
2198 },
2199 "@nodelib/fs.stat": {
2200 "version": "1.1.3",
2201 "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
2202 "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
2203 "dev": true
2204 },
2205 "@octokit/endpoint": {
2206 "version": "3.1.2",
2207 "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-3.1.2.tgz",
2208 "integrity": "sha512-iRx4kDYybAv9tOrHDBE6HwlgiFi8qmbZl8SHliZWtxbUFuXLZXh2yv8DxGIK9wzD9J0wLDMZneO8vNYJNUSJ9Q==",
2209 "dev": true,
2210 "requires": {
2211 "deepmerge": "3.1.0",
2212 "is-plain-object": "^2.0.4",
2213 "universal-user-agent": "^2.0.1",
2214 "url-template": "^2.0.8"
2215 }
2216 },
2217 "@octokit/plugin-enterprise-rest": {
2218 "version": "2.1.1",
2219 "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-2.1.1.tgz",
2220 "integrity": "sha512-DJNXHH0LptKCLpJ8y3vCA/O+s+3/sDU4JNN2V0M04tsMN0hVGLPzoGgejPJgaxGP8Il5aw+jA5Nl5mTfdt9NrQ==",
2221 "dev": true
2222 },
2223 "@octokit/request": {
2224 "version": "2.3.0",
2225 "resolved": "https://registry.npmjs.org/@octokit/request/-/request-2.3.0.tgz",
2226 "integrity": "sha512-5YRqYNZOAaL7+nt7w3Scp6Sz4P2g7wKFP9npx1xdExMomk8/M/ICXVLYVam2wzxeY0cIc6wcKpjC5KI4jiNbGw==",
2227 "dev": true,
2228 "requires": {
2229 "@octokit/endpoint": "^3.1.1",
2230 "is-plain-object": "^2.0.4",
2231 "node-fetch": "^2.3.0",
2232 "universal-user-agent": "^2.0.1"
2233 },
2234 "dependencies": {
2235 "node-fetch": {
2236 "version": "2.3.0",
2237 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
2238 "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==",
2239 "dev": true
2240 }
2241 }
2242 },
2243 "@octokit/rest": {
2244 "version": "16.15.0",
2245 "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.15.0.tgz",
2246 "integrity": "sha512-Un+e7rgh38RtPOTe453pT/KPM/p2KZICimBmuZCd2wEo8PacDa4h6RqTPZs+f2DPazTTqdM7QU4LKlUjgiBwWw==",
2247 "dev": true,
2248 "requires": {
2249 "@octokit/request": "2.3.0",
2250 "before-after-hook": "^1.2.0",
2251 "btoa-lite": "^1.0.0",
2252 "lodash.get": "^4.4.2",
2253 "lodash.set": "^4.3.2",
2254 "lodash.uniq": "^4.5.0",
2255 "octokit-pagination-methods": "^1.1.0",
2256 "universal-user-agent": "^2.0.0",
2257 "url-template": "^2.0.8"
2258 }
2259 },
2260 "@types/babel__core": {
2261 "version": "7.1.1",
2262 "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz",
2263 "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==",
2264 "dev": true,
2265 "requires": {
2266 "@babel/parser": "^7.1.0",
2267 "@babel/types": "^7.0.0",
2268 "@types/babel__generator": "*",
2269 "@types/babel__template": "*",
2270 "@types/babel__traverse": "*"
2271 }
2272 },
2273 "@types/babel__generator": {
2274 "version": "7.0.2",
2275 "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz",
2276 "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==",
2277 "dev": true,
2278 "requires": {
2279 "@babel/types": "^7.0.0"
2280 }
2281 },
2282 "@types/babel__template": {
2283 "version": "7.0.2",
2284 "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz",
2285 "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==",
2286 "dev": true,
2287 "requires": {
2288 "@babel/parser": "^7.1.0",
2289 "@babel/types": "^7.0.0"
2290 }
2291 },
2292 "@types/babel__traverse": {
2293 "version": "7.0.6",
2294 "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.6.tgz",
2295 "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==",
2296 "dev": true,
2297 "requires": {
2298 "@babel/types": "^7.3.0"
2299 }
2300 },
2301 "@types/classnames": {
2302 "version": "2.2.7",
2303 "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.7.tgz",
2304 "integrity": "sha512-rzOhiQ55WzAiFgXRtitP/ZUT8iVNyllEpylJ5zHzR4vArUvMB39GTk+Zon/uAM0JxEFAWnwsxC2gH8s+tZ3Myg==",
2305 "dev": true
2306 },
2307 "@types/color": {
2308 "version": "3.0.0",
2309 "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.0.tgz",
2310 "integrity": "sha512-5qqtNia+m2I0/85+pd2YzAXaTyKO8j+svirO5aN+XaQJ5+eZ8nx0jPtEWZLxCi50xwYsX10xUHetFzfb1WEs4Q==",
2311 "dev": true,
2312 "requires": {
2313 "@types/color-convert": "*"
2314 }
2315 },
2316 "@types/color-convert": {
2317 "version": "1.9.0",
2318 "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-1.9.0.tgz",
2319 "integrity": "sha512-OKGEfULrvSL2VRbkl/gnjjgbbF7ycIlpSsX7Nkab4MOWi5XxmgBYvuiQ7lcCFY5cPDz7MUNaKgxte2VRmtr4Fg==",
2320 "dev": true,
2321 "requires": {
2322 "@types/color-name": "*"
2323 }
2324 },
2325 "@types/color-name": {
2326 "version": "1.1.0",
2327 "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.0.tgz",
2328 "integrity": "sha512-gZ/Rb+MFXF0pXSEQxdRoPMm5jeO3TycjOdvbpbcpHX/B+n9AqaHFe5q6Ga9CsZ7ir/UgIWPfrBzUzn3F19VH/w==",
2329 "dev": true
2330 },
2331 "@types/istanbul-lib-coverage": {
2332 "version": "2.0.0",
2333 "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz",
2334 "integrity": "sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg==",
2335 "dev": true
2336 },
2337 "@types/jss": {
2338 "version": "9.5.7",
2339 "resolved": "https://registry.npmjs.org/@types/jss/-/jss-9.5.7.tgz",
2340 "integrity": "sha512-OZimStu2QdDMtZ0h72JXqvLVbWUjXd5ZLk8vxLmfuC/nM1AabRyyGoxSufnzixrbpEcVcyy/JV5qeQu2JnjVZw==",
2341 "dev": true,
2342 "requires": {
2343 "csstype": "^2.0.0",
2344 "indefinite-observable": "^1.0.1"
2345 }
2346 },
2347 "@types/lodash": {
2348 "version": "4.14.120",
2349 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.120.tgz",
2350 "integrity": "sha512-jQ21kQ120mo+IrDs1nFNVm/AsdFxIx2+vZ347DbogHJPd/JzKNMOqU6HCYin1W6v8l5R9XSO2/e9cxmn7HAnVw==",
2351 "dev": true
2352 },
1205 "@types/node": { 2353 "@types/node": {
1206 "version": "10.12.19", 2354 "version": "11.9.0",
1207 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.19.tgz", 2355 "resolved": "https://registry.npmjs.org/@types/node/-/node-11.9.0.tgz",
1208 "integrity": "sha512-2NVovndCjJQj6fUUn9jCgpP4WSqr+u1SoUZMZyJkhGeBFsm6dE46l31S7lPUYt9uQ28XI+ibrJA1f5XyH5HNtA==", 2356 "integrity": "sha512-ry4DOrC+xenhQbzk1iIPzCZGhhPGEFv7ia7Iu6XXSLVluiJIe9FfG7Iu3mObH9mpxEXCWLCMU4JWbCCR9Oy1Zg==",
2357 "dev": true
2358 },
2359 "@types/prop-types": {
2360 "version": "15.5.8",
2361 "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.8.tgz",
2362 "integrity": "sha512-3AQoUxQcQtLHsK25wtTWIoIpgYjH3vSDroZOUr7PpCHw/jLY1RB9z9E8dBT/OSmwStVgkRNvdh+ZHNiomRieaw==",
2363 "dev": true
2364 },
2365 "@types/react": {
2366 "version": "16.8.2",
2367 "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.2.tgz",
2368 "integrity": "sha512-6mcKsqlqkN9xADrwiUz2gm9Wg4iGnlVGciwBRYFQSMWG6MQjhOZ/AVnxn+6v8nslFgfYTV8fNdE6XwKu6va5PA==",
2369 "dev": true,
2370 "requires": {
2371 "@types/prop-types": "*",
2372 "csstype": "^2.2.0"
2373 }
2374 },
2375 "@types/react-dom": {
2376 "version": "16.0.11",
2377 "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.11.tgz",
2378 "integrity": "sha512-x6zUx9/42B5Kl2Vl9HlopV8JF64wLpX3c+Pst9kc1HgzrsH+mkehe/zmHMQTplIrR48H2gpU7ZqurQolYu8XBA==",
2379 "dev": true,
2380 "requires": {
2381 "@types/react": "*"
2382 }
2383 },
2384 "@types/react-jss": {
2385 "version": "8.6.1",
2386 "resolved": "https://registry.npmjs.org/@types/react-jss/-/react-jss-8.6.1.tgz",
2387 "integrity": "sha512-F/6V+yOuUA/4sTKwa9Lc2QsafKhAal3d9XxvtaMS1HUdNx9xspPpnHMEIJ27qiAPuyNMF5naJxdxwnEE0fWoSg==",
2388 "dev": true,
2389 "requires": {
2390 "@types/jss": "*",
2391 "@types/react": "*",
2392 "@types/theming": "*",
2393 "csstype": "^2.0.0"
2394 }
2395 },
2396 "@types/stack-utils": {
2397 "version": "1.0.1",
2398 "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
2399 "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
2400 "dev": true
2401 },
2402 "@types/theming": {
2403 "version": "1.3.2",
2404 "resolved": "https://registry.npmjs.org/@types/theming/-/theming-1.3.2.tgz",
2405 "integrity": "sha512-hglGgki3jUbSjl1UB6vc8rsOyELRfH+VVIMyymoHRlUizdgWmWiwteH2jdltsHCVlAtSCmAh0nB71t9G41vhxQ==",
2406 "dev": true,
2407 "requires": {
2408 "@types/react": "*"
2409 }
2410 },
2411 "@types/uuid": {
2412 "version": "3.4.4",
2413 "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz",
2414 "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==",
2415 "dev": true,
2416 "requires": {
2417 "@types/node": "*"
2418 }
2419 },
2420 "@types/yargs": {
2421 "version": "12.0.12",
2422 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz",
2423 "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==",
2424 "dev": true
2425 },
2426 "@webassemblyjs/ast": {
2427 "version": "1.7.11",
2428 "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz",
2429 "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==",
2430 "dev": true,
2431 "requires": {
2432 "@webassemblyjs/helper-module-context": "1.7.11",
2433 "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
2434 "@webassemblyjs/wast-parser": "1.7.11"
2435 }
2436 },
2437 "@webassemblyjs/floating-point-hex-parser": {
2438 "version": "1.7.11",
2439 "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz",
2440 "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==",
2441 "dev": true
2442 },
2443 "@webassemblyjs/helper-api-error": {
2444 "version": "1.7.11",
2445 "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz",
2446 "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==",
2447 "dev": true
2448 },
2449 "@webassemblyjs/helper-buffer": {
2450 "version": "1.7.11",
2451 "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz",
2452 "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==",
2453 "dev": true
2454 },
2455 "@webassemblyjs/helper-code-frame": {
2456 "version": "1.7.11",
2457 "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz",
2458 "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==",
2459 "dev": true,
2460 "requires": {
2461 "@webassemblyjs/wast-printer": "1.7.11"
2462 }
2463 },
2464 "@webassemblyjs/helper-fsm": {
2465 "version": "1.7.11",
2466 "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz",
2467 "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==",
2468 "dev": true
2469 },
2470 "@webassemblyjs/helper-module-context": {
2471 "version": "1.7.11",
2472 "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz",
2473 "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==",
2474 "dev": true
2475 },
2476 "@webassemblyjs/helper-wasm-bytecode": {
2477 "version": "1.7.11",
2478 "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz",
2479 "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==",
2480 "dev": true
2481 },
2482 "@webassemblyjs/helper-wasm-section": {
2483 "version": "1.7.11",
2484 "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz",
2485 "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==",
2486 "dev": true,
2487 "requires": {
2488 "@webassemblyjs/ast": "1.7.11",
2489 "@webassemblyjs/helper-buffer": "1.7.11",
2490 "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
2491 "@webassemblyjs/wasm-gen": "1.7.11"
2492 }
2493 },
2494 "@webassemblyjs/ieee754": {
2495 "version": "1.7.11",
2496 "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz",
2497 "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==",
2498 "dev": true,
2499 "requires": {
2500 "@xtuc/ieee754": "^1.2.0"
2501 }
2502 },
2503 "@webassemblyjs/leb128": {
2504 "version": "1.7.11",
2505 "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz",
2506 "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==",
2507 "dev": true,
2508 "requires": {
2509 "@xtuc/long": "4.2.1"
2510 }
2511 },
2512 "@webassemblyjs/utf8": {
2513 "version": "1.7.11",
2514 "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz",
2515 "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==",
2516 "dev": true
2517 },
2518 "@webassemblyjs/wasm-edit": {
2519 "version": "1.7.11",
2520 "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz",
2521 "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==",
2522 "dev": true,
2523 "requires": {
2524 "@webassemblyjs/ast": "1.7.11",
2525 "@webassemblyjs/helper-buffer": "1.7.11",
2526 "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
2527 "@webassemblyjs/helper-wasm-section": "1.7.11",
2528 "@webassemblyjs/wasm-gen": "1.7.11",
2529 "@webassemblyjs/wasm-opt": "1.7.11",
2530 "@webassemblyjs/wasm-parser": "1.7.11",
2531 "@webassemblyjs/wast-printer": "1.7.11"
2532 }
2533 },
2534 "@webassemblyjs/wasm-gen": {
2535 "version": "1.7.11",
2536 "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz",
2537 "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==",
2538 "dev": true,
2539 "requires": {
2540 "@webassemblyjs/ast": "1.7.11",
2541 "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
2542 "@webassemblyjs/ieee754": "1.7.11",
2543 "@webassemblyjs/leb128": "1.7.11",
2544 "@webassemblyjs/utf8": "1.7.11"
2545 }
2546 },
2547 "@webassemblyjs/wasm-opt": {
2548 "version": "1.7.11",
2549 "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz",
2550 "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==",
2551 "dev": true,
2552 "requires": {
2553 "@webassemblyjs/ast": "1.7.11",
2554 "@webassemblyjs/helper-buffer": "1.7.11",
2555 "@webassemblyjs/wasm-gen": "1.7.11",
2556 "@webassemblyjs/wasm-parser": "1.7.11"
2557 }
2558 },
2559 "@webassemblyjs/wasm-parser": {
2560 "version": "1.7.11",
2561 "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz",
2562 "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==",
2563 "dev": true,
2564 "requires": {
2565 "@webassemblyjs/ast": "1.7.11",
2566 "@webassemblyjs/helper-api-error": "1.7.11",
2567 "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
2568 "@webassemblyjs/ieee754": "1.7.11",
2569 "@webassemblyjs/leb128": "1.7.11",
2570 "@webassemblyjs/utf8": "1.7.11"
2571 }
2572 },
2573 "@webassemblyjs/wast-parser": {
2574 "version": "1.7.11",
2575 "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz",
2576 "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==",
2577 "dev": true,
2578 "requires": {
2579 "@webassemblyjs/ast": "1.7.11",
2580 "@webassemblyjs/floating-point-hex-parser": "1.7.11",
2581 "@webassemblyjs/helper-api-error": "1.7.11",
2582 "@webassemblyjs/helper-code-frame": "1.7.11",
2583 "@webassemblyjs/helper-fsm": "1.7.11",
2584 "@xtuc/long": "4.2.1"
2585 }
2586 },
2587 "@webassemblyjs/wast-printer": {
2588 "version": "1.7.11",
2589 "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz",
2590 "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==",
2591 "dev": true,
2592 "requires": {
2593 "@webassemblyjs/ast": "1.7.11",
2594 "@webassemblyjs/wast-parser": "1.7.11",
2595 "@xtuc/long": "4.2.1"
2596 }
2597 },
2598 "@xtuc/ieee754": {
2599 "version": "1.2.0",
2600 "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
2601 "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
2602 "dev": true
2603 },
2604 "@xtuc/long": {
2605 "version": "4.2.1",
2606 "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz",
2607 "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
1209 "dev": true 2608 "dev": true
1210 }, 2609 },
1211 "JSONStream": { 2610 "JSONStream": {
@@ -1218,6 +2617,12 @@
1218 "through": ">=2.2.7 <3" 2617 "through": ">=2.2.7 <3"
1219 } 2618 }
1220 }, 2619 },
2620 "abab": {
2621 "version": "2.0.0",
2622 "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
2623 "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
2624 "dev": true
2625 },
1221 "abbrev": { 2626 "abbrev": {
1222 "version": "1.1.1", 2627 "version": "1.1.1",
1223 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 2628 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -1236,24 +2641,57 @@
1236 "dependencies": { 2641 "dependencies": {
1237 "mime-types": { 2642 "mime-types": {
1238 "version": "1.0.2", 2643 "version": "1.0.2",
1239 "resolved": "http://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", 2644 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
1240 "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=", 2645 "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=",
1241 "dev": true 2646 "dev": true
1242 } 2647 }
1243 } 2648 }
1244 }, 2649 },
1245 "acorn": { 2650 "acorn": {
1246 "version": "6.0.4", 2651 "version": "6.1.0",
1247 "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", 2652 "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.0.tgz",
1248 "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", 2653 "integrity": "sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==",
1249 "dev": true 2654 "dev": true
1250 }, 2655 },
2656 "acorn-dynamic-import": {
2657 "version": "3.0.0",
2658 "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
2659 "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
2660 "dev": true,
2661 "requires": {
2662 "acorn": "^5.0.0"
2663 },
2664 "dependencies": {
2665 "acorn": {
2666 "version": "5.7.3",
2667 "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
2668 "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
2669 "dev": true
2670 }
2671 }
2672 },
2673 "acorn-globals": {
2674 "version": "4.3.1",
2675 "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.1.tgz",
2676 "integrity": "sha512-gJSiKY8dBIjV/0jagZIFBdVMtfQyA5QHCvAT48H2q8REQoW8Fs5AOjqBql1LgSXgrMWdevcE+8cdZ33NtVbIBA==",
2677 "dev": true,
2678 "requires": {
2679 "acorn": "^6.0.1",
2680 "acorn-walk": "^6.0.1"
2681 }
2682 },
1251 "acorn-jsx": { 2683 "acorn-jsx": {
1252 "version": "5.0.1", 2684 "version": "5.0.1",
1253 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", 2685 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
1254 "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", 2686 "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
1255 "dev": true 2687 "dev": true
1256 }, 2688 },
2689 "acorn-walk": {
2690 "version": "6.1.1",
2691 "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
2692 "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==",
2693 "dev": true
2694 },
1257 "add-stream": { 2695 "add-stream": {
1258 "version": "1.0.0", 2696 "version": "1.0.0",
1259 "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", 2697 "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
@@ -1274,22 +2712,46 @@
1274 "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", 2712 "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
1275 "dev": true 2713 "dev": true
1276 }, 2714 },
2715 "agent-base": {
2716 "version": "4.2.1",
2717 "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
2718 "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
2719 "dev": true,
2720 "requires": {
2721 "es6-promisify": "^5.0.0"
2722 }
2723 },
2724 "agentkeepalive": {
2725 "version": "3.5.2",
2726 "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
2727 "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
2728 "dev": true,
2729 "requires": {
2730 "humanize-ms": "^1.2.1"
2731 }
2732 },
1277 "ajv": { 2733 "ajv": {
1278 "version": "5.5.2", 2734 "version": "6.9.1",
1279 "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 2735 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
1280 "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 2736 "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==",
1281 "dev": true, 2737 "dev": true,
1282 "requires": { 2738 "requires": {
1283 "co": "^4.6.0", 2739 "fast-deep-equal": "^2.0.1",
1284 "fast-deep-equal": "^1.0.0",
1285 "fast-json-stable-stringify": "^2.0.0", 2740 "fast-json-stable-stringify": "^2.0.0",
1286 "json-schema-traverse": "^0.3.0" 2741 "json-schema-traverse": "^0.4.1",
2742 "uri-js": "^4.2.2"
1287 } 2743 }
1288 }, 2744 },
2745 "ajv-errors": {
2746 "version": "1.0.1",
2747 "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
2748 "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
2749 "dev": true
2750 },
1289 "ajv-keywords": { 2751 "ajv-keywords": {
1290 "version": "3.2.0", 2752 "version": "3.4.0",
1291 "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", 2753 "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz",
1292 "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", 2754 "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==",
1293 "dev": true 2755 "dev": true
1294 }, 2756 },
1295 "amdefine": { 2757 "amdefine": {
@@ -1305,44 +2767,11 @@
1305 "dev": true, 2767 "dev": true,
1306 "requires": { 2768 "requires": {
1307 "string-width": "^2.0.0" 2769 "string-width": "^2.0.0"
1308 },
1309 "dependencies": {
1310 "ansi-regex": {
1311 "version": "3.0.0",
1312 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
1313 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
1314 "dev": true
1315 },
1316 "is-fullwidth-code-point": {
1317 "version": "2.0.0",
1318 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1319 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
1320 "dev": true
1321 },
1322 "string-width": {
1323 "version": "2.1.1",
1324 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1325 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1326 "dev": true,
1327 "requires": {
1328 "is-fullwidth-code-point": "^2.0.0",
1329 "strip-ansi": "^4.0.0"
1330 }
1331 },
1332 "strip-ansi": {
1333 "version": "4.0.0",
1334 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1335 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1336 "dev": true,
1337 "requires": {
1338 "ansi-regex": "^3.0.0"
1339 }
1340 }
1341 } 2770 }
1342 }, 2771 },
1343 "ansi-colors": { 2772 "ansi-colors": {
1344 "version": "1.1.0", 2773 "version": "1.1.0",
1345 "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", 2774 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
1346 "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", 2775 "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
1347 "dev": true, 2776 "dev": true,
1348 "requires": { 2777 "requires": {
@@ -1350,33 +2779,45 @@
1350 } 2779 }
1351 }, 2780 },
1352 "ansi-escapes": { 2781 "ansi-escapes": {
1353 "version": "3.1.0", 2782 "version": "3.2.0",
1354 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", 2783 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
1355 "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", 2784 "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
1356 "dev": true 2785 "dev": true
1357 }, 2786 },
1358 "ansi-gray": { 2787 "ansi-gray": {
1359 "version": "0.1.1", 2788 "version": "0.1.1",
1360 "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", 2789 "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
1361 "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", 2790 "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
2791 "dev": true,
1362 "requires": { 2792 "requires": {
1363 "ansi-wrap": "0.1.0" 2793 "ansi-wrap": "0.1.0"
1364 } 2794 }
1365 }, 2795 },
2796 "ansi-html": {
2797 "version": "0.0.7",
2798 "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
2799 "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
2800 "dev": true
2801 },
1366 "ansi-regex": { 2802 "ansi-regex": {
1367 "version": "2.1.1", 2803 "version": "3.0.0",
1368 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2804 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
1369 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 2805 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
1370 }, 2806 },
1371 "ansi-styles": { 2807 "ansi-styles": {
1372 "version": "2.2.1", 2808 "version": "3.2.1",
1373 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 2809 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1374 "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 2810 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2811 "dev": true,
2812 "requires": {
2813 "color-convert": "^1.9.0"
2814 }
1375 }, 2815 },
1376 "ansi-wrap": { 2816 "ansi-wrap": {
1377 "version": "0.1.0", 2817 "version": "0.1.0",
1378 "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", 2818 "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
1379 "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" 2819 "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
2820 "dev": true
1380 }, 2821 },
1381 "anymatch": { 2822 "anymatch": {
1382 "version": "2.0.0", 2823 "version": "2.0.0",
@@ -1426,11 +2867,17 @@
1426 "temp-file": "^3.3.2" 2867 "temp-file": "^3.3.2"
1427 }, 2868 },
1428 "dependencies": { 2869 "dependencies": {
1429 "ci-info": { 2870 "builder-util-runtime": {
1430 "version": "2.0.0", 2871 "version": "8.1.0",
1431 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 2872 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.1.0.tgz",
1432 "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", 2873 "integrity": "sha512-s1mlJ28mv+56Iebh6c9aXjVe11O3Z0cDTwAGeB0PCcUzHA37fDxGgS8ZGoYNMZP+rBHj21d/od1wuYofTVLaQg==",
1433 "dev": true 2874 "dev": true,
2875 "requires": {
2876 "bluebird-lst": "^1.0.6",
2877 "debug": "^4.1.0",
2878 "fs-extra-p": "^7.0.0",
2879 "sax": "^1.2.4"
2880 }
1434 }, 2881 },
1435 "debug": { 2882 "debug": {
1436 "version": "4.1.1", 2883 "version": "4.1.1",
@@ -1441,15 +2888,6 @@
1441 "ms": "^2.1.1" 2888 "ms": "^2.1.1"
1442 } 2889 }
1443 }, 2890 },
1444 "is-ci": {
1445 "version": "2.0.0",
1446 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
1447 "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
1448 "dev": true,
1449 "requires": {
1450 "ci-info": "^2.0.0"
1451 }
1452 },
1453 "ms": { 2891 "ms": {
1454 "version": "2.1.1", 2892 "version": "2.1.1",
1455 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2893 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
@@ -1467,6 +2905,15 @@
1467 "buffer-equal": "^1.0.0" 2905 "buffer-equal": "^1.0.0"
1468 } 2906 }
1469 }, 2907 },
2908 "append-transform": {
2909 "version": "1.0.0",
2910 "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
2911 "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
2912 "dev": true,
2913 "requires": {
2914 "default-require-extensions": "^2.0.0"
2915 }
2916 },
1470 "applescript": { 2917 "applescript": {
1471 "version": "1.0.0", 2918 "version": "1.0.0",
1472 "resolved": "https://registry.npmjs.org/applescript/-/applescript-1.0.0.tgz", 2919 "resolved": "https://registry.npmjs.org/applescript/-/applescript-1.0.0.tgz",
@@ -1481,7 +2928,8 @@
1481 "archy": { 2928 "archy": {
1482 "version": "1.0.0", 2929 "version": "1.0.0",
1483 "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 2930 "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
1484 "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" 2931 "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
2932 "dev": true
1485 }, 2933 },
1486 "are-we-there-yet": { 2934 "are-we-there-yet": {
1487 "version": "1.1.5", 2935 "version": "1.1.5",
@@ -1491,6 +2939,32 @@
1491 "requires": { 2939 "requires": {
1492 "delegates": "^1.0.0", 2940 "delegates": "^1.0.0",
1493 "readable-stream": "^2.0.6" 2941 "readable-stream": "^2.0.6"
2942 },
2943 "dependencies": {
2944 "readable-stream": {
2945 "version": "2.3.6",
2946 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
2947 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
2948 "dev": true,
2949 "requires": {
2950 "core-util-is": "~1.0.0",
2951 "inherits": "~2.0.3",
2952 "isarray": "~1.0.0",
2953 "process-nextick-args": "~2.0.0",
2954 "safe-buffer": "~5.1.1",
2955 "string_decoder": "~1.1.1",
2956 "util-deprecate": "~1.0.1"
2957 }
2958 },
2959 "string_decoder": {
2960 "version": "1.1.1",
2961 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2962 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2963 "dev": true,
2964 "requires": {
2965 "safe-buffer": "~5.1.0"
2966 }
2967 }
1494 } 2968 }
1495 }, 2969 },
1496 "argparse": { 2970 "argparse": {
@@ -1509,12 +2983,28 @@
1509 "requires": { 2983 "requires": {
1510 "ast-types-flow": "0.0.7", 2984 "ast-types-flow": "0.0.7",
1511 "commander": "^2.11.0" 2985 "commander": "^2.11.0"
2986 },
2987 "dependencies": {
2988 "debug": {
2989 "version": "1.0.4",
2990 "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
2991 "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
2992 "requires": {
2993 "ms": "0.6.2"
2994 }
2995 },
2996 "ms": {
2997 "version": "0.6.2",
2998 "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
2999 "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
3000 }
1512 } 3001 }
1513 }, 3002 },
1514 "arr-diff": { 3003 "arr-diff": {
1515 "version": "4.0.0", 3004 "version": "4.0.0",
1516 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 3005 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
1517 "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" 3006 "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
3007 "dev": true
1518 }, 3008 },
1519 "arr-filter": { 3009 "arr-filter": {
1520 "version": "1.1.2", 3010 "version": "1.1.2",
@@ -1528,7 +3018,8 @@
1528 "arr-flatten": { 3018 "arr-flatten": {
1529 "version": "1.1.0", 3019 "version": "1.1.0",
1530 "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 3020 "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
1531 "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" 3021 "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
3022 "dev": true
1532 }, 3023 },
1533 "arr-map": { 3024 "arr-map": {
1534 "version": "2.0.2", 3025 "version": "2.0.2",
@@ -1542,7 +3033,8 @@
1542 "arr-union": { 3033 "arr-union": {
1543 "version": "3.1.0", 3034 "version": "3.1.0",
1544 "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 3035 "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
1545 "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" 3036 "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
3037 "dev": true
1546 }, 3038 },
1547 "array-differ": { 3039 "array-differ": {
1548 "version": "1.0.0", 3040 "version": "1.0.0",
@@ -1553,7 +3045,14 @@
1553 "array-each": { 3045 "array-each": {
1554 "version": "1.0.1", 3046 "version": "1.0.1",
1555 "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 3047 "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
1556 "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" 3048 "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
3049 "dev": true
3050 },
3051 "array-equal": {
3052 "version": "1.0.0",
3053 "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
3054 "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
3055 "dev": true
1557 }, 3056 },
1558 "array-find-index": { 3057 "array-find-index": {
1559 "version": "1.0.2", 3058 "version": "1.0.2",
@@ -1561,6 +3060,12 @@
1561 "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 3060 "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
1562 "dev": true 3061 "dev": true
1563 }, 3062 },
3063 "array-flatten": {
3064 "version": "2.1.2",
3065 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
3066 "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
3067 "dev": true
3068 },
1564 "array-ify": { 3069 "array-ify": {
1565 "version": "1.0.0", 3070 "version": "1.0.0",
1566 "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", 3071 "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
@@ -1615,7 +3120,8 @@
1615 "array-slice": { 3120 "array-slice": {
1616 "version": "1.1.0", 3121 "version": "1.1.0",
1617 "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", 3122 "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
1618 "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" 3123 "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
3124 "dev": true
1619 }, 3125 },
1620 "array-sort": { 3126 "array-sort": {
1621 "version": "1.0.0", 3127 "version": "1.0.0",
@@ -1636,6 +3142,15 @@
1636 } 3142 }
1637 } 3143 }
1638 }, 3144 },
3145 "array-union": {
3146 "version": "1.0.2",
3147 "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
3148 "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
3149 "dev": true,
3150 "requires": {
3151 "array-uniq": "^1.0.1"
3152 }
3153 },
1639 "array-uniq": { 3154 "array-uniq": {
1640 "version": "1.0.3", 3155 "version": "1.0.3",
1641 "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 3156 "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
@@ -1645,7 +3160,8 @@
1645 "array-unique": { 3160 "array-unique": {
1646 "version": "0.3.2", 3161 "version": "0.3.2",
1647 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 3162 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
1648 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" 3163 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
3164 "dev": true
1649 }, 3165 },
1650 "arraybuffer.slice": { 3166 "arraybuffer.slice": {
1651 "version": "0.0.6", 3167 "version": "0.0.6",
@@ -1673,6 +3189,43 @@
1673 "safer-buffer": "~2.1.0" 3189 "safer-buffer": "~2.1.0"
1674 } 3190 }
1675 }, 3191 },
3192 "asn1.js": {
3193 "version": "4.10.1",
3194 "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
3195 "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
3196 "dev": true,
3197 "requires": {
3198 "bn.js": "^4.0.0",
3199 "inherits": "^2.0.1",
3200 "minimalistic-assert": "^1.0.0"
3201 }
3202 },
3203 "assert": {
3204 "version": "1.4.1",
3205 "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
3206 "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
3207 "dev": true,
3208 "requires": {
3209 "util": "0.10.3"
3210 },
3211 "dependencies": {
3212 "inherits": {
3213 "version": "2.0.1",
3214 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
3215 "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
3216 "dev": true
3217 },
3218 "util": {
3219 "version": "0.10.3",
3220 "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
3221 "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
3222 "dev": true,
3223 "requires": {
3224 "inherits": "2.0.1"
3225 }
3226 }
3227 }
3228 },
1676 "assert-plus": { 3229 "assert-plus": {
1677 "version": "1.0.0", 3230 "version": "1.0.0",
1678 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 3231 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
@@ -1682,7 +3235,8 @@
1682 "assign-symbols": { 3235 "assign-symbols": {
1683 "version": "1.0.0", 3236 "version": "1.0.0",
1684 "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 3237 "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
1685 "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" 3238 "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
3239 "dev": true
1686 }, 3240 },
1687 "ast-types-flow": { 3241 "ast-types-flow": {
1688 "version": "0.0.7", 3242 "version": "0.0.7",
@@ -1698,7 +3252,7 @@
1698 }, 3252 },
1699 "async": { 3253 "async": {
1700 "version": "0.1.22", 3254 "version": "0.1.22",
1701 "resolved": "http://registry.npmjs.org/async/-/async-0.1.22.tgz", 3255 "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
1702 "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=" 3256 "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE="
1703 }, 3257 },
1704 "async-done": { 3258 "async-done": {
@@ -1711,6 +3265,14 @@
1711 "once": "^1.3.2", 3265 "once": "^1.3.2",
1712 "process-nextick-args": "^1.0.7", 3266 "process-nextick-args": "^1.0.7",
1713 "stream-exhaust": "^1.0.1" 3267 "stream-exhaust": "^1.0.1"
3268 },
3269 "dependencies": {
3270 "process-nextick-args": {
3271 "version": "1.0.7",
3272 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
3273 "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
3274 "dev": true
3275 }
1714 } 3276 }
1715 }, 3277 },
1716 "async-each": { 3278 "async-each": {
@@ -1731,6 +3293,11 @@
1731 "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", 3293 "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
1732 "dev": true 3294 "dev": true
1733 }, 3295 },
3296 "async-limiter": {
3297 "version": "1.0.0",
3298 "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
3299 "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
3300 },
1734 "async-settle": { 3301 "async-settle": {
1735 "version": "1.0.0", 3302 "version": "1.0.0",
1736 "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", 3303 "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
@@ -1749,7 +3316,8 @@
1749 "atob": { 3316 "atob": {
1750 "version": "2.1.2", 3317 "version": "2.1.2",
1751 "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 3318 "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
1752 "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" 3319 "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
3320 "dev": true
1753 }, 3321 },
1754 "attr-accept": { 3322 "attr-accept": {
1755 "version": "1.1.3", 3323 "version": "1.1.3",
@@ -1791,6 +3359,65 @@
1791 "ast-types-flow": "0.0.7" 3359 "ast-types-flow": "0.0.7"
1792 } 3360 }
1793 }, 3361 },
3362 "babel-code-frame": {
3363 "version": "6.26.0",
3364 "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
3365 "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
3366 "dev": true,
3367 "requires": {
3368 "chalk": "^1.1.3",
3369 "esutils": "^2.0.2",
3370 "js-tokens": "^3.0.2"
3371 },
3372 "dependencies": {
3373 "ansi-regex": {
3374 "version": "2.1.1",
3375 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
3376 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
3377 "dev": true
3378 },
3379 "ansi-styles": {
3380 "version": "2.2.1",
3381 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
3382 "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
3383 "dev": true
3384 },
3385 "chalk": {
3386 "version": "1.1.3",
3387 "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
3388 "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
3389 "dev": true,
3390 "requires": {
3391 "ansi-styles": "^2.2.1",
3392 "escape-string-regexp": "^1.0.2",
3393 "has-ansi": "^2.0.0",
3394 "strip-ansi": "^3.0.0",
3395 "supports-color": "^2.0.0"
3396 }
3397 },
3398 "js-tokens": {
3399 "version": "3.0.2",
3400 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
3401 "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
3402 "dev": true
3403 },
3404 "strip-ansi": {
3405 "version": "3.0.1",
3406 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
3407 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
3408 "dev": true,
3409 "requires": {
3410 "ansi-regex": "^2.0.0"
3411 }
3412 },
3413 "supports-color": {
3414 "version": "2.0.0",
3415 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
3416 "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
3417 "dev": true
3418 }
3419 }
3420 },
1794 "babel-eslint": { 3421 "babel-eslint": {
1795 "version": "10.0.1", 3422 "version": "10.0.1",
1796 "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", 3423 "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz",
@@ -1803,20 +3430,98 @@
1803 "@babel/types": "^7.0.0", 3430 "@babel/types": "^7.0.0",
1804 "eslint-scope": "3.7.1", 3431 "eslint-scope": "3.7.1",
1805 "eslint-visitor-keys": "^1.0.0" 3432 "eslint-visitor-keys": "^1.0.0"
3433 }
3434 },
3435 "babel-jest": {
3436 "version": "24.7.1",
3437 "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.7.1.tgz",
3438 "integrity": "sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg==",
3439 "dev": true,
3440 "requires": {
3441 "@jest/transform": "^24.7.1",
3442 "@jest/types": "^24.7.0",
3443 "@types/babel__core": "^7.1.0",
3444 "babel-plugin-istanbul": "^5.1.0",
3445 "babel-preset-jest": "^24.6.0",
3446 "chalk": "^2.4.2",
3447 "slash": "^2.0.0"
3448 }
3449 },
3450 "babel-loader": {
3451 "version": "8.0.5",
3452 "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz",
3453 "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==",
3454 "dev": true,
3455 "requires": {
3456 "find-cache-dir": "^2.0.0",
3457 "loader-utils": "^1.0.2",
3458 "mkdirp": "^0.5.1",
3459 "util.promisify": "^1.0.0"
1806 }, 3460 },
1807 "dependencies": { 3461 "dependencies": {
1808 "eslint-scope": { 3462 "find-cache-dir": {
1809 "version": "3.7.1", 3463 "version": "2.0.0",
1810 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", 3464 "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz",
1811 "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", 3465 "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==",
1812 "dev": true, 3466 "dev": true,
1813 "requires": { 3467 "requires": {
1814 "esrecurse": "^4.1.0", 3468 "commondir": "^1.0.1",
1815 "estraverse": "^4.1.1" 3469 "make-dir": "^1.0.0",
3470 "pkg-dir": "^3.0.0"
3471 }
3472 },
3473 "pkg-dir": {
3474 "version": "3.0.0",
3475 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
3476 "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
3477 "dev": true,
3478 "requires": {
3479 "find-up": "^3.0.0"
1816 } 3480 }
1817 } 3481 }
1818 } 3482 }
1819 }, 3483 },
3484 "babel-plugin-istanbul": {
3485 "version": "5.1.2",
3486 "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.2.tgz",
3487 "integrity": "sha512-U3ZVajC+Z69Gim7ZzmD4Wcsq76i/1hqDamBfowc1tWzWjybRy70iWfngP2ME+1CrgcgZ/+muIbPY/Yi0dxdIkQ==",
3488 "dev": true,
3489 "requires": {
3490 "find-up": "^3.0.0",
3491 "istanbul-lib-instrument": "^3.2.0",
3492 "test-exclude": "^5.2.2"
3493 }
3494 },
3495 "babel-plugin-jest-hoist": {
3496 "version": "24.6.0",
3497 "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz",
3498 "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==",
3499 "dev": true,
3500 "requires": {
3501 "@types/babel__traverse": "^7.0.6"
3502 }
3503 },
3504 "babel-plugin-react-intl": {
3505 "version": "3.0.1",
3506 "resolved": "https://registry.npmjs.org/babel-plugin-react-intl/-/babel-plugin-react-intl-3.0.1.tgz",
3507 "integrity": "sha512-FqnEO+Tq7kJVUPKsSG3s5jaHi3pAC4RUR11IrscvjsfkOApLP2DtzNo6dtQ+tX+OzEzJx7cUms8aCw5BFyW5xg==",
3508 "dev": true,
3509 "requires": {
3510 "@babel/runtime": "^7.0.0",
3511 "intl-messageformat-parser": "^1.2.0",
3512 "mkdirp": "^0.5.1"
3513 }
3514 },
3515 "babel-preset-jest": {
3516 "version": "24.6.0",
3517 "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz",
3518 "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==",
3519 "dev": true,
3520 "requires": {
3521 "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
3522 "babel-plugin-jest-hoist": "^24.6.0"
3523 }
3524 },
1820 "babel-runtime": { 3525 "babel-runtime": {
1821 "version": "6.26.0", 3526 "version": "6.26.0",
1822 "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 3527 "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
@@ -1865,6 +3570,7 @@
1865 "version": "0.11.2", 3570 "version": "0.11.2",
1866 "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 3571 "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
1867 "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 3572 "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
3573 "dev": true,
1868 "requires": { 3574 "requires": {
1869 "cache-base": "^1.0.1", 3575 "cache-base": "^1.0.1",
1870 "class-utils": "^0.3.5", 3576 "class-utils": "^0.3.5",
@@ -1879,6 +3585,7 @@
1879 "version": "1.0.0", 3585 "version": "1.0.0",
1880 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 3586 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1881 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3587 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
3588 "dev": true,
1882 "requires": { 3589 "requires": {
1883 "is-descriptor": "^1.0.0" 3590 "is-descriptor": "^1.0.0"
1884 } 3591 }
@@ -1887,6 +3594,7 @@
1887 "version": "1.0.0", 3594 "version": "1.0.0",
1888 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3595 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1889 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3596 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
3597 "dev": true,
1890 "requires": { 3598 "requires": {
1891 "kind-of": "^6.0.0" 3599 "kind-of": "^6.0.0"
1892 } 3600 }
@@ -1895,6 +3603,7 @@
1895 "version": "1.0.0", 3603 "version": "1.0.0",
1896 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3604 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1897 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3605 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
3606 "dev": true,
1898 "requires": { 3607 "requires": {
1899 "kind-of": "^6.0.0" 3608 "kind-of": "^6.0.0"
1900 } 3609 }
@@ -1903,6 +3612,7 @@
1903 "version": "1.0.2", 3612 "version": "1.0.2",
1904 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3613 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1905 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3614 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
3615 "dev": true,
1906 "requires": { 3616 "requires": {
1907 "is-accessor-descriptor": "^1.0.0", 3617 "is-accessor-descriptor": "^1.0.0",
1908 "is-data-descriptor": "^1.0.0", 3618 "is-data-descriptor": "^1.0.0",
@@ -1950,6 +3660,12 @@
1950 "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", 3660 "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
1951 "dev": true 3661 "dev": true
1952 }, 3662 },
3663 "before-after-hook": {
3664 "version": "1.3.2",
3665 "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.3.2.tgz",
3666 "integrity": "sha512-zyPgY5dgbf99c0uGUjhY4w+mxqEGxPKg9RQDl34VvrVh2bM31lFN+mwR1ZHepq/KA3VCPk1gwJZL6IIJqjLy2w==",
3667 "dev": true
3668 },
1953 "better-assert": { 3669 "better-assert": {
1954 "version": "1.0.2", 3670 "version": "1.0.2",
1955 "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", 3671 "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
@@ -1960,21 +3676,24 @@
1960 } 3676 }
1961 }, 3677 },
1962 "big.js": { 3678 "big.js": {
1963 "version": "3.2.0", 3679 "version": "5.2.2",
1964 "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", 3680 "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
1965 "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", 3681 "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
1966 "dev": true 3682 "dev": true
1967 }, 3683 },
1968 "binary-extensions": { 3684 "binary-extensions": {
1969 "version": "1.12.0", 3685 "version": "1.13.0",
1970 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", 3686 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz",
1971 "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", 3687 "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==",
1972 "dev": true 3688 "dev": true
1973 }, 3689 },
1974 "bindings": { 3690 "bindings": {
1975 "version": "1.3.0", 3691 "version": "1.4.0",
1976 "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", 3692 "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.4.0.tgz",
1977 "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" 3693 "integrity": "sha512-7znEVX22Djn+nYjxCWKDne0RRloa9XfYa84yk3s+HkE3LpDYZmhArYr9O9huBoHY3/oXispx5LorIX7Sl2CgSQ==",
3694 "requires": {
3695 "file-uri-to-path": "1.0.0"
3696 }
1978 }, 3697 },
1979 "blob": { 3698 "blob": {
1980 "version": "0.0.4", 3699 "version": "0.0.4",
@@ -2004,10 +3723,87 @@
2004 "bluebird": "^3.5.2" 3723 "bluebird": "^3.5.2"
2005 } 3724 }
2006 }, 3725 },
3726 "bn.js": {
3727 "version": "4.11.8",
3728 "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
3729 "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
3730 "dev": true
3731 },
3732 "body-parser": {
3733 "version": "1.18.3",
3734 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
3735 "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
3736 "dev": true,
3737 "requires": {
3738 "bytes": "3.0.0",
3739 "content-type": "~1.0.4",
3740 "debug": "2.6.9",
3741 "depd": "~1.1.2",
3742 "http-errors": "~1.6.3",
3743 "iconv-lite": "0.4.23",
3744 "on-finished": "~2.3.0",
3745 "qs": "6.5.2",
3746 "raw-body": "2.3.3",
3747 "type-is": "~1.6.16"
3748 },
3749 "dependencies": {
3750 "depd": {
3751 "version": "1.1.2",
3752 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
3753 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
3754 "dev": true
3755 },
3756 "ee-first": {
3757 "version": "1.1.1",
3758 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
3759 "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
3760 "dev": true
3761 },
3762 "iconv-lite": {
3763 "version": "0.4.23",
3764 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
3765 "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
3766 "dev": true,
3767 "requires": {
3768 "safer-buffer": ">= 2.1.2 < 3"
3769 }
3770 },
3771 "on-finished": {
3772 "version": "2.3.0",
3773 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
3774 "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
3775 "dev": true,
3776 "requires": {
3777 "ee-first": "1.1.1"
3778 }
3779 }
3780 }
3781 },
3782 "bonjour": {
3783 "version": "3.5.0",
3784 "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
3785 "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
3786 "dev": true,
3787 "requires": {
3788 "array-flatten": "^2.1.0",
3789 "deep-equal": "^1.0.1",
3790 "dns-equal": "^1.0.0",
3791 "dns-txt": "^2.0.2",
3792 "multicast-dns": "^6.0.1",
3793 "multicast-dns-service-types": "^1.1.0"
3794 }
3795 },
3796 "boolbase": {
3797 "version": "1.0.0",
3798 "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
3799 "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
3800 "dev": true
3801 },
2007 "boom": { 3802 "boom": {
2008 "version": "2.10.1", 3803 "version": "2.10.1",
2009 "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", 3804 "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
2010 "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", 3805 "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
3806 "dev": true,
2011 "requires": { 3807 "requires": {
2012 "hoek": "2.x.x" 3808 "hoek": "2.x.x"
2013 } 3809 }
@@ -2027,71 +3823,11 @@
2027 "widest-line": "^2.0.0" 3823 "widest-line": "^2.0.0"
2028 }, 3824 },
2029 "dependencies": { 3825 "dependencies": {
2030 "ansi-regex": {
2031 "version": "3.0.0",
2032 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
2033 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
2034 "dev": true
2035 },
2036 "ansi-styles": {
2037 "version": "3.2.1",
2038 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2039 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2040 "dev": true,
2041 "requires": {
2042 "color-convert": "^1.9.0"
2043 }
2044 },
2045 "camelcase": { 3826 "camelcase": {
2046 "version": "4.1.0", 3827 "version": "4.1.0",
2047 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 3828 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
2048 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 3829 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
2049 "dev": true 3830 "dev": true
2050 },
2051 "chalk": {
2052 "version": "2.4.1",
2053 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
2054 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
2055 "dev": true,
2056 "requires": {
2057 "ansi-styles": "^3.2.1",
2058 "escape-string-regexp": "^1.0.5",
2059 "supports-color": "^5.3.0"
2060 }
2061 },
2062 "is-fullwidth-code-point": {
2063 "version": "2.0.0",
2064 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2065 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2066 "dev": true
2067 },
2068 "string-width": {
2069 "version": "2.1.1",
2070 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
2071 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
2072 "dev": true,
2073 "requires": {
2074 "is-fullwidth-code-point": "^2.0.0",
2075 "strip-ansi": "^4.0.0"
2076 }
2077 },
2078 "strip-ansi": {
2079 "version": "4.0.0",
2080 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
2081 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
2082 "dev": true,
2083 "requires": {
2084 "ansi-regex": "^3.0.0"
2085 }
2086 },
2087 "supports-color": {
2088 "version": "5.5.0",
2089 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2090 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2091 "dev": true,
2092 "requires": {
2093 "has-flag": "^3.0.0"
2094 }
2095 } 3831 }
2096 } 3832 }
2097 }, 3833 },
@@ -2108,6 +3844,7 @@
2108 "version": "2.3.2", 3844 "version": "2.3.2",
2109 "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 3845 "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
2110 "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 3846 "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
3847 "dev": true,
2111 "requires": { 3848 "requires": {
2112 "arr-flatten": "^1.1.0", 3849 "arr-flatten": "^1.1.0",
2113 "array-unique": "^0.3.2", 3850 "array-unique": "^0.3.2",
@@ -2125,6 +3862,7 @@
2125 "version": "2.0.1", 3862 "version": "2.0.1",
2126 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3863 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2127 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3864 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
3865 "dev": true,
2128 "requires": { 3866 "requires": {
2129 "is-extendable": "^0.1.0" 3867 "is-extendable": "^0.1.0"
2130 } 3868 }
@@ -2136,15 +3874,147 @@
2136 "resolved": "https://registry.npmjs.org/brcast/-/brcast-3.0.1.tgz", 3874 "resolved": "https://registry.npmjs.org/brcast/-/brcast-3.0.1.tgz",
2137 "integrity": "sha512-eI3yqf9YEqyGl9PCNTR46MGvDylGtaHjalcz6Q3fAPnP/PhpKkkve52vFdfGpwp4VUvK6LUr4TQN+2stCrEwTg==" 3875 "integrity": "sha512-eI3yqf9YEqyGl9PCNTR46MGvDylGtaHjalcz6Q3fAPnP/PhpKkkve52vFdfGpwp4VUvK6LUr4TQN+2stCrEwTg=="
2138 }, 3876 },
3877 "brorand": {
3878 "version": "1.1.0",
3879 "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
3880 "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
3881 "dev": true
3882 },
3883 "browser-process-hrtime": {
3884 "version": "0.1.3",
3885 "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
3886 "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
3887 "dev": true
3888 },
3889 "browser-resolve": {
3890 "version": "1.11.3",
3891 "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
3892 "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
3893 "dev": true,
3894 "requires": {
3895 "resolve": "1.1.7"
3896 },
3897 "dependencies": {
3898 "resolve": {
3899 "version": "1.1.7",
3900 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
3901 "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
3902 "dev": true
3903 }
3904 }
3905 },
3906 "browser-stdout": {
3907 "version": "1.3.1",
3908 "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
3909 "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
3910 "dev": true
3911 },
3912 "browserify-aes": {
3913 "version": "1.2.0",
3914 "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
3915 "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
3916 "dev": true,
3917 "requires": {
3918 "buffer-xor": "^1.0.3",
3919 "cipher-base": "^1.0.0",
3920 "create-hash": "^1.1.0",
3921 "evp_bytestokey": "^1.0.3",
3922 "inherits": "^2.0.1",
3923 "safe-buffer": "^5.0.1"
3924 }
3925 },
3926 "browserify-cipher": {
3927 "version": "1.0.1",
3928 "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
3929 "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
3930 "dev": true,
3931 "requires": {
3932 "browserify-aes": "^1.0.4",
3933 "browserify-des": "^1.0.0",
3934 "evp_bytestokey": "^1.0.0"
3935 }
3936 },
3937 "browserify-des": {
3938 "version": "1.0.2",
3939 "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
3940 "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
3941 "dev": true,
3942 "requires": {
3943 "cipher-base": "^1.0.1",
3944 "des.js": "^1.0.0",
3945 "inherits": "^2.0.1",
3946 "safe-buffer": "^5.1.2"
3947 }
3948 },
3949 "browserify-rsa": {
3950 "version": "4.0.1",
3951 "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
3952 "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
3953 "dev": true,
3954 "requires": {
3955 "bn.js": "^4.1.0",
3956 "randombytes": "^2.0.1"
3957 }
3958 },
3959 "browserify-sign": {
3960 "version": "4.0.4",
3961 "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
3962 "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
3963 "dev": true,
3964 "requires": {
3965 "bn.js": "^4.1.1",
3966 "browserify-rsa": "^4.0.0",
3967 "create-hash": "^1.1.0",
3968 "create-hmac": "^1.1.2",
3969 "elliptic": "^6.0.0",
3970 "inherits": "^2.0.1",
3971 "parse-asn1": "^5.0.0"
3972 }
3973 },
3974 "browserify-zlib": {
3975 "version": "0.2.0",
3976 "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
3977 "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
3978 "dev": true,
3979 "requires": {
3980 "pako": "~1.0.5"
3981 }
3982 },
2139 "browserslist": { 3983 "browserslist": {
2140 "version": "4.3.2", 3984 "version": "4.4.1",
2141 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.2.tgz", 3985 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz",
2142 "integrity": "sha512-wgZJWlYcDvsjRtf8socmAHf1nXq88KrQLB/gMYHGPUc2bzPWsgltSXwPWYHx4Sw0G9E/XGNW5wJDaWlpHRMpjA==", 3986 "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==",
3987 "dev": true,
3988 "requires": {
3989 "caniuse-lite": "^1.0.30000929",
3990 "electron-to-chromium": "^1.3.103",
3991 "node-releases": "^1.1.3"
3992 }
3993 },
3994 "bser": {
3995 "version": "2.0.0",
3996 "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz",
3997 "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=",
2143 "dev": true, 3998 "dev": true,
2144 "requires": { 3999 "requires": {
2145 "caniuse-lite": "^1.0.30000898", 4000 "node-int64": "^0.4.0"
2146 "electron-to-chromium": "^1.3.80", 4001 }
2147 "node-releases": "^1.0.0-alpha.14" 4002 },
4003 "btoa-lite": {
4004 "version": "1.0.0",
4005 "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
4006 "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=",
4007 "dev": true
4008 },
4009 "buffer": {
4010 "version": "4.9.1",
4011 "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
4012 "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
4013 "dev": true,
4014 "requires": {
4015 "base64-js": "^1.0.2",
4016 "ieee754": "^1.1.4",
4017 "isarray": "^1.0.0"
2148 } 4018 }
2149 }, 4019 },
2150 "buffer-alloc": { 4020 "buffer-alloc": {
@@ -2185,6 +4055,18 @@
2185 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 4055 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
2186 "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 4056 "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
2187 }, 4057 },
4058 "buffer-indexof": {
4059 "version": "1.1.1",
4060 "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
4061 "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
4062 "dev": true
4063 },
4064 "buffer-xor": {
4065 "version": "1.0.3",
4066 "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
4067 "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
4068 "dev": true
4069 },
2188 "builder-util": { 4070 "builder-util": {
2189 "version": "9.6.1", 4071 "version": "9.6.1",
2190 "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.6.1.tgz", 4072 "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.6.1.tgz",
@@ -2205,32 +4087,6 @@
2205 "temp-file": "^3.3.2" 4087 "temp-file": "^3.3.2"
2206 }, 4088 },
2207 "dependencies": { 4089 "dependencies": {
2208 "ansi-styles": {
2209 "version": "3.2.1",
2210 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2211 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2212 "dev": true,
2213 "requires": {
2214 "color-convert": "^1.9.0"
2215 }
2216 },
2217 "chalk": {
2218 "version": "2.4.1",
2219 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
2220 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
2221 "dev": true,
2222 "requires": {
2223 "ansi-styles": "^3.2.1",
2224 "escape-string-regexp": "^1.0.5",
2225 "supports-color": "^5.3.0"
2226 }
2227 },
2228 "ci-info": {
2229 "version": "2.0.0",
2230 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
2231 "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
2232 "dev": true
2233 },
2234 "debug": { 4090 "debug": {
2235 "version": "4.1.1", 4091 "version": "4.1.1",
2236 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 4092 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -2240,39 +4096,21 @@
2240 "ms": "^2.1.1" 4096 "ms": "^2.1.1"
2241 } 4097 }
2242 }, 4098 },
2243 "is-ci": {
2244 "version": "2.0.0",
2245 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
2246 "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
2247 "dev": true,
2248 "requires": {
2249 "ci-info": "^2.0.0"
2250 }
2251 },
2252 "ms": { 4099 "ms": {
2253 "version": "2.1.1", 4100 "version": "2.1.1",
2254 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 4101 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
2255 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 4102 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
2256 "dev": true 4103 "dev": true
2257 },
2258 "supports-color": {
2259 "version": "5.5.0",
2260 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2261 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2262 "dev": true,
2263 "requires": {
2264 "has-flag": "^3.0.0"
2265 }
2266 } 4104 }
2267 } 4105 }
2268 }, 4106 },
2269 "builder-util-runtime": { 4107 "builder-util-runtime": {
2270 "version": "8.1.0", 4108 "version": "8.1.1",
2271 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.1.0.tgz", 4109 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.1.1.tgz",
2272 "integrity": "sha512-s1mlJ28mv+56Iebh6c9aXjVe11O3Z0cDTwAGeB0PCcUzHA37fDxGgS8ZGoYNMZP+rBHj21d/od1wuYofTVLaQg==", 4110 "integrity": "sha512-+ieS4PMB33vVE2S3ZNWBEQJ1zKmAs/agrBdh7XadE1lKLjrH4aXYuOh9OOGdxqIRldhlhNBaF+yKMMEFOdNVig==",
2273 "requires": { 4111 "requires": {
2274 "bluebird-lst": "^1.0.6", 4112 "bluebird-lst": "^1.0.6",
2275 "debug": "^4.1.0", 4113 "debug": "^4.1.1",
2276 "fs-extra-p": "^7.0.0", 4114 "fs-extra-p": "^7.0.0",
2277 "sax": "^1.2.4" 4115 "sax": "^1.2.4"
2278 }, 4116 },
@@ -2298,10 +4136,74 @@
2298 "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 4136 "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
2299 "dev": true 4137 "dev": true
2300 }, 4138 },
4139 "builtin-status-codes": {
4140 "version": "3.0.0",
4141 "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
4142 "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
4143 "dev": true
4144 },
4145 "builtins": {
4146 "version": "1.0.3",
4147 "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
4148 "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
4149 "dev": true
4150 },
4151 "byline": {
4152 "version": "5.0.0",
4153 "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
4154 "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=",
4155 "dev": true
4156 },
4157 "byte-size": {
4158 "version": "4.0.4",
4159 "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-4.0.4.tgz",
4160 "integrity": "sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw==",
4161 "dev": true
4162 },
4163 "bytes": {
4164 "version": "3.0.0",
4165 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
4166 "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
4167 "dev": true
4168 },
4169 "cacache": {
4170 "version": "11.3.2",
4171 "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz",
4172 "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==",
4173 "dev": true,
4174 "requires": {
4175 "bluebird": "^3.5.3",
4176 "chownr": "^1.1.1",
4177 "figgy-pudding": "^3.5.1",
4178 "glob": "^7.1.3",
4179 "graceful-fs": "^4.1.15",
4180 "lru-cache": "^5.1.1",
4181 "mississippi": "^3.0.0",
4182 "mkdirp": "^0.5.1",
4183 "move-concurrently": "^1.0.1",
4184 "promise-inflight": "^1.0.1",
4185 "rimraf": "^2.6.2",
4186 "ssri": "^6.0.1",
4187 "unique-filename": "^1.1.1",
4188 "y18n": "^4.0.0"
4189 },
4190 "dependencies": {
4191 "lru-cache": {
4192 "version": "5.1.1",
4193 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
4194 "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
4195 "dev": true,
4196 "requires": {
4197 "yallist": "^3.0.2"
4198 }
4199 }
4200 }
4201 },
2301 "cache-base": { 4202 "cache-base": {
2302 "version": "1.0.1", 4203 "version": "1.0.1",
2303 "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 4204 "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
2304 "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 4205 "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
4206 "dev": true,
2305 "requires": { 4207 "requires": {
2306 "collection-visit": "^1.0.0", 4208 "collection-visit": "^1.0.0",
2307 "component-emitter": "^1.2.1", 4209 "component-emitter": "^1.2.1",
@@ -2314,6 +4216,12 @@
2314 "unset-value": "^1.0.0" 4216 "unset-value": "^1.0.0"
2315 } 4217 }
2316 }, 4218 },
4219 "call-me-maybe": {
4220 "version": "1.0.1",
4221 "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
4222 "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
4223 "dev": true
4224 },
2317 "caller-callsite": { 4225 "caller-callsite": {
2318 "version": "2.0.0", 4226 "version": "2.0.0",
2319 "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", 4227 "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
@@ -2328,6 +4236,11 @@
2328 "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", 4236 "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
2329 "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", 4237 "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
2330 "dev": true 4238 "dev": true
4239 },
4240 "domelementtype": {
4241 "version": "1.1.3",
4242 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
4243 "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
2331 } 4244 }
2332 } 4245 }
2333 }, 4246 },
@@ -2352,36 +4265,56 @@
2352 "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 4265 "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
2353 "dev": true 4266 "dev": true
2354 }, 4267 },
2355 "camelcase": { 4268 "camel-case": {
2356 "version": "3.0.0", 4269 "version": "3.0.0",
2357 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", 4270 "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
2358 "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", 4271 "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
4272 "dev": true,
4273 "requires": {
4274 "no-case": "^2.2.0",
4275 "upper-case": "^1.1.1"
4276 }
4277 },
4278 "camelcase": {
4279 "version": "5.0.0",
4280 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
4281 "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
2359 "dev": true 4282 "dev": true
2360 }, 4283 },
2361 "camelcase-keys": { 4284 "camelcase-keys": {
2362 "version": "2.1.0", 4285 "version": "4.2.0",
2363 "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", 4286 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
2364 "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", 4287 "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
2365 "dev": true, 4288 "dev": true,
2366 "requires": { 4289 "requires": {
2367 "camelcase": "^2.0.0", 4290 "camelcase": "^4.1.0",
2368 "map-obj": "^1.0.0" 4291 "map-obj": "^2.0.0",
4292 "quick-lru": "^1.0.0"
2369 }, 4293 },
2370 "dependencies": { 4294 "dependencies": {
2371 "camelcase": { 4295 "camelcase": {
2372 "version": "2.1.1", 4296 "version": "4.1.0",
2373 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 4297 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
2374 "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", 4298 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
2375 "dev": true 4299 "dev": true
2376 } 4300 }
2377 } 4301 }
2378 }, 4302 },
2379 "caniuse-lite": { 4303 "caniuse-lite": {
2380 "version": "1.0.30000898", 4304 "version": "1.0.30000938",
2381 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000898.tgz", 4305 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000938.tgz",
2382 "integrity": "sha512-ytlTZqO4hYe4rNAJhMynUAIUI33jsP2Bb1two/9OVC39wZjPZ8exIO0eCLw5mqAtegOGiGF0kkTWTn3B02L+mw==", 4306 "integrity": "sha512-ekW8NQ3/FvokviDxhdKLZZAx7PptXNwxKgXtnR5y+PR3hckwuP3yJ1Ir+4/c97dsHNqtAyfKUGdw8P4EYzBNgw==",
2383 "dev": true 4307 "dev": true
2384 }, 4308 },
4309 "capture-exit": {
4310 "version": "2.0.0",
4311 "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
4312 "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
4313 "dev": true,
4314 "requires": {
4315 "rsvp": "^4.8.4"
4316 }
4317 },
2385 "capture-stack-trace": { 4318 "capture-stack-trace": {
2386 "version": "1.0.1", 4319 "version": "1.0.1",
2387 "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", 4320 "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
@@ -2400,15 +4333,14 @@
2400 "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==" 4333 "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg=="
2401 }, 4334 },
2402 "chalk": { 4335 "chalk": {
2403 "version": "1.1.3", 4336 "version": "2.4.2",
2404 "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 4337 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2405 "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 4338 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
4339 "dev": true,
2406 "requires": { 4340 "requires": {
2407 "ansi-styles": "^2.2.1", 4341 "ansi-styles": "^3.2.1",
2408 "escape-string-regexp": "^1.0.2", 4342 "escape-string-regexp": "^1.0.5",
2409 "has-ansi": "^2.0.0", 4343 "supports-color": "^5.3.0"
2410 "strip-ansi": "^3.0.0",
2411 "supports-color": "^2.0.0"
2412 } 4344 }
2413 }, 4345 },
2414 "chardet": { 4346 "chardet": {
@@ -2418,24 +4350,52 @@
2418 "dev": true 4350 "dev": true
2419 }, 4351 },
2420 "chokidar": { 4352 "chokidar": {
2421 "version": "2.0.4", 4353 "version": "2.1.1",
2422 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", 4354 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.1.tgz",
2423 "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", 4355 "integrity": "sha512-gfw3p2oQV2wEt+8VuMlNsPjCxDxvvgnm/kz+uATu805mWVF8IJN7uz9DN7iBz+RMJISmiVbCOBFs9qBGMjtPfQ==",
2424 "dev": true, 4356 "dev": true,
2425 "requires": { 4357 "requires": {
2426 "anymatch": "^2.0.0", 4358 "anymatch": "^2.0.0",
2427 "async-each": "^1.0.0", 4359 "async-each": "^1.0.1",
2428 "braces": "^2.3.0", 4360 "braces": "^2.3.2",
2429 "fsevents": "^1.2.2", 4361 "fsevents": "^1.2.7",
2430 "glob-parent": "^3.1.0", 4362 "glob-parent": "^3.1.0",
2431 "inherits": "^2.0.1", 4363 "inherits": "^2.0.3",
2432 "is-binary-path": "^1.0.0", 4364 "is-binary-path": "^1.0.0",
2433 "is-glob": "^4.0.0", 4365 "is-glob": "^4.0.0",
2434 "lodash.debounce": "^4.0.8", 4366 "normalize-path": "^3.0.0",
2435 "normalize-path": "^2.1.1",
2436 "path-is-absolute": "^1.0.0", 4367 "path-is-absolute": "^1.0.0",
2437 "readdirp": "^2.0.0", 4368 "readdirp": "^2.2.1",
2438 "upath": "^1.0.5" 4369 "upath": "^1.1.0"
4370 },
4371 "dependencies": {
4372 "isarray": {
4373 "version": "0.0.1",
4374 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
4375 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
4376 },
4377 "normalize-path": {
4378 "version": "3.0.0",
4379 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
4380 "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
4381 "dev": true
4382 },
4383 "readable-stream": {
4384 "version": "1.1.14",
4385 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
4386 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
4387 "requires": {
4388 "core-util-is": "~1.0.0",
4389 "inherits": "~2.0.1",
4390 "isarray": "0.0.1",
4391 "string_decoder": "~0.10.x"
4392 }
4393 },
4394 "string_decoder": {
4395 "version": "0.10.31",
4396 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
4397 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
4398 }
2439 } 4399 }
2440 }, 4400 },
2441 "chownr": { 4401 "chownr": {
@@ -2443,6 +4403,15 @@
2443 "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", 4403 "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
2444 "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" 4404 "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
2445 }, 4405 },
4406 "chrome-trace-event": {
4407 "version": "1.0.0",
4408 "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
4409 "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
4410 "dev": true,
4411 "requires": {
4412 "tslib": "^1.9.0"
4413 }
4414 },
2446 "chromium-pickle-js": { 4415 "chromium-pickle-js": {
2447 "version": "0.2.0", 4416 "version": "0.2.0",
2448 "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", 4417 "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
@@ -2450,11 +4419,21 @@
2450 "dev": true 4419 "dev": true
2451 }, 4420 },
2452 "ci-info": { 4421 "ci-info": {
2453 "version": "1.6.0", 4422 "version": "2.0.0",
2454 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", 4423 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
2455 "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", 4424 "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
2456 "dev": true 4425 "dev": true
2457 }, 4426 },
4427 "cipher-base": {
4428 "version": "1.0.4",
4429 "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
4430 "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
4431 "dev": true,
4432 "requires": {
4433 "inherits": "^2.0.1",
4434 "safe-buffer": "^5.0.1"
4435 }
4436 },
2458 "circular-json": { 4437 "circular-json": {
2459 "version": "0.3.3", 4438 "version": "0.3.3",
2460 "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 4439 "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
@@ -2465,6 +4444,7 @@
2465 "version": "0.3.6", 4444 "version": "0.3.6",
2466 "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 4445 "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
2467 "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 4446 "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
4447 "dev": true,
2468 "requires": { 4448 "requires": {
2469 "arr-union": "^3.1.0", 4449 "arr-union": "^3.1.0",
2470 "define-property": "^0.2.5", 4450 "define-property": "^0.2.5",
@@ -2476,6 +4456,7 @@
2476 "version": "0.2.5", 4456 "version": "0.2.5",
2477 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 4457 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2478 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 4458 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
4459 "dev": true,
2479 "requires": { 4460 "requires": {
2480 "is-descriptor": "^0.1.0" 4461 "is-descriptor": "^0.1.0"
2481 } 4462 }
@@ -2487,6 +4468,25 @@
2487 "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", 4468 "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
2488 "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" 4469 "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
2489 }, 4470 },
4471 "cld3-asm": {
4472 "version": "1.0.1",
4473 "resolved": "https://registry.npmjs.org/cld3-asm/-/cld3-asm-1.0.1.tgz",
4474 "integrity": "sha512-wuAqZd44Rk164TLKSYyLFZGSObhf82udOR+M/CnOkeEShq9+Tpxb/9RAE0m/KUVD1DnR5gMkZFeYExt51PCAbg==",
4475 "requires": {
4476 "emscripten-wasm-loader": "^1.0.0",
4477 "tslib": "^1.9.0",
4478 "utf8": "^3.0.0"
4479 }
4480 },
4481 "clean-css": {
4482 "version": "4.2.1",
4483 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
4484 "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
4485 "dev": true,
4486 "requires": {
4487 "source-map": "~0.6.0"
4488 }
4489 },
2490 "cli-boxes": { 4490 "cli-boxes": {
2491 "version": "1.0.0", 4491 "version": "1.0.0",
2492 "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", 4492 "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
@@ -2508,6 +4508,17 @@
2508 "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", 4508 "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
2509 "dev": true 4509 "dev": true
2510 }, 4510 },
4511 "cli-table3": {
4512 "version": "0.5.1",
4513 "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz",
4514 "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==",
4515 "dev": true,
4516 "requires": {
4517 "colors": "^1.1.2",
4518 "object-assign": "^4.1.0",
4519 "string-width": "^2.1.1"
4520 }
4521 },
2511 "cli-width": { 4522 "cli-width": {
2512 "version": "2.2.0", 4523 "version": "2.2.0",
2513 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 4524 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
@@ -2515,19 +4526,20 @@
2515 "dev": true 4526 "dev": true
2516 }, 4527 },
2517 "cliui": { 4528 "cliui": {
2518 "version": "3.2.0", 4529 "version": "4.1.0",
2519 "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", 4530 "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
2520 "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", 4531 "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
4532 "dev": true,
2521 "requires": { 4533 "requires": {
2522 "string-width": "^1.0.1", 4534 "string-width": "^2.1.1",
2523 "strip-ansi": "^3.0.1", 4535 "strip-ansi": "^4.0.0",
2524 "wrap-ansi": "^2.0.0" 4536 "wrap-ansi": "^2.0.0"
2525 } 4537 }
2526 }, 4538 },
2527 "clone": { 4539 "clone": {
2528 "version": "2.1.2", 4540 "version": "1.0.4",
2529 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 4541 "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
2530 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", 4542 "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
2531 "dev": true 4543 "dev": true
2532 }, 4544 },
2533 "clone-buffer": { 4545 "clone-buffer": {
@@ -2553,14 +4565,42 @@
2553 "readable-stream": "^2.3.5" 4565 "readable-stream": "^2.3.5"
2554 }, 4566 },
2555 "dependencies": { 4567 "dependencies": {
2556 "process-nextick-args": { 4568 "readable-stream": {
2557 "version": "2.0.0", 4569 "version": "2.3.6",
2558 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 4570 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
2559 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 4571 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
2560 "dev": true 4572 "dev": true,
4573 "requires": {
4574 "core-util-is": "~1.0.0",
4575 "inherits": "~2.0.3",
4576 "isarray": "~1.0.0",
4577 "process-nextick-args": "~2.0.0",
4578 "safe-buffer": "~5.1.1",
4579 "string_decoder": "~1.1.1",
4580 "util-deprecate": "~1.0.1"
4581 }
4582 },
4583 "string_decoder": {
4584 "version": "1.1.1",
4585 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
4586 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
4587 "dev": true,
4588 "requires": {
4589 "safe-buffer": "~5.1.0"
4590 }
2561 } 4591 }
2562 } 4592 }
2563 }, 4593 },
4594 "cmd-shim": {
4595 "version": "2.0.2",
4596 "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.2.tgz",
4597 "integrity": "sha1-b8vamUg6j9FdfTChlspp1oii79s=",
4598 "dev": true,
4599 "requires": {
4600 "graceful-fs": "^4.1.2",
4601 "mkdirp": "~0.5.0"
4602 }
4603 },
2564 "co": { 4604 "co": {
2565 "version": "4.6.0", 4605 "version": "4.6.0",
2566 "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 4606 "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -2570,7 +4610,8 @@
2570 "code-point-at": { 4610 "code-point-at": {
2571 "version": "1.1.0", 4611 "version": "1.1.0",
2572 "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 4612 "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
2573 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 4613 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
4614 "dev": true
2574 }, 4615 },
2575 "collection-map": { 4616 "collection-map": {
2576 "version": "1.0.0", 4617 "version": "1.0.0",
@@ -2587,16 +4628,25 @@
2587 "version": "1.0.0", 4628 "version": "1.0.0",
2588 "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 4629 "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
2589 "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 4630 "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
4631 "dev": true,
2590 "requires": { 4632 "requires": {
2591 "map-visit": "^1.0.0", 4633 "map-visit": "^1.0.0",
2592 "object-visit": "^1.0.0" 4634 "object-visit": "^1.0.0"
2593 } 4635 }
2594 }, 4636 },
4637 "color": {
4638 "version": "3.1.0",
4639 "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz",
4640 "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==",
4641 "requires": {
4642 "color-convert": "^1.9.1",
4643 "color-string": "^1.5.2"
4644 }
4645 },
2595 "color-convert": { 4646 "color-convert": {
2596 "version": "1.9.3", 4647 "version": "1.9.3",
2597 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 4648 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2598 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 4649 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2599 "dev": true,
2600 "requires": { 4650 "requires": {
2601 "color-name": "1.1.3" 4651 "color-name": "1.1.3"
2602 } 4652 }
@@ -2604,20 +4654,56 @@
2604 "color-name": { 4654 "color-name": {
2605 "version": "1.1.3", 4655 "version": "1.1.3",
2606 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 4656 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2607 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 4657 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
2608 "dev": true 4658 },
4659 "color-string": {
4660 "version": "1.5.3",
4661 "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
4662 "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
4663 "requires": {
4664 "color-name": "^1.0.0",
4665 "simple-swizzle": "^0.2.2"
4666 }
2609 }, 4667 },
2610 "color-support": { 4668 "color-support": {
2611 "version": "1.1.3", 4669 "version": "1.1.3",
2612 "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 4670 "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
2613 "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" 4671 "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
4672 "dev": true
2614 }, 4673 },
2615 "colors": { 4674 "colors": {
2616 "version": "1.3.2", 4675 "version": "1.3.3",
2617 "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz", 4676 "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
2618 "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==", 4677 "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==",
2619 "dev": true 4678 "dev": true
2620 }, 4679 },
4680 "columnify": {
4681 "version": "1.5.4",
4682 "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz",
4683 "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=",
4684 "dev": true,
4685 "requires": {
4686 "strip-ansi": "^3.0.0",
4687 "wcwidth": "^1.0.0"
4688 },
4689 "dependencies": {
4690 "ansi-regex": {
4691 "version": "2.1.1",
4692 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
4693 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
4694 "dev": true
4695 },
4696 "strip-ansi": {
4697 "version": "3.0.1",
4698 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
4699 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
4700 "dev": true,
4701 "requires": {
4702 "ansi-regex": "^2.0.0"
4703 }
4704 }
4705 }
4706 },
2621 "combined-stream": { 4707 "combined-stream": {
2622 "version": "1.0.7", 4708 "version": "1.0.7",
2623 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", 4709 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
@@ -2647,17 +4733,6 @@
2647 "requires": { 4733 "requires": {
2648 "array-ify": "^1.0.0", 4734 "array-ify": "^1.0.0",
2649 "dot-prop": "^3.0.0" 4735 "dot-prop": "^3.0.0"
2650 },
2651 "dependencies": {
2652 "dot-prop": {
2653 "version": "3.0.0",
2654 "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
2655 "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
2656 "dev": true,
2657 "requires": {
2658 "is-obj": "^1.0.0"
2659 }
2660 }
2661 } 4736 }
2662 }, 4737 },
2663 "compare-version": { 4738 "compare-version": {
@@ -2666,6 +4741,12 @@
2666 "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", 4741 "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
2667 "dev": true 4742 "dev": true
2668 }, 4743 },
4744 "compare-versions": {
4745 "version": "3.4.0",
4746 "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz",
4747 "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==",
4748 "dev": true
4749 },
2669 "component-bind": { 4750 "component-bind": {
2670 "version": "1.0.0", 4751 "version": "1.0.0",
2671 "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", 4752 "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
@@ -2675,7 +4756,8 @@
2675 "component-emitter": { 4756 "component-emitter": {
2676 "version": "1.2.1", 4757 "version": "1.2.1",
2677 "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 4758 "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
2678 "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" 4759 "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
4760 "dev": true
2679 }, 4761 },
2680 "component-inherit": { 4762 "component-inherit": {
2681 "version": "0.0.3", 4763 "version": "0.0.3",
@@ -2683,6 +4765,65 @@
2683 "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", 4765 "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
2684 "dev": true 4766 "dev": true
2685 }, 4767 },
4768 "compressible": {
4769 "version": "2.0.15",
4770 "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz",
4771 "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==",
4772 "dev": true,
4773 "requires": {
4774 "mime-db": ">= 1.36.0 < 2"
4775 }
4776 },
4777 "compression": {
4778 "version": "1.7.3",
4779 "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
4780 "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
4781 "dev": true,
4782 "requires": {
4783 "accepts": "~1.3.5",
4784 "bytes": "3.0.0",
4785 "compressible": "~2.0.14",
4786 "debug": "2.6.9",
4787 "on-headers": "~1.0.1",
4788 "safe-buffer": "5.1.2",
4789 "vary": "~1.1.2"
4790 },
4791 "dependencies": {
4792 "accepts": {
4793 "version": "1.3.5",
4794 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
4795 "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
4796 "dev": true,
4797 "requires": {
4798 "mime-types": "~2.1.18",
4799 "negotiator": "0.6.1"
4800 }
4801 },
4802 "debug": {
4803 "version": "2.6.9",
4804 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4805 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4806 "dev": true,
4807 "requires": {
4808 "ms": "2.0.0"
4809 },
4810 "dependencies": {
4811 "ms": {
4812 "version": "2.0.0",
4813 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4814 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
4815 "dev": true
4816 }
4817 }
4818 },
4819 "negotiator": {
4820 "version": "0.6.1",
4821 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
4822 "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
4823 "dev": true
4824 }
4825 }
4826 },
2686 "concat-map": { 4827 "concat-map": {
2687 "version": "0.0.1", 4828 "version": "0.0.1",
2688 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 4829 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -2698,250 +4839,62 @@
2698 "inherits": "^2.0.3", 4839 "inherits": "^2.0.3",
2699 "readable-stream": "^2.2.2", 4840 "readable-stream": "^2.2.2",
2700 "typedarray": "^0.0.6" 4841 "typedarray": "^0.0.6"
4842 },
4843 "dependencies": {
4844 "debug": {
4845 "version": "2.3.3",
4846 "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
4847 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w="
4848 },
4849 "readable-stream": {
4850 "version": "2.3.6",
4851 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
4852 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
4853 "dev": true,
4854 "requires": {
4855 "core-util-is": "~1.0.0",
4856 "inherits": "~2.0.3",
4857 "isarray": "~1.0.0",
4858 "process-nextick-args": "~2.0.0",
4859 "safe-buffer": "~5.1.1",
4860 "string_decoder": "~1.1.1",
4861 "util-deprecate": "~1.0.1"
4862 }
4863 },
4864 "string_decoder": {
4865 "version": "1.1.1",
4866 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
4867 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
4868 "dev": true,
4869 "requires": {
4870 "safe-buffer": "~5.1.0"
4871 }
4872 }
2701 } 4873 }
2702 }, 4874 },
2703 "concurrently": { 4875 "concurrently": {
2704 "version": "4.0.1", 4876 "version": "4.1.0",
2705 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.0.1.tgz", 4877 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.0.tgz",
2706 "integrity": "sha512-D8UI+mlI/bfvrA57SeKOht6sEpb01dKk+8Yee4fbnkk1Ue8r3S+JXoEdFZIpzQlXJGtnxo47Wvvg/kG4ba3U6Q==", 4878 "integrity": "sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg==",
2707 "dev": true, 4879 "dev": true,
2708 "requires": { 4880 "requires": {
2709 "chalk": "^2.4.1", 4881 "chalk": "^2.4.1",
2710 "date-fns": "^1.23.0", 4882 "date-fns": "^1.23.0",
2711 "lodash": "^4.17.10", 4883 "lodash": "^4.17.10",
2712 "read-pkg": "^4.0.1", 4884 "read-pkg": "^4.0.1",
2713 "rxjs": "6.2.2", 4885 "rxjs": "^6.3.3",
2714 "spawn-command": "^0.0.2-1", 4886 "spawn-command": "^0.0.2-1",
2715 "supports-color": "^4.5.0", 4887 "supports-color": "^4.5.0",
2716 "tree-kill": "^1.1.0", 4888 "tree-kill": "^1.1.0",
2717 "yargs": "^12.0.1" 4889 "yargs": "^12.0.1"
2718 }, 4890 },
2719 "dependencies": { 4891 "dependencies": {
2720 "ansi-regex": { 4892 "has-flag": {
2721 "version": "3.0.0",
2722 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
2723 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
2724 "dev": true
2725 },
2726 "ansi-styles": {
2727 "version": "3.2.1",
2728 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2729 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2730 "dev": true,
2731 "requires": {
2732 "color-convert": "^1.9.0"
2733 }
2734 },
2735 "camelcase": {
2736 "version": "4.1.0",
2737 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
2738 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
2739 "dev": true
2740 },
2741 "chalk": {
2742 "version": "2.4.1",
2743 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
2744 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
2745 "dev": true,
2746 "requires": {
2747 "ansi-styles": "^3.2.1",
2748 "escape-string-regexp": "^1.0.5",
2749 "supports-color": "^5.3.0"
2750 },
2751 "dependencies": {
2752 "supports-color": {
2753 "version": "5.5.0",
2754 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2755 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2756 "dev": true,
2757 "requires": {
2758 "has-flag": "^3.0.0"
2759 }
2760 }
2761 }
2762 },
2763 "cliui": {
2764 "version": "4.1.0",
2765 "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
2766 "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
2767 "dev": true,
2768 "requires": {
2769 "string-width": "^2.1.1",
2770 "strip-ansi": "^4.0.0",
2771 "wrap-ansi": "^2.0.0"
2772 }
2773 },
2774 "decamelize": {
2775 "version": "2.0.0",
2776 "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
2777 "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
2778 "dev": true,
2779 "requires": {
2780 "xregexp": "4.0.0"
2781 }
2782 },
2783 "execa": {
2784 "version": "0.10.0",
2785 "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
2786 "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
2787 "dev": true,
2788 "requires": {
2789 "cross-spawn": "^6.0.0",
2790 "get-stream": "^3.0.0",
2791 "is-stream": "^1.1.0",
2792 "npm-run-path": "^2.0.0",
2793 "p-finally": "^1.0.0",
2794 "signal-exit": "^3.0.0",
2795 "strip-eof": "^1.0.0"
2796 }
2797 },
2798 "find-up": {
2799 "version": "3.0.0",
2800 "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
2801 "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
2802 "dev": true,
2803 "requires": {
2804 "locate-path": "^3.0.0"
2805 }
2806 },
2807 "invert-kv": {
2808 "version": "2.0.0",
2809 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
2810 "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
2811 "dev": true
2812 },
2813 "is-fullwidth-code-point": {
2814 "version": "2.0.0",
2815 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2816 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2817 "dev": true
2818 },
2819 "lcid": {
2820 "version": "2.0.0",
2821 "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
2822 "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
2823 "dev": true,
2824 "requires": {
2825 "invert-kv": "^2.0.0"
2826 }
2827 },
2828 "locate-path": {
2829 "version": "3.0.0",
2830 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
2831 "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
2832 "dev": true,
2833 "requires": {
2834 "p-locate": "^3.0.0",
2835 "path-exists": "^3.0.0"
2836 }
2837 },
2838 "mem": {
2839 "version": "4.0.0",
2840 "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
2841 "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
2842 "dev": true,
2843 "requires": {
2844 "map-age-cleaner": "^0.1.1",
2845 "mimic-fn": "^1.0.0",
2846 "p-is-promise": "^1.1.0"
2847 }
2848 },
2849 "os-locale": {
2850 "version": "3.0.1",
2851 "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
2852 "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
2853 "dev": true,
2854 "requires": {
2855 "execa": "^0.10.0",
2856 "lcid": "^2.0.0",
2857 "mem": "^4.0.0"
2858 }
2859 },
2860 "p-limit": {
2861 "version": "2.0.0",
2862 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
2863 "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
2864 "dev": true,
2865 "requires": {
2866 "p-try": "^2.0.0"
2867 }
2868 },
2869 "p-locate": {
2870 "version": "3.0.0",
2871 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
2872 "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
2873 "dev": true,
2874 "requires": {
2875 "p-limit": "^2.0.0"
2876 }
2877 },
2878 "p-try": {
2879 "version": "2.0.0", 4893 "version": "2.0.0",
2880 "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", 4894 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
2881 "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", 4895 "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
2882 "dev": true
2883 },
2884 "parse-json": {
2885 "version": "4.0.0",
2886 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
2887 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
2888 "dev": true,
2889 "requires": {
2890 "error-ex": "^1.3.1",
2891 "json-parse-better-errors": "^1.0.1"
2892 }
2893 },
2894 "path-exists": {
2895 "version": "3.0.0",
2896 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2897 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2898 "dev": true
2899 },
2900 "pify": {
2901 "version": "3.0.0",
2902 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
2903 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
2904 "dev": true 4896 "dev": true
2905 }, 4897 },
2906 "read-pkg": {
2907 "version": "4.0.1",
2908 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
2909 "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
2910 "dev": true,
2911 "requires": {
2912 "normalize-package-data": "^2.3.2",
2913 "parse-json": "^4.0.0",
2914 "pify": "^3.0.0"
2915 }
2916 },
2917 "rxjs": {
2918 "version": "6.2.2",
2919 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
2920 "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
2921 "dev": true,
2922 "requires": {
2923 "tslib": "^1.9.0"
2924 }
2925 },
2926 "string-width": {
2927 "version": "2.1.1",
2928 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
2929 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
2930 "dev": true,
2931 "requires": {
2932 "is-fullwidth-code-point": "^2.0.0",
2933 "strip-ansi": "^4.0.0"
2934 }
2935 },
2936 "strip-ansi": {
2937 "version": "4.0.0",
2938 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
2939 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
2940 "dev": true,
2941 "requires": {
2942 "ansi-regex": "^3.0.0"
2943 }
2944 },
2945 "supports-color": { 4898 "supports-color": {
2946 "version": "4.5.0", 4899 "version": "4.5.0",
2947 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 4900 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
@@ -2949,53 +4902,20 @@
2949 "dev": true, 4902 "dev": true,
2950 "requires": { 4903 "requires": {
2951 "has-flag": "^2.0.0" 4904 "has-flag": "^2.0.0"
2952 },
2953 "dependencies": {
2954 "has-flag": {
2955 "version": "2.0.0",
2956 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
2957 "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
2958 "dev": true
2959 }
2960 }
2961 },
2962 "which-module": {
2963 "version": "2.0.0",
2964 "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
2965 "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
2966 "dev": true
2967 },
2968 "yargs": {
2969 "version": "12.0.2",
2970 "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
2971 "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
2972 "dev": true,
2973 "requires": {
2974 "cliui": "^4.0.0",
2975 "decamelize": "^2.0.0",
2976 "find-up": "^3.0.0",
2977 "get-caller-file": "^1.0.1",
2978 "os-locale": "^3.0.0",
2979 "require-directory": "^2.1.1",
2980 "require-main-filename": "^1.0.1",
2981 "set-blocking": "^2.0.0",
2982 "string-width": "^2.0.0",
2983 "which-module": "^2.0.0",
2984 "y18n": "^3.2.1 || ^4.0.0",
2985 "yargs-parser": "^10.1.0"
2986 }
2987 },
2988 "yargs-parser": {
2989 "version": "10.1.0",
2990 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
2991 "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
2992 "dev": true,
2993 "requires": {
2994 "camelcase": "^4.1.0"
2995 } 4905 }
2996 } 4906 }
2997 } 4907 }
2998 }, 4908 },
4909 "config-chain": {
4910 "version": "1.1.12",
4911 "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
4912 "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
4913 "dev": true,
4914 "requires": {
4915 "ini": "^1.3.4",
4916 "proto-list": "~1.2.1"
4917 }
4918 },
2999 "configstore": { 4919 "configstore": {
3000 "version": "3.1.2", 4920 "version": "3.1.2",
3001 "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", 4921 "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
@@ -3008,6 +4928,17 @@
3008 "unique-string": "^1.0.0", 4928 "unique-string": "^1.0.0",
3009 "write-file-atomic": "^2.0.0", 4929 "write-file-atomic": "^2.0.0",
3010 "xdg-basedir": "^3.0.0" 4930 "xdg-basedir": "^3.0.0"
4931 },
4932 "dependencies": {
4933 "dot-prop": {
4934 "version": "4.2.0",
4935 "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
4936 "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
4937 "dev": true,
4938 "requires": {
4939 "is-obj": "^1.0.0"
4940 }
4941 }
3011 } 4942 }
3012 }, 4943 },
3013 "connect": { 4944 "connect": {
@@ -3024,39 +4955,79 @@
3024 "dependencies": { 4955 "dependencies": {
3025 "debug": { 4956 "debug": {
3026 "version": "1.0.4", 4957 "version": "1.0.4",
3027 "resolved": "http://registry.npmjs.org/debug/-/debug-1.0.4.tgz", 4958 "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
3028 "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=", 4959 "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
3029 "dev": true, 4960 "dev": true,
3030 "requires": { 4961 "requires": {
3031 "ms": "0.6.2" 4962 "ms": "0.6.2"
4963 },
4964 "dependencies": {
4965 "ms": {
4966 "version": "0.6.2",
4967 "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
4968 "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=",
4969 "dev": true
4970 }
3032 } 4971 }
3033 }, 4972 },
3034 "ms": { 4973 "ms": {
3035 "version": "0.6.2", 4974 "version": "0.7.2",
3036 "resolved": "http://registry.npmjs.org/ms/-/ms-0.6.2.tgz", 4975 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
3037 "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=", 4976 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U="
3038 "dev": true
3039 } 4977 }
3040 } 4978 }
3041 }, 4979 },
4980 "connect-history-api-fallback": {
4981 "version": "1.6.0",
4982 "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
4983 "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
4984 "dev": true
4985 },
3042 "connect-inject": { 4986 "connect-inject": {
3043 "version": "0.3.2", 4987 "version": "0.3.2",
3044 "resolved": "https://registry.npmjs.org/connect-inject/-/connect-inject-0.3.2.tgz", 4988 "resolved": "https://registry.npmjs.org/connect-inject/-/connect-inject-0.3.2.tgz",
3045 "integrity": "sha1-2WtRaltrskwhkeYitegs3WKES6M=", 4989 "integrity": "sha1-2WtRaltrskwhkeYitegs3WKES6M=",
3046 "dev": true 4990 "dev": true
3047 }, 4991 },
4992 "console-browserify": {
4993 "version": "1.1.0",
4994 "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
4995 "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
4996 "dev": true,
4997 "requires": {
4998 "date-now": "^0.1.4"
4999 }
5000 },
3048 "console-control-strings": { 5001 "console-control-strings": {
3049 "version": "1.1.0", 5002 "version": "1.1.0",
3050 "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 5003 "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
3051 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", 5004 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
3052 "dev": true 5005 "dev": true
3053 }, 5006 },
5007 "constants-browserify": {
5008 "version": "1.0.0",
5009 "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
5010 "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
5011 "dev": true
5012 },
3054 "contains-path": { 5013 "contains-path": {
3055 "version": "0.1.0", 5014 "version": "0.1.0",
3056 "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 5015 "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
3057 "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 5016 "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
3058 "dev": true 5017 "dev": true
3059 }, 5018 },
5019 "content-disposition": {
5020 "version": "0.5.2",
5021 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
5022 "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
5023 "dev": true
5024 },
5025 "content-type": {
5026 "version": "1.0.4",
5027 "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
5028 "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
5029 "dev": true
5030 },
3060 "conventional-changelog": { 5031 "conventional-changelog": {
3061 "version": "3.0.5", 5032 "version": "3.0.5",
3062 "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.0.5.tgz", 5033 "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.0.5.tgz",
@@ -3105,149 +5076,6 @@
3105 "lodash": "^4.2.1", 5076 "lodash": "^4.2.1",
3106 "meow": "^4.0.0", 5077 "meow": "^4.0.0",
3107 "tempfile": "^1.1.1" 5078 "tempfile": "^1.1.1"
3108 },
3109 "dependencies": {
3110 "camelcase": {
3111 "version": "4.1.0",
3112 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
3113 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
3114 "dev": true
3115 },
3116 "camelcase-keys": {
3117 "version": "4.2.0",
3118 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
3119 "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
3120 "dev": true,
3121 "requires": {
3122 "camelcase": "^4.1.0",
3123 "map-obj": "^2.0.0",
3124 "quick-lru": "^1.0.0"
3125 }
3126 },
3127 "find-up": {
3128 "version": "2.1.0",
3129 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
3130 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
3131 "dev": true,
3132 "requires": {
3133 "locate-path": "^2.0.0"
3134 }
3135 },
3136 "indent-string": {
3137 "version": "3.2.0",
3138 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
3139 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
3140 "dev": true
3141 },
3142 "load-json-file": {
3143 "version": "4.0.0",
3144 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
3145 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
3146 "dev": true,
3147 "requires": {
3148 "graceful-fs": "^4.1.2",
3149 "parse-json": "^4.0.0",
3150 "pify": "^3.0.0",
3151 "strip-bom": "^3.0.0"
3152 }
3153 },
3154 "map-obj": {
3155 "version": "2.0.0",
3156 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
3157 "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
3158 "dev": true
3159 },
3160 "meow": {
3161 "version": "4.0.1",
3162 "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
3163 "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
3164 "dev": true,
3165 "requires": {
3166 "camelcase-keys": "^4.0.0",
3167 "decamelize-keys": "^1.0.0",
3168 "loud-rejection": "^1.0.0",
3169 "minimist": "^1.1.3",
3170 "minimist-options": "^3.0.1",
3171 "normalize-package-data": "^2.3.4",
3172 "read-pkg-up": "^3.0.0",
3173 "redent": "^2.0.0",
3174 "trim-newlines": "^2.0.0"
3175 }
3176 },
3177 "parse-json": {
3178 "version": "4.0.0",
3179 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
3180 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
3181 "dev": true,
3182 "requires": {
3183 "error-ex": "^1.3.1",
3184 "json-parse-better-errors": "^1.0.1"
3185 }
3186 },
3187 "path-type": {
3188 "version": "3.0.0",
3189 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
3190 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
3191 "dev": true,
3192 "requires": {
3193 "pify": "^3.0.0"
3194 }
3195 },
3196 "pify": {
3197 "version": "3.0.0",
3198 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
3199 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
3200 "dev": true
3201 },
3202 "read-pkg": {
3203 "version": "3.0.0",
3204 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
3205 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
3206 "dev": true,
3207 "requires": {
3208 "load-json-file": "^4.0.0",
3209 "normalize-package-data": "^2.3.2",
3210 "path-type": "^3.0.0"
3211 }
3212 },
3213 "read-pkg-up": {
3214 "version": "3.0.0",
3215 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
3216 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
3217 "dev": true,
3218 "requires": {
3219 "find-up": "^2.0.0",
3220 "read-pkg": "^3.0.0"
3221 }
3222 },
3223 "redent": {
3224 "version": "2.0.0",
3225 "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
3226 "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
3227 "dev": true,
3228 "requires": {
3229 "indent-string": "^3.0.0",
3230 "strip-indent": "^2.0.0"
3231 }
3232 },
3233 "strip-bom": {
3234 "version": "3.0.0",
3235 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
3236 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
3237 "dev": true
3238 },
3239 "strip-indent": {
3240 "version": "2.0.0",
3241 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
3242 "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
3243 "dev": true
3244 },
3245 "trim-newlines": {
3246 "version": "2.0.0",
3247 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
3248 "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
3249 "dev": true
3250 }
3251 } 5079 }
3252 }, 5080 },
3253 "conventional-changelog-codemirror": { 5081 "conventional-changelog-codemirror": {
@@ -3280,58 +5108,6 @@
3280 "through2": "^2.0.0" 5108 "through2": "^2.0.0"
3281 }, 5109 },
3282 "dependencies": { 5110 "dependencies": {
3283 "dateformat": {
3284 "version": "3.0.3",
3285 "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
3286 "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
3287 "dev": true
3288 },
3289 "find-up": {
3290 "version": "2.1.0",
3291 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
3292 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
3293 "dev": true,
3294 "requires": {
3295 "locate-path": "^2.0.0"
3296 }
3297 },
3298 "load-json-file": {
3299 "version": "4.0.0",
3300 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
3301 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
3302 "dev": true,
3303 "requires": {
3304 "graceful-fs": "^4.1.2",
3305 "parse-json": "^4.0.0",
3306 "pify": "^3.0.0",
3307 "strip-bom": "^3.0.0"
3308 }
3309 },
3310 "parse-json": {
3311 "version": "4.0.0",
3312 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
3313 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
3314 "dev": true,
3315 "requires": {
3316 "error-ex": "^1.3.1",
3317 "json-parse-better-errors": "^1.0.1"
3318 }
3319 },
3320 "path-type": {
3321 "version": "3.0.0",
3322 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
3323 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
3324 "dev": true,
3325 "requires": {
3326 "pify": "^3.0.0"
3327 }
3328 },
3329 "pify": {
3330 "version": "3.0.0",
3331 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
3332 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
3333 "dev": true
3334 },
3335 "read-pkg": { 5111 "read-pkg": {
3336 "version": "3.0.0", 5112 "version": "3.0.0",
3337 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 5113 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
@@ -3342,22 +5118,6 @@
3342 "normalize-package-data": "^2.3.2", 5118 "normalize-package-data": "^2.3.2",
3343 "path-type": "^3.0.0" 5119 "path-type": "^3.0.0"
3344 } 5120 }
3345 },
3346 "read-pkg-up": {
3347 "version": "3.0.0",
3348 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
3349 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
3350 "dev": true,
3351 "requires": {
3352 "find-up": "^2.0.0",
3353 "read-pkg": "^3.0.0"
3354 }
3355 },
3356 "strip-bom": {
3357 "version": "3.0.0",
3358 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
3359 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
3360 "dev": true
3361 } 5121 }
3362 } 5122 }
3363 }, 5123 },
@@ -3429,155 +5189,6 @@
3429 "semver": "^5.5.0", 5189 "semver": "^5.5.0",
3430 "split": "^1.0.0", 5190 "split": "^1.0.0",
3431 "through2": "^2.0.0" 5191 "through2": "^2.0.0"
3432 },
3433 "dependencies": {
3434 "camelcase": {
3435 "version": "4.1.0",
3436 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
3437 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
3438 "dev": true
3439 },
3440 "camelcase-keys": {
3441 "version": "4.2.0",
3442 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
3443 "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
3444 "dev": true,
3445 "requires": {
3446 "camelcase": "^4.1.0",
3447 "map-obj": "^2.0.0",
3448 "quick-lru": "^1.0.0"
3449 }
3450 },
3451 "dateformat": {
3452 "version": "3.0.3",
3453 "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
3454 "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
3455 "dev": true
3456 },
3457 "find-up": {
3458 "version": "2.1.0",
3459 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
3460 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
3461 "dev": true,
3462 "requires": {
3463 "locate-path": "^2.0.0"
3464 }
3465 },
3466 "indent-string": {
3467 "version": "3.2.0",
3468 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
3469 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
3470 "dev": true
3471 },
3472 "load-json-file": {
3473 "version": "4.0.0",
3474 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
3475 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
3476 "dev": true,
3477 "requires": {
3478 "graceful-fs": "^4.1.2",
3479 "parse-json": "^4.0.0",
3480 "pify": "^3.0.0",
3481 "strip-bom": "^3.0.0"
3482 }
3483 },
3484 "map-obj": {
3485 "version": "2.0.0",
3486 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
3487 "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
3488 "dev": true
3489 },
3490 "meow": {
3491 "version": "4.0.1",
3492 "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
3493 "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
3494 "dev": true,
3495 "requires": {
3496 "camelcase-keys": "^4.0.0",
3497 "decamelize-keys": "^1.0.0",
3498 "loud-rejection": "^1.0.0",
3499 "minimist": "^1.1.3",
3500 "minimist-options": "^3.0.1",
3501 "normalize-package-data": "^2.3.4",
3502 "read-pkg-up": "^3.0.0",
3503 "redent": "^2.0.0",
3504 "trim-newlines": "^2.0.0"
3505 }
3506 },
3507 "parse-json": {
3508 "version": "4.0.0",
3509 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
3510 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
3511 "dev": true,
3512 "requires": {
3513 "error-ex": "^1.3.1",
3514 "json-parse-better-errors": "^1.0.1"
3515 }
3516 },
3517 "path-type": {
3518 "version": "3.0.0",
3519 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
3520 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
3521 "dev": true,
3522 "requires": {
3523 "pify": "^3.0.0"
3524 }
3525 },
3526 "pify": {
3527 "version": "3.0.0",
3528 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
3529 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
3530 "dev": true
3531 },
3532 "read-pkg": {
3533 "version": "3.0.0",
3534 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
3535 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
3536 "dev": true,
3537 "requires": {
3538 "load-json-file": "^4.0.0",
3539 "normalize-package-data": "^2.3.2",
3540 "path-type": "^3.0.0"
3541 }
3542 },
3543 "read-pkg-up": {
3544 "version": "3.0.0",
3545 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
3546 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
3547 "dev": true,
3548 "requires": {
3549 "find-up": "^2.0.0",
3550 "read-pkg": "^3.0.0"
3551 }
3552 },
3553 "redent": {
3554 "version": "2.0.0",
3555 "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
3556 "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
3557 "dev": true,
3558 "requires": {
3559 "indent-string": "^3.0.0",
3560 "strip-indent": "^2.0.0"
3561 }
3562 },
3563 "strip-bom": {
3564 "version": "3.0.0",
3565 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
3566 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
3567 "dev": true
3568 },
3569 "strip-indent": {
3570 "version": "2.0.0",
3571 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
3572 "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
3573 "dev": true
3574 },
3575 "trim-newlines": {
3576 "version": "2.0.0",
3577 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
3578 "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
3579 "dev": true
3580 }
3581 } 5192 }
3582 }, 5193 },
3583 "conventional-commit-types": { 5194 "conventional-commit-types": {
@@ -3609,170 +5220,118 @@
3609 "split2": "^2.0.0", 5220 "split2": "^2.0.0",
3610 "through2": "^2.0.0", 5221 "through2": "^2.0.0",
3611 "trim-off-newlines": "^1.0.0" 5222 "trim-off-newlines": "^1.0.0"
5223 }
5224 },
5225 "conventional-recommended-bump": {
5226 "version": "4.0.4",
5227 "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-4.0.4.tgz",
5228 "integrity": "sha512-9mY5Yoblq+ZMqJpBzgS+RpSq+SUfP2miOR3H/NR9drGf08WCrY9B6HAGJZEm6+ThsVP917VHAahSOjM6k1vhPg==",
5229 "dev": true,
5230 "requires": {
5231 "concat-stream": "^1.6.0",
5232 "conventional-changelog-preset-loader": "^2.0.2",
5233 "conventional-commits-filter": "^2.0.1",
5234 "conventional-commits-parser": "^3.0.1",
5235 "git-raw-commits": "2.0.0",
5236 "git-semver-tags": "^2.0.2",
5237 "meow": "^4.0.0",
5238 "q": "^1.5.1"
5239 }
5240 },
5241 "convert-source-map": {
5242 "version": "1.6.0",
5243 "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
5244 "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
5245 "dev": true,
5246 "requires": {
5247 "safe-buffer": "~5.1.1"
3612 }, 5248 },
3613 "dependencies": { 5249 "dependencies": {
3614 "camelcase": { 5250 "doctrine": {
3615 "version": "4.1.0", 5251 "version": "1.5.0",
3616 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 5252 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
3617 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 5253 "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
3618 "dev": true
3619 },
3620 "camelcase-keys": {
3621 "version": "4.2.0",
3622 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
3623 "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
3624 "dev": true,
3625 "requires": { 5254 "requires": {
3626 "camelcase": "^4.1.0", 5255 "esutils": "^2.0.2",
3627 "map-obj": "^2.0.0", 5256 "isarray": "^1.0.0"
3628 "quick-lru": "^1.0.0"
3629 } 5257 }
3630 }, 5258 },
3631 "find-up": { 5259 "find-up": {
3632 "version": "2.1.0", 5260 "version": "2.1.0",
3633 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 5261 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
3634 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 5262 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c="
3635 "dev": true,
3636 "requires": {
3637 "locate-path": "^2.0.0"
3638 }
3639 },
3640 "indent-string": {
3641 "version": "3.2.0",
3642 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
3643 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
3644 "dev": true
3645 }, 5263 },
3646 "load-json-file": { 5264 "load-json-file": {
3647 "version": "4.0.0", 5265 "version": "2.0.0",
3648 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 5266 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
3649 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 5267 "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
3650 "dev": true,
3651 "requires": { 5268 "requires": {
3652 "graceful-fs": "^4.1.2", 5269 "graceful-fs": "^4.1.2",
3653 "parse-json": "^4.0.0",
3654 "pify": "^3.0.0",
3655 "strip-bom": "^3.0.0" 5270 "strip-bom": "^3.0.0"
3656 } 5271 }
3657 }, 5272 },
3658 "map-obj": {
3659 "version": "2.0.0",
3660 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
3661 "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
3662 "dev": true
3663 },
3664 "meow": {
3665 "version": "4.0.1",
3666 "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
3667 "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
3668 "dev": true,
3669 "requires": {
3670 "camelcase-keys": "^4.0.0",
3671 "decamelize-keys": "^1.0.0",
3672 "loud-rejection": "^1.0.0",
3673 "minimist": "^1.1.3",
3674 "minimist-options": "^3.0.1",
3675 "normalize-package-data": "^2.3.4",
3676 "read-pkg-up": "^3.0.0",
3677 "redent": "^2.0.0",
3678 "trim-newlines": "^2.0.0"
3679 }
3680 },
3681 "parse-json": {
3682 "version": "4.0.0",
3683 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
3684 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
3685 "dev": true,
3686 "requires": {
3687 "error-ex": "^1.3.1",
3688 "json-parse-better-errors": "^1.0.1"
3689 }
3690 },
3691 "path-type": { 5273 "path-type": {
3692 "version": "3.0.0", 5274 "version": "2.0.0",
3693 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 5275 "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
3694 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 5276 "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM="
3695 "dev": true,
3696 "requires": {
3697 "pify": "^3.0.0"
3698 }
3699 },
3700 "pify": {
3701 "version": "3.0.0",
3702 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
3703 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
3704 "dev": true
3705 }, 5277 },
3706 "read-pkg": { 5278 "read-pkg": {
3707 "version": "3.0.0", 5279 "version": "2.0.0",
3708 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 5280 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
3709 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 5281 "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
3710 "dev": true,
3711 "requires": { 5282 "requires": {
3712 "load-json-file": "^4.0.0", 5283 "load-json-file": "^2.0.0",
3713 "normalize-package-data": "^2.3.2", 5284 "normalize-package-data": "^2.3.2",
3714 "path-type": "^3.0.0" 5285 "path-type": "^2.0.0"
3715 } 5286 }
3716 }, 5287 },
3717 "read-pkg-up": { 5288 "read-pkg-up": {
3718 "version": "3.0.0",
3719 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
3720 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
3721 "dev": true,
3722 "requires": {
3723 "find-up": "^2.0.0",
3724 "read-pkg": "^3.0.0"
3725 }
3726 },
3727 "redent": {
3728 "version": "2.0.0", 5289 "version": "2.0.0",
3729 "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", 5290 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
3730 "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", 5291 "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
3731 "dev": true,
3732 "requires": { 5292 "requires": {
3733 "indent-string": "^3.0.0", 5293 "find-up": "^2.0.0",
3734 "strip-indent": "^2.0.0" 5294 "read-pkg": "^2.0.0"
3735 } 5295 }
3736 }, 5296 },
3737 "strip-bom": { 5297 "strip-bom": {
3738 "version": "3.0.0", 5298 "version": "3.0.0",
3739 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 5299 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
3740 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 5300 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
3741 "dev": true
3742 },
3743 "strip-indent": {
3744 "version": "2.0.0",
3745 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
3746 "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
3747 "dev": true
3748 },
3749 "trim-newlines": {
3750 "version": "2.0.0",
3751 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
3752 "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
3753 "dev": true
3754 } 5301 }
3755 } 5302 }
3756 }, 5303 },
3757 "convert-source-map": {
3758 "version": "1.6.0",
3759 "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
3760 "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
3761 "dev": true,
3762 "requires": {
3763 "safe-buffer": "~5.1.1"
3764 }
3765 },
3766 "cookie": { 5304 "cookie": {
3767 "version": "0.3.1", 5305 "version": "0.3.1",
3768 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 5306 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
3769 "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 5307 "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
3770 "dev": true 5308 "dev": true
3771 }, 5309 },
5310 "cookie-signature": {
5311 "version": "1.0.6",
5312 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
5313 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
5314 "dev": true
5315 },
5316 "copy-concurrently": {
5317 "version": "1.0.5",
5318 "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
5319 "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
5320 "dev": true,
5321 "requires": {
5322 "aproba": "^1.1.1",
5323 "fs-write-stream-atomic": "^1.0.8",
5324 "iferr": "^0.1.5",
5325 "mkdirp": "^0.5.1",
5326 "rimraf": "^2.5.4",
5327 "run-queue": "^1.0.0"
5328 }
5329 },
3772 "copy-descriptor": { 5330 "copy-descriptor": {
3773 "version": "0.1.1", 5331 "version": "0.1.1",
3774 "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 5332 "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
3775 "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" 5333 "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
5334 "dev": true
3776 }, 5335 },
3777 "copy-props": { 5336 "copy-props": {
3778 "version": "2.0.4", 5337 "version": "2.0.4",
@@ -3785,15 +5344,14 @@
3785 } 5344 }
3786 }, 5345 },
3787 "core-js": { 5346 "core-js": {
3788 "version": "2.5.7", 5347 "version": "2.6.4",
3789 "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", 5348 "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz",
3790 "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" 5349 "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A=="
3791 }, 5350 },
3792 "core-util-is": { 5351 "core-util-is": {
3793 "version": "1.0.2", 5352 "version": "1.0.2",
3794 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 5353 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
3795 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 5354 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
3796 "dev": true
3797 }, 5355 },
3798 "cosmiconfig": { 5356 "cosmiconfig": {
3799 "version": "5.0.7", 5357 "version": "5.0.7",
@@ -3805,18 +5363,16 @@
3805 "is-directory": "^0.3.1", 5363 "is-directory": "^0.3.1",
3806 "js-yaml": "^3.9.0", 5364 "js-yaml": "^3.9.0",
3807 "parse-json": "^4.0.0" 5365 "parse-json": "^4.0.0"
3808 }, 5366 }
3809 "dependencies": { 5367 },
3810 "parse-json": { 5368 "create-ecdh": {
3811 "version": "4.0.0", 5369 "version": "4.0.3",
3812 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 5370 "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
3813 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 5371 "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
3814 "dev": true, 5372 "dev": true,
3815 "requires": { 5373 "requires": {
3816 "error-ex": "^1.3.1", 5374 "bn.js": "^4.1.0",
3817 "json-parse-better-errors": "^1.0.1" 5375 "elliptic": "^6.0.0"
3818 }
3819 }
3820 } 5376 }
3821 }, 5377 },
3822 "create-error-class": { 5378 "create-error-class": {
@@ -3828,6 +5384,33 @@
3828 "capture-stack-trace": "^1.0.0" 5384 "capture-stack-trace": "^1.0.0"
3829 } 5385 }
3830 }, 5386 },
5387 "create-hash": {
5388 "version": "1.2.0",
5389 "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
5390 "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
5391 "dev": true,
5392 "requires": {
5393 "cipher-base": "^1.0.1",
5394 "inherits": "^2.0.1",
5395 "md5.js": "^1.3.4",
5396 "ripemd160": "^2.0.1",
5397 "sha.js": "^2.4.0"
5398 }
5399 },
5400 "create-hmac": {
5401 "version": "1.1.7",
5402 "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
5403 "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
5404 "dev": true,
5405 "requires": {
5406 "cipher-base": "^1.0.3",
5407 "create-hash": "^1.1.0",
5408 "inherits": "^2.0.1",
5409 "ripemd160": "^2.0.0",
5410 "safe-buffer": "^5.0.1",
5411 "sha.js": "^2.4.8"
5412 }
5413 },
3831 "create-react-class": { 5414 "create-react-class": {
3832 "version": "15.6.3", 5415 "version": "15.6.3",
3833 "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", 5416 "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
@@ -3861,12 +5444,55 @@
3861 "which": "^1.2.9" 5444 "which": "^1.2.9"
3862 } 5445 }
3863 }, 5446 },
5447 "crypto-browserify": {
5448 "version": "3.12.0",
5449 "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
5450 "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
5451 "dev": true,
5452 "requires": {
5453 "browserify-cipher": "^1.0.0",
5454 "browserify-sign": "^4.0.0",
5455 "create-ecdh": "^4.0.0",
5456 "create-hash": "^1.1.0",
5457 "create-hmac": "^1.1.0",
5458 "diffie-hellman": "^5.0.0",
5459 "inherits": "^2.0.1",
5460 "pbkdf2": "^3.0.3",
5461 "public-encrypt": "^4.0.0",
5462 "randombytes": "^2.0.0",
5463 "randomfill": "^1.0.3"
5464 }
5465 },
3864 "crypto-random-string": { 5466 "crypto-random-string": {
3865 "version": "1.0.0", 5467 "version": "1.0.0",
3866 "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 5468 "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
3867 "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", 5469 "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
3868 "dev": true 5470 "dev": true
3869 }, 5471 },
5472 "css-select": {
5473 "version": "1.2.0",
5474 "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
5475 "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
5476 "dev": true,
5477 "requires": {
5478 "boolbase": "~1.0.0",
5479 "css-what": "2.1",
5480 "domutils": "1.5.1",
5481 "nth-check": "~1.0.1"
5482 },
5483 "dependencies": {
5484 "domutils": {
5485 "version": "1.5.1",
5486 "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
5487 "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
5488 "dev": true,
5489 "requires": {
5490 "dom-serializer": "0",
5491 "domelementtype": "1"
5492 }
5493 }
5494 }
5495 },
3870 "css-vendor": { 5496 "css-vendor": {
3871 "version": "0.3.8", 5497 "version": "0.3.8",
3872 "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz", 5498 "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz",
@@ -3875,6 +5501,33 @@
3875 "is-in-browser": "^1.0.2" 5501 "is-in-browser": "^1.0.2"
3876 } 5502 }
3877 }, 5503 },
5504 "css-what": {
5505 "version": "2.1.2",
5506 "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz",
5507 "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==",
5508 "dev": true
5509 },
5510 "cssom": {
5511 "version": "0.3.6",
5512 "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz",
5513 "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==",
5514 "dev": true
5515 },
5516 "cssstyle": {
5517 "version": "1.2.2",
5518 "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz",
5519 "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==",
5520 "dev": true,
5521 "requires": {
5522 "cssom": "0.3.x"
5523 }
5524 },
5525 "csstype": {
5526 "version": "2.6.2",
5527 "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.2.tgz",
5528 "integrity": "sha512-Rl7PvTae0pflc1YtxtKbiSqq20Ts6vpIYOD5WBafl4y123DyHUeLrRdQP66sQW8/6gmX8jrYJLXwNeMqYVJcow==",
5529 "dev": true
5530 },
3878 "currently-unhandled": { 5531 "currently-unhandled": {
3879 "version": "0.4.1", 5532 "version": "0.4.1",
3880 "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 5533 "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -3884,6 +5537,12 @@
3884 "array-find-index": "^1.0.1" 5537 "array-find-index": "^1.0.1"
3885 } 5538 }
3886 }, 5539 },
5540 "cyclist": {
5541 "version": "0.2.2",
5542 "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
5543 "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
5544 "dev": true
5545 },
3887 "cz-conventional-changelog": { 5546 "cz-conventional-changelog": {
3888 "version": "2.1.0", 5547 "version": "2.1.0",
3889 "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz", 5548 "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz",
@@ -3901,6 +5560,7 @@
3901 "version": "1.0.0", 5560 "version": "1.0.0",
3902 "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", 5561 "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
3903 "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", 5562 "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
5563 "dev": true,
3904 "requires": { 5564 "requires": {
3905 "es5-ext": "^0.10.9" 5565 "es5-ext": "^0.10.9"
3906 } 5566 }
@@ -3929,33 +5589,57 @@
3929 "assert-plus": "^1.0.0" 5589 "assert-plus": "^1.0.0"
3930 } 5590 }
3931 }, 5591 },
5592 "data-urls": {
5593 "version": "1.1.0",
5594 "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
5595 "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
5596 "dev": true,
5597 "requires": {
5598 "abab": "^2.0.0",
5599 "whatwg-mimetype": "^2.2.0",
5600 "whatwg-url": "^7.0.0"
5601 }
5602 },
3932 "date-fns": { 5603 "date-fns": {
3933 "version": "1.29.0", 5604 "version": "1.30.1",
3934 "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", 5605 "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
3935 "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", 5606 "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
5607 "dev": true
5608 },
5609 "date-now": {
5610 "version": "0.1.4",
5611 "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
5612 "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
3936 "dev": true 5613 "dev": true
3937 }, 5614 },
3938 "dateformat": { 5615 "dateformat": {
3939 "version": "2.2.0", 5616 "version": "3.0.3",
3940 "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", 5617 "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
3941 "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", 5618 "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
3942 "dev": true 5619 "dev": true
3943 }, 5620 },
3944 "debug": { 5621 "debug": {
3945 "version": "2.6.9", 5622 "version": "2.6.9",
3946 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 5623 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
3947 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 5624 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
5625 "dev": true,
3948 "requires": { 5626 "requires": {
3949 "ms": "2.0.0" 5627 "ms": "2.0.0"
5628 },
5629 "dependencies": {
5630 "ms": {
5631 "version": "2.0.0",
5632 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
5633 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
5634 "dev": true
5635 }
3950 } 5636 }
3951 }, 5637 },
3952 "debug-electron": { 5638 "debuglog": {
3953 "version": "0.0.4", 5639 "version": "1.0.1",
3954 "resolved": "https://registry.npmjs.org/debug-electron/-/debug-electron-0.0.4.tgz", 5640 "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
3955 "integrity": "sha1-mwNTSayBB7TkPaIA0jOcT9Wxaec=", 5641 "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
3956 "requires": { 5642 "dev": true
3957 "debug": "^2.4.1"
3958 }
3959 }, 5643 },
3960 "decamelize": { 5644 "decamelize": {
3961 "version": "1.2.0", 5645 "version": "1.2.0",
@@ -3970,17 +5654,33 @@
3970 "requires": { 5654 "requires": {
3971 "decamelize": "^1.1.0", 5655 "decamelize": "^1.1.0",
3972 "map-obj": "^1.0.0" 5656 "map-obj": "^1.0.0"
5657 },
5658 "dependencies": {
5659 "map-obj": {
5660 "version": "1.0.1",
5661 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
5662 "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
5663 "dev": true
5664 }
3973 } 5665 }
3974 }, 5666 },
3975 "decode-uri-component": { 5667 "decode-uri-component": {
3976 "version": "0.2.0", 5668 "version": "0.2.0",
3977 "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 5669 "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
3978 "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" 5670 "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
5671 "dev": true
5672 },
5673 "dedent": {
5674 "version": "0.7.0",
5675 "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
5676 "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
5677 "dev": true
3979 }, 5678 },
3980 "deep-equal": { 5679 "deep-equal": {
3981 "version": "1.0.1", 5680 "version": "1.0.1",
3982 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 5681 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
3983 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" 5682 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
5683 "dev": true
3984 }, 5684 },
3985 "deep-extend": { 5685 "deep-extend": {
3986 "version": "0.6.0", 5686 "version": "0.6.0",
@@ -3994,6 +5694,12 @@
3994 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 5694 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
3995 "dev": true 5695 "dev": true
3996 }, 5696 },
5697 "deepmerge": {
5698 "version": "3.1.0",
5699 "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.1.0.tgz",
5700 "integrity": "sha512-/TnecbwXEdycfbsM2++O3eGiatEFHjjNciHEwJclM+T5Kd94qD1AP+2elP/Mq0L5b9VZJao5znR01Mz6eX8Seg==",
5701 "dev": true
5702 },
3997 "default-compare": { 5703 "default-compare": {
3998 "version": "1.0.0", 5704 "version": "1.0.0",
3999 "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", 5705 "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
@@ -4011,12 +5717,63 @@
4011 } 5717 }
4012 } 5718 }
4013 }, 5719 },
5720 "default-gateway": {
5721 "version": "2.7.2",
5722 "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz",
5723 "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==",
5724 "dev": true,
5725 "requires": {
5726 "execa": "^0.10.0",
5727 "ip-regex": "^2.1.0"
5728 },
5729 "dependencies": {
5730 "execa": {
5731 "version": "0.10.0",
5732 "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
5733 "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
5734 "dev": true,
5735 "requires": {
5736 "cross-spawn": "^6.0.0",
5737 "get-stream": "^3.0.0",
5738 "is-stream": "^1.1.0",
5739 "npm-run-path": "^2.0.0",
5740 "p-finally": "^1.0.0",
5741 "signal-exit": "^3.0.0",
5742 "strip-eof": "^1.0.0"
5743 }
5744 },
5745 "get-stream": {
5746 "version": "3.0.0",
5747 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
5748 "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
5749 "dev": true
5750 }
5751 }
5752 },
5753 "default-require-extensions": {
5754 "version": "2.0.0",
5755 "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
5756 "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
5757 "dev": true,
5758 "requires": {
5759 "strip-bom": "^3.0.0"
5760 }
5761 },
4014 "default-resolution": { 5762 "default-resolution": {
4015 "version": "2.0.0", 5763 "version": "2.0.0",
4016 "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", 5764 "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
4017 "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", 5765 "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=",
4018 "dev": true 5766 "dev": true
4019 }, 5767 },
5768 "defaults": {
5769 "version": "1.0.3",
5770 "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
5771 "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
5772 "dev": true,
5773 "requires": {
5774 "clone": "^1.0.2"
5775 }
5776 },
4020 "define-properties": { 5777 "define-properties": {
4021 "version": "1.1.3", 5778 "version": "1.1.3",
4022 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 5779 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
@@ -4030,6 +5787,7 @@
4030 "version": "2.0.2", 5787 "version": "2.0.2",
4031 "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 5788 "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
4032 "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 5789 "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
5790 "dev": true,
4033 "requires": { 5791 "requires": {
4034 "is-descriptor": "^1.0.2", 5792 "is-descriptor": "^1.0.2",
4035 "isobject": "^3.0.1" 5793 "isobject": "^3.0.1"
@@ -4039,6 +5797,7 @@
4039 "version": "1.0.0", 5797 "version": "1.0.0",
4040 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 5798 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
4041 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 5799 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
5800 "dev": true,
4042 "requires": { 5801 "requires": {
4043 "kind-of": "^6.0.0" 5802 "kind-of": "^6.0.0"
4044 } 5803 }
@@ -4047,6 +5806,7 @@
4047 "version": "1.0.0", 5806 "version": "1.0.0",
4048 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 5807 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
4049 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 5808 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
5809 "dev": true,
4050 "requires": { 5810 "requires": {
4051 "kind-of": "^6.0.0" 5811 "kind-of": "^6.0.0"
4052 } 5812 }
@@ -4055,6 +5815,7 @@
4055 "version": "1.0.2", 5815 "version": "1.0.2",
4056 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 5816 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
4057 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 5817 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
5818 "dev": true,
4058 "requires": { 5819 "requires": {
4059 "is-accessor-descriptor": "^1.0.0", 5820 "is-accessor-descriptor": "^1.0.0",
4060 "is-data-descriptor": "^1.0.0", 5821 "is-data-descriptor": "^1.0.0",
@@ -4063,6 +5824,43 @@
4063 } 5824 }
4064 } 5825 }
4065 }, 5826 },
5827 "del": {
5828 "version": "3.0.0",
5829 "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
5830 "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
5831 "dev": true,
5832 "requires": {
5833 "globby": "^6.1.0",
5834 "is-path-cwd": "^1.0.0",
5835 "is-path-in-cwd": "^1.0.0",
5836 "p-map": "^1.1.1",
5837 "pify": "^3.0.0",
5838 "rimraf": "^2.2.8"
5839 },
5840 "dependencies": {
5841 "globby": {
5842 "version": "6.1.0",
5843 "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
5844 "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
5845 "dev": true,
5846 "requires": {
5847 "array-union": "^1.0.1",
5848 "glob": "^7.0.3",
5849 "object-assign": "^4.0.1",
5850 "pify": "^2.0.0",
5851 "pinkie-promise": "^2.0.0"
5852 },
5853 "dependencies": {
5854 "pify": {
5855 "version": "2.3.0",
5856 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
5857 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
5858 "dev": true
5859 }
5860 }
5861 }
5862 }
5863 },
4066 "delayed-stream": { 5864 "delayed-stream": {
4067 "version": "1.0.0", 5865 "version": "1.0.0",
4068 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 5866 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -4081,6 +5879,16 @@
4081 "integrity": "sha1-BwkfrnX5eCjYm0oCotR3jw58BmI=", 5879 "integrity": "sha1-BwkfrnX5eCjYm0oCotR3jw58BmI=",
4082 "dev": true 5880 "dev": true
4083 }, 5881 },
5882 "des.js": {
5883 "version": "1.0.0",
5884 "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
5885 "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
5886 "dev": true,
5887 "requires": {
5888 "inherits": "^2.0.1",
5889 "minimalistic-assert": "^1.0.0"
5890 }
5891 },
4084 "destroy": { 5892 "destroy": {
4085 "version": "1.0.3", 5893 "version": "1.0.3",
4086 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", 5894 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz",
@@ -4090,7 +5898,14 @@
4090 "detect-file": { 5898 "detect-file": {
4091 "version": "1.0.0", 5899 "version": "1.0.0",
4092 "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 5900 "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
4093 "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" 5901 "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
5902 "dev": true
5903 },
5904 "detect-indent": {
5905 "version": "5.0.0",
5906 "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
5907 "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
5908 "dev": true
4094 }, 5909 },
4095 "detect-libc": { 5910 "detect-libc": {
4096 "version": "1.0.3", 5911 "version": "1.0.3",
@@ -4098,6 +5913,61 @@
4098 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", 5913 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
4099 "dev": true 5914 "dev": true
4100 }, 5915 },
5916 "detect-newline": {
5917 "version": "2.1.0",
5918 "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
5919 "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
5920 "dev": true
5921 },
5922 "detect-node": {
5923 "version": "2.0.4",
5924 "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
5925 "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
5926 "dev": true
5927 },
5928 "dezalgo": {
5929 "version": "1.0.3",
5930 "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
5931 "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
5932 "dev": true,
5933 "requires": {
5934 "asap": "^2.0.0",
5935 "wrappy": "1"
5936 }
5937 },
5938 "diff": {
5939 "version": "3.5.0",
5940 "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
5941 "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
5942 "dev": true
5943 },
5944 "diff-sequences": {
5945 "version": "24.3.0",
5946 "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz",
5947 "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==",
5948 "dev": true
5949 },
5950 "diffie-hellman": {
5951 "version": "5.0.3",
5952 "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
5953 "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
5954 "dev": true,
5955 "requires": {
5956 "bn.js": "^4.1.0",
5957 "miller-rabin": "^4.0.0",
5958 "randombytes": "^2.0.0"
5959 }
5960 },
5961 "dir-glob": {
5962 "version": "2.0.0",
5963 "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
5964 "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
5965 "dev": true,
5966 "requires": {
5967 "arrify": "^1.0.1",
5968 "path-type": "^3.0.0"
5969 }
5970 },
4101 "dmg-builder": { 5971 "dmg-builder": {
4102 "version": "6.5.3", 5972 "version": "6.5.3",
4103 "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.5.3.tgz", 5973 "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.5.3.tgz",
@@ -4114,6 +5984,31 @@
4114 "sanitize-filename": "^1.6.1" 5984 "sanitize-filename": "^1.6.1"
4115 } 5985 }
4116 }, 5986 },
5987 "dns-equal": {
5988 "version": "1.0.0",
5989 "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
5990 "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
5991 "dev": true
5992 },
5993 "dns-packet": {
5994 "version": "1.3.1",
5995 "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
5996 "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
5997 "dev": true,
5998 "requires": {
5999 "ip": "^1.1.0",
6000 "safe-buffer": "^5.0.1"
6001 }
6002 },
6003 "dns-txt": {
6004 "version": "2.0.2",
6005 "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
6006 "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
6007 "dev": true,
6008 "requires": {
6009 "buffer-indexof": "^1.0.0"
6010 }
6011 },
4117 "doctrine": { 6012 "doctrine": {
4118 "version": "2.1.0", 6013 "version": "2.1.0",
4119 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 6014 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
@@ -4123,10 +6018,22 @@
4123 "esutils": "^2.0.2" 6018 "esutils": "^2.0.2"
4124 } 6019 }
4125 }, 6020 },
6021 "dom-converter": {
6022 "version": "0.2.0",
6023 "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
6024 "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
6025 "dev": true,
6026 "requires": {
6027 "utila": "~0.4"
6028 }
6029 },
4126 "dom-helpers": { 6030 "dom-helpers": {
4127 "version": "3.3.1", 6031 "version": "3.4.0",
4128 "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", 6032 "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
4129 "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" 6033 "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
6034 "requires": {
6035 "@babel/runtime": "^7.1.2"
6036 }
4130 }, 6037 },
4131 "dom-serializer": { 6038 "dom-serializer": {
4132 "version": "0.1.0", 6039 "version": "0.1.0",
@@ -4139,16 +6046,31 @@
4139 "dependencies": { 6046 "dependencies": {
4140 "domelementtype": { 6047 "domelementtype": {
4141 "version": "1.1.3", 6048 "version": "1.1.3",
4142 "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", 6049 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
4143 "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" 6050 "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
4144 } 6051 }
4145 } 6052 }
4146 }, 6053 },
6054 "domain-browser": {
6055 "version": "1.2.0",
6056 "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
6057 "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
6058 "dev": true
6059 },
4147 "domelementtype": { 6060 "domelementtype": {
4148 "version": "1.3.1", 6061 "version": "1.3.1",
4149 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 6062 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
4150 "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" 6063 "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
4151 }, 6064 },
6065 "domexception": {
6066 "version": "1.0.1",
6067 "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
6068 "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
6069 "dev": true,
6070 "requires": {
6071 "webidl-conversions": "^4.0.2"
6072 }
6073 },
4152 "domhandler": { 6074 "domhandler": {
4153 "version": "2.4.2", 6075 "version": "2.4.2",
4154 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", 6076 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
@@ -4167,9 +6089,9 @@
4167 } 6089 }
4168 }, 6090 },
4169 "dot-prop": { 6091 "dot-prop": {
4170 "version": "4.2.0", 6092 "version": "3.0.0",
4171 "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", 6093 "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
4172 "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", 6094 "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
4173 "dev": true, 6095 "dev": true,
4174 "requires": { 6096 "requires": {
4175 "is-obj": "^1.0.0" 6097 "is-obj": "^1.0.0"
@@ -4177,7 +6099,7 @@
4177 }, 6099 },
4178 "dotenv": { 6100 "dotenv": {
4179 "version": "4.0.0", 6101 "version": "4.0.0",
4180 "resolved": "http://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", 6102 "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz",
4181 "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", 6103 "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=",
4182 "dev": true 6104 "dev": true
4183 }, 6105 },
@@ -4195,6 +6117,12 @@
4195 "async": "~0.1.22" 6117 "async": "~0.1.22"
4196 } 6118 }
4197 }, 6119 },
6120 "duplexer": {
6121 "version": "0.1.1",
6122 "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
6123 "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
6124 "dev": true
6125 },
4198 "duplexer2": { 6126 "duplexer2": {
4199 "version": "0.0.2", 6127 "version": "0.0.2",
4200 "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", 6128 "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
@@ -4204,15 +6132,328 @@
4204 "readable-stream": "~1.1.9" 6132 "readable-stream": "~1.1.9"
4205 }, 6133 },
4206 "dependencies": { 6134 "dependencies": {
6135 "abbrev": {
6136 "version": "1.1.1",
6137 "resolved": false,
6138 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
6139 },
6140 "ansi-regex": {
6141 "version": "2.1.1",
6142 "resolved": false,
6143 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
6144 },
6145 "aproba": {
6146 "version": "1.2.0",
6147 "resolved": false,
6148 "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
6149 },
6150 "are-we-there-yet": {
6151 "version": "1.1.4",
6152 "resolved": false,
6153 "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
6154 "requires": {
6155 "delegates": "^1.0.0"
6156 }
6157 },
6158 "balanced-match": {
6159 "version": "1.0.0",
6160 "resolved": false,
6161 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
6162 },
6163 "brace-expansion": {
6164 "version": "1.1.11",
6165 "resolved": false,
6166 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
6167 "requires": {
6168 "balanced-match": "^1.0.0",
6169 "concat-map": "0.0.1"
6170 }
6171 },
6172 "code-point-at": {
6173 "version": "1.1.0",
6174 "resolved": false,
6175 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
6176 },
6177 "concat-map": {
6178 "version": "0.0.1",
6179 "resolved": false,
6180 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
6181 },
6182 "console-control-strings": {
6183 "version": "1.1.0",
6184 "resolved": false,
6185 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
6186 },
6187 "debug": {
6188 "version": "4.1.1",
6189 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
6190 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw=="
6191 },
6192 "deep-extend": {
6193 "version": "0.5.1",
6194 "resolved": false,
6195 "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w=="
6196 },
6197 "delegates": {
6198 "version": "1.0.0",
6199 "resolved": false,
6200 "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
6201 },
6202 "detect-libc": {
6203 "version": "1.0.3",
6204 "resolved": false,
6205 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
6206 },
6207 "fs-extra": {
6208 "version": "4.0.3",
6209 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
6210 "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
6211 "requires": {
6212 "graceful-fs": "^4.1.2",
6213 "jsonfile": "^4.0.0",
6214 "universalify": "^0.1.0"
6215 }
6216 },
6217 "fs-minipass": {
6218 "version": "1.2.5",
6219 "resolved": false,
6220 "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
6221 "requires": {
6222 "minipass": "^2.2.1"
6223 }
6224 },
6225 "fs.realpath": {
6226 "version": "1.0.0",
6227 "resolved": false,
6228 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
6229 },
6230 "gauge": {
6231 "version": "2.7.4",
6232 "resolved": false,
6233 "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
6234 "requires": {
6235 "aproba": "^1.0.3",
6236 "console-control-strings": "^1.0.0",
6237 "has-unicode": "^2.0.0",
6238 "object-assign": "^4.1.0",
6239 "signal-exit": "^3.0.0",
6240 "string-width": "^1.0.1",
6241 "strip-ansi": "^3.0.1",
6242 "wide-align": "^1.1.0"
6243 }
6244 },
6245 "glob": {
6246 "version": "7.1.2",
6247 "resolved": false,
6248 "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
6249 "requires": {
6250 "fs.realpath": "^1.0.0",
6251 "inflight": "^1.0.4",
6252 "inherits": "2",
6253 "minimatch": "^3.0.4",
6254 "once": "^1.3.0",
6255 "path-is-absolute": "^1.0.0"
6256 }
6257 },
6258 "has-unicode": {
6259 "version": "2.0.1",
6260 "resolved": false,
6261 "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
6262 },
6263 "iconv-lite": {
6264 "version": "0.4.21",
6265 "resolved": false,
6266 "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
6267 "requires": {
6268 "safer-buffer": "^2.1.0"
6269 }
6270 },
6271 "ignore-walk": {
6272 "version": "3.0.1",
6273 "resolved": false,
6274 "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
6275 "requires": {
6276 "minimatch": "^3.0.4"
6277 }
6278 },
6279 "inflight": {
6280 "version": "1.0.6",
6281 "resolved": false,
6282 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
6283 "requires": {
6284 "once": "^1.3.0",
6285 "wrappy": "1"
6286 }
6287 },
6288 "ini": {
6289 "version": "1.3.5",
6290 "resolved": false,
6291 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
6292 },
6293 "is-fullwidth-code-point": {
6294 "version": "1.0.0",
6295 "resolved": false,
6296 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
6297 "requires": {
6298 "number-is-nan": "^1.0.0"
6299 }
6300 },
4207 "isarray": { 6301 "isarray": {
4208 "version": "0.0.1", 6302 "version": "0.0.1",
4209 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 6303 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
4210 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 6304 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
4211 "dev": true 6305 "dev": true
4212 }, 6306 },
6307 "minimist": {
6308 "version": "0.0.8",
6309 "resolved": false,
6310 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
6311 },
6312 "minipass": {
6313 "version": "2.2.4",
6314 "resolved": false,
6315 "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
6316 "requires": {
6317 "safe-buffer": "^5.1.1",
6318 "yallist": "^3.0.0"
6319 }
6320 },
6321 "minizlib": {
6322 "version": "1.1.0",
6323 "resolved": false,
6324 "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
6325 "requires": {
6326 "minipass": "^2.2.1"
6327 }
6328 },
6329 "ms": {
6330 "version": "2.0.0",
6331 "resolved": false,
6332 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
6333 },
6334 "needle": {
6335 "version": "2.2.0",
6336 "resolved": false,
6337 "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
6338 "requires": {
6339 "iconv-lite": "^0.4.4",
6340 "sax": "^1.2.4"
6341 }
6342 },
6343 "node-pre-gyp": {
6344 "version": "0.10.0",
6345 "resolved": false,
6346 "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
6347 "requires": {
6348 "detect-libc": "^1.0.2",
6349 "mkdirp": "^0.5.1",
6350 "needle": "^2.2.0",
6351 "nopt": "^4.0.1",
6352 "npm-packlist": "^1.1.6",
6353 "npmlog": "^4.0.2",
6354 "rc": "^1.1.7",
6355 "rimraf": "^2.6.1",
6356 "semver": "^5.3.0",
6357 "tar": "^4"
6358 }
6359 },
6360 "nopt": {
6361 "version": "4.0.1",
6362 "resolved": false,
6363 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
6364 "requires": {
6365 "abbrev": "1",
6366 "osenv": "^0.1.4"
6367 }
6368 },
6369 "npm-bundled": {
6370 "version": "1.0.3",
6371 "resolved": false,
6372 "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow=="
6373 },
6374 "npm-packlist": {
6375 "version": "1.1.10",
6376 "resolved": false,
6377 "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
6378 "requires": {
6379 "ignore-walk": "^3.0.1",
6380 "npm-bundled": "^1.0.1"
6381 }
6382 },
6383 "npmlog": {
6384 "version": "4.1.2",
6385 "resolved": false,
6386 "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
6387 "requires": {
6388 "are-we-there-yet": "~1.1.2",
6389 "console-control-strings": "~1.1.0",
6390 "gauge": "~2.7.3",
6391 "set-blocking": "~2.0.0"
6392 }
6393 },
6394 "number-is-nan": {
6395 "version": "1.0.1",
6396 "resolved": false,
6397 "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
6398 },
6399 "object-assign": {
6400 "version": "4.1.1",
6401 "resolved": false,
6402 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
6403 },
6404 "once": {
6405 "version": "1.4.0",
6406 "resolved": false,
6407 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
6408 "requires": {
6409 "wrappy": "1"
6410 }
6411 },
6412 "os-homedir": {
6413 "version": "1.0.2",
6414 "resolved": false,
6415 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
6416 },
6417 "os-tmpdir": {
6418 "version": "1.0.2",
6419 "resolved": false,
6420 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
6421 },
6422 "osenv": {
6423 "version": "0.1.5",
6424 "resolved": false,
6425 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
6426 "requires": {
6427 "os-homedir": "^1.0.0",
6428 "os-tmpdir": "^1.0.0"
6429 }
6430 },
6431 "path-is-absolute": {
6432 "version": "1.0.1",
6433 "resolved": false,
6434 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
6435 },
6436 "rc": {
6437 "version": "1.2.7",
6438 "resolved": false,
6439 "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
6440 "requires": {
6441 "deep-extend": "^0.5.1",
6442 "ini": "~1.3.0",
6443 "minimist": "^1.2.0",
6444 "strip-json-comments": "~2.0.1"
6445 },
6446 "dependencies": {
6447 "minimist": {
6448 "version": "1.2.0",
6449 "resolved": false,
6450 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
6451 }
6452 }
6453 },
4213 "readable-stream": { 6454 "readable-stream": {
4214 "version": "1.1.14", 6455 "version": "1.1.14",
4215 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 6456 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
4216 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 6457 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
4217 "dev": true, 6458 "dev": true,
4218 "requires": { 6459 "requires": {
@@ -4222,11 +6463,104 @@
4222 "string_decoder": "~0.10.x" 6463 "string_decoder": "~0.10.x"
4223 } 6464 }
4224 }, 6465 },
6466 "rimraf": {
6467 "version": "2.6.2",
6468 "resolved": false,
6469 "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
6470 "requires": {
6471 "glob": "^7.0.5"
6472 }
6473 },
6474 "safe-buffer": {
6475 "version": "5.1.1",
6476 "resolved": false,
6477 "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
6478 },
6479 "safer-buffer": {
6480 "version": "2.1.2",
6481 "resolved": false,
6482 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
6483 },
6484 "sax": {
6485 "version": "1.2.4",
6486 "resolved": false,
6487 "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
6488 },
6489 "semver": {
6490 "version": "5.5.0",
6491 "resolved": false,
6492 "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
6493 },
6494 "set-blocking": {
6495 "version": "2.0.0",
6496 "resolved": false,
6497 "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
6498 },
6499 "signal-exit": {
6500 "version": "3.0.2",
6501 "resolved": false,
6502 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
6503 },
6504 "string-width": {
6505 "version": "1.0.2",
6506 "resolved": false,
6507 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
6508 "requires": {
6509 "code-point-at": "^1.0.0",
6510 "is-fullwidth-code-point": "^1.0.0",
6511 "strip-ansi": "^3.0.0"
6512 }
6513 },
4225 "string_decoder": { 6514 "string_decoder": {
4226 "version": "0.10.31", 6515 "version": "0.10.31",
4227 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 6516 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
4228 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 6517 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
4229 "dev": true 6518 "dev": true
6519 },
6520 "strip-ansi": {
6521 "version": "3.0.1",
6522 "resolved": false,
6523 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
6524 "requires": {
6525 "ansi-regex": "^2.0.0"
6526 }
6527 },
6528 "strip-json-comments": {
6529 "version": "2.0.1",
6530 "resolved": false,
6531 "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
6532 },
6533 "tar": {
6534 "version": "4.4.1",
6535 "resolved": false,
6536 "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
6537 "requires": {
6538 "chownr": "^1.0.1",
6539 "fs-minipass": "^1.2.5",
6540 "minipass": "^2.2.4",
6541 "minizlib": "^1.1.0",
6542 "mkdirp": "^0.5.0",
6543 "safe-buffer": "^5.1.1",
6544 "yallist": "^3.0.2"
6545 }
6546 },
6547 "wide-align": {
6548 "version": "1.1.2",
6549 "resolved": false,
6550 "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
6551 "requires": {
6552 "string-width": "^1.0.2"
6553 }
6554 },
6555 "wrappy": {
6556 "version": "1.0.2",
6557 "resolved": false,
6558 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
6559 },
6560 "yallist": {
6561 "version": "3.0.2",
6562 "resolved": false,
6563 "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
4230 } 6564 }
4231 } 6565 }
4232 }, 6566 },
@@ -4237,15 +6571,41 @@
4237 "dev": true 6571 "dev": true
4238 }, 6572 },
4239 "duplexify": { 6573 "duplexify": {
4240 "version": "3.6.1", 6574 "version": "3.7.1",
4241 "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", 6575 "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
4242 "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", 6576 "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
4243 "dev": true, 6577 "dev": true,
4244 "requires": { 6578 "requires": {
4245 "end-of-stream": "^1.0.0", 6579 "end-of-stream": "^1.0.0",
4246 "inherits": "^2.0.1", 6580 "inherits": "^2.0.1",
4247 "readable-stream": "^2.0.0", 6581 "readable-stream": "^2.0.0",
4248 "stream-shift": "^1.0.0" 6582 "stream-shift": "^1.0.0"
6583 },
6584 "dependencies": {
6585 "readable-stream": {
6586 "version": "2.3.6",
6587 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
6588 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
6589 "dev": true,
6590 "requires": {
6591 "core-util-is": "~1.0.0",
6592 "inherits": "~2.0.3",
6593 "isarray": "~1.0.0",
6594 "process-nextick-args": "~2.0.0",
6595 "safe-buffer": "~5.1.1",
6596 "string_decoder": "~1.1.1",
6597 "util-deprecate": "~1.0.1"
6598 }
6599 },
6600 "string_decoder": {
6601 "version": "1.1.1",
6602 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
6603 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
6604 "dev": true,
6605 "requires": {
6606 "safe-buffer": "~5.1.0"
6607 }
6608 }
4249 } 6609 }
4250 }, 6610 },
4251 "each-props": { 6611 "each-props": {
@@ -4269,9 +6629,9 @@
4269 } 6629 }
4270 }, 6630 },
4271 "ecdsa-sig-formatter": { 6631 "ecdsa-sig-formatter": {
4272 "version": "1.0.10", 6632 "version": "1.0.11",
4273 "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", 6633 "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
4274 "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", 6634 "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
4275 "requires": { 6635 "requires": {
4276 "safe-buffer": "^5.0.1" 6636 "safe-buffer": "^5.0.1"
4277 } 6637 }
@@ -4289,14 +6649,22 @@
4289 "dev": true 6649 "dev": true
4290 }, 6650 },
4291 "electron": { 6651 "electron": {
4292 "version": "4.0.2", 6652 "version": "4.1.4",
4293 "resolved": "https://registry.npmjs.org/electron/-/electron-4.0.2.tgz", 6653 "resolved": "https://registry.npmjs.org/electron/-/electron-4.1.4.tgz",
4294 "integrity": "sha512-H0pmSvOVuC+Mq/+cYNXbCDBmqq5d1xYUVdBOjqGJuwuwJeP7qDHF35JA3cq+ARzq/CbwlXq98zdW6i6+x3U24g==", 6654 "integrity": "sha512-MelOjntJvd33izEjR6H4N/Uii7y535z/b2BuYXJGLNSHL6o1IlyhUQmfiT87kWABayERgeuYERgvsyf956OOFw==",
4295 "dev": true, 6655 "dev": true,
4296 "requires": { 6656 "requires": {
4297 "@types/node": "^10.12.18", 6657 "@types/node": "^10.12.18",
4298 "electron-download": "^4.1.0", 6658 "electron-download": "^4.1.0",
4299 "extract-zip": "^1.0.3" 6659 "extract-zip": "^1.0.3"
6660 },
6661 "dependencies": {
6662 "@types/node": {
6663 "version": "10.14.4",
6664 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.4.tgz",
6665 "integrity": "sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg==",
6666 "dev": true
6667 }
4300 } 6668 }
4301 }, 6669 },
4302 "electron-builder": { 6670 "electron-builder": {
@@ -4320,223 +6688,32 @@
4320 "yargs": "^12.0.5" 6688 "yargs": "^12.0.5"
4321 }, 6689 },
4322 "dependencies": { 6690 "dependencies": {
4323 "ansi-regex": { 6691 "builder-util-runtime": {
4324 "version": "3.0.0", 6692 "version": "8.1.0",
4325 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 6693 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.1.0.tgz",
4326 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 6694 "integrity": "sha512-s1mlJ28mv+56Iebh6c9aXjVe11O3Z0cDTwAGeB0PCcUzHA37fDxGgS8ZGoYNMZP+rBHj21d/od1wuYofTVLaQg==",
4327 "dev": true
4328 },
4329 "ansi-styles": {
4330 "version": "3.2.1",
4331 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
4332 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
4333 "dev": true, 6695 "dev": true,
4334 "requires": { 6696 "requires": {
4335 "color-convert": "^1.9.0" 6697 "bluebird-lst": "^1.0.6",
4336 } 6698 "debug": "^4.1.0",
4337 }, 6699 "fs-extra-p": "^7.0.0",
4338 "camelcase": { 6700 "sax": "^1.2.4"
4339 "version": "5.0.0",
4340 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
4341 "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
4342 "dev": true
4343 },
4344 "chalk": {
4345 "version": "2.4.1",
4346 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
4347 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
4348 "dev": true,
4349 "requires": {
4350 "ansi-styles": "^3.2.1",
4351 "escape-string-regexp": "^1.0.5",
4352 "supports-color": "^5.3.0"
4353 }
4354 },
4355 "ci-info": {
4356 "version": "2.0.0",
4357 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
4358 "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
4359 "dev": true
4360 },
4361 "cliui": {
4362 "version": "4.1.0",
4363 "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
4364 "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
4365 "dev": true,
4366 "requires": {
4367 "string-width": "^2.1.1",
4368 "strip-ansi": "^4.0.0",
4369 "wrap-ansi": "^2.0.0"
4370 }
4371 },
4372 "execa": {
4373 "version": "0.10.0",
4374 "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
4375 "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
4376 "dev": true,
4377 "requires": {
4378 "cross-spawn": "^6.0.0",
4379 "get-stream": "^3.0.0",
4380 "is-stream": "^1.1.0",
4381 "npm-run-path": "^2.0.0",
4382 "p-finally": "^1.0.0",
4383 "signal-exit": "^3.0.0",
4384 "strip-eof": "^1.0.0"
4385 }
4386 },
4387 "find-up": {
4388 "version": "3.0.0",
4389 "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
4390 "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
4391 "dev": true,
4392 "requires": {
4393 "locate-path": "^3.0.0"
4394 }
4395 },
4396 "invert-kv": {
4397 "version": "2.0.0",
4398 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
4399 "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
4400 "dev": true
4401 },
4402 "is-ci": {
4403 "version": "2.0.0",
4404 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
4405 "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
4406 "dev": true,
4407 "requires": {
4408 "ci-info": "^2.0.0"
4409 }
4410 },
4411 "is-fullwidth-code-point": {
4412 "version": "2.0.0",
4413 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
4414 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
4415 "dev": true
4416 },
4417 "lcid": {
4418 "version": "2.0.0",
4419 "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
4420 "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
4421 "dev": true,
4422 "requires": {
4423 "invert-kv": "^2.0.0"
4424 }
4425 },
4426 "locate-path": {
4427 "version": "3.0.0",
4428 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
4429 "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
4430 "dev": true,
4431 "requires": {
4432 "p-locate": "^3.0.0",
4433 "path-exists": "^3.0.0"
4434 }
4435 },
4436 "os-locale": {
4437 "version": "3.0.1",
4438 "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
4439 "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
4440 "dev": true,
4441 "requires": {
4442 "execa": "^0.10.0",
4443 "lcid": "^2.0.0",
4444 "mem": "^4.0.0"
4445 }
4446 },
4447 "p-limit": {
4448 "version": "2.0.0",
4449 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
4450 "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
4451 "dev": true,
4452 "requires": {
4453 "p-try": "^2.0.0"
4454 } 6701 }
4455 }, 6702 },
4456 "p-locate": { 6703 "debug": {
4457 "version": "3.0.0", 6704 "version": "4.1.1",
4458 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 6705 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
4459 "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 6706 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
4460 "dev": true, 6707 "dev": true,
4461 "requires": { 6708 "requires": {
4462 "p-limit": "^2.0.0" 6709 "ms": "^2.1.1"
4463 } 6710 }
4464 }, 6711 },
4465 "p-try": { 6712 "ms": {
4466 "version": "2.0.0",
4467 "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
4468 "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
4469 "dev": true
4470 },
4471 "path-exists": {
4472 "version": "3.0.0",
4473 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
4474 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
4475 "dev": true
4476 },
4477 "string-width": {
4478 "version": "2.1.1", 6713 "version": "2.1.1",
4479 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 6714 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
4480 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 6715 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
4481 "dev": true,
4482 "requires": {
4483 "is-fullwidth-code-point": "^2.0.0",
4484 "strip-ansi": "^4.0.0"
4485 }
4486 },
4487 "strip-ansi": {
4488 "version": "4.0.0",
4489 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
4490 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
4491 "dev": true,
4492 "requires": {
4493 "ansi-regex": "^3.0.0"
4494 }
4495 },
4496 "supports-color": {
4497 "version": "5.5.0",
4498 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
4499 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
4500 "dev": true,
4501 "requires": {
4502 "has-flag": "^3.0.0"
4503 }
4504 },
4505 "which-module": {
4506 "version": "2.0.0",
4507 "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
4508 "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
4509 "dev": true 6716 "dev": true
4510 },
4511 "yargs": {
4512 "version": "12.0.5",
4513 "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
4514 "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
4515 "dev": true,
4516 "requires": {
4517 "cliui": "^4.0.0",
4518 "decamelize": "^1.2.0",
4519 "find-up": "^3.0.0",
4520 "get-caller-file": "^1.0.1",
4521 "os-locale": "^3.0.0",
4522 "require-directory": "^2.1.1",
4523 "require-main-filename": "^1.0.1",
4524 "set-blocking": "^2.0.0",
4525 "string-width": "^2.0.0",
4526 "which-module": "^2.0.0",
4527 "y18n": "^3.2.1 || ^4.0.0",
4528 "yargs-parser": "^11.1.1"
4529 }
4530 },
4531 "yargs-parser": {
4532 "version": "11.1.1",
4533 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
4534 "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
4535 "dev": true,
4536 "requires": {
4537 "camelcase": "^5.0.0",
4538 "decamelize": "^1.2.0"
4539 }
4540 } 6717 }
4541 } 6718 }
4542 }, 6719 },
@@ -4586,18 +6763,6 @@
4586 "jsonfile": "^4.0.0", 6763 "jsonfile": "^4.0.0",
4587 "universalify": "^0.1.0" 6764 "universalify": "^0.1.0"
4588 } 6765 }
4589 },
4590 "ms": {
4591 "version": "2.1.1",
4592 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
4593 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
4594 "dev": true
4595 },
4596 "path-exists": {
4597 "version": "3.0.0",
4598 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
4599 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
4600 "dev": true
4601 } 6766 }
4602 } 6767 }
4603 }, 6768 },
@@ -4620,6 +6785,11 @@
4620 "unixify": "1.0.0" 6785 "unixify": "1.0.0"
4621 } 6786 }
4622 }, 6787 },
6788 "electron-is-dev": {
6789 "version": "1.0.1",
6790 "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.0.1.tgz",
6791 "integrity": "sha512-iwM3EotA9HTXqMGpQRkR/kT8OZqBbdfHTnlwcxsjSLYqY8svvsq0MuujsWCn3/vtgRmDv/PC/gKUUpoZvi5C1w=="
6792 },
4623 "electron-osx-sign": { 6793 "electron-osx-sign": {
4624 "version": "0.4.11", 6794 "version": "0.4.11",
4625 "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", 6795 "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz",
@@ -4647,37 +6817,6 @@
4647 "fs-extra-p": "^7.0.0", 6817 "fs-extra-p": "^7.0.0",
4648 "lazy-val": "^1.0.3", 6818 "lazy-val": "^1.0.3",
4649 "mime": "^2.4.0" 6819 "mime": "^2.4.0"
4650 },
4651 "dependencies": {
4652 "ansi-styles": {
4653 "version": "3.2.1",
4654 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
4655 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
4656 "dev": true,
4657 "requires": {
4658 "color-convert": "^1.9.0"
4659 }
4660 },
4661 "chalk": {
4662 "version": "2.4.1",
4663 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
4664 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
4665 "dev": true,
4666 "requires": {
4667 "ansi-styles": "^3.2.1",
4668 "escape-string-regexp": "^1.0.5",
4669 "supports-color": "^5.3.0"
4670 }
4671 },
4672 "supports-color": {
4673 "version": "5.5.0",
4674 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
4675 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
4676 "dev": true,
4677 "requires": {
4678 "has-flag": "^3.0.0"
4679 }
4680 }
4681 } 6820 }
4682 }, 6821 },
4683 "electron-react-titlebar": { 6822 "electron-react-titlebar": {
@@ -4690,49 +6829,43 @@
4690 } 6829 }
4691 }, 6830 },
4692 "electron-rebuild": { 6831 "electron-rebuild": {
4693 "version": "1.8.2", 6832 "version": "1.8.4",
4694 "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-1.8.2.tgz", 6833 "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-1.8.4.tgz",
4695 "integrity": "sha512-EeR4dgb6NN7ybxduUWMeeLhU/EuF+FzwFZJfMJXD0bx96K+ttAieCXOn9lTO5nA9Qn3hiS7pEpk8pZ9StpGgSg==", 6834 "integrity": "sha512-QBUZg1due+R0bww5rNd4gEcsKczyhxyLrxSFZlKihwHRxaiHrGut532JAUe0fRz+VIU4WNSfNKyZ/ZwSGjaDhA==",
4696 "dev": true, 6835 "dev": true,
4697 "requires": { 6836 "requires": {
4698 "colors": "^1.2.0", 6837 "colors": "^1.3.3",
4699 "debug": "^2.6.3", 6838 "debug": "^4.1.1",
4700 "detect-libc": "^1.0.3", 6839 "detect-libc": "^1.0.3",
4701 "fs-extra": "^3.0.1", 6840 "fs-extra": "^7.0.1",
4702 "node-abi": "^2.0.0", 6841 "node-abi": "^2.7.0",
4703 "node-gyp": "^3.6.0", 6842 "node-gyp": "^3.8.0",
4704 "ora": "^1.2.0", 6843 "ora": "^3.0.0",
4705 "rimraf": "^2.6.1", 6844 "spawn-rx": "^3.0.0",
4706 "spawn-rx": "^2.0.10", 6845 "yargs": "^12.0.5"
4707 "yargs": "^7.0.2"
4708 }, 6846 },
4709 "dependencies": { 6847 "dependencies": {
4710 "fs-extra": { 6848 "debug": {
4711 "version": "3.0.1", 6849 "version": "4.1.1",
4712 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", 6850 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
4713 "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", 6851 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
4714 "dev": true, 6852 "dev": true,
4715 "requires": { 6853 "requires": {
4716 "graceful-fs": "^4.1.2", 6854 "ms": "^2.1.1"
4717 "jsonfile": "^3.0.0",
4718 "universalify": "^0.1.0"
4719 } 6855 }
4720 }, 6856 },
4721 "jsonfile": { 6857 "ms": {
4722 "version": "3.0.1", 6858 "version": "2.1.1",
4723 "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", 6859 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
4724 "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", 6860 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
4725 "dev": true, 6861 "dev": true
4726 "requires": {
4727 "graceful-fs": "^4.1.6"
4728 }
4729 } 6862 }
4730 } 6863 }
4731 }, 6864 },
4732 "electron-to-chromium": { 6865 "electron-to-chromium": {
4733 "version": "1.3.80", 6866 "version": "1.3.113",
4734 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.80.tgz", 6867 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz",
4735 "integrity": "sha512-WClidEWEUNx7OfwXehB0qaxCuetjbKjev2SmXWgybWPLKAThBiMTF/2Pd8GSUDtoGOavxVzdkKwfFAPRSWlkLw==", 6868 "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==",
4736 "dev": true 6869 "dev": true
4737 }, 6870 },
4738 "electron-updater": { 6871 "electron-updater": {
@@ -4752,34 +6885,38 @@
4752 } 6885 }
4753 }, 6886 },
4754 "electron-window-state": { 6887 "electron-window-state": {
4755 "version": "4.1.1", 6888 "version": "5.0.3",
4756 "resolved": "https://registry.npmjs.org/electron-window-state/-/electron-window-state-4.1.1.tgz", 6889 "resolved": "https://registry.npmjs.org/electron-window-state/-/electron-window-state-5.0.3.tgz",
4757 "integrity": "sha1-azT9wxs4UU3+yLfI97XUrdtnYy0=", 6890 "integrity": "sha512-1mNTwCfkolXl3kMf50yW3vE2lZj0y92P/HYWFBrb+v2S/pCka5mdwN3cagKm458A7NjndSwijynXgcLWRodsVg==",
4758 "requires": { 6891 "requires": {
4759 "deep-equal": "^1.0.1", 6892 "jsonfile": "^4.0.0",
4760 "jsonfile": "^2.2.3",
4761 "mkdirp": "^0.5.1" 6893 "mkdirp": "^0.5.1"
4762 }, 6894 }
4763 "dependencies": { 6895 },
4764 "jsonfile": { 6896 "elliptic": {
4765 "version": "2.4.0", 6897 "version": "6.4.1",
4766 "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", 6898 "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
4767 "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", 6899 "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
4768 "requires": { 6900 "dev": true,
4769 "graceful-fs": "^4.1.6" 6901 "requires": {
4770 } 6902 "bn.js": "^4.4.0",
4771 } 6903 "brorand": "^1.0.1",
6904 "hash.js": "^1.0.0",
6905 "hmac-drbg": "^1.0.0",
6906 "inherits": "^2.0.1",
6907 "minimalistic-assert": "^1.0.0",
6908 "minimalistic-crypto-utils": "^1.0.0"
4772 } 6909 }
4773 }, 6910 },
4774 "email-addresses": { 6911 "email-addresses": {
4775 "version": "3.0.2", 6912 "version": "3.0.3",
4776 "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.0.2.tgz", 6913 "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.0.3.tgz",
4777 "integrity": "sha512-IMn9dnwLMsgZjdUHswB/UZ0S8LQ/u+2/qjnHJ9tCtp3QHZsIYwJCiJOo2FT0i3CwwK/dtSODYtxuvzV4D9MY5g==" 6914 "integrity": "sha512-kUlSC06PVvvjlMRpNIl3kR1NRXLEe86VQ7N0bQeaCZb2g+InShCeHQp/JvyYNTugMnRN2NvJhHlc3q12MWbbpg=="
4778 }, 6915 },
4779 "emoji-regex": { 6916 "emoji-regex": {
4780 "version": "6.5.1", 6917 "version": "7.0.3",
4781 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", 6918 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
4782 "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", 6919 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
4783 "dev": true 6920 "dev": true
4784 }, 6921 },
4785 "emojis-list": { 6922 "emojis-list": {
@@ -4797,6 +6934,12 @@
4797 "tslib": "^1.8.0" 6934 "tslib": "^1.8.0"
4798 } 6935 }
4799 }, 6936 },
6937 "encodeurl": {
6938 "version": "1.0.2",
6939 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
6940 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
6941 "dev": true
6942 },
4800 "encoding": { 6943 "encoding": {
4801 "version": "0.1.12", 6944 "version": "0.1.12",
4802 "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", 6945 "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
@@ -4840,7 +6983,7 @@
4840 }, 6983 },
4841 "debug": { 6984 "debug": {
4842 "version": "2.3.3", 6985 "version": "2.3.3",
4843 "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 6986 "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
4844 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", 6987 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
4845 "dev": true, 6988 "dev": true,
4846 "requires": { 6989 "requires": {
@@ -4849,7 +6992,7 @@
4849 }, 6992 },
4850 "ms": { 6993 "ms": {
4851 "version": "0.7.2", 6994 "version": "0.7.2",
4852 "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 6995 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
4853 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", 6996 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
4854 "dev": true 6997 "dev": true
4855 }, 6998 },
@@ -4858,6 +7001,16 @@
4858 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 7001 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
4859 "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", 7002 "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
4860 "dev": true 7003 "dev": true
7004 },
7005 "ws": {
7006 "version": "1.1.5",
7007 "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
7008 "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
7009 "dev": true,
7010 "requires": {
7011 "options": ">=0.0.5",
7012 "ultron": "1.0.x"
7013 }
4861 } 7014 }
4862 } 7015 }
4863 }, 7016 },
@@ -4883,7 +7036,7 @@
4883 "dependencies": { 7036 "dependencies": {
4884 "debug": { 7037 "debug": {
4885 "version": "2.3.3", 7038 "version": "2.3.3",
4886 "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 7039 "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
4887 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", 7040 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
4888 "dev": true, 7041 "dev": true,
4889 "requires": { 7042 "requires": {
@@ -4892,9 +7045,19 @@
4892 }, 7045 },
4893 "ms": { 7046 "ms": {
4894 "version": "0.7.2", 7047 "version": "0.7.2",
4895 "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 7048 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
4896 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", 7049 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
4897 "dev": true 7050 "dev": true
7051 },
7052 "ws": {
7053 "version": "1.1.5",
7054 "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
7055 "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
7056 "dev": true,
7057 "requires": {
7058 "options": ">=0.0.5",
7059 "ultron": "1.0.x"
7060 }
4898 } 7061 }
4899 } 7062 }
4900 }, 7063 },
@@ -4912,6 +7075,17 @@
4912 "wtf-8": "1.0.0" 7075 "wtf-8": "1.0.0"
4913 } 7076 }
4914 }, 7077 },
7078 "enhanced-resolve": {
7079 "version": "4.1.0",
7080 "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
7081 "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
7082 "dev": true,
7083 "requires": {
7084 "graceful-fs": "^4.1.2",
7085 "memory-fs": "^0.4.0",
7086 "tapable": "^1.0.0"
7087 }
7088 },
4915 "entities": { 7089 "entities": {
4916 "version": "1.1.2", 7090 "version": "1.1.2",
4917 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 7091 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
@@ -4923,6 +7097,21 @@
4923 "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", 7097 "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=",
4924 "dev": true 7098 "dev": true
4925 }, 7099 },
7100 "err-code": {
7101 "version": "1.1.2",
7102 "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
7103 "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=",
7104 "dev": true
7105 },
7106 "errno": {
7107 "version": "0.1.7",
7108 "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
7109 "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
7110 "dev": true,
7111 "requires": {
7112 "prr": "~1.0.1"
7113 }
7114 },
4926 "error-ex": { 7115 "error-ex": {
4927 "version": "1.3.2", 7116 "version": "1.3.2",
4928 "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 7117 "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -4930,19 +7119,28 @@
4930 "dev": true, 7119 "dev": true,
4931 "requires": { 7120 "requires": {
4932 "is-arrayish": "^0.2.1" 7121 "is-arrayish": "^0.2.1"
7122 },
7123 "dependencies": {
7124 "is-arrayish": {
7125 "version": "0.2.1",
7126 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
7127 "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
7128 "dev": true
7129 }
4933 } 7130 }
4934 }, 7131 },
4935 "es-abstract": { 7132 "es-abstract": {
4936 "version": "1.12.0", 7133 "version": "1.13.0",
4937 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", 7134 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
4938 "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", 7135 "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
4939 "dev": true, 7136 "dev": true,
4940 "requires": { 7137 "requires": {
4941 "es-to-primitive": "^1.1.1", 7138 "es-to-primitive": "^1.2.0",
4942 "function-bind": "^1.1.1", 7139 "function-bind": "^1.1.1",
4943 "has": "^1.0.1", 7140 "has": "^1.0.3",
4944 "is-callable": "^1.1.3", 7141 "is-callable": "^1.1.4",
4945 "is-regex": "^1.0.4" 7142 "is-regex": "^1.0.4",
7143 "object-keys": "^1.0.12"
4946 } 7144 }
4947 }, 7145 },
4948 "es-to-primitive": { 7146 "es-to-primitive": {
@@ -4957,9 +7155,10 @@
4957 } 7155 }
4958 }, 7156 },
4959 "es5-ext": { 7157 "es5-ext": {
4960 "version": "0.10.46", 7158 "version": "0.10.47",
4961 "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", 7159 "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz",
4962 "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", 7160 "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==",
7161 "dev": true,
4963 "requires": { 7162 "requires": {
4964 "es6-iterator": "~2.0.3", 7163 "es6-iterator": "~2.0.3",
4965 "es6-symbol": "~3.1.1", 7164 "es6-symbol": "~3.1.1",
@@ -4970,16 +7169,33 @@
4970 "version": "2.0.3", 7169 "version": "2.0.3",
4971 "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 7170 "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
4972 "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 7171 "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
7172 "dev": true,
4973 "requires": { 7173 "requires": {
4974 "d": "1", 7174 "d": "1",
4975 "es5-ext": "^0.10.35", 7175 "es5-ext": "^0.10.35",
4976 "es6-symbol": "^3.1.1" 7176 "es6-symbol": "^3.1.1"
4977 } 7177 }
4978 }, 7178 },
7179 "es6-promise": {
7180 "version": "4.2.5",
7181 "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
7182 "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
7183 "dev": true
7184 },
7185 "es6-promisify": {
7186 "version": "5.0.0",
7187 "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
7188 "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
7189 "dev": true,
7190 "requires": {
7191 "es6-promise": "^4.0.3"
7192 }
7193 },
4979 "es6-symbol": { 7194 "es6-symbol": {
4980 "version": "3.1.1", 7195 "version": "3.1.1",
4981 "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", 7196 "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
4982 "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", 7197 "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
7198 "dev": true,
4983 "requires": { 7199 "requires": {
4984 "d": "1", 7200 "d": "1",
4985 "es5-ext": "~0.10.14" 7201 "es5-ext": "~0.10.14"
@@ -5006,7 +7222,29 @@
5006 "escape-string-regexp": { 7222 "escape-string-regexp": {
5007 "version": "1.0.5", 7223 "version": "1.0.5",
5008 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 7224 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
5009 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 7225 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
7226 "dev": true
7227 },
7228 "escodegen": {
7229 "version": "1.11.1",
7230 "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz",
7231 "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==",
7232 "dev": true,
7233 "requires": {
7234 "esprima": "^3.1.3",
7235 "estraverse": "^4.2.0",
7236 "esutils": "^2.0.2",
7237 "optionator": "^0.8.1",
7238 "source-map": "~0.6.1"
7239 },
7240 "dependencies": {
7241 "esprima": {
7242 "version": "3.1.3",
7243 "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
7244 "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
7245 "dev": true
7246 }
7247 }
5010 }, 7248 },
5011 "eslint": { 7249 "eslint": {
5012 "version": "5.10.0", 7250 "version": "5.10.0",
@@ -5053,88 +7291,30 @@
5053 "text-table": "^0.2.0" 7291 "text-table": "^0.2.0"
5054 }, 7292 },
5055 "dependencies": { 7293 "dependencies": {
5056 "ajv": { 7294 "debug": {
5057 "version": "6.6.1", 7295 "version": "4.1.1",
5058 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", 7296 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
5059 "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", 7297 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
5060 "dev": true,
5061 "requires": {
5062 "fast-deep-equal": "^2.0.1",
5063 "fast-json-stable-stringify": "^2.0.0",
5064 "json-schema-traverse": "^0.4.1",
5065 "uri-js": "^4.2.2"
5066 }
5067 },
5068 "ansi-regex": {
5069 "version": "3.0.0",
5070 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
5071 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
5072 "dev": true
5073 },
5074 "ansi-styles": {
5075 "version": "3.2.1",
5076 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
5077 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
5078 "dev": true,
5079 "requires": {
5080 "color-convert": "^1.9.0"
5081 }
5082 },
5083 "chalk": {
5084 "version": "2.4.1",
5085 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
5086 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
5087 "dev": true, 7298 "dev": true,
5088 "requires": { 7299 "requires": {
5089 "ansi-styles": "^3.2.1", 7300 "ms": "^2.1.1"
5090 "escape-string-regexp": "^1.0.5",
5091 "supports-color": "^5.3.0"
5092 } 7301 }
5093 }, 7302 },
5094 "debug": { 7303 "eslint-scope": {
5095 "version": "4.1.0", 7304 "version": "4.0.0",
5096 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", 7305 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
5097 "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", 7306 "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
5098 "dev": true, 7307 "dev": true,
5099 "requires": { 7308 "requires": {
5100 "ms": "^2.1.1" 7309 "esrecurse": "^4.1.0",
7310 "estraverse": "^4.1.1"
5101 } 7311 }
5102 }, 7312 },
5103 "fast-deep-equal": {
5104 "version": "2.0.1",
5105 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
5106 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
5107 "dev": true
5108 },
5109 "json-schema-traverse": {
5110 "version": "0.4.1",
5111 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
5112 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
5113 "dev": true
5114 },
5115 "ms": { 7313 "ms": {
5116 "version": "2.1.1", 7314 "version": "2.1.1",
5117 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 7315 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
5118 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 7316 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
5119 "dev": true 7317 "dev": true
5120 },
5121 "strip-ansi": {
5122 "version": "4.0.0",
5123 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
5124 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
5125 "dev": true,
5126 "requires": {
5127 "ansi-regex": "^3.0.0"
5128 }
5129 },
5130 "supports-color": {
5131 "version": "5.5.0",
5132 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
5133 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
5134 "dev": true,
5135 "requires": {
5136 "has-flag": "^3.0.0"
5137 }
5138 } 7318 }
5139 } 7319 }
5140 }, 7320 },
@@ -5184,13 +7364,13 @@
5184 } 7364 }
5185 }, 7365 },
5186 "eslint-module-utils": { 7366 "eslint-module-utils": {
5187 "version": "2.2.0", 7367 "version": "2.3.0",
5188 "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", 7368 "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz",
5189 "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", 7369 "integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==",
5190 "dev": true, 7370 "dev": true,
5191 "requires": { 7371 "requires": {
5192 "debug": "^2.6.8", 7372 "debug": "^2.6.8",
5193 "pkg-dir": "^1.0.0" 7373 "pkg-dir": "^2.0.0"
5194 } 7374 }
5195 }, 7375 },
5196 "eslint-plugin-import": { 7376 "eslint-plugin-import": {
@@ -5232,7 +7412,7 @@
5232 }, 7412 },
5233 "load-json-file": { 7413 "load-json-file": {
5234 "version": "2.0.0", 7414 "version": "2.0.0",
5235 "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 7415 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
5236 "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 7416 "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
5237 "dev": true, 7417 "dev": true,
5238 "requires": { 7418 "requires": {
@@ -5242,6 +7422,49 @@
5242 "strip-bom": "^3.0.0" 7422 "strip-bom": "^3.0.0"
5243 } 7423 }
5244 }, 7424 },
7425 "locate-path": {
7426 "version": "2.0.0",
7427 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
7428 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
7429 "dev": true,
7430 "requires": {
7431 "p-locate": "^2.0.0",
7432 "path-exists": "^3.0.0"
7433 }
7434 },
7435 "p-limit": {
7436 "version": "1.3.0",
7437 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
7438 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
7439 "dev": true,
7440 "requires": {
7441 "p-try": "^1.0.0"
7442 }
7443 },
7444 "p-locate": {
7445 "version": "2.0.0",
7446 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
7447 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
7448 "dev": true,
7449 "requires": {
7450 "p-limit": "^1.1.0"
7451 }
7452 },
7453 "p-try": {
7454 "version": "1.0.0",
7455 "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
7456 "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
7457 "dev": true
7458 },
7459 "parse-json": {
7460 "version": "2.2.0",
7461 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
7462 "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
7463 "dev": true,
7464 "requires": {
7465 "error-ex": "^1.2.0"
7466 }
7467 },
5245 "path-type": { 7468 "path-type": {
5246 "version": "2.0.0", 7469 "version": "2.0.0",
5247 "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 7470 "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
@@ -5251,6 +7474,12 @@
5251 "pify": "^2.0.0" 7474 "pify": "^2.0.0"
5252 } 7475 }
5253 }, 7476 },
7477 "pify": {
7478 "version": "2.3.0",
7479 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
7480 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
7481 "dev": true
7482 },
5254 "read-pkg": { 7483 "read-pkg": {
5255 "version": "2.0.0", 7484 "version": "2.0.0",
5256 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 7485 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
@@ -5272,14 +7501,23 @@
5272 "read-pkg": "^2.0.0" 7501 "read-pkg": "^2.0.0"
5273 } 7502 }
5274 }, 7503 },
5275 "strip-bom": { 7504 "yargs": {
5276 "version": "3.0.0", 7505 "version": "3.32.0",
5277 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 7506 "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
5278 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 7507 "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
5279 "dev": true 7508 "requires": {
7509 "decamelize": "^1.1.1",
7510 "window-size": "^0.1.4"
7511 }
5280 } 7512 }
5281 } 7513 }
5282 }, 7514 },
7515 "eslint-plugin-jest": {
7516 "version": "22.4.1",
7517 "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz",
7518 "integrity": "sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg==",
7519 "dev": true
7520 },
5283 "eslint-plugin-jsx-a11y": { 7521 "eslint-plugin-jsx-a11y": {
5284 "version": "6.1.2", 7522 "version": "6.1.2",
5285 "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz", 7523 "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz",
@@ -5294,6 +7532,14 @@
5294 "emoji-regex": "^6.5.1", 7532 "emoji-regex": "^6.5.1",
5295 "has": "^1.0.3", 7533 "has": "^1.0.3",
5296 "jsx-ast-utils": "^2.0.1" 7534 "jsx-ast-utils": "^2.0.1"
7535 },
7536 "dependencies": {
7537 "emoji-regex": {
7538 "version": "6.5.1",
7539 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz",
7540 "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==",
7541 "dev": true
7542 }
5297 } 7543 }
5298 }, 7544 },
5299 "eslint-plugin-react": { 7545 "eslint-plugin-react": {
@@ -5316,9 +7562,9 @@
5316 "dev": true 7562 "dev": true
5317 }, 7563 },
5318 "eslint-scope": { 7564 "eslint-scope": {
5319 "version": "4.0.0", 7565 "version": "3.7.1",
5320 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", 7566 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
5321 "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", 7567 "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
5322 "dev": true, 7568 "dev": true,
5323 "requires": { 7569 "requires": {
5324 "esrecurse": "^4.1.0", 7570 "esrecurse": "^4.1.0",
@@ -5380,35 +7626,64 @@
5380 "esutils": { 7626 "esutils": {
5381 "version": "2.0.2", 7627 "version": "2.0.2",
5382 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 7628 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
5383 "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 7629 "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
7630 },
7631 "etag": {
7632 "version": "1.8.1",
7633 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
7634 "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
7635 "dev": true
7636 },
7637 "eventemitter3": {
7638 "version": "3.1.0",
7639 "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
7640 "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
7641 "dev": true
7642 },
7643 "events": {
7644 "version": "3.0.0",
7645 "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
7646 "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
7647 "dev": true
7648 },
7649 "eventsource": {
7650 "version": "1.0.7",
7651 "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
7652 "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
7653 "dev": true,
7654 "requires": {
7655 "original": "^1.0.0"
7656 }
7657 },
7658 "evp_bytestokey": {
7659 "version": "1.0.3",
7660 "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
7661 "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
7662 "dev": true,
7663 "requires": {
7664 "md5.js": "^1.3.4",
7665 "safe-buffer": "^5.1.1"
7666 }
7667 },
7668 "exec-sh": {
7669 "version": "0.3.2",
7670 "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz",
7671 "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==",
5384 "dev": true 7672 "dev": true
5385 }, 7673 },
5386 "execa": { 7674 "execa": {
5387 "version": "0.7.0", 7675 "version": "1.0.0",
5388 "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 7676 "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
5389 "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 7677 "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
5390 "dev": true, 7678 "dev": true,
5391 "requires": { 7679 "requires": {
5392 "cross-spawn": "^5.0.1", 7680 "cross-spawn": "^6.0.0",
5393 "get-stream": "^3.0.0", 7681 "get-stream": "^4.0.0",
5394 "is-stream": "^1.1.0", 7682 "is-stream": "^1.1.0",
5395 "npm-run-path": "^2.0.0", 7683 "npm-run-path": "^2.0.0",
5396 "p-finally": "^1.0.0", 7684 "p-finally": "^1.0.0",
5397 "signal-exit": "^3.0.0", 7685 "signal-exit": "^3.0.0",
5398 "strip-eof": "^1.0.0" 7686 "strip-eof": "^1.0.0"
5399 },
5400 "dependencies": {
5401 "cross-spawn": {
5402 "version": "5.1.0",
5403 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
5404 "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
5405 "dev": true,
5406 "requires": {
5407 "lru-cache": "^4.0.1",
5408 "shebang-command": "^1.2.0",
5409 "which": "^1.2.9"
5410 }
5411 }
5412 } 7687 }
5413 }, 7688 },
5414 "exenv": { 7689 "exenv": {
@@ -5416,10 +7691,17 @@
5416 "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", 7691 "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
5417 "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" 7692 "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50="
5418 }, 7693 },
7694 "exit": {
7695 "version": "0.1.2",
7696 "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
7697 "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
7698 "dev": true
7699 },
5419 "expand-brackets": { 7700 "expand-brackets": {
5420 "version": "2.1.4", 7701 "version": "2.1.4",
5421 "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 7702 "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
5422 "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 7703 "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
7704 "dev": true,
5423 "requires": { 7705 "requires": {
5424 "debug": "^2.3.3", 7706 "debug": "^2.3.3",
5425 "define-property": "^0.2.5", 7707 "define-property": "^0.2.5",
@@ -5434,6 +7716,7 @@
5434 "version": "0.2.5", 7716 "version": "0.2.5",
5435 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 7717 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
5436 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 7718 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
7719 "dev": true,
5437 "requires": { 7720 "requires": {
5438 "is-descriptor": "^0.1.0" 7721 "is-descriptor": "^0.1.0"
5439 } 7722 }
@@ -5442,6 +7725,7 @@
5442 "version": "2.0.1", 7725 "version": "2.0.1",
5443 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 7726 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
5444 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 7727 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
7728 "dev": true,
5445 "requires": { 7729 "requires": {
5446 "is-extendable": "^0.1.0" 7730 "is-extendable": "^0.1.0"
5447 } 7731 }
@@ -5452,6 +7736,7 @@
5452 "version": "1.8.2", 7736 "version": "1.8.2",
5453 "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 7737 "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
5454 "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 7738 "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
7739 "dev": true,
5455 "requires": { 7740 "requires": {
5456 "fill-range": "^2.1.0" 7741 "fill-range": "^2.1.0"
5457 }, 7742 },
@@ -5460,6 +7745,7 @@
5460 "version": "2.2.4", 7745 "version": "2.2.4",
5461 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", 7746 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
5462 "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", 7747 "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
7748 "dev": true,
5463 "requires": { 7749 "requires": {
5464 "is-number": "^2.1.0", 7750 "is-number": "^2.1.0",
5465 "isobject": "^2.0.0", 7751 "isobject": "^2.0.0",
@@ -5472,6 +7758,7 @@
5472 "version": "2.1.0", 7758 "version": "2.1.0",
5473 "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 7759 "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
5474 "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 7760 "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
7761 "dev": true,
5475 "requires": { 7762 "requires": {
5476 "kind-of": "^3.0.2" 7763 "kind-of": "^3.0.2"
5477 } 7764 }
@@ -5480,14 +7767,51 @@
5480 "version": "2.1.0", 7767 "version": "2.1.0",
5481 "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 7768 "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
5482 "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 7769 "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
7770 "dev": true,
5483 "requires": { 7771 "requires": {
5484 "isarray": "1.0.0" 7772 "isarray": "1.0.0"
7773 },
7774 "dependencies": {
7775 "glob": {
7776 "version": "3.1.21",
7777 "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
7778 "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
7779 "requires": {
7780 "graceful-fs": "~1.2.0",
7781 "inherits": "1",
7782 "minimatch": "~0.2.11"
7783 }
7784 },
7785 "graceful-fs": {
7786 "version": "1.2.3",
7787 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
7788 "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q="
7789 },
7790 "inherits": {
7791 "version": "1.0.2",
7792 "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
7793 "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js="
7794 },
7795 "lodash": {
7796 "version": "1.0.2",
7797 "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
7798 "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE="
7799 },
7800 "minimatch": {
7801 "version": "0.2.14",
7802 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
7803 "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
7804 "requires": {
7805 "sigmund": "~1.0.0"
7806 }
7807 }
5485 } 7808 }
5486 }, 7809 },
5487 "kind-of": { 7810 "kind-of": {
5488 "version": "3.2.2", 7811 "version": "3.2.2",
5489 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 7812 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
5490 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 7813 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
7814 "dev": true,
5491 "requires": { 7815 "requires": {
5492 "is-buffer": "^1.1.5" 7816 "is-buffer": "^1.1.5"
5493 } 7817 }
@@ -5498,10 +7822,215 @@
5498 "version": "2.0.2", 7822 "version": "2.0.2",
5499 "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 7823 "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
5500 "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 7824 "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
7825 "dev": true,
5501 "requires": { 7826 "requires": {
5502 "homedir-polyfill": "^1.0.1" 7827 "homedir-polyfill": "^1.0.1"
5503 } 7828 }
5504 }, 7829 },
7830 "expect": {
7831 "version": "24.7.1",
7832 "resolved": "https://registry.npmjs.org/expect/-/expect-24.7.1.tgz",
7833 "integrity": "sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw==",
7834 "dev": true,
7835 "requires": {
7836 "@jest/types": "^24.7.0",
7837 "ansi-styles": "^3.2.0",
7838 "jest-get-type": "^24.3.0",
7839 "jest-matcher-utils": "^24.7.0",
7840 "jest-message-util": "^24.7.1",
7841 "jest-regex-util": "^24.3.0"
7842 }
7843 },
7844 "expect.js": {
7845 "version": "0.3.1",
7846 "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz",
7847 "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=",
7848 "dev": true
7849 },
7850 "express": {
7851 "version": "4.16.4",
7852 "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
7853 "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
7854 "dev": true,
7855 "requires": {
7856 "accepts": "~1.3.5",
7857 "array-flatten": "1.1.1",
7858 "body-parser": "1.18.3",
7859 "content-disposition": "0.5.2",
7860 "content-type": "~1.0.4",
7861 "cookie": "0.3.1",
7862 "cookie-signature": "1.0.6",
7863 "debug": "2.6.9",
7864 "depd": "~1.1.2",
7865 "encodeurl": "~1.0.2",
7866 "escape-html": "~1.0.3",
7867 "etag": "~1.8.1",
7868 "finalhandler": "1.1.1",
7869 "fresh": "0.5.2",
7870 "merge-descriptors": "1.0.1",
7871 "methods": "~1.1.2",
7872 "on-finished": "~2.3.0",
7873 "parseurl": "~1.3.2",
7874 "path-to-regexp": "0.1.7",
7875 "proxy-addr": "~2.0.4",
7876 "qs": "6.5.2",
7877 "range-parser": "~1.2.0",
7878 "safe-buffer": "5.1.2",
7879 "send": "0.16.2",
7880 "serve-static": "1.13.2",
7881 "setprototypeof": "1.1.0",
7882 "statuses": "~1.4.0",
7883 "type-is": "~1.6.16",
7884 "utils-merge": "1.0.1",
7885 "vary": "~1.1.2"
7886 },
7887 "dependencies": {
7888 "accepts": {
7889 "version": "1.3.5",
7890 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
7891 "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
7892 "dev": true,
7893 "requires": {
7894 "mime-types": "~2.1.18",
7895 "negotiator": "0.6.1"
7896 }
7897 },
7898 "array-flatten": {
7899 "version": "1.1.1",
7900 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
7901 "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
7902 "dev": true
7903 },
7904 "depd": {
7905 "version": "1.1.2",
7906 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
7907 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
7908 "dev": true
7909 },
7910 "destroy": {
7911 "version": "1.0.4",
7912 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
7913 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
7914 "dev": true
7915 },
7916 "ee-first": {
7917 "version": "1.1.1",
7918 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
7919 "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
7920 "dev": true
7921 },
7922 "escape-html": {
7923 "version": "1.0.3",
7924 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
7925 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
7926 "dev": true
7927 },
7928 "finalhandler": {
7929 "version": "1.1.1",
7930 "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
7931 "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
7932 "dev": true,
7933 "requires": {
7934 "debug": "2.6.9",
7935 "encodeurl": "~1.0.2",
7936 "escape-html": "~1.0.3",
7937 "on-finished": "~2.3.0",
7938 "parseurl": "~1.3.2",
7939 "statuses": "~1.4.0",
7940 "unpipe": "~1.0.0"
7941 }
7942 },
7943 "fresh": {
7944 "version": "0.5.2",
7945 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
7946 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
7947 "dev": true
7948 },
7949 "mime": {
7950 "version": "1.4.1",
7951 "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
7952 "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
7953 "dev": true
7954 },
7955 "negotiator": {
7956 "version": "0.6.1",
7957 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
7958 "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
7959 "dev": true
7960 },
7961 "on-finished": {
7962 "version": "2.3.0",
7963 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
7964 "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
7965 "dev": true,
7966 "requires": {
7967 "ee-first": "1.1.1"
7968 }
7969 },
7970 "range-parser": {
7971 "version": "1.2.0",
7972 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
7973 "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
7974 "dev": true
7975 },
7976 "readable-stream": {
7977 "version": "1.0.34",
7978 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
7979 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
7980 "requires": {
7981 "core-util-is": "~1.0.0",
7982 "inherits": "~2.0.1"
7983 }
7984 },
7985 "send": {
7986 "version": "0.16.2",
7987 "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
7988 "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
7989 "dev": true,
7990 "requires": {
7991 "debug": "2.6.9",
7992 "depd": "~1.1.2",
7993 "destroy": "~1.0.4",
7994 "encodeurl": "~1.0.2",
7995 "escape-html": "~1.0.3",
7996 "etag": "~1.8.1",
7997 "fresh": "0.5.2",
7998 "http-errors": "~1.6.2",
7999 "mime": "1.4.1",
8000 "ms": "2.0.0",
8001 "on-finished": "~2.3.0",
8002 "range-parser": "~1.2.0",
8003 "statuses": "~1.4.0"
8004 },
8005 "dependencies": {
8006 "ms": {
8007 "version": "2.0.0",
8008 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
8009 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
8010 "dev": true
8011 }
8012 }
8013 },
8014 "serve-static": {
8015 "version": "1.13.2",
8016 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
8017 "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
8018 "dev": true,
8019 "requires": {
8020 "encodeurl": "~1.0.2",
8021 "escape-html": "~1.0.3",
8022 "parseurl": "~1.3.2",
8023 "send": "0.16.2"
8024 }
8025 },
8026 "utils-merge": {
8027 "version": "1.0.1",
8028 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
8029 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
8030 "dev": true
8031 }
8032 }
8033 },
5505 "ext-list": { 8034 "ext-list": {
5506 "version": "2.2.2", 8035 "version": "2.2.2",
5507 "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", 8036 "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
@@ -5522,12 +8051,14 @@
5522 "extend": { 8051 "extend": {
5523 "version": "3.0.2", 8052 "version": "3.0.2",
5524 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 8053 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
5525 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 8054 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
8055 "dev": true
5526 }, 8056 },
5527 "extend-shallow": { 8057 "extend-shallow": {
5528 "version": "3.0.2", 8058 "version": "3.0.2",
5529 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 8059 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
5530 "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 8060 "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
8061 "dev": true,
5531 "requires": { 8062 "requires": {
5532 "assign-symbols": "^1.0.0", 8063 "assign-symbols": "^1.0.0",
5533 "is-extendable": "^1.0.1" 8064 "is-extendable": "^1.0.1"
@@ -5537,6 +8068,7 @@
5537 "version": "1.0.1", 8068 "version": "1.0.1",
5538 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 8069 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
5539 "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 8070 "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
8071 "dev": true,
5540 "requires": { 8072 "requires": {
5541 "is-plain-object": "^2.0.4" 8073 "is-plain-object": "^2.0.4"
5542 } 8074 }
@@ -5558,6 +8090,7 @@
5558 "version": "2.0.4", 8090 "version": "2.0.4",
5559 "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 8091 "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
5560 "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 8092 "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
8093 "dev": true,
5561 "requires": { 8094 "requires": {
5562 "array-unique": "^0.3.2", 8095 "array-unique": "^0.3.2",
5563 "define-property": "^1.0.0", 8096 "define-property": "^1.0.0",
@@ -5573,6 +8106,7 @@
5573 "version": "1.0.0", 8106 "version": "1.0.0",
5574 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 8107 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
5575 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 8108 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
8109 "dev": true,
5576 "requires": { 8110 "requires": {
5577 "is-descriptor": "^1.0.0" 8111 "is-descriptor": "^1.0.0"
5578 } 8112 }
@@ -5581,6 +8115,7 @@
5581 "version": "2.0.1", 8115 "version": "2.0.1",
5582 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 8116 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
5583 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 8117 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
8118 "dev": true,
5584 "requires": { 8119 "requires": {
5585 "is-extendable": "^0.1.0" 8120 "is-extendable": "^0.1.0"
5586 } 8121 }
@@ -5589,6 +8124,7 @@
5589 "version": "1.0.0", 8124 "version": "1.0.0",
5590 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 8125 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
5591 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 8126 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
8127 "dev": true,
5592 "requires": { 8128 "requires": {
5593 "kind-of": "^6.0.0" 8129 "kind-of": "^6.0.0"
5594 } 8130 }
@@ -5597,6 +8133,7 @@
5597 "version": "1.0.0", 8133 "version": "1.0.0",
5598 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 8134 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
5599 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 8135 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
8136 "dev": true,
5600 "requires": { 8137 "requires": {
5601 "kind-of": "^6.0.0" 8138 "kind-of": "^6.0.0"
5602 } 8139 }
@@ -5605,6 +8142,7 @@
5605 "version": "1.0.2", 8142 "version": "1.0.2",
5606 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 8143 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
5607 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 8144 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
8145 "dev": true,
5608 "requires": { 8146 "requires": {
5609 "is-accessor-descriptor": "^1.0.0", 8147 "is-accessor-descriptor": "^1.0.0",
5610 "is-data-descriptor": "^1.0.0", 8148 "is-data-descriptor": "^1.0.0",
@@ -5632,21 +8170,37 @@
5632 "dev": true 8170 "dev": true
5633 }, 8171 },
5634 "fancy-log": { 8172 "fancy-log": {
5635 "version": "1.3.2", 8173 "version": "1.3.3",
5636 "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", 8174 "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
5637 "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", 8175 "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
8176 "dev": true,
5638 "requires": { 8177 "requires": {
5639 "ansi-gray": "^0.1.1", 8178 "ansi-gray": "^0.1.1",
5640 "color-support": "^1.1.3", 8179 "color-support": "^1.1.3",
8180 "parse-node-version": "^1.0.0",
5641 "time-stamp": "^1.0.0" 8181 "time-stamp": "^1.0.0"
5642 } 8182 }
5643 }, 8183 },
5644 "fast-deep-equal": { 8184 "fast-deep-equal": {
5645 "version": "1.1.0", 8185 "version": "2.0.1",
5646 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 8186 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
5647 "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", 8187 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
5648 "dev": true 8188 "dev": true
5649 }, 8189 },
8190 "fast-glob": {
8191 "version": "2.2.6",
8192 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz",
8193 "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==",
8194 "dev": true,
8195 "requires": {
8196 "@mrmlnc/readdir-enhanced": "^2.2.1",
8197 "@nodelib/fs.stat": "^1.1.2",
8198 "glob-parent": "^3.1.0",
8199 "is-glob": "^4.0.0",
8200 "merge2": "^1.2.3",
8201 "micromatch": "^3.1.10"
8202 }
8203 },
5650 "fast-json-stable-stringify": { 8204 "fast-json-stable-stringify": {
5651 "version": "2.0.0", 8205 "version": "2.0.0",
5652 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 8206 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
@@ -5659,6 +8213,24 @@
5659 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 8213 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
5660 "dev": true 8214 "dev": true
5661 }, 8215 },
8216 "faye-websocket": {
8217 "version": "0.10.0",
8218 "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
8219 "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
8220 "dev": true,
8221 "requires": {
8222 "websocket-driver": ">=0.5.1"
8223 }
8224 },
8225 "fb-watchman": {
8226 "version": "2.0.0",
8227 "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
8228 "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
8229 "dev": true,
8230 "requires": {
8231 "bser": "^2.0.0"
8232 }
8233 },
5662 "fbjs": { 8234 "fbjs": {
5663 "version": "0.8.17", 8235 "version": "0.8.17",
5664 "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", 8236 "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
@@ -5689,6 +8261,12 @@
5689 "pend": "~1.2.0" 8261 "pend": "~1.2.0"
5690 } 8262 }
5691 }, 8263 },
8264 "figgy-pudding": {
8265 "version": "3.5.1",
8266 "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
8267 "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
8268 "dev": true
8269 },
5692 "figures": { 8270 "figures": {
5693 "version": "2.0.0", 8271 "version": "2.0.0",
5694 "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 8272 "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
@@ -5708,15 +8286,32 @@
5708 "object-assign": "^4.0.1" 8286 "object-assign": "^4.0.1"
5709 } 8287 }
5710 }, 8288 },
8289 "file-uri-to-path": {
8290 "version": "1.0.0",
8291 "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
8292 "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
8293 },
5711 "filename-regex": { 8294 "filename-regex": {
5712 "version": "2.0.1", 8295 "version": "2.0.1",
5713 "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 8296 "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
5714 "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" 8297 "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
8298 "dev": true
8299 },
8300 "fileset": {
8301 "version": "2.0.3",
8302 "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
8303 "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
8304 "dev": true,
8305 "requires": {
8306 "glob": "^7.0.3",
8307 "minimatch": "^3.0.3"
8308 }
5715 }, 8309 },
5716 "fill-range": { 8310 "fill-range": {
5717 "version": "4.0.0", 8311 "version": "4.0.0",
5718 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 8312 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
5719 "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 8313 "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
8314 "dev": true,
5720 "requires": { 8315 "requires": {
5721 "extend-shallow": "^2.0.1", 8316 "extend-shallow": "^2.0.1",
5722 "is-number": "^3.0.0", 8317 "is-number": "^3.0.0",
@@ -5728,6 +8323,7 @@
5728 "version": "2.0.1", 8323 "version": "2.0.1",
5729 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 8324 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
5730 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 8325 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
8326 "dev": true,
5731 "requires": { 8327 "requires": {
5732 "is-extendable": "^0.1.0" 8328 "is-extendable": "^0.1.0"
5733 } 8329 }
@@ -5736,7 +8332,7 @@
5736 }, 8332 },
5737 "finalhandler": { 8333 "finalhandler": {
5738 "version": "0.1.0", 8334 "version": "0.1.0",
5739 "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz", 8335 "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz",
5740 "integrity": "sha1-2gW7xPX0owyEzh2R88FUAHxOnao=", 8336 "integrity": "sha1-2gW7xPX0owyEzh2R88FUAHxOnao=",
5741 "dev": true, 8337 "dev": true,
5742 "requires": { 8338 "requires": {
@@ -5746,7 +8342,7 @@
5746 "dependencies": { 8342 "dependencies": {
5747 "debug": { 8343 "debug": {
5748 "version": "1.0.4", 8344 "version": "1.0.4",
5749 "resolved": "http://registry.npmjs.org/debug/-/debug-1.0.4.tgz", 8345 "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
5750 "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=", 8346 "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
5751 "dev": true, 8347 "dev": true,
5752 "requires": { 8348 "requires": {
@@ -5755,21 +8351,21 @@
5755 }, 8351 },
5756 "ms": { 8352 "ms": {
5757 "version": "0.6.2", 8353 "version": "0.6.2",
5758 "resolved": "http://registry.npmjs.org/ms/-/ms-0.6.2.tgz", 8354 "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
5759 "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=", 8355 "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=",
5760 "dev": true 8356 "dev": true
5761 } 8357 }
5762 } 8358 }
5763 }, 8359 },
5764 "find-cache-dir": { 8360 "find-cache-dir": {
5765 "version": "0.1.1", 8361 "version": "1.0.0",
5766 "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", 8362 "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
5767 "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", 8363 "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
5768 "dev": true, 8364 "dev": true,
5769 "requires": { 8365 "requires": {
5770 "commondir": "^1.0.1", 8366 "commondir": "^1.0.1",
5771 "mkdirp": "^0.5.1", 8367 "make-dir": "^1.0.0",
5772 "pkg-dir": "^1.0.0" 8368 "pkg-dir": "^2.0.0"
5773 } 8369 }
5774 }, 8370 },
5775 "find-index": { 8371 "find-index": {
@@ -5779,19 +8375,19 @@
5779 "dev": true 8375 "dev": true
5780 }, 8376 },
5781 "find-up": { 8377 "find-up": {
5782 "version": "1.1.2", 8378 "version": "3.0.0",
5783 "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 8379 "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
5784 "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 8380 "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
5785 "dev": true, 8381 "dev": true,
5786 "requires": { 8382 "requires": {
5787 "path-exists": "^2.0.0", 8383 "locate-path": "^3.0.0"
5788 "pinkie-promise": "^2.0.0"
5789 } 8384 }
5790 }, 8385 },
5791 "findup-sync": { 8386 "findup-sync": {
5792 "version": "2.0.0", 8387 "version": "2.0.0",
5793 "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", 8388 "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
5794 "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", 8389 "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
8390 "dev": true,
5795 "requires": { 8391 "requires": {
5796 "detect-file": "^1.0.0", 8392 "detect-file": "^1.0.0",
5797 "is-glob": "^3.1.0", 8393 "is-glob": "^3.1.0",
@@ -5803,6 +8399,7 @@
5803 "version": "3.1.0", 8399 "version": "3.1.0",
5804 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 8400 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
5805 "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 8401 "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
8402 "dev": true,
5806 "requires": { 8403 "requires": {
5807 "is-extglob": "^2.1.0" 8404 "is-extglob": "^2.1.0"
5808 } 8405 }
@@ -5810,9 +8407,10 @@
5810 } 8407 }
5811 }, 8408 },
5812 "fined": { 8409 "fined": {
5813 "version": "1.1.0", 8410 "version": "1.1.1",
5814 "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", 8411 "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz",
5815 "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", 8412 "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==",
8413 "dev": true,
5816 "requires": { 8414 "requires": {
5817 "expand-tilde": "^2.0.2", 8415 "expand-tilde": "^2.0.2",
5818 "is-plain-object": "^2.0.3", 8416 "is-plain-object": "^2.0.3",
@@ -5828,9 +8426,10 @@
5828 "dev": true 8426 "dev": true
5829 }, 8427 },
5830 "flagged-respawn": { 8428 "flagged-respawn": {
5831 "version": "1.0.0", 8429 "version": "1.0.1",
5832 "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", 8430 "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
5833 "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=" 8431 "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
8432 "dev": true
5834 }, 8433 },
5835 "flat-cache": { 8434 "flat-cache": {
5836 "version": "1.3.4", 8435 "version": "1.3.4",
@@ -5845,24 +8444,80 @@
5845 } 8444 }
5846 }, 8445 },
5847 "flush-write-stream": { 8446 "flush-write-stream": {
5848 "version": "1.0.3", 8447 "version": "1.1.1",
5849 "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", 8448 "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
5850 "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", 8449 "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
5851 "dev": true, 8450 "dev": true,
5852 "requires": { 8451 "requires": {
5853 "inherits": "^2.0.1", 8452 "inherits": "^2.0.3",
5854 "readable-stream": "^2.0.4" 8453 "readable-stream": "^2.3.6"
8454 },
8455 "dependencies": {
8456 "readable-stream": {
8457 "version": "2.3.6",
8458 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
8459 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
8460 "dev": true,
8461 "requires": {
8462 "core-util-is": "~1.0.0",
8463 "inherits": "~2.0.3",
8464 "isarray": "~1.0.0",
8465 "process-nextick-args": "~2.0.0",
8466 "safe-buffer": "~5.1.1",
8467 "string_decoder": "~1.1.1",
8468 "util-deprecate": "~1.0.1"
8469 }
8470 },
8471 "string_decoder": {
8472 "version": "1.1.1",
8473 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
8474 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
8475 "dev": true,
8476 "requires": {
8477 "safe-buffer": "~5.1.0"
8478 }
8479 }
8480 }
8481 },
8482 "follow-redirects": {
8483 "version": "1.6.1",
8484 "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz",
8485 "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==",
8486 "dev": true,
8487 "requires": {
8488 "debug": "=3.1.0"
8489 },
8490 "dependencies": {
8491 "debug": {
8492 "version": "3.1.0",
8493 "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
8494 "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
8495 "dev": true,
8496 "requires": {
8497 "ms": "2.0.0"
8498 },
8499 "dependencies": {
8500 "ms": {
8501 "version": "2.0.0",
8502 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
8503 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
8504 "dev": true
8505 }
8506 }
8507 }
5855 } 8508 }
5856 }, 8509 },
5857 "for-in": { 8510 "for-in": {
5858 "version": "1.0.2", 8511 "version": "1.0.2",
5859 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 8512 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
5860 "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" 8513 "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
8514 "dev": true
5861 }, 8515 },
5862 "for-own": { 8516 "for-own": {
5863 "version": "1.0.0", 8517 "version": "1.0.0",
5864 "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 8518 "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
5865 "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 8519 "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
8520 "dev": true,
5866 "requires": { 8521 "requires": {
5867 "for-in": "^1.0.1" 8522 "for-in": "^1.0.1"
5868 } 8523 }
@@ -5884,10 +8539,17 @@
5884 "mime-types": "^2.1.12" 8539 "mime-types": "^2.1.12"
5885 } 8540 }
5886 }, 8541 },
8542 "forwarded": {
8543 "version": "0.1.2",
8544 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
8545 "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
8546 "dev": true
8547 },
5887 "fragment-cache": { 8548 "fragment-cache": {
5888 "version": "0.2.1", 8549 "version": "0.2.1",
5889 "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 8550 "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
5890 "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 8551 "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
8552 "dev": true,
5891 "requires": { 8553 "requires": {
5892 "map-cache": "^0.2.2" 8554 "map-cache": "^0.2.2"
5893 } 8555 }
@@ -5898,6 +8560,42 @@
5898 "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc=", 8560 "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc=",
5899 "dev": true 8561 "dev": true
5900 }, 8562 },
8563 "from2": {
8564 "version": "2.3.0",
8565 "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
8566 "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
8567 "dev": true,
8568 "requires": {
8569 "inherits": "^2.0.1",
8570 "readable-stream": "^2.0.0"
8571 },
8572 "dependencies": {
8573 "readable-stream": {
8574 "version": "2.3.6",
8575 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
8576 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
8577 "dev": true,
8578 "requires": {
8579 "core-util-is": "~1.0.0",
8580 "inherits": "~2.0.3",
8581 "isarray": "~1.0.0",
8582 "process-nextick-args": "~2.0.0",
8583 "safe-buffer": "~5.1.1",
8584 "string_decoder": "~1.1.1",
8585 "util-deprecate": "~1.0.1"
8586 }
8587 },
8588 "string_decoder": {
8589 "version": "1.1.1",
8590 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
8591 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
8592 "dev": true,
8593 "requires": {
8594 "safe-buffer": "~5.1.0"
8595 }
8596 }
8597 }
8598 },
5901 "fs-extra": { 8599 "fs-extra": {
5902 "version": "7.0.1", 8600 "version": "7.0.1",
5903 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", 8601 "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
@@ -5941,6 +8639,44 @@
5941 "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", 8639 "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
5942 "dev": true 8640 "dev": true
5943 }, 8641 },
8642 "fs-write-stream-atomic": {
8643 "version": "1.0.10",
8644 "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
8645 "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
8646 "dev": true,
8647 "requires": {
8648 "graceful-fs": "^4.1.2",
8649 "iferr": "^0.1.5",
8650 "imurmurhash": "^0.1.4",
8651 "readable-stream": "1 || 2"
8652 },
8653 "dependencies": {
8654 "readable-stream": {
8655 "version": "2.3.6",
8656 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
8657 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
8658 "dev": true,
8659 "requires": {
8660 "core-util-is": "~1.0.0",
8661 "inherits": "~2.0.3",
8662 "isarray": "~1.0.0",
8663 "process-nextick-args": "~2.0.0",
8664 "safe-buffer": "~5.1.1",
8665 "string_decoder": "~1.1.1",
8666 "util-deprecate": "~1.0.1"
8667 }
8668 },
8669 "string_decoder": {
8670 "version": "1.1.1",
8671 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
8672 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
8673 "dev": true,
8674 "requires": {
8675 "safe-buffer": "~5.1.0"
8676 }
8677 }
8678 }
8679 },
5944 "fs.realpath": { 8680 "fs.realpath": {
5945 "version": "1.0.0", 8681 "version": "1.0.0",
5946 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 8682 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -5948,9 +8684,9 @@
5948 "dev": true 8684 "dev": true
5949 }, 8685 },
5950 "fsevents": { 8686 "fsevents": {
5951 "version": "1.2.4", 8687 "version": "1.2.7",
5952 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", 8688 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
5953 "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", 8689 "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
5954 "dev": true, 8690 "dev": true,
5955 "optional": true, 8691 "optional": true,
5956 "requires": { 8692 "requires": {
@@ -5961,119 +8697,89 @@
5961 "abbrev": { 8697 "abbrev": {
5962 "version": "1.1.1", 8698 "version": "1.1.1",
5963 "resolved": false, 8699 "resolved": false,
5964 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 8700 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
5965 "dev": true,
5966 "optional": true
5967 }, 8701 },
5968 "ansi-regex": { 8702 "ansi-regex": {
5969 "version": "2.1.1", 8703 "version": "2.1.1",
5970 "resolved": false, 8704 "resolved": false,
5971 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 8705 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
5972 "dev": true
5973 }, 8706 },
5974 "aproba": { 8707 "aproba": {
5975 "version": "1.2.0", 8708 "version": "1.2.0",
5976 "resolved": false, 8709 "resolved": false,
5977 "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", 8710 "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
5978 "dev": true,
5979 "optional": true
5980 }, 8711 },
5981 "are-we-there-yet": { 8712 "are-we-there-yet": {
5982 "version": "1.1.4", 8713 "version": "1.1.5",
5983 "resolved": false, 8714 "resolved": false,
5984 "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", 8715 "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
5985 "dev": true,
5986 "optional": true,
5987 "requires": { 8716 "requires": {
5988 "delegates": "^1.0.0", 8717 "delegates": "^1.0.0"
5989 "readable-stream": "^2.0.6"
5990 } 8718 }
5991 }, 8719 },
5992 "balanced-match": { 8720 "balanced-match": {
5993 "version": "1.0.0", 8721 "version": "1.0.0",
5994 "resolved": false, 8722 "resolved": false,
5995 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 8723 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
5996 "dev": true
5997 }, 8724 },
5998 "brace-expansion": { 8725 "brace-expansion": {
5999 "version": "1.1.11", 8726 "version": "1.1.11",
6000 "resolved": false, 8727 "resolved": false,
6001 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 8728 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
6002 "dev": true,
6003 "requires": { 8729 "requires": {
6004 "balanced-match": "^1.0.0", 8730 "balanced-match": "^1.0.0",
6005 "concat-map": "0.0.1" 8731 "concat-map": "0.0.1"
6006 } 8732 }
6007 }, 8733 },
6008 "chownr": { 8734 "chownr": {
6009 "version": "1.0.1", 8735 "version": "1.1.1",
6010 "resolved": false, 8736 "resolved": false,
6011 "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", 8737 "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
6012 "dev": true,
6013 "optional": true
6014 }, 8738 },
6015 "code-point-at": { 8739 "code-point-at": {
6016 "version": "1.1.0", 8740 "version": "1.1.0",
6017 "resolved": false, 8741 "resolved": false,
6018 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 8742 "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
6019 "dev": true
6020 }, 8743 },
6021 "concat-map": { 8744 "concat-map": {
6022 "version": "0.0.1", 8745 "version": "0.0.1",
6023 "resolved": false, 8746 "resolved": false,
6024 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 8747 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
6025 "dev": true
6026 }, 8748 },
6027 "console-control-strings": { 8749 "console-control-strings": {
6028 "version": "1.1.0", 8750 "version": "1.1.0",
6029 "resolved": false, 8751 "resolved": false,
6030 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", 8752 "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
6031 "dev": true
6032 }, 8753 },
6033 "core-util-is": { 8754 "core-util-is": {
6034 "version": "1.0.2", 8755 "version": "1.0.2",
6035 "resolved": false, 8756 "resolved": false,
6036 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 8757 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
6037 "dev": true,
6038 "optional": true
6039 }, 8758 },
6040 "debug": { 8759 "debug": {
6041 "version": "2.6.9", 8760 "version": "2.6.9",
6042 "resolved": false, 8761 "resolved": false,
6043 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 8762 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
6044 "dev": true,
6045 "optional": true,
6046 "requires": {
6047 "ms": "2.0.0"
6048 }
6049 }, 8763 },
6050 "deep-extend": { 8764 "deep-extend": {
6051 "version": "0.5.1", 8765 "version": "0.6.0",
6052 "resolved": false, 8766 "resolved": false,
6053 "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", 8767 "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
6054 "dev": true,
6055 "optional": true
6056 }, 8768 },
6057 "delegates": { 8769 "delegates": {
6058 "version": "1.0.0", 8770 "version": "1.0.0",
6059 "resolved": false, 8771 "resolved": false,
6060 "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", 8772 "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
6061 "dev": true,
6062 "optional": true
6063 }, 8773 },
6064 "detect-libc": { 8774 "detect-libc": {
6065 "version": "1.0.3", 8775 "version": "1.0.3",
6066 "resolved": false, 8776 "resolved": false,
6067 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", 8777 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
6068 "dev": true,
6069 "optional": true
6070 }, 8778 },
6071 "fs-minipass": { 8779 "fs-minipass": {
6072 "version": "1.2.5", 8780 "version": "1.2.5",
6073 "resolved": false, 8781 "resolved": false,
6074 "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", 8782 "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
6075 "dev": true,
6076 "optional": true,
6077 "requires": { 8783 "requires": {
6078 "minipass": "^2.2.1" 8784 "minipass": "^2.2.1"
6079 } 8785 }
@@ -6081,33 +8787,25 @@
6081 "fs.realpath": { 8787 "fs.realpath": {
6082 "version": "1.0.0", 8788 "version": "1.0.0",
6083 "resolved": false, 8789 "resolved": false,
6084 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 8790 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
6085 "dev": true,
6086 "optional": true
6087 }, 8791 },
6088 "gauge": { 8792 "gauge": {
6089 "version": "2.7.4", 8793 "version": "2.7.4",
6090 "resolved": false, 8794 "resolved": false,
6091 "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 8795 "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
6092 "dev": true,
6093 "optional": true,
6094 "requires": { 8796 "requires": {
6095 "aproba": "^1.0.3", 8797 "aproba": "^1.0.3",
6096 "console-control-strings": "^1.0.0", 8798 "console-control-strings": "^1.0.0",
6097 "has-unicode": "^2.0.0", 8799 "has-unicode": "^2.0.0",
6098 "object-assign": "^4.1.0", 8800 "object-assign": "^4.1.0",
6099 "signal-exit": "^3.0.0", 8801 "signal-exit": "^3.0.0",
6100 "string-width": "^1.0.1",
6101 "strip-ansi": "^3.0.1",
6102 "wide-align": "^1.1.0" 8802 "wide-align": "^1.1.0"
6103 } 8803 }
6104 }, 8804 },
6105 "glob": { 8805 "glob": {
6106 "version": "7.1.2", 8806 "version": "7.1.3",
6107 "resolved": false, 8807 "resolved": false,
6108 "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 8808 "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
6109 "dev": true,
6110 "optional": true,
6111 "requires": { 8809 "requires": {
6112 "fs.realpath": "^1.0.0", 8810 "fs.realpath": "^1.0.0",
6113 "inflight": "^1.0.4", 8811 "inflight": "^1.0.4",
@@ -6120,26 +8818,20 @@
6120 "has-unicode": { 8818 "has-unicode": {
6121 "version": "2.0.1", 8819 "version": "2.0.1",
6122 "resolved": false, 8820 "resolved": false,
6123 "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", 8821 "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
6124 "dev": true,
6125 "optional": true
6126 }, 8822 },
6127 "iconv-lite": { 8823 "iconv-lite": {
6128 "version": "0.4.21", 8824 "version": "0.4.24",
6129 "resolved": false, 8825 "resolved": false,
6130 "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", 8826 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
6131 "dev": true,
6132 "optional": true,
6133 "requires": { 8827 "requires": {
6134 "safer-buffer": "^2.1.0" 8828 "safer-buffer": ">= 2.1.2 < 3"
6135 } 8829 }
6136 }, 8830 },
6137 "ignore-walk": { 8831 "ignore-walk": {
6138 "version": "3.0.1", 8832 "version": "3.0.1",
6139 "resolved": false, 8833 "resolved": false,
6140 "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", 8834 "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
6141 "dev": true,
6142 "optional": true,
6143 "requires": { 8835 "requires": {
6144 "minimatch": "^3.0.4" 8836 "minimatch": "^3.0.4"
6145 } 8837 }
@@ -6148,8 +8840,6 @@
6148 "version": "1.0.6", 8840 "version": "1.0.6",
6149 "resolved": false, 8841 "resolved": false,
6150 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 8842 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
6151 "dev": true,
6152 "optional": true,
6153 "requires": { 8843 "requires": {
6154 "once": "^1.3.0", 8844 "once": "^1.3.0",
6155 "wrappy": "1" 8845 "wrappy": "1"
@@ -6158,387 +8848,20 @@
6158 "inherits": { 8848 "inherits": {
6159 "version": "2.0.3", 8849 "version": "2.0.3",
6160 "resolved": false, 8850 "resolved": false,
6161 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 8851 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
6162 "dev": true
6163 }, 8852 },
6164 "ini": { 8853 "ini": {
6165 "version": "1.3.5", 8854 "version": "1.3.5",
6166 "resolved": false, 8855 "resolved": false,
6167 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", 8856 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
6168 "dev": true,
6169 "optional": true
6170 }, 8857 },
6171 "is-fullwidth-code-point": { 8858 "is-fullwidth-code-point": {
6172 "version": "1.0.0", 8859 "version": "1.0.0",
6173 "resolved": false, 8860 "resolved": false,
6174 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 8861 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
6175 "dev": true,
6176 "requires": { 8862 "requires": {
6177 "number-is-nan": "^1.0.0" 8863 "number-is-nan": "^1.0.0"
6178 } 8864 }
6179 },
6180 "isarray": {
6181 "version": "1.0.0",
6182 "resolved": false,
6183 "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
6184 "dev": true,
6185 "optional": true
6186 },
6187 "minimatch": {
6188 "version": "3.0.4",
6189 "resolved": false,
6190 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
6191 "dev": true,
6192 "requires": {
6193 "brace-expansion": "^1.1.7"
6194 }
6195 },
6196 "minimist": {
6197 "version": "0.0.8",
6198 "resolved": false,
6199 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
6200 "dev": true
6201 },
6202 "minipass": {
6203 "version": "2.2.4",
6204 "resolved": false,
6205 "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
6206 "dev": true,
6207 "requires": {
6208 "safe-buffer": "^5.1.1",
6209 "yallist": "^3.0.0"
6210 }
6211 },
6212 "minizlib": {
6213 "version": "1.1.0",
6214 "resolved": false,
6215 "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
6216 "dev": true,
6217 "optional": true,
6218 "requires": {
6219 "minipass": "^2.2.1"
6220 }
6221 },
6222 "mkdirp": {
6223 "version": "0.5.1",
6224 "resolved": false,
6225 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
6226 "dev": true,
6227 "requires": {
6228 "minimist": "0.0.8"
6229 }
6230 },
6231 "ms": {
6232 "version": "2.0.0",
6233 "resolved": false,
6234 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
6235 "dev": true,
6236 "optional": true
6237 },
6238 "needle": {
6239 "version": "2.2.0",
6240 "resolved": false,
6241 "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
6242 "dev": true,
6243 "optional": true,
6244 "requires": {
6245 "debug": "^2.1.2",
6246 "iconv-lite": "^0.4.4",
6247 "sax": "^1.2.4"
6248 }
6249 },
6250 "node-pre-gyp": {
6251 "version": "0.10.0",
6252 "resolved": false,
6253 "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
6254 "dev": true,
6255 "optional": true,
6256 "requires": {
6257 "detect-libc": "^1.0.2",
6258 "mkdirp": "^0.5.1",
6259 "needle": "^2.2.0",
6260 "nopt": "^4.0.1",
6261 "npm-packlist": "^1.1.6",
6262 "npmlog": "^4.0.2",
6263 "rc": "^1.1.7",
6264 "rimraf": "^2.6.1",
6265 "semver": "^5.3.0",
6266 "tar": "^4"
6267 }
6268 },
6269 "nopt": {
6270 "version": "4.0.1",
6271 "resolved": false,
6272 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
6273 "dev": true,
6274 "optional": true,
6275 "requires": {
6276 "abbrev": "1",
6277 "osenv": "^0.1.4"
6278 }
6279 },
6280 "npm-bundled": {
6281 "version": "1.0.3",
6282 "resolved": false,
6283 "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
6284 "dev": true,
6285 "optional": true
6286 },
6287 "npm-packlist": {
6288 "version": "1.1.10",
6289 "resolved": false,
6290 "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
6291 "dev": true,
6292 "optional": true,
6293 "requires": {
6294 "ignore-walk": "^3.0.1",
6295 "npm-bundled": "^1.0.1"
6296 }
6297 },
6298 "npmlog": {
6299 "version": "4.1.2",
6300 "resolved": false,
6301 "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
6302 "dev": true,
6303 "optional": true,
6304 "requires": {
6305 "are-we-there-yet": "~1.1.2",
6306 "console-control-strings": "~1.1.0",
6307 "gauge": "~2.7.3",
6308 "set-blocking": "~2.0.0"
6309 }
6310 },
6311 "number-is-nan": {
6312 "version": "1.0.1",
6313 "resolved": false,
6314 "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
6315 "dev": true
6316 },
6317 "object-assign": {
6318 "version": "4.1.1",
6319 "resolved": false,
6320 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
6321 "dev": true,
6322 "optional": true
6323 },
6324 "once": {
6325 "version": "1.4.0",
6326 "resolved": false,
6327 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
6328 "dev": true,
6329 "requires": {
6330 "wrappy": "1"
6331 }
6332 },
6333 "os-homedir": {
6334 "version": "1.0.2",
6335 "resolved": false,
6336 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
6337 "dev": true,
6338 "optional": true
6339 },
6340 "os-tmpdir": {
6341 "version": "1.0.2",
6342 "resolved": false,
6343 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
6344 "dev": true,
6345 "optional": true
6346 },
6347 "osenv": {
6348 "version": "0.1.5",
6349 "resolved": false,
6350 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
6351 "dev": true,
6352 "optional": true,
6353 "requires": {
6354 "os-homedir": "^1.0.0",
6355 "os-tmpdir": "^1.0.0"
6356 }
6357 },
6358 "path-is-absolute": {
6359 "version": "1.0.1",
6360 "resolved": false,
6361 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
6362 "dev": true,
6363 "optional": true
6364 },
6365 "process-nextick-args": {
6366 "version": "2.0.0",
6367 "resolved": false,
6368 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
6369 "dev": true,
6370 "optional": true
6371 },
6372 "rc": {
6373 "version": "1.2.7",
6374 "resolved": false,
6375 "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
6376 "dev": true,
6377 "optional": true,
6378 "requires": {
6379 "deep-extend": "^0.5.1",
6380 "ini": "~1.3.0",
6381 "minimist": "^1.2.0",
6382 "strip-json-comments": "~2.0.1"
6383 },
6384 "dependencies": {
6385 "minimist": {
6386 "version": "1.2.0",
6387 "resolved": false,
6388 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
6389 "dev": true,
6390 "optional": true
6391 }
6392 }
6393 },
6394 "readable-stream": {
6395 "version": "2.3.6",
6396 "resolved": false,
6397 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
6398 "dev": true,
6399 "optional": true,
6400 "requires": {
6401 "core-util-is": "~1.0.0",
6402 "inherits": "~2.0.3",
6403 "isarray": "~1.0.0",
6404 "process-nextick-args": "~2.0.0",
6405 "safe-buffer": "~5.1.1",
6406 "string_decoder": "~1.1.1",
6407 "util-deprecate": "~1.0.1"
6408 }
6409 },
6410 "rimraf": {
6411 "version": "2.6.2",
6412 "resolved": false,
6413 "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
6414 "dev": true,
6415 "optional": true,
6416 "requires": {
6417 "glob": "^7.0.5"
6418 }
6419 },
6420 "safe-buffer": {
6421 "version": "5.1.1",
6422 "resolved": false,
6423 "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
6424 "dev": true
6425 },
6426 "safer-buffer": {
6427 "version": "2.1.2",
6428 "resolved": false,
6429 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
6430 "dev": true,
6431 "optional": true
6432 },
6433 "sax": {
6434 "version": "1.2.4",
6435 "resolved": false,
6436 "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
6437 "dev": true,
6438 "optional": true
6439 },
6440 "semver": {
6441 "version": "5.5.0",
6442 "resolved": false,
6443 "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
6444 "dev": true,
6445 "optional": true
6446 },
6447 "set-blocking": {
6448 "version": "2.0.0",
6449 "resolved": false,
6450 "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
6451 "dev": true,
6452 "optional": true
6453 },
6454 "signal-exit": {
6455 "version": "3.0.2",
6456 "resolved": false,
6457 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
6458 "dev": true,
6459 "optional": true
6460 },
6461 "string-width": {
6462 "version": "1.0.2",
6463 "resolved": false,
6464 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
6465 "dev": true,
6466 "requires": {
6467 "code-point-at": "^1.0.0",
6468 "is-fullwidth-code-point": "^1.0.0",
6469 "strip-ansi": "^3.0.0"
6470 }
6471 },
6472 "string_decoder": {
6473 "version": "1.1.1",
6474 "resolved": false,
6475 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
6476 "dev": true,
6477 "optional": true,
6478 "requires": {
6479 "safe-buffer": "~5.1.0"
6480 }
6481 },
6482 "strip-ansi": {
6483 "version": "3.0.1",
6484 "resolved": false,
6485 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
6486 "dev": true,
6487 "requires": {
6488 "ansi-regex": "^2.0.0"
6489 }
6490 },
6491 "strip-json-comments": {
6492 "version": "2.0.1",
6493 "resolved": false,
6494 "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
6495 "dev": true,
6496 "optional": true
6497 },
6498 "tar": {
6499 "version": "4.4.1",
6500 "resolved": false,
6501 "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
6502 "dev": true,
6503 "optional": true,
6504 "requires": {
6505 "chownr": "^1.0.1",
6506 "fs-minipass": "^1.2.5",
6507 "minipass": "^2.2.4",
6508 "minizlib": "^1.1.0",
6509 "mkdirp": "^0.5.0",
6510 "safe-buffer": "^5.1.1",
6511 "yallist": "^3.0.2"
6512 }
6513 },
6514 "util-deprecate": {
6515 "version": "1.0.2",
6516 "resolved": false,
6517 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
6518 "dev": true,
6519 "optional": true
6520 },
6521 "wide-align": {
6522 "version": "1.1.2",
6523 "resolved": false,
6524 "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
6525 "dev": true,
6526 "optional": true,
6527 "requires": {
6528 "string-width": "^1.0.2"
6529 }
6530 },
6531 "wrappy": {
6532 "version": "1.0.2",
6533 "resolved": false,
6534 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
6535 "dev": true
6536 },
6537 "yallist": {
6538 "version": "3.0.2",
6539 "resolved": false,
6540 "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
6541 "dev": true
6542 } 8865 }
6543 } 8866 }
6544 }, 8867 },
@@ -6580,6 +8903,43 @@
6580 "string-width": "^1.0.1", 8903 "string-width": "^1.0.1",
6581 "strip-ansi": "^3.0.1", 8904 "strip-ansi": "^3.0.1",
6582 "wide-align": "^1.1.0" 8905 "wide-align": "^1.1.0"
8906 },
8907 "dependencies": {
8908 "ansi-regex": {
8909 "version": "2.1.1",
8910 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
8911 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
8912 "dev": true
8913 },
8914 "is-fullwidth-code-point": {
8915 "version": "1.0.0",
8916 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
8917 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
8918 "dev": true,
8919 "requires": {
8920 "number-is-nan": "^1.0.0"
8921 }
8922 },
8923 "string-width": {
8924 "version": "1.0.2",
8925 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
8926 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
8927 "dev": true,
8928 "requires": {
8929 "code-point-at": "^1.0.0",
8930 "is-fullwidth-code-point": "^1.0.0",
8931 "strip-ansi": "^3.0.0"
8932 }
8933 },
8934 "strip-ansi": {
8935 "version": "3.0.1",
8936 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
8937 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
8938 "dev": true,
8939 "requires": {
8940 "ansi-regex": "^2.0.0"
8941 }
8942 }
6583 } 8943 }
6584 }, 8944 },
6585 "gaze": { 8945 "gaze": {
@@ -6591,6 +8951,12 @@
6591 "globule": "^1.0.0" 8951 "globule": "^1.0.0"
6592 } 8952 }
6593 }, 8953 },
8954 "genfun": {
8955 "version": "5.0.0",
8956 "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
8957 "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
8958 "dev": true
8959 },
6594 "get-caller-file": { 8960 "get-caller-file": {
6595 "version": "1.0.3", 8961 "version": "1.0.3",
6596 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", 8962 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
@@ -6608,217 +8974,229 @@
6608 "normalize-package-data": "^2.3.0", 8974 "normalize-package-data": "^2.3.0",
6609 "parse-github-repo-url": "^1.3.0", 8975 "parse-github-repo-url": "^1.3.0",
6610 "through2": "^2.0.0" 8976 "through2": "^2.0.0"
6611 }
6612 },
6613 "get-stdin": {
6614 "version": "4.0.1",
6615 "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
6616 "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
6617 "dev": true
6618 },
6619 "get-stream": {
6620 "version": "3.0.0",
6621 "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
6622 "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
6623 "dev": true
6624 },
6625 "get-value": {
6626 "version": "2.0.6",
6627 "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
6628 "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
6629 },
6630 "getpass": {
6631 "version": "0.1.7",
6632 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
6633 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
6634 "dev": true,
6635 "requires": {
6636 "assert-plus": "^1.0.0"
6637 }
6638 },
6639 "getroot": {
6640 "version": "1.0.0",
6641 "resolved": "https://registry.npmjs.org/getroot/-/getroot-1.0.0.tgz",
6642 "integrity": "sha512-W9Q31kOv921dQuZBeAbK4R/dAPbC0WkhZD3alLcdVwjSkEtS1aX8twrzG3I5yo0sQ88M/d4JOqVbRiCuI/XPNA==",
6643 "requires": {
6644 "tslib": "^1.7.1"
6645 }
6646 },
6647 "git-raw-commits": {
6648 "version": "2.0.0",
6649 "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
6650 "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
6651 "dev": true,
6652 "requires": {
6653 "dargs": "^4.0.1",
6654 "lodash.template": "^4.0.2",
6655 "meow": "^4.0.0",
6656 "split2": "^2.0.0",
6657 "through2": "^2.0.0"
6658 }, 8977 },
6659 "dependencies": { 8978 "dependencies": {
6660 "camelcase": { 8979 "camelcase": {
6661 "version": "4.1.0", 8980 "version": "2.1.1",
6662 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 8981 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
6663 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 8982 "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
6664 "dev": true 8983 "dev": true
6665 }, 8984 },
6666 "camelcase-keys": { 8985 "camelcase-keys": {
6667 "version": "4.2.0", 8986 "version": "2.1.0",
6668 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", 8987 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
6669 "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", 8988 "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
6670 "dev": true, 8989 "dev": true,
6671 "requires": { 8990 "requires": {
6672 "camelcase": "^4.1.0", 8991 "camelcase": "^2.0.0",
6673 "map-obj": "^2.0.0", 8992 "map-obj": "^1.0.0"
6674 "quick-lru": "^1.0.0"
6675 } 8993 }
6676 }, 8994 },
6677 "find-up": { 8995 "find-up": {
6678 "version": "2.1.0", 8996 "version": "1.1.2",
6679 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 8997 "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
6680 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 8998 "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
6681 "dev": true, 8999 "dev": true,
6682 "requires": { 9000 "requires": {
6683 "locate-path": "^2.0.0" 9001 "path-exists": "^2.0.0",
9002 "pinkie-promise": "^2.0.0"
6684 } 9003 }
6685 }, 9004 },
6686 "indent-string": { 9005 "indent-string": {
6687 "version": "3.2.0", 9006 "version": "2.1.0",
6688 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", 9007 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
6689 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", 9008 "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
6690 "dev": true
6691 },
6692 "load-json-file": {
6693 "version": "4.0.0",
6694 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
6695 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
6696 "dev": true,
6697 "requires": {
6698 "graceful-fs": "^4.1.2",
6699 "parse-json": "^4.0.0",
6700 "pify": "^3.0.0",
6701 "strip-bom": "^3.0.0"
6702 }
6703 },
6704 "lodash.template": {
6705 "version": "4.4.0",
6706 "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
6707 "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
6708 "dev": true, 9009 "dev": true,
6709 "requires": { 9010 "requires": {
6710 "lodash._reinterpolate": "~3.0.0", 9011 "repeating": "^2.0.0"
6711 "lodash.templatesettings": "^4.0.0"
6712 } 9012 }
6713 }, 9013 },
6714 "lodash.templatesettings": { 9014 "load-json-file": {
6715 "version": "4.1.0", 9015 "version": "1.1.0",
6716 "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", 9016 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
6717 "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", 9017 "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
6718 "dev": true, 9018 "dev": true,
6719 "requires": { 9019 "requires": {
6720 "lodash._reinterpolate": "~3.0.0" 9020 "graceful-fs": "^4.1.2",
9021 "parse-json": "^2.2.0",
9022 "pify": "^2.0.0",
9023 "pinkie-promise": "^2.0.0",
9024 "strip-bom": "^2.0.0"
6721 } 9025 }
6722 }, 9026 },
6723 "map-obj": { 9027 "map-obj": {
6724 "version": "2.0.0", 9028 "version": "1.0.1",
6725 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", 9029 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
6726 "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", 9030 "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
6727 "dev": true 9031 "dev": true
6728 }, 9032 },
6729 "meow": { 9033 "meow": {
6730 "version": "4.0.1", 9034 "version": "3.7.0",
6731 "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", 9035 "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
6732 "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", 9036 "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
6733 "dev": true, 9037 "dev": true,
6734 "requires": { 9038 "requires": {
6735 "camelcase-keys": "^4.0.0", 9039 "camelcase-keys": "^2.0.0",
6736 "decamelize-keys": "^1.0.0", 9040 "decamelize": "^1.1.2",
6737 "loud-rejection": "^1.0.0", 9041 "loud-rejection": "^1.0.0",
9042 "map-obj": "^1.0.1",
6738 "minimist": "^1.1.3", 9043 "minimist": "^1.1.3",
6739 "minimist-options": "^3.0.1",
6740 "normalize-package-data": "^2.3.4", 9044 "normalize-package-data": "^2.3.4",
6741 "read-pkg-up": "^3.0.0", 9045 "object-assign": "^4.0.1",
6742 "redent": "^2.0.0", 9046 "read-pkg-up": "^1.0.1",
6743 "trim-newlines": "^2.0.0" 9047 "redent": "^1.0.0",
9048 "trim-newlines": "^1.0.0"
6744 } 9049 }
6745 }, 9050 },
6746 "parse-json": { 9051 "parse-json": {
6747 "version": "4.0.0", 9052 "version": "2.2.0",
6748 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 9053 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
6749 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 9054 "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
6750 "dev": true, 9055 "dev": true,
6751 "requires": { 9056 "requires": {
6752 "error-ex": "^1.3.1", 9057 "error-ex": "^1.2.0"
6753 "json-parse-better-errors": "^1.0.1" 9058 }
9059 },
9060 "path-exists": {
9061 "version": "2.1.0",
9062 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
9063 "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
9064 "dev": true,
9065 "requires": {
9066 "pinkie-promise": "^2.0.0"
6754 } 9067 }
6755 }, 9068 },
6756 "path-type": { 9069 "path-type": {
6757 "version": "3.0.0", 9070 "version": "1.1.0",
6758 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 9071 "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
6759 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 9072 "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
6760 "dev": true, 9073 "dev": true,
6761 "requires": { 9074 "requires": {
6762 "pify": "^3.0.0" 9075 "graceful-fs": "^4.1.2",
9076 "pify": "^2.0.0",
9077 "pinkie-promise": "^2.0.0"
6763 } 9078 }
6764 }, 9079 },
6765 "pify": { 9080 "pify": {
6766 "version": "3.0.0", 9081 "version": "2.3.0",
6767 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 9082 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
6768 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 9083 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
6769 "dev": true 9084 "dev": true
6770 }, 9085 },
6771 "read-pkg": { 9086 "read-pkg": {
6772 "version": "3.0.0", 9087 "version": "1.1.0",
6773 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 9088 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
6774 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 9089 "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
6775 "dev": true, 9090 "dev": true,
6776 "requires": { 9091 "requires": {
6777 "load-json-file": "^4.0.0", 9092 "load-json-file": "^1.0.0",
6778 "normalize-package-data": "^2.3.2", 9093 "normalize-package-data": "^2.3.2",
6779 "path-type": "^3.0.0" 9094 "path-type": "^1.0.0"
6780 } 9095 }
6781 }, 9096 },
6782 "read-pkg-up": { 9097 "read-pkg-up": {
6783 "version": "3.0.0", 9098 "version": "1.0.1",
6784 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", 9099 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
6785 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", 9100 "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
6786 "dev": true, 9101 "dev": true,
6787 "requires": { 9102 "requires": {
6788 "find-up": "^2.0.0", 9103 "find-up": "^1.0.0",
6789 "read-pkg": "^3.0.0" 9104 "read-pkg": "^1.0.0"
6790 } 9105 }
6791 }, 9106 },
6792 "redent": { 9107 "redent": {
6793 "version": "2.0.0", 9108 "version": "1.0.0",
6794 "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", 9109 "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
6795 "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", 9110 "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
6796 "dev": true, 9111 "dev": true,
6797 "requires": { 9112 "requires": {
6798 "indent-string": "^3.0.0", 9113 "indent-string": "^2.1.0",
6799 "strip-indent": "^2.0.0" 9114 "strip-indent": "^1.0.1"
6800 } 9115 }
6801 }, 9116 },
6802 "strip-bom": { 9117 "strip-bom": {
6803 "version": "3.0.0", 9118 "version": "2.0.0",
6804 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 9119 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
6805 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 9120 "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
6806 "dev": true 9121 "dev": true,
9122 "requires": {
9123 "is-utf8": "^0.2.0"
9124 }
6807 }, 9125 },
6808 "strip-indent": { 9126 "strip-indent": {
6809 "version": "2.0.0", 9127 "version": "1.0.1",
6810 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", 9128 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
6811 "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", 9129 "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
6812 "dev": true 9130 "dev": true,
9131 "requires": {
9132 "get-stdin": "^4.0.1"
9133 }
6813 }, 9134 },
6814 "trim-newlines": { 9135 "trim-newlines": {
6815 "version": "2.0.0", 9136 "version": "1.0.0",
6816 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", 9137 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
6817 "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", 9138 "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
6818 "dev": true 9139 "dev": true
6819 } 9140 }
6820 } 9141 }
6821 }, 9142 },
9143 "get-port": {
9144 "version": "3.2.0",
9145 "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
9146 "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=",
9147 "dev": true
9148 },
9149 "get-stdin": {
9150 "version": "4.0.1",
9151 "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
9152 "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
9153 "dev": true
9154 },
9155 "get-stream": {
9156 "version": "4.1.0",
9157 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
9158 "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
9159 "dev": true,
9160 "requires": {
9161 "pump": "^3.0.0"
9162 }
9163 },
9164 "get-value": {
9165 "version": "2.0.6",
9166 "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
9167 "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
9168 "dev": true
9169 },
9170 "getpass": {
9171 "version": "0.1.7",
9172 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
9173 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
9174 "dev": true,
9175 "requires": {
9176 "assert-plus": "^1.0.0"
9177 }
9178 },
9179 "getroot": {
9180 "version": "1.0.0",
9181 "resolved": "https://registry.npmjs.org/getroot/-/getroot-1.0.0.tgz",
9182 "integrity": "sha512-W9Q31kOv921dQuZBeAbK4R/dAPbC0WkhZD3alLcdVwjSkEtS1aX8twrzG3I5yo0sQ88M/d4JOqVbRiCuI/XPNA==",
9183 "requires": {
9184 "tslib": "^1.7.1"
9185 }
9186 },
9187 "git-raw-commits": {
9188 "version": "2.0.0",
9189 "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
9190 "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
9191 "dev": true,
9192 "requires": {
9193 "dargs": "^4.0.1",
9194 "lodash.template": "^4.0.2",
9195 "meow": "^4.0.0",
9196 "split2": "^2.0.0",
9197 "through2": "^2.0.0"
9198 }
9199 },
6822 "git-remote-origin-url": { 9200 "git-remote-origin-url": {
6823 "version": "2.0.0", 9201 "version": "2.0.0",
6824 "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", 9202 "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
@@ -6827,6 +9205,14 @@
6827 "requires": { 9205 "requires": {
6828 "gitconfiglocal": "^1.0.0", 9206 "gitconfiglocal": "^1.0.0",
6829 "pify": "^2.3.0" 9207 "pify": "^2.3.0"
9208 },
9209 "dependencies": {
9210 "pify": {
9211 "version": "2.3.0",
9212 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
9213 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
9214 "dev": true
9215 }
6830 } 9216 }
6831 }, 9217 },
6832 "git-semver-tags": { 9218 "git-semver-tags": {
@@ -6837,149 +9223,25 @@
6837 "requires": { 9223 "requires": {
6838 "meow": "^4.0.0", 9224 "meow": "^4.0.0",
6839 "semver": "^5.5.0" 9225 "semver": "^5.5.0"
6840 }, 9226 }
6841 "dependencies": { 9227 },
6842 "camelcase": { 9228 "git-up": {
6843 "version": "4.1.0", 9229 "version": "4.0.1",
6844 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 9230 "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz",
6845 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 9231 "integrity": "sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw==",
6846 "dev": true 9232 "dev": true,
6847 }, 9233 "requires": {
6848 "camelcase-keys": { 9234 "is-ssh": "^1.3.0",
6849 "version": "4.2.0", 9235 "parse-url": "^5.0.0"
6850 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", 9236 }
6851 "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", 9237 },
6852 "dev": true, 9238 "git-url-parse": {
6853 "requires": { 9239 "version": "11.1.2",
6854 "camelcase": "^4.1.0", 9240 "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.1.2.tgz",
6855 "map-obj": "^2.0.0", 9241 "integrity": "sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ==",
6856 "quick-lru": "^1.0.0" 9242 "dev": true,
6857 } 9243 "requires": {
6858 }, 9244 "git-up": "^4.0.0"
6859 "find-up": {
6860 "version": "2.1.0",
6861 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
6862 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
6863 "dev": true,
6864 "requires": {
6865 "locate-path": "^2.0.0"
6866 }
6867 },
6868 "indent-string": {
6869 "version": "3.2.0",
6870 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
6871 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
6872 "dev": true
6873 },
6874 "load-json-file": {
6875 "version": "4.0.0",
6876 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
6877 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
6878 "dev": true,
6879 "requires": {
6880 "graceful-fs": "^4.1.2",
6881 "parse-json": "^4.0.0",
6882 "pify": "^3.0.0",
6883 "strip-bom": "^3.0.0"
6884 }
6885 },
6886 "map-obj": {
6887 "version": "2.0.0",
6888 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
6889 "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
6890 "dev": true
6891 },
6892 "meow": {
6893 "version": "4.0.1",
6894 "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
6895 "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
6896 "dev": true,
6897 "requires": {
6898 "camelcase-keys": "^4.0.0",
6899 "decamelize-keys": "^1.0.0",
6900 "loud-rejection": "^1.0.0",
6901 "minimist": "^1.1.3",
6902 "minimist-options": "^3.0.1",
6903 "normalize-package-data": "^2.3.4",
6904 "read-pkg-up": "^3.0.0",
6905 "redent": "^2.0.0",
6906 "trim-newlines": "^2.0.0"
6907 }
6908 },
6909 "parse-json": {
6910 "version": "4.0.0",
6911 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
6912 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
6913 "dev": true,
6914 "requires": {
6915 "error-ex": "^1.3.1",
6916 "json-parse-better-errors": "^1.0.1"
6917 }
6918 },
6919 "path-type": {
6920 "version": "3.0.0",
6921 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
6922 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
6923 "dev": true,
6924 "requires": {
6925 "pify": "^3.0.0"
6926 }
6927 },
6928 "pify": {
6929 "version": "3.0.0",
6930 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
6931 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
6932 "dev": true
6933 },
6934 "read-pkg": {
6935 "version": "3.0.0",
6936 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
6937 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
6938 "dev": true,
6939 "requires": {
6940 "load-json-file": "^4.0.0",
6941 "normalize-package-data": "^2.3.2",
6942 "path-type": "^3.0.0"
6943 }
6944 },
6945 "read-pkg-up": {
6946 "version": "3.0.0",
6947 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
6948 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
6949 "dev": true,
6950 "requires": {
6951 "find-up": "^2.0.0",
6952 "read-pkg": "^3.0.0"
6953 }
6954 },
6955 "redent": {
6956 "version": "2.0.0",
6957 "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
6958 "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
6959 "dev": true,
6960 "requires": {
6961 "indent-string": "^3.0.0",
6962 "strip-indent": "^2.0.0"
6963 }
6964 },
6965 "strip-bom": {
6966 "version": "3.0.0",
6967 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
6968 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
6969 "dev": true
6970 },
6971 "strip-indent": {
6972 "version": "2.0.0",
6973 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
6974 "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
6975 "dev": true
6976 },
6977 "trim-newlines": {
6978 "version": "2.0.0",
6979 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
6980 "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
6981 "dev": true
6982 }
6983 } 9245 }
6984 }, 9246 },
6985 "gitconfiglocal": { 9247 "gitconfiglocal": {
@@ -7009,6 +9271,7 @@
7009 "version": "0.3.0", 9271 "version": "0.3.0",
7010 "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 9272 "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
7011 "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 9273 "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
9274 "dev": true,
7012 "requires": { 9275 "requires": {
7013 "glob-parent": "^2.0.0", 9276 "glob-parent": "^2.0.0",
7014 "is-glob": "^2.0.0" 9277 "is-glob": "^2.0.0"
@@ -7018,6 +9281,7 @@
7018 "version": "2.0.0", 9281 "version": "2.0.0",
7019 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 9282 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
7020 "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 9283 "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
9284 "dev": true,
7021 "requires": { 9285 "requires": {
7022 "is-glob": "^2.0.0" 9286 "is-glob": "^2.0.0"
7023 } 9287 }
@@ -7025,12 +9289,14 @@
7025 "is-extglob": { 9289 "is-extglob": {
7026 "version": "1.0.0", 9290 "version": "1.0.0",
7027 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 9291 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
7028 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" 9292 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
9293 "dev": true
7029 }, 9294 },
7030 "is-glob": { 9295 "is-glob": {
7031 "version": "2.0.1", 9296 "version": "2.0.1",
7032 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 9297 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
7033 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 9298 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
9299 "dev": true,
7034 "requires": { 9300 "requires": {
7035 "is-extglob": "^1.0.0" 9301 "is-extglob": "^1.0.0"
7036 } 9302 }
@@ -7074,8 +9340,40 @@
7074 "remove-trailing-separator": "^1.0.1", 9340 "remove-trailing-separator": "^1.0.1",
7075 "to-absolute-glob": "^2.0.0", 9341 "to-absolute-glob": "^2.0.0",
7076 "unique-stream": "^2.0.2" 9342 "unique-stream": "^2.0.2"
9343 },
9344 "dependencies": {
9345 "readable-stream": {
9346 "version": "2.3.6",
9347 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
9348 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
9349 "dev": true,
9350 "requires": {
9351 "core-util-is": "~1.0.0",
9352 "inherits": "~2.0.3",
9353 "isarray": "~1.0.0",
9354 "process-nextick-args": "~2.0.0",
9355 "safe-buffer": "~5.1.1",
9356 "string_decoder": "~1.1.1",
9357 "util-deprecate": "~1.0.1"
9358 }
9359 },
9360 "string_decoder": {
9361 "version": "1.1.1",
9362 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
9363 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
9364 "dev": true,
9365 "requires": {
9366 "safe-buffer": "~5.1.0"
9367 }
9368 }
7077 } 9369 }
7078 }, 9370 },
9371 "glob-to-regexp": {
9372 "version": "0.3.0",
9373 "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
9374 "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
9375 "dev": true
9376 },
7079 "glob-watcher": { 9377 "glob-watcher": {
7080 "version": "5.0.3", 9378 "version": "5.0.3",
7081 "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", 9379 "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz",
@@ -7112,37 +9410,67 @@
7112 "version": "1.0.0", 9410 "version": "1.0.0",
7113 "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 9411 "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
7114 "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 9412 "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
9413 "dev": true,
7115 "requires": { 9414 "requires": {
7116 "global-prefix": "^1.0.1", 9415 "global-prefix": "^1.0.1",
7117 "is-windows": "^1.0.1", 9416 "is-windows": "^1.0.1",
7118 "resolve-dir": "^1.0.0" 9417 "resolve-dir": "^1.0.0"
7119 } 9418 }
7120 }, 9419 },
9420 "global-modules-path": {
9421 "version": "2.3.1",
9422 "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.1.tgz",
9423 "integrity": "sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg==",
9424 "dev": true
9425 },
7121 "global-prefix": { 9426 "global-prefix": {
7122 "version": "1.0.2", 9427 "version": "1.0.2",
7123 "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 9428 "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
7124 "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 9429 "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
9430 "dev": true,
7125 "requires": { 9431 "requires": {
7126 "expand-tilde": "^2.0.2", 9432 "expand-tilde": "^2.0.2",
7127 "homedir-polyfill": "^1.0.1", 9433 "homedir-polyfill": "^1.0.1",
7128 "ini": "^1.3.4", 9434 "ini": "^1.3.4",
7129 "is-windows": "^1.0.1", 9435 "is-windows": "^1.0.1",
7130 "which": "^1.2.14" 9436 "which": "^1.2.14"
7131 },
7132 "dependencies": {
7133 "ini": {
7134 "version": "1.3.5",
7135 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
7136 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
7137 }
7138 } 9437 }
7139 }, 9438 },
7140 "globals": { 9439 "globals": {
7141 "version": "11.9.0", 9440 "version": "11.11.0",
7142 "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", 9441 "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
7143 "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", 9442 "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==",
7144 "dev": true 9443 "dev": true
7145 }, 9444 },
9445 "globby": {
9446 "version": "8.0.2",
9447 "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
9448 "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==",
9449 "dev": true,
9450 "requires": {
9451 "array-union": "^1.0.1",
9452 "dir-glob": "2.0.0",
9453 "fast-glob": "^2.0.2",
9454 "glob": "^7.1.2",
9455 "ignore": "^3.3.5",
9456 "pify": "^3.0.0",
9457 "slash": "^1.0.0"
9458 },
9459 "dependencies": {
9460 "ignore": {
9461 "version": "3.3.10",
9462 "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
9463 "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
9464 "dev": true
9465 },
9466 "slash": {
9467 "version": "1.0.0",
9468 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
9469 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
9470 "dev": true
9471 }
9472 }
9473 },
7146 "globule": { 9474 "globule": {
7147 "version": "1.2.1", 9475 "version": "1.2.1",
7148 "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", 9476 "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
@@ -7155,16 +9483,17 @@
7155 } 9483 }
7156 }, 9484 },
7157 "glogg": { 9485 "glogg": {
7158 "version": "1.0.1", 9486 "version": "1.0.2",
7159 "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", 9487 "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
7160 "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", 9488 "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
9489 "dev": true,
7161 "requires": { 9490 "requires": {
7162 "sparkles": "^1.0.0" 9491 "sparkles": "^1.0.0"
7163 } 9492 }
7164 }, 9493 },
7165 "got": { 9494 "got": {
7166 "version": "6.7.1", 9495 "version": "6.7.1",
7167 "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", 9496 "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
7168 "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 9497 "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
7169 "dev": true, 9498 "dev": true,
7170 "requires": { 9499 "requires": {
@@ -7179,12 +9508,32 @@
7179 "timed-out": "^4.0.0", 9508 "timed-out": "^4.0.0",
7180 "unzip-response": "^2.0.1", 9509 "unzip-response": "^2.0.1",
7181 "url-parse-lax": "^1.0.0" 9510 "url-parse-lax": "^1.0.0"
9511 },
9512 "dependencies": {
9513 "get-stream": {
9514 "version": "3.0.0",
9515 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
9516 "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
9517 "dev": true
9518 }
7182 } 9519 }
7183 }, 9520 },
7184 "graceful-fs": { 9521 "graceful-fs": {
7185 "version": "4.1.11", 9522 "version": "4.1.15",
7186 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 9523 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
7187 "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" 9524 "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
9525 },
9526 "growl": {
9527 "version": "1.10.5",
9528 "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
9529 "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
9530 "dev": true
9531 },
9532 "growly": {
9533 "version": "1.3.0",
9534 "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
9535 "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
9536 "dev": true
7188 }, 9537 },
7189 "gulp": { 9538 "gulp": {
7190 "version": "4.0.0", 9539 "version": "4.0.0",
@@ -7198,6 +9547,39 @@
7198 "vinyl-fs": "^3.0.0" 9547 "vinyl-fs": "^3.0.0"
7199 }, 9548 },
7200 "dependencies": { 9549 "dependencies": {
9550 "ansi-regex": {
9551 "version": "2.1.1",
9552 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
9553 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
9554 "dev": true
9555 },
9556 "camelcase": {
9557 "version": "3.0.0",
9558 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
9559 "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
9560 "dev": true
9561 },
9562 "cliui": {
9563 "version": "3.2.0",
9564 "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
9565 "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
9566 "dev": true,
9567 "requires": {
9568 "string-width": "^1.0.1",
9569 "strip-ansi": "^3.0.1",
9570 "wrap-ansi": "^2.0.0"
9571 }
9572 },
9573 "find-up": {
9574 "version": "1.1.2",
9575 "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
9576 "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
9577 "dev": true,
9578 "requires": {
9579 "path-exists": "^2.0.0",
9580 "pinkie-promise": "^2.0.0"
9581 }
9582 },
7201 "gulp-cli": { 9583 "gulp-cli": {
7202 "version": "2.0.1", 9584 "version": "2.0.1",
7203 "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", 9585 "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz",
@@ -7223,6 +9605,179 @@
7223 "v8flags": "^3.0.1", 9605 "v8flags": "^3.0.1",
7224 "yargs": "^7.1.0" 9606 "yargs": "^7.1.0"
7225 } 9607 }
9608 },
9609 "invert-kv": {
9610 "version": "1.0.0",
9611 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
9612 "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
9613 "dev": true
9614 },
9615 "is-fullwidth-code-point": {
9616 "version": "1.0.0",
9617 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
9618 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
9619 "dev": true,
9620 "requires": {
9621 "number-is-nan": "^1.0.0"
9622 }
9623 },
9624 "lcid": {
9625 "version": "1.0.0",
9626 "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
9627 "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
9628 "dev": true,
9629 "requires": {
9630 "invert-kv": "^1.0.0"
9631 }
9632 },
9633 "load-json-file": {
9634 "version": "1.1.0",
9635 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
9636 "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
9637 "dev": true,
9638 "requires": {
9639 "graceful-fs": "^4.1.2",
9640 "parse-json": "^2.2.0",
9641 "pify": "^2.0.0",
9642 "pinkie-promise": "^2.0.0",
9643 "strip-bom": "^2.0.0"
9644 }
9645 },
9646 "os-locale": {
9647 "version": "1.4.0",
9648 "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
9649 "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
9650 "dev": true,
9651 "requires": {
9652 "lcid": "^1.0.0"
9653 }
9654 },
9655 "parse-json": {
9656 "version": "2.2.0",
9657 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
9658 "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
9659 "dev": true,
9660 "requires": {
9661 "error-ex": "^1.2.0"
9662 }
9663 },
9664 "path-exists": {
9665 "version": "2.1.0",
9666 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
9667 "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
9668 "dev": true,
9669 "requires": {
9670 "pinkie-promise": "^2.0.0"
9671 }
9672 },
9673 "path-type": {
9674 "version": "1.1.0",
9675 "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
9676 "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
9677 "dev": true,
9678 "requires": {
9679 "graceful-fs": "^4.1.2",
9680 "pify": "^2.0.0",
9681 "pinkie-promise": "^2.0.0"
9682 }
9683 },
9684 "pify": {
9685 "version": "2.3.0",
9686 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
9687 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
9688 "dev": true
9689 },
9690 "read-pkg": {
9691 "version": "1.1.0",
9692 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
9693 "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
9694 "dev": true,
9695 "requires": {
9696 "load-json-file": "^1.0.0",
9697 "normalize-package-data": "^2.3.2",
9698 "path-type": "^1.0.0"
9699 }
9700 },
9701 "read-pkg-up": {
9702 "version": "1.0.1",
9703 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
9704 "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
9705 "dev": true,
9706 "requires": {
9707 "find-up": "^1.0.0",
9708 "read-pkg": "^1.0.0"
9709 }
9710 },
9711 "string-width": {
9712 "version": "1.0.2",
9713 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
9714 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
9715 "dev": true,
9716 "requires": {
9717 "code-point-at": "^1.0.0",
9718 "is-fullwidth-code-point": "^1.0.0",
9719 "strip-ansi": "^3.0.0"
9720 }
9721 },
9722 "strip-ansi": {
9723 "version": "3.0.1",
9724 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
9725 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
9726 "dev": true,
9727 "requires": {
9728 "ansi-regex": "^2.0.0"
9729 }
9730 },
9731 "strip-bom": {
9732 "version": "2.0.0",
9733 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
9734 "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
9735 "dev": true,
9736 "requires": {
9737 "is-utf8": "^0.2.0"
9738 }
9739 },
9740 "which-module": {
9741 "version": "1.0.0",
9742 "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
9743 "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
9744 "dev": true
9745 },
9746 "y18n": {
9747 "version": "3.2.1",
9748 "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
9749 "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
9750 "dev": true
9751 },
9752 "yargs": {
9753 "version": "7.1.0",
9754 "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
9755 "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
9756 "dev": true,
9757 "requires": {
9758 "camelcase": "^3.0.0",
9759 "cliui": "^3.2.0",
9760 "decamelize": "^1.1.1",
9761 "get-caller-file": "^1.0.1",
9762 "os-locale": "^1.4.0",
9763 "read-pkg-up": "^1.0.1",
9764 "require-directory": "^2.1.1",
9765 "require-main-filename": "^1.0.1",
9766 "set-blocking": "^2.0.0",
9767 "string-width": "^1.0.2",
9768 "which-module": "^1.0.0",
9769 "y18n": "^3.2.1",
9770 "yargs-parser": "^5.0.0"
9771 }
9772 },
9773 "yargs-parser": {
9774 "version": "5.0.0",
9775 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
9776 "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
9777 "dev": true,
9778 "requires": {
9779 "camelcase": "^3.0.0"
9780 }
7226 } 9781 }
7227 } 9782 }
7228 }, 9783 },
@@ -7242,6 +9797,7 @@
7242 "version": "1.2.2", 9797 "version": "1.2.2",
7243 "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-1.2.2.tgz", 9798 "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-1.2.2.tgz",
7244 "integrity": "sha1-c5Le9jFsbnk5pPKW8/VAFRrjonU=", 9799 "integrity": "sha1-c5Le9jFsbnk5pPKW8/VAFRrjonU=",
9800 "dev": true,
7245 "requires": { 9801 "requires": {
7246 "archy": "^1.0.0", 9802 "archy": "^1.0.0",
7247 "chalk": "^1.1.0", 9803 "chalk": "^1.1.0",
@@ -7263,10 +9819,23 @@
7263 "yargs": "^3.28.0" 9819 "yargs": "^3.28.0"
7264 }, 9820 },
7265 "dependencies": { 9821 "dependencies": {
9822 "ansi-regex": {
9823 "version": "2.1.1",
9824 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
9825 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
9826 "dev": true
9827 },
9828 "ansi-styles": {
9829 "version": "2.2.1",
9830 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
9831 "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
9832 "dev": true
9833 },
7266 "arr-diff": { 9834 "arr-diff": {
7267 "version": "2.0.0", 9835 "version": "2.0.0",
7268 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 9836 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
7269 "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 9837 "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
9838 "dev": true,
7270 "requires": { 9839 "requires": {
7271 "arr-flatten": "^1.0.1" 9840 "arr-flatten": "^1.0.1"
7272 } 9841 }
@@ -7274,12 +9843,14 @@
7274 "array-unique": { 9843 "array-unique": {
7275 "version": "0.2.1", 9844 "version": "0.2.1",
7276 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 9845 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
7277 "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" 9846 "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
9847 "dev": true
7278 }, 9848 },
7279 "braces": { 9849 "braces": {
7280 "version": "1.8.5", 9850 "version": "1.8.5",
7281 "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 9851 "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
7282 "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 9852 "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
9853 "dev": true,
7283 "requires": { 9854 "requires": {
7284 "expand-range": "^1.8.1", 9855 "expand-range": "^1.8.1",
7285 "preserve": "^0.2.0", 9856 "preserve": "^0.2.0",
@@ -7289,12 +9860,38 @@
7289 "camelcase": { 9860 "camelcase": {
7290 "version": "2.1.1", 9861 "version": "2.1.1",
7291 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 9862 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
7292 "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" 9863 "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
9864 "dev": true
9865 },
9866 "chalk": {
9867 "version": "1.1.3",
9868 "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
9869 "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
9870 "dev": true,
9871 "requires": {
9872 "ansi-styles": "^2.2.1",
9873 "escape-string-regexp": "^1.0.2",
9874 "has-ansi": "^2.0.0",
9875 "strip-ansi": "^3.0.0",
9876 "supports-color": "^2.0.0"
9877 }
9878 },
9879 "cliui": {
9880 "version": "3.2.0",
9881 "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
9882 "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
9883 "dev": true,
9884 "requires": {
9885 "string-width": "^1.0.1",
9886 "strip-ansi": "^3.0.1",
9887 "wrap-ansi": "^2.0.0"
9888 }
7293 }, 9889 },
7294 "expand-brackets": { 9890 "expand-brackets": {
7295 "version": "0.1.5", 9891 "version": "0.1.5",
7296 "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 9892 "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
7297 "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 9893 "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
9894 "dev": true,
7298 "requires": { 9895 "requires": {
7299 "is-posix-bracket": "^0.1.0" 9896 "is-posix-bracket": "^0.1.0"
7300 } 9897 }
@@ -7303,6 +9900,7 @@
7303 "version": "0.3.2", 9900 "version": "0.3.2",
7304 "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 9901 "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
7305 "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 9902 "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
9903 "dev": true,
7306 "requires": { 9904 "requires": {
7307 "is-extglob": "^1.0.0" 9905 "is-extglob": "^1.0.0"
7308 } 9906 }
@@ -7311,6 +9909,7 @@
7311 "version": "0.3.0", 9909 "version": "0.3.0",
7312 "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", 9910 "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
7313 "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", 9911 "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
9912 "dev": true,
7314 "requires": { 9913 "requires": {
7315 "glob": "~5.0.0" 9914 "glob": "~5.0.0"
7316 } 9915 }
@@ -7319,6 +9918,7 @@
7319 "version": "5.0.15", 9918 "version": "5.0.15",
7320 "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 9919 "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
7321 "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 9920 "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
9921 "dev": true,
7322 "requires": { 9922 "requires": {
7323 "inflight": "^1.0.4", 9923 "inflight": "^1.0.4",
7324 "inherits": "2", 9924 "inherits": "2",
@@ -7327,15 +9927,32 @@
7327 "path-is-absolute": "^1.0.0" 9927 "path-is-absolute": "^1.0.0"
7328 } 9928 }
7329 }, 9929 },
9930 "invert-kv": {
9931 "version": "1.0.0",
9932 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
9933 "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
9934 "dev": true
9935 },
7330 "is-extglob": { 9936 "is-extglob": {
7331 "version": "1.0.0", 9937 "version": "1.0.0",
7332 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 9938 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
7333 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" 9939 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
9940 "dev": true
9941 },
9942 "is-fullwidth-code-point": {
9943 "version": "1.0.0",
9944 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
9945 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
9946 "dev": true,
9947 "requires": {
9948 "number-is-nan": "^1.0.0"
9949 }
7334 }, 9950 },
7335 "is-glob": { 9951 "is-glob": {
7336 "version": "2.0.1", 9952 "version": "2.0.1",
7337 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 9953 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
7338 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 9954 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
9955 "dev": true,
7339 "requires": { 9956 "requires": {
7340 "is-extglob": "^1.0.0" 9957 "is-extglob": "^1.0.0"
7341 } 9958 }
@@ -7344,14 +9961,25 @@
7344 "version": "3.2.2", 9961 "version": "3.2.2",
7345 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 9962 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
7346 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 9963 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
9964 "dev": true,
7347 "requires": { 9965 "requires": {
7348 "is-buffer": "^1.1.5" 9966 "is-buffer": "^1.1.5"
7349 } 9967 }
7350 }, 9968 },
9969 "lcid": {
9970 "version": "1.0.0",
9971 "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
9972 "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
9973 "dev": true,
9974 "requires": {
9975 "invert-kv": "^1.0.0"
9976 }
9977 },
7351 "matchdep": { 9978 "matchdep": {
7352 "version": "1.0.1", 9979 "version": "1.0.1",
7353 "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-1.0.1.tgz", 9980 "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-1.0.1.tgz",
7354 "integrity": "sha1-pXozgESR+64girqPaDgEN6vC3KU=", 9981 "integrity": "sha1-pXozgESR+64girqPaDgEN6vC3KU=",
9982 "dev": true,
7355 "requires": { 9983 "requires": {
7356 "findup-sync": "~0.3.0", 9984 "findup-sync": "~0.3.0",
7357 "micromatch": "^2.3.7", 9985 "micromatch": "^2.3.7",
@@ -7363,6 +9991,7 @@
7363 "version": "2.3.11", 9991 "version": "2.3.11",
7364 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 9992 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
7365 "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 9993 "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
9994 "dev": true,
7366 "requires": { 9995 "requires": {
7367 "arr-diff": "^2.0.0", 9996 "arr-diff": "^2.0.0",
7368 "array-unique": "^0.2.1", 9997 "array-unique": "^0.2.1",
@@ -7379,28 +10008,82 @@
7379 "regex-cache": "^0.4.2" 10008 "regex-cache": "^0.4.2"
7380 } 10009 }
7381 }, 10010 },
10011 "os-locale": {
10012 "version": "1.4.0",
10013 "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
10014 "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
10015 "dev": true,
10016 "requires": {
10017 "lcid": "^1.0.0"
10018 }
10019 },
10020 "readable-stream": {
10021 "version": "1.0.34",
10022 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
10023 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
10024 "requires": {
10025 "core-util-is": "~1.0.0",
10026 "inherits": "~2.0.1"
10027 }
10028 },
7382 "resolve": { 10029 "resolve": {
7383 "version": "1.1.7", 10030 "version": "1.1.7",
7384 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 10031 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
7385 "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" 10032 "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
10033 "dev": true
7386 }, 10034 },
7387 "stack-trace": { 10035 "stack-trace": {
7388 "version": "0.0.9", 10036 "version": "0.0.9",
7389 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", 10037 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz",
7390 "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=" 10038 "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=",
10039 "dev": true
10040 },
10041 "string-width": {
10042 "version": "1.0.2",
10043 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
10044 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
10045 "dev": true,
10046 "requires": {
10047 "code-point-at": "^1.0.0",
10048 "is-fullwidth-code-point": "^1.0.0",
10049 "strip-ansi": "^3.0.0"
10050 }
10051 },
10052 "strip-ansi": {
10053 "version": "3.0.1",
10054 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
10055 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
10056 "dev": true,
10057 "requires": {
10058 "ansi-regex": "^2.0.0"
10059 }
10060 },
10061 "supports-color": {
10062 "version": "2.0.0",
10063 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
10064 "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
10065 "dev": true
7391 }, 10066 },
7392 "v8flags": { 10067 "v8flags": {
7393 "version": "2.1.1", 10068 "version": "2.1.1",
7394 "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 10069 "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
7395 "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 10070 "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
10071 "dev": true,
7396 "requires": { 10072 "requires": {
7397 "user-home": "^1.1.1" 10073 "user-home": "^1.1.1"
7398 } 10074 }
7399 }, 10075 },
10076 "y18n": {
10077 "version": "3.2.1",
10078 "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
10079 "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
10080 "dev": true
10081 },
7400 "yargs": { 10082 "yargs": {
7401 "version": "3.32.0", 10083 "version": "3.32.0",
7402 "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", 10084 "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
7403 "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", 10085 "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
10086 "dev": true,
7404 "requires": { 10087 "requires": {
7405 "camelcase": "^2.0.1", 10088 "camelcase": "^2.0.1",
7406 "cliui": "^3.0.3", 10089 "cliui": "^3.0.3",
@@ -7427,61 +10110,15 @@
7427 "strip-ansi": "^4.0.0", 10110 "strip-ansi": "^4.0.0",
7428 "through2": "^2.0.0", 10111 "through2": "^2.0.0",
7429 "vinyl-sourcemaps-apply": "^0.2.0" 10112 "vinyl-sourcemaps-apply": "^0.2.0"
7430 },
7431 "dependencies": {
7432 "ansi-regex": {
7433 "version": "3.0.0",
7434 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
7435 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
7436 "dev": true
7437 },
7438 "ansi-styles": {
7439 "version": "3.2.1",
7440 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
7441 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
7442 "dev": true,
7443 "requires": {
7444 "color-convert": "^1.9.0"
7445 }
7446 },
7447 "chalk": {
7448 "version": "2.4.1",
7449 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
7450 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
7451 "dev": true,
7452 "requires": {
7453 "ansi-styles": "^3.2.1",
7454 "escape-string-regexp": "^1.0.5",
7455 "supports-color": "^5.3.0"
7456 }
7457 },
7458 "strip-ansi": {
7459 "version": "4.0.0",
7460 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
7461 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
7462 "dev": true,
7463 "requires": {
7464 "ansi-regex": "^3.0.0"
7465 }
7466 },
7467 "supports-color": {
7468 "version": "5.5.0",
7469 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
7470 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
7471 "dev": true,
7472 "requires": {
7473 "has-flag": "^3.0.0"
7474 }
7475 }
7476 } 10113 }
7477 }, 10114 },
7478 "gulp-sass-variables": { 10115 "gulp-sass-variables": {
7479 "version": "1.2.0", 10116 "version": "1.1.1",
7480 "resolved": "https://registry.npmjs.org/gulp-sass-variables/-/gulp-sass-variables-1.2.0.tgz", 10117 "resolved": "https://registry.npmjs.org/gulp-sass-variables/-/gulp-sass-variables-1.1.1.tgz",
7481 "integrity": "sha512-xdRyM/OXlRLcK2rN4K7cucc/5eHoqS1MLgAI79tW5gRYAdxF8pYX7Zuj89zu4RchX9nr2Yu/jIC146V/6w7TnA==", 10118 "integrity": "sha1-lZIVkPihuEpofryz7Lwwp0vO9E0=",
7482 "dev": true, 10119 "dev": true,
7483 "requires": { 10120 "requires": {
7484 "plugin-error": "^1.0.1", 10121 "gulp-util": "^3.0.7",
7485 "through2": "^2.0.1" 10122 "through2": "^2.0.1"
7486 } 10123 }
7487 }, 10124 },
@@ -7619,7 +10256,7 @@
7619 }, 10256 },
7620 "lodash": { 10257 "lodash": {
7621 "version": "1.0.2", 10258 "version": "1.0.2",
7622 "resolved": "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", 10259 "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
7623 "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", 10260 "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
7624 "dev": true 10261 "dev": true
7625 }, 10262 },
@@ -7679,7 +10316,7 @@
7679 }, 10316 },
7680 "readable-stream": { 10317 "readable-stream": {
7681 "version": "1.0.34", 10318 "version": "1.0.34",
7682 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 10319 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
7683 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 10320 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
7684 "dev": true, 10321 "dev": true,
7685 "requires": { 10322 "requires": {
@@ -7766,6 +10403,11 @@
7766 "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", 10403 "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz",
7767 "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", 10404 "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=",
7768 "dev": true 10405 "dev": true
10406 },
10407 "yallist": {
10408 "version": "3.0.2",
10409 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
10410 "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
7769 } 10411 }
7770 } 10412 }
7771 }, 10413 },
@@ -7795,18 +10437,70 @@
7795 "vinyl": "^0.5.0" 10437 "vinyl": "^0.5.0"
7796 }, 10438 },
7797 "dependencies": { 10439 "dependencies": {
7798 "clone": { 10440 "ansi-regex": {
7799 "version": "1.0.4", 10441 "version": "2.1.1",
7800 "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 10442 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
7801 "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", 10443 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
10444 "dev": true
10445 },
10446 "ansi-styles": {
10447 "version": "2.2.1",
10448 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
10449 "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
7802 "dev": true 10450 "dev": true
7803 }, 10451 },
10452 "chalk": {
10453 "version": "1.1.3",
10454 "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
10455 "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
10456 "dev": true,
10457 "requires": {
10458 "ansi-styles": "^2.2.1",
10459 "escape-string-regexp": "^1.0.2",
10460 "has-ansi": "^2.0.0",
10461 "strip-ansi": "^3.0.0",
10462 "supports-color": "^2.0.0"
10463 }
10464 },
7804 "clone-stats": { 10465 "clone-stats": {
7805 "version": "0.0.1", 10466 "version": "0.0.1",
7806 "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 10467 "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
7807 "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", 10468 "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
7808 "dev": true 10469 "dev": true
7809 }, 10470 },
10471 "dateformat": {
10472 "version": "2.2.0",
10473 "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
10474 "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
10475 "dev": true
10476 },
10477 "lodash.template": {
10478 "version": "3.6.2",
10479 "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
10480 "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
10481 "dev": true,
10482 "requires": {
10483 "lodash._basecopy": "^3.0.0",
10484 "lodash._basetostring": "^3.0.0",
10485 "lodash._basevalues": "^3.0.0",
10486 "lodash._isiterateecall": "^3.0.0",
10487 "lodash._reinterpolate": "^3.0.0",
10488 "lodash.escape": "^3.0.0",
10489 "lodash.keys": "^3.0.0",
10490 "lodash.restparam": "^3.0.0",
10491 "lodash.templatesettings": "^3.0.0"
10492 }
10493 },
10494 "lodash.templatesettings": {
10495 "version": "3.1.1",
10496 "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
10497 "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
10498 "dev": true,
10499 "requires": {
10500 "lodash._reinterpolate": "^3.0.0",
10501 "lodash.escape": "^3.0.0"
10502 }
10503 },
7810 "object-assign": { 10504 "object-assign": {
7811 "version": "3.0.0", 10505 "version": "3.0.0",
7812 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 10506 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
@@ -7819,6 +10513,21 @@
7819 "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", 10513 "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
7820 "dev": true 10514 "dev": true
7821 }, 10515 },
10516 "strip-ansi": {
10517 "version": "3.0.1",
10518 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
10519 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
10520 "dev": true,
10521 "requires": {
10522 "ansi-regex": "^2.0.0"
10523 }
10524 },
10525 "supports-color": {
10526 "version": "2.0.0",
10527 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
10528 "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
10529 "dev": true
10530 },
7822 "vinyl": { 10531 "vinyl": {
7823 "version": "0.5.3", 10532 "version": "0.5.3",
7824 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", 10533 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
@@ -7836,14 +10545,21 @@
7836 "version": "1.0.0", 10545 "version": "1.0.0",
7837 "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 10546 "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
7838 "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", 10547 "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
10548 "dev": true,
7839 "requires": { 10549 "requires": {
7840 "glogg": "^1.0.0" 10550 "glogg": "^1.0.0"
7841 } 10551 }
7842 }, 10552 },
10553 "handle-thing": {
10554 "version": "2.0.0",
10555 "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
10556 "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
10557 "dev": true
10558 },
7843 "handlebars": { 10559 "handlebars": {
7844 "version": "4.0.12", 10560 "version": "4.1.0",
7845 "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", 10561 "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz",
7846 "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", 10562 "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==",
7847 "dev": true, 10563 "dev": true,
7848 "requires": { 10564 "requires": {
7849 "async": "^2.5.0", 10565 "async": "^2.5.0",
@@ -7860,12 +10576,6 @@
7860 "requires": { 10576 "requires": {
7861 "lodash": "^4.17.10" 10577 "lodash": "^4.17.10"
7862 } 10578 }
7863 },
7864 "source-map": {
7865 "version": "0.6.1",
7866 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
7867 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
7868 "dev": true
7869 } 10579 }
7870 } 10580 }
7871 }, 10581 },
@@ -7876,12 +10586,12 @@
7876 "dev": true 10586 "dev": true
7877 }, 10587 },
7878 "har-validator": { 10588 "har-validator": {
7879 "version": "5.1.0", 10589 "version": "5.1.3",
7880 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", 10590 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
7881 "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", 10591 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
7882 "dev": true, 10592 "dev": true,
7883 "requires": { 10593 "requires": {
7884 "ajv": "^5.3.0", 10594 "ajv": "^6.5.5",
7885 "har-schema": "^2.0.0" 10595 "har-schema": "^2.0.0"
7886 } 10596 }
7887 }, 10597 },
@@ -7898,8 +10608,17 @@
7898 "version": "2.0.0", 10608 "version": "2.0.0",
7899 "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 10609 "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
7900 "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 10610 "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
10611 "dev": true,
7901 "requires": { 10612 "requires": {
7902 "ansi-regex": "^2.0.0" 10613 "ansi-regex": "^2.0.0"
10614 },
10615 "dependencies": {
10616 "ansi-regex": {
10617 "version": "2.1.1",
10618 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
10619 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
10620 "dev": true
10621 }
7903 } 10622 }
7904 }, 10623 },
7905 "has-binary": { 10624 "has-binary": {
@@ -7956,6 +10675,7 @@
7956 "version": "1.0.0", 10675 "version": "1.0.0",
7957 "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 10676 "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
7958 "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 10677 "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
10678 "dev": true,
7959 "requires": { 10679 "requires": {
7960 "get-value": "^2.0.6", 10680 "get-value": "^2.0.6",
7961 "has-values": "^1.0.0", 10681 "has-values": "^1.0.0",
@@ -7966,6 +10686,7 @@
7966 "version": "1.0.0", 10686 "version": "1.0.0",
7967 "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 10687 "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
7968 "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 10688 "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
10689 "dev": true,
7969 "requires": { 10690 "requires": {
7970 "is-number": "^3.0.0", 10691 "is-number": "^3.0.0",
7971 "kind-of": "^4.0.0" 10692 "kind-of": "^4.0.0"
@@ -7975,12 +10696,39 @@
7975 "version": "4.0.0", 10696 "version": "4.0.0",
7976 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 10697 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
7977 "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 10698 "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
10699 "dev": true,
7978 "requires": { 10700 "requires": {
7979 "is-buffer": "^1.1.5" 10701 "is-buffer": "^1.1.5"
7980 } 10702 }
7981 } 10703 }
7982 } 10704 }
7983 }, 10705 },
10706 "hash-base": {
10707 "version": "3.0.4",
10708 "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
10709 "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
10710 "dev": true,
10711 "requires": {
10712 "inherits": "^2.0.1",
10713 "safe-buffer": "^5.0.1"
10714 }
10715 },
10716 "hash.js": {
10717 "version": "1.1.7",
10718 "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
10719 "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
10720 "dev": true,
10721 "requires": {
10722 "inherits": "^2.0.3",
10723 "minimalistic-assert": "^1.0.1"
10724 }
10725 },
10726 "he": {
10727 "version": "1.2.0",
10728 "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
10729 "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
10730 "dev": true
10731 },
7984 "hex-rgb": { 10732 "hex-rgb": {
7985 "version": "3.0.0", 10733 "version": "3.0.0",
7986 "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-3.0.0.tgz", 10734 "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-3.0.0.tgz",
@@ -8003,15 +10751,30 @@
8003 "warning": "^3.0.0" 10751 "warning": "^3.0.0"
8004 } 10752 }
8005 }, 10753 },
10754 "hmac-drbg": {
10755 "version": "1.0.1",
10756 "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
10757 "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
10758 "dev": true,
10759 "requires": {
10760 "hash.js": "^1.0.3",
10761 "minimalistic-assert": "^1.0.0",
10762 "minimalistic-crypto-utils": "^1.0.1"
10763 }
10764 },
8006 "hoek": { 10765 "hoek": {
8007 "version": "2.16.3", 10766 "version": "2.16.3",
8008 "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", 10767 "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
8009 "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" 10768 "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
10769 "dev": true
8010 }, 10770 },
8011 "hoist-non-react-statics": { 10771 "hoist-non-react-statics": {
8012 "version": "2.5.5", 10772 "version": "3.3.0",
8013 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", 10773 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
8014 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" 10774 "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
10775 "requires": {
10776 "react-is": "^16.7.0"
10777 }
8015 }, 10778 },
8016 "home-or-tmp": { 10779 "home-or-tmp": {
8017 "version": "3.0.0", 10780 "version": "3.0.0",
@@ -8023,6 +10786,7 @@
8023 "version": "1.0.1", 10786 "version": "1.0.1",
8024 "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", 10787 "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
8025 "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", 10788 "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
10789 "dev": true,
8026 "requires": { 10790 "requires": {
8027 "parse-passwd": "^1.0.0" 10791 "parse-passwd": "^1.0.0"
8028 } 10792 }
@@ -8030,9 +10794,103 @@
8030 "hosted-git-info": { 10794 "hosted-git-info": {
8031 "version": "2.7.1", 10795 "version": "2.7.1",
8032 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", 10796 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
8033 "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", 10797 "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
10798 },
10799 "hpack.js": {
10800 "version": "2.1.6",
10801 "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
10802 "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
10803 "dev": true,
10804 "requires": {
10805 "inherits": "^2.0.1",
10806 "obuf": "^1.0.0",
10807 "readable-stream": "^2.0.1",
10808 "wbuf": "^1.1.0"
10809 },
10810 "dependencies": {
10811 "readable-stream": {
10812 "version": "2.3.6",
10813 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
10814 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
10815 "dev": true,
10816 "requires": {
10817 "core-util-is": "~1.0.0",
10818 "inherits": "~2.0.3",
10819 "isarray": "~1.0.0",
10820 "process-nextick-args": "~2.0.0",
10821 "safe-buffer": "~5.1.1",
10822 "string_decoder": "~1.1.1",
10823 "util-deprecate": "~1.0.1"
10824 }
10825 },
10826 "string_decoder": {
10827 "version": "1.1.1",
10828 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
10829 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
10830 "dev": true,
10831 "requires": {
10832 "safe-buffer": "~5.1.0"
10833 }
10834 }
10835 }
10836 },
10837 "html-element-attributes": {
10838 "version": "1.3.1",
10839 "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz",
10840 "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA=="
10841 },
10842 "html-encoding-sniffer": {
10843 "version": "1.0.2",
10844 "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
10845 "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
10846 "dev": true,
10847 "requires": {
10848 "whatwg-encoding": "^1.0.1"
10849 }
10850 },
10851 "html-entities": {
10852 "version": "1.2.1",
10853 "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
10854 "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
8034 "dev": true 10855 "dev": true
8035 }, 10856 },
10857 "html-minifier": {
10858 "version": "3.5.21",
10859 "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
10860 "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
10861 "dev": true,
10862 "requires": {
10863 "camel-case": "3.0.x",
10864 "clean-css": "4.2.x",
10865 "commander": "2.17.x",
10866 "he": "1.2.x",
10867 "param-case": "2.1.x",
10868 "relateurl": "0.2.x",
10869 "uglify-js": "3.4.x"
10870 },
10871 "dependencies": {
10872 "commander": {
10873 "version": "2.17.1",
10874 "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
10875 "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
10876 "dev": true
10877 }
10878 }
10879 },
10880 "html-webpack-plugin": {
10881 "version": "4.0.0-beta.5",
10882 "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz",
10883 "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==",
10884 "dev": true,
10885 "requires": {
10886 "html-minifier": "^3.5.20",
10887 "loader-utils": "^1.1.0",
10888 "lodash": "^4.17.11",
10889 "pretty-error": "^2.1.1",
10890 "tapable": "^1.1.0",
10891 "util.promisify": "1.0.0"
10892 }
10893 },
8036 "htmlparser2": { 10894 "htmlparser2": {
8037 "version": "3.10.0", 10895 "version": "3.10.0",
8038 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", 10896 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz",
@@ -8044,20 +10902,98 @@
8044 "entities": "^1.1.1", 10902 "entities": "^1.1.1",
8045 "inherits": "^2.0.1", 10903 "inherits": "^2.0.1",
8046 "readable-stream": "^3.0.6" 10904 "readable-stream": "^3.0.6"
10905 }
10906 },
10907 "http-cache-semantics": {
10908 "version": "3.8.1",
10909 "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
10910 "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
10911 "dev": true
10912 },
10913 "http-deceiver": {
10914 "version": "1.2.7",
10915 "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
10916 "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
10917 "dev": true
10918 },
10919 "http-errors": {
10920 "version": "1.6.3",
10921 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
10922 "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
10923 "dev": true,
10924 "requires": {
10925 "depd": "~1.1.2",
10926 "inherits": "2.0.3",
10927 "setprototypeof": "1.1.0",
10928 "statuses": ">= 1.4.0 < 2"
8047 }, 10929 },
8048 "dependencies": { 10930 "dependencies": {
8049 "readable-stream": { 10931 "depd": {
8050 "version": "3.0.6", 10932 "version": "1.1.2",
8051 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz", 10933 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
8052 "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==", 10934 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
10935 "dev": true
10936 }
10937 }
10938 },
10939 "http-parser-js": {
10940 "version": "0.5.0",
10941 "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
10942 "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==",
10943 "dev": true
10944 },
10945 "http-proxy": {
10946 "version": "1.17.0",
10947 "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
10948 "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
10949 "dev": true,
10950 "requires": {
10951 "eventemitter3": "^3.0.0",
10952 "follow-redirects": "^1.0.0",
10953 "requires-port": "^1.0.0"
10954 }
10955 },
10956 "http-proxy-agent": {
10957 "version": "2.1.0",
10958 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
10959 "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
10960 "dev": true,
10961 "requires": {
10962 "agent-base": "4",
10963 "debug": "3.1.0"
10964 },
10965 "dependencies": {
10966 "debug": {
10967 "version": "3.1.0",
10968 "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
10969 "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
10970 "dev": true,
8053 "requires": { 10971 "requires": {
8054 "inherits": "^2.0.3", 10972 "ms": "2.0.0"
8055 "string_decoder": "^1.1.1", 10973 },
8056 "util-deprecate": "^1.0.1" 10974 "dependencies": {
10975 "ms": {
10976 "version": "2.0.0",
10977 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
10978 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
10979 "dev": true
10980 }
8057 } 10981 }
8058 } 10982 }
8059 } 10983 }
8060 }, 10984 },
10985 "http-proxy-middleware": {
10986 "version": "0.18.0",
10987 "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
10988 "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
10989 "dev": true,
10990 "requires": {
10991 "http-proxy": "^1.16.2",
10992 "is-glob": "^4.0.0",
10993 "lodash": "^4.17.5",
10994 "micromatch": "^3.1.9"
10995 }
10996 },
8061 "http-signature": { 10997 "http-signature": {
8062 "version": "1.2.0", 10998 "version": "1.2.0",
8063 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 10999 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -8069,9 +11005,51 @@
8069 "sshpk": "^1.7.0" 11005 "sshpk": "^1.7.0"
8070 } 11006 }
8071 }, 11007 },
11008 "https-browserify": {
11009 "version": "1.0.0",
11010 "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
11011 "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
11012 "dev": true
11013 },
11014 "https-proxy-agent": {
11015 "version": "2.2.1",
11016 "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
11017 "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
11018 "dev": true,
11019 "requires": {
11020 "agent-base": "^4.1.0",
11021 "debug": "^3.1.0"
11022 },
11023 "dependencies": {
11024 "debug": {
11025 "version": "3.2.6",
11026 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
11027 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
11028 "dev": true,
11029 "requires": {
11030 "ms": "^2.1.1"
11031 }
11032 },
11033 "ms": {
11034 "version": "2.1.1",
11035 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
11036 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
11037 "dev": true
11038 }
11039 }
11040 },
11041 "humanize-ms": {
11042 "version": "1.2.1",
11043 "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
11044 "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
11045 "dev": true,
11046 "requires": {
11047 "ms": "^2.0.0"
11048 }
11049 },
8072 "hunspell-asm": { 11050 "hunspell-asm": {
8073 "version": "1.0.2", 11051 "version": "1.0.2",
8074 "resolved": "http://registry.npmjs.org/hunspell-asm/-/hunspell-asm-1.0.2.tgz", 11052 "resolved": "https://registry.npmjs.org/hunspell-asm/-/hunspell-asm-1.0.2.tgz",
8075 "integrity": "sha512-UTLBvc0yZiIcHl9qrgxnFTZbX3zF4CprzEY+u+N0iXlUKZnUJRIgvgppTdgiQTsucm5b0aN/rHsgXz2q/0kBRA==", 11053 "integrity": "sha512-UTLBvc0yZiIcHl9qrgxnFTZbX3zF4CprzEY+u+N0iXlUKZnUJRIgvgppTdgiQTsucm5b0aN/rHsgXz2q/0kBRA==",
8076 "requires": { 11054 "requires": {
8077 "emscripten-wasm-loader": "^1.0.0", 11055 "emscripten-wasm-loader": "^1.0.0",
@@ -8081,16 +11059,16 @@
8081 } 11059 }
8082 }, 11060 },
8083 "husky": { 11061 "husky": {
8084 "version": "1.1.4", 11062 "version": "1.3.1",
8085 "resolved": "https://registry.npmjs.org/husky/-/husky-1.1.4.tgz", 11063 "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz",
8086 "integrity": "sha512-cZjGpS7qsaBSo3fOMUuR7erQloX3l5XzL1v/RkIqU6zrQImDdU70z5Re9fGDp7+kbYlM2EtS4aYMlahBeiCUGw==", 11064 "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==",
8087 "dev": true, 11065 "dev": true,
8088 "requires": { 11066 "requires": {
8089 "cosmiconfig": "^5.0.6", 11067 "cosmiconfig": "^5.0.7",
8090 "execa": "^1.0.0", 11068 "execa": "^1.0.0",
8091 "find-up": "^3.0.0", 11069 "find-up": "^3.0.0",
8092 "get-stdin": "^6.0.0", 11070 "get-stdin": "^6.0.0",
8093 "is-ci": "^1.2.1", 11071 "is-ci": "^2.0.0",
8094 "pkg-dir": "^3.0.0", 11072 "pkg-dir": "^3.0.0",
8095 "please-upgrade-node": "^3.1.1", 11073 "please-upgrade-node": "^3.1.1",
8096 "read-pkg": "^4.0.1", 11074 "read-pkg": "^4.0.1",
@@ -8098,101 +11076,12 @@
8098 "slash": "^2.0.0" 11076 "slash": "^2.0.0"
8099 }, 11077 },
8100 "dependencies": { 11078 "dependencies": {
8101 "execa": {
8102 "version": "1.0.0",
8103 "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
8104 "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
8105 "dev": true,
8106 "requires": {
8107 "cross-spawn": "^6.0.0",
8108 "get-stream": "^4.0.0",
8109 "is-stream": "^1.1.0",
8110 "npm-run-path": "^2.0.0",
8111 "p-finally": "^1.0.0",
8112 "signal-exit": "^3.0.0",
8113 "strip-eof": "^1.0.0"
8114 }
8115 },
8116 "find-up": {
8117 "version": "3.0.0",
8118 "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
8119 "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
8120 "dev": true,
8121 "requires": {
8122 "locate-path": "^3.0.0"
8123 }
8124 },
8125 "get-stdin": { 11079 "get-stdin": {
8126 "version": "6.0.0", 11080 "version": "6.0.0",
8127 "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 11081 "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
8128 "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 11082 "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
8129 "dev": true 11083 "dev": true
8130 }, 11084 },
8131 "get-stream": {
8132 "version": "4.1.0",
8133 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
8134 "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
8135 "dev": true,
8136 "requires": {
8137 "pump": "^3.0.0"
8138 }
8139 },
8140 "locate-path": {
8141 "version": "3.0.0",
8142 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
8143 "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
8144 "dev": true,
8145 "requires": {
8146 "p-locate": "^3.0.0",
8147 "path-exists": "^3.0.0"
8148 }
8149 },
8150 "p-limit": {
8151 "version": "2.0.0",
8152 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
8153 "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
8154 "dev": true,
8155 "requires": {
8156 "p-try": "^2.0.0"
8157 }
8158 },
8159 "p-locate": {
8160 "version": "3.0.0",
8161 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
8162 "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
8163 "dev": true,
8164 "requires": {
8165 "p-limit": "^2.0.0"
8166 }
8167 },
8168 "p-try": {
8169 "version": "2.0.0",
8170 "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
8171 "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
8172 "dev": true
8173 },
8174 "parse-json": {
8175 "version": "4.0.0",
8176 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
8177 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
8178 "dev": true,
8179 "requires": {
8180 "error-ex": "^1.3.1",
8181 "json-parse-better-errors": "^1.0.1"
8182 }
8183 },
8184 "path-exists": {
8185 "version": "3.0.0",
8186 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
8187 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
8188 "dev": true
8189 },
8190 "pify": {
8191 "version": "3.0.0",
8192 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
8193 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
8194 "dev": true
8195 },
8196 "pkg-dir": { 11085 "pkg-dir": {
8197 "version": "3.0.0", 11086 "version": "3.0.0",
8198 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", 11087 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -8201,34 +11090,13 @@
8201 "requires": { 11090 "requires": {
8202 "find-up": "^3.0.0" 11091 "find-up": "^3.0.0"
8203 } 11092 }
8204 },
8205 "pump": {
8206 "version": "3.0.0",
8207 "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
8208 "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
8209 "dev": true,
8210 "requires": {
8211 "end-of-stream": "^1.1.0",
8212 "once": "^1.3.1"
8213 }
8214 },
8215 "read-pkg": {
8216 "version": "4.0.1",
8217 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
8218 "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
8219 "dev": true,
8220 "requires": {
8221 "normalize-package-data": "^2.3.2",
8222 "parse-json": "^4.0.0",
8223 "pify": "^3.0.0"
8224 }
8225 } 11093 }
8226 } 11094 }
8227 }, 11095 },
8228 "hyphenate-style-name": { 11096 "hyphenate-style-name": {
8229 "version": "1.0.2", 11097 "version": "1.0.3",
8230 "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz", 11098 "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz",
8231 "integrity": "sha1-MRYKNpMK2vH8BMYHT360FGXU7Es=" 11099 "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ=="
8232 }, 11100 },
8233 "iconv-lite": { 11101 "iconv-lite": {
8234 "version": "0.4.24", 11102 "version": "0.4.24",
@@ -8238,12 +11106,33 @@
8238 "safer-buffer": ">= 2.1.2 < 3" 11106 "safer-buffer": ">= 2.1.2 < 3"
8239 } 11107 }
8240 }, 11108 },
11109 "ieee754": {
11110 "version": "1.1.12",
11111 "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
11112 "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
11113 "dev": true
11114 },
11115 "iferr": {
11116 "version": "0.1.5",
11117 "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
11118 "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
11119 "dev": true
11120 },
8241 "ignore": { 11121 "ignore": {
8242 "version": "4.0.6", 11122 "version": "4.0.6",
8243 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 11123 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
8244 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 11124 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
8245 "dev": true 11125 "dev": true
8246 }, 11126 },
11127 "ignore-walk": {
11128 "version": "3.0.1",
11129 "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
11130 "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
11131 "dev": true,
11132 "requires": {
11133 "minimatch": "^3.0.4"
11134 }
11135 },
8247 "import-fresh": { 11136 "import-fresh": {
8248 "version": "2.0.0", 11137 "version": "2.0.0",
8249 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", 11138 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
@@ -8277,6 +11166,16 @@
8277 "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", 11166 "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
8278 "dev": true 11167 "dev": true
8279 }, 11168 },
11169 "import-local": {
11170 "version": "1.0.0",
11171 "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
11172 "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==",
11173 "dev": true,
11174 "requires": {
11175 "pkg-dir": "^2.0.0",
11176 "resolve-cwd": "^2.0.0"
11177 }
11178 },
8280 "imurmurhash": { 11179 "imurmurhash": {
8281 "version": "0.1.4", 11180 "version": "0.1.4",
8282 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 11181 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -8289,15 +11188,21 @@
8289 "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", 11188 "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
8290 "dev": true 11189 "dev": true
8291 }, 11190 },
8292 "indent-string": { 11191 "indefinite-observable": {
8293 "version": "2.1.0", 11192 "version": "1.0.2",
8294 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", 11193 "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-1.0.2.tgz",
8295 "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", 11194 "integrity": "sha512-Mps0898zEduHyPhb7UCgNmfzlqNZknVmaFz5qzr0mm04YQ5FGLhAyK/dJ+NaRxGyR6juQXIxh5Ev0xx+qq0nYA==",
8296 "dev": true, 11195 "dev": true,
8297 "requires": { 11196 "requires": {
8298 "repeating": "^2.0.0" 11197 "symbol-observable": "1.2.0"
8299 } 11198 }
8300 }, 11199 },
11200 "indent-string": {
11201 "version": "3.2.0",
11202 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
11203 "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
11204 "dev": true
11205 },
8301 "indexof": { 11206 "indexof": {
8302 "version": "0.0.1", 11207 "version": "0.0.1",
8303 "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 11208 "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
@@ -8308,6 +11213,7 @@
8308 "version": "1.0.6", 11213 "version": "1.0.6",
8309 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 11214 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
8310 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 11215 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
11216 "dev": true,
8311 "requires": { 11217 "requires": {
8312 "once": "^1.3.0", 11218 "once": "^1.3.0",
8313 "wrappy": "1" 11219 "wrappy": "1"
@@ -8321,91 +11227,52 @@
8321 "ini": { 11227 "ini": {
8322 "version": "1.3.5", 11228 "version": "1.3.5",
8323 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 11229 "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
8324 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 11230 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
11231 "dev": true
11232 },
11233 "init-package-json": {
11234 "version": "1.10.3",
11235 "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz",
11236 "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==",
11237 "dev": true,
11238 "requires": {
11239 "glob": "^7.1.1",
11240 "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
11241 "promzard": "^0.3.0",
11242 "read": "~1.0.1",
11243 "read-package-json": "1 || 2",
11244 "semver": "2.x || 3.x || 4 || 5",
11245 "validate-npm-package-license": "^3.0.1",
11246 "validate-npm-package-name": "^3.0.0"
11247 }
8325 }, 11248 },
8326 "inquirer": { 11249 "inquirer": {
8327 "version": "6.2.1", 11250 "version": "6.2.2",
8328 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", 11251 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz",
8329 "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", 11252 "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==",
8330 "dev": true, 11253 "dev": true,
8331 "requires": { 11254 "requires": {
8332 "ansi-escapes": "^3.0.0", 11255 "ansi-escapes": "^3.2.0",
8333 "chalk": "^2.0.0", 11256 "chalk": "^2.4.2",
8334 "cli-cursor": "^2.1.0", 11257 "cli-cursor": "^2.1.0",
8335 "cli-width": "^2.0.0", 11258 "cli-width": "^2.0.0",
8336 "external-editor": "^3.0.0", 11259 "external-editor": "^3.0.3",
8337 "figures": "^2.0.0", 11260 "figures": "^2.0.0",
8338 "lodash": "^4.17.10", 11261 "lodash": "^4.17.11",
8339 "mute-stream": "0.0.7", 11262 "mute-stream": "0.0.7",
8340 "run-async": "^2.2.0", 11263 "run-async": "^2.2.0",
8341 "rxjs": "^6.1.0", 11264 "rxjs": "^6.4.0",
8342 "string-width": "^2.1.0", 11265 "string-width": "^2.1.0",
8343 "strip-ansi": "^5.0.0", 11266 "strip-ansi": "^5.0.0",
8344 "through": "^2.3.6" 11267 "through": "^2.3.6"
8345 }, 11268 },
8346 "dependencies": { 11269 "dependencies": {
8347 "ansi-regex": { 11270 "ansi-regex": {
8348 "version": "3.0.0", 11271 "version": "4.0.0",
8349 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 11272 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
8350 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 11273 "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
8351 "dev": true
8352 },
8353 "ansi-styles": {
8354 "version": "3.2.1",
8355 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
8356 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
8357 "dev": true,
8358 "requires": {
8359 "color-convert": "^1.9.0"
8360 }
8361 },
8362 "chalk": {
8363 "version": "2.4.1",
8364 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
8365 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
8366 "dev": true,
8367 "requires": {
8368 "ansi-styles": "^3.2.1",
8369 "escape-string-regexp": "^1.0.5",
8370 "supports-color": "^5.3.0"
8371 }
8372 },
8373 "is-fullwidth-code-point": {
8374 "version": "2.0.0",
8375 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
8376 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
8377 "dev": true 11274 "dev": true
8378 }, 11275 },
8379 "rxjs": {
8380 "version": "6.3.3",
8381 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
8382 "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
8383 "dev": true,
8384 "requires": {
8385 "tslib": "^1.9.0"
8386 }
8387 },
8388 "string-width": {
8389 "version": "2.1.1",
8390 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
8391 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
8392 "dev": true,
8393 "requires": {
8394 "is-fullwidth-code-point": "^2.0.0",
8395 "strip-ansi": "^4.0.0"
8396 },
8397 "dependencies": {
8398 "strip-ansi": {
8399 "version": "4.0.0",
8400 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
8401 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
8402 "dev": true,
8403 "requires": {
8404 "ansi-regex": "^3.0.0"
8405 }
8406 }
8407 }
8408 },
8409 "strip-ansi": { 11276 "strip-ansi": {
8410 "version": "5.0.0", 11277 "version": "5.0.0",
8411 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", 11278 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
@@ -8413,37 +11280,25 @@
8413 "dev": true, 11280 "dev": true,
8414 "requires": { 11281 "requires": {
8415 "ansi-regex": "^4.0.0" 11282 "ansi-regex": "^4.0.0"
8416 },
8417 "dependencies": {
8418 "ansi-regex": {
8419 "version": "4.0.0",
8420 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
8421 "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
8422 "dev": true
8423 }
8424 }
8425 },
8426 "supports-color": {
8427 "version": "5.5.0",
8428 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
8429 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
8430 "dev": true,
8431 "requires": {
8432 "has-flag": "^3.0.0"
8433 } 11283 }
8434 } 11284 }
8435 } 11285 }
8436 }, 11286 },
8437 "install": { 11287 "internal-ip": {
8438 "version": "0.12.2", 11288 "version": "3.0.1",
8439 "resolved": "https://registry.npmjs.org/install/-/install-0.12.2.tgz", 11289 "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz",
8440 "integrity": "sha512-+7thTb4Rpvs9mnlhHKGZFJbGOO6kyMgy+gg0sgM5vFzIFK0wrCYXqdlaM71Bi289DTuPHf61puMFsaZBcwDIrg==", 11290 "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==",
8441 "dev": true 11291 "dev": true,
11292 "requires": {
11293 "default-gateway": "^2.6.0",
11294 "ipaddr.js": "^1.5.2"
11295 }
8442 }, 11296 },
8443 "interpret": { 11297 "interpret": {
8444 "version": "1.1.0", 11298 "version": "1.2.0",
8445 "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", 11299 "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
8446 "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" 11300 "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
11301 "dev": true
8447 }, 11302 },
8448 "intl-format-cache": { 11303 "intl-format-cache": {
8449 "version": "2.1.0", 11304 "version": "2.1.0",
@@ -8479,14 +11334,39 @@
8479 "loose-envify": "^1.0.0" 11334 "loose-envify": "^1.0.0"
8480 } 11335 }
8481 }, 11336 },
11337 "inversify": {
11338 "version": "5.0.1",
11339 "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.1.tgz",
11340 "integrity": "sha512-Ieh06s48WnEYGcqHepdsJUIJUXpwH5o5vodAX+DK2JA/gjy4EbEcQZxw+uFfzysmKjiLXGYwNG3qDZsKVMcINQ==",
11341 "dev": true
11342 },
8482 "invert-kv": { 11343 "invert-kv": {
8483 "version": "1.0.0", 11344 "version": "2.0.0",
8484 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 11345 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
8485 "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" 11346 "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
11347 "dev": true
11348 },
11349 "ip": {
11350 "version": "1.1.5",
11351 "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
11352 "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
11353 "dev": true
11354 },
11355 "ip-regex": {
11356 "version": "2.1.0",
11357 "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
11358 "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
11359 "dev": true
11360 },
11361 "ipaddr.js": {
11362 "version": "1.8.0",
11363 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
11364 "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
11365 "dev": true
8486 }, 11366 },
8487 "is": { 11367 "is": {
8488 "version": "0.3.0", 11368 "version": "0.3.0",
8489 "resolved": "http://registry.npmjs.org/is/-/is-0.3.0.tgz", 11369 "resolved": "https://registry.npmjs.org/is/-/is-0.3.0.tgz",
8490 "integrity": "sha1-qPcd/IpuKDcWJ/JskpCYxvTV1dc=", 11370 "integrity": "sha1-qPcd/IpuKDcWJ/JskpCYxvTV1dc=",
8491 "dev": true 11371 "dev": true
8492 }, 11372 },
@@ -8494,6 +11374,7 @@
8494 "version": "1.0.0", 11374 "version": "1.0.0",
8495 "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 11375 "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
8496 "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 11376 "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
11377 "dev": true,
8497 "requires": { 11378 "requires": {
8498 "is-relative": "^1.0.0", 11379 "is-relative": "^1.0.0",
8499 "is-windows": "^1.0.1" 11380 "is-windows": "^1.0.1"
@@ -8503,6 +11384,7 @@
8503 "version": "0.1.6", 11384 "version": "0.1.6",
8504 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 11385 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
8505 "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 11386 "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
11387 "dev": true,
8506 "requires": { 11388 "requires": {
8507 "kind-of": "^3.0.2" 11389 "kind-of": "^3.0.2"
8508 }, 11390 },
@@ -8511,6 +11393,7 @@
8511 "version": "3.2.2", 11393 "version": "3.2.2",
8512 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 11394 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
8513 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 11395 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
11396 "dev": true,
8514 "requires": { 11397 "requires": {
8515 "is-buffer": "^1.1.5" 11398 "is-buffer": "^1.1.5"
8516 } 11399 }
@@ -8518,10 +11401,9 @@
8518 } 11401 }
8519 }, 11402 },
8520 "is-arrayish": { 11403 "is-arrayish": {
8521 "version": "0.2.1", 11404 "version": "0.3.2",
8522 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 11405 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
8523 "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 11406 "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
8524 "dev": true
8525 }, 11407 },
8526 "is-binary-path": { 11408 "is-binary-path": {
8527 "version": "1.0.1", 11409 "version": "1.0.1",
@@ -8535,16 +11417,8 @@
8535 "is-buffer": { 11417 "is-buffer": {
8536 "version": "1.1.6", 11418 "version": "1.1.6",
8537 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 11419 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
8538 "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 11420 "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
8539 }, 11421 "dev": true
8540 "is-builtin-module": {
8541 "version": "1.0.0",
8542 "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
8543 "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
8544 "dev": true,
8545 "requires": {
8546 "builtin-modules": "^1.0.0"
8547 }
8548 }, 11422 },
8549 "is-callable": { 11423 "is-callable": {
8550 "version": "1.1.4", 11424 "version": "1.1.4",
@@ -8553,18 +11427,19 @@
8553 "dev": true 11427 "dev": true
8554 }, 11428 },
8555 "is-ci": { 11429 "is-ci": {
8556 "version": "1.2.1", 11430 "version": "2.0.0",
8557 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", 11431 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
8558 "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", 11432 "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
8559 "dev": true, 11433 "dev": true,
8560 "requires": { 11434 "requires": {
8561 "ci-info": "^1.5.0" 11435 "ci-info": "^2.0.0"
8562 } 11436 }
8563 }, 11437 },
8564 "is-data-descriptor": { 11438 "is-data-descriptor": {
8565 "version": "0.1.4", 11439 "version": "0.1.4",
8566 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 11440 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
8567 "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 11441 "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
11442 "dev": true,
8568 "requires": { 11443 "requires": {
8569 "kind-of": "^3.0.2" 11444 "kind-of": "^3.0.2"
8570 }, 11445 },
@@ -8573,6 +11448,7 @@
8573 "version": "3.2.2", 11448 "version": "3.2.2",
8574 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 11449 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
8575 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 11450 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
11451 "dev": true,
8576 "requires": { 11452 "requires": {
8577 "is-buffer": "^1.1.5" 11453 "is-buffer": "^1.1.5"
8578 } 11454 }
@@ -8589,6 +11465,7 @@
8589 "version": "0.1.6", 11465 "version": "0.1.6",
8590 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 11466 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
8591 "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 11467 "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
11468 "dev": true,
8592 "requires": { 11469 "requires": {
8593 "is-accessor-descriptor": "^0.1.6", 11470 "is-accessor-descriptor": "^0.1.6",
8594 "is-data-descriptor": "^0.1.4", 11471 "is-data-descriptor": "^0.1.4",
@@ -8598,7 +11475,8 @@
8598 "kind-of": { 11475 "kind-of": {
8599 "version": "5.1.0", 11476 "version": "5.1.0",
8600 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 11477 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
8601 "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" 11478 "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
11479 "dev": true
8602 } 11480 }
8603 } 11481 }
8604 }, 11482 },
@@ -8611,12 +11489,14 @@
8611 "is-dotfile": { 11489 "is-dotfile": {
8612 "version": "1.0.3", 11490 "version": "1.0.3",
8613 "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 11491 "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
8614 "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" 11492 "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
11493 "dev": true
8615 }, 11494 },
8616 "is-equal-shallow": { 11495 "is-equal-shallow": {
8617 "version": "0.1.3", 11496 "version": "0.1.3",
8618 "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 11497 "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
8619 "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 11498 "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
11499 "dev": true,
8620 "requires": { 11500 "requires": {
8621 "is-primitive": "^2.0.0" 11501 "is-primitive": "^2.0.0"
8622 } 11502 }
@@ -8624,12 +11504,14 @@
8624 "is-extendable": { 11504 "is-extendable": {
8625 "version": "0.1.1", 11505 "version": "0.1.1",
8626 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 11506 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
8627 "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" 11507 "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
11508 "dev": true
8628 }, 11509 },
8629 "is-extglob": { 11510 "is-extglob": {
8630 "version": "2.1.1", 11511 "version": "2.1.1",
8631 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 11512 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
8632 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 11513 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
11514 "dev": true
8633 }, 11515 },
8634 "is-finite": { 11516 "is-finite": {
8635 "version": "1.0.2", 11517 "version": "1.0.2",
@@ -8641,18 +11523,21 @@
8641 } 11523 }
8642 }, 11524 },
8643 "is-fullwidth-code-point": { 11525 "is-fullwidth-code-point": {
8644 "version": "1.0.0", 11526 "version": "2.0.0",
8645 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 11527 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
8646 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 11528 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
8647 "requires": {
8648 "number-is-nan": "^1.0.0"
8649 }
8650 }, 11529 },
8651 "is-function": { 11530 "is-function": {
8652 "version": "1.0.1", 11531 "version": "1.0.1",
8653 "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", 11532 "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
8654 "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" 11533 "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
8655 }, 11534 },
11535 "is-generator-fn": {
11536 "version": "2.1.0",
11537 "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
11538 "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
11539 "dev": true
11540 },
8656 "is-glob": { 11541 "is-glob": {
8657 "version": "4.0.0", 11542 "version": "4.0.0",
8658 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", 11543 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
@@ -8693,6 +11578,7 @@
8693 "version": "3.0.0", 11578 "version": "3.0.0",
8694 "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 11579 "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
8695 "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 11580 "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
11581 "dev": true,
8696 "requires": { 11582 "requires": {
8697 "kind-of": "^3.0.2" 11583 "kind-of": "^3.0.2"
8698 }, 11584 },
@@ -8701,6 +11587,7 @@
8701 "version": "3.2.2", 11587 "version": "3.2.2",
8702 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 11588 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
8703 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 11589 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
11590 "dev": true,
8704 "requires": { 11591 "requires": {
8705 "is-buffer": "^1.1.5" 11592 "is-buffer": "^1.1.5"
8706 } 11593 }
@@ -8709,10 +11596,25 @@
8709 }, 11596 },
8710 "is-obj": { 11597 "is-obj": {
8711 "version": "1.0.1", 11598 "version": "1.0.1",
8712 "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 11599 "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
8713 "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 11600 "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
8714 "dev": true 11601 "dev": true
8715 }, 11602 },
11603 "is-path-cwd": {
11604 "version": "1.0.0",
11605 "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
11606 "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
11607 "dev": true
11608 },
11609 "is-path-in-cwd": {
11610 "version": "1.0.1",
11611 "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
11612 "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
11613 "dev": true,
11614 "requires": {
11615 "is-path-inside": "^1.0.0"
11616 }
11617 },
8716 "is-path-inside": { 11618 "is-path-inside": {
8717 "version": "1.0.1", 11619 "version": "1.0.1",
8718 "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 11620 "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
@@ -8738,12 +11640,14 @@
8738 "is-posix-bracket": { 11640 "is-posix-bracket": {
8739 "version": "0.1.1", 11641 "version": "0.1.1",
8740 "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 11642 "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
8741 "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" 11643 "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
11644 "dev": true
8742 }, 11645 },
8743 "is-primitive": { 11646 "is-primitive": {
8744 "version": "2.0.0", 11647 "version": "2.0.0",
8745 "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 11648 "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
8746 "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" 11649 "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
11650 "dev": true
8747 }, 11651 },
8748 "is-promise": { 11652 "is-promise": {
8749 "version": "2.1.0", 11653 "version": "2.1.0",
@@ -8770,6 +11674,7 @@
8770 "version": "1.0.0", 11674 "version": "1.0.0",
8771 "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 11675 "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
8772 "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 11676 "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
11677 "dev": true,
8773 "requires": { 11678 "requires": {
8774 "is-unc-path": "^1.0.0" 11679 "is-unc-path": "^1.0.0"
8775 } 11680 }
@@ -8780,6 +11685,15 @@
8780 "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", 11685 "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
8781 "dev": true 11686 "dev": true
8782 }, 11687 },
11688 "is-ssh": {
11689 "version": "1.3.1",
11690 "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz",
11691 "integrity": "sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==",
11692 "dev": true,
11693 "requires": {
11694 "protocols": "^1.1.0"
11695 }
11696 },
8783 "is-stream": { 11697 "is-stream": {
8784 "version": "1.1.0", 11698 "version": "1.1.0",
8785 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 11699 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -8819,6 +11733,7 @@
8819 "version": "1.0.0", 11733 "version": "1.0.0",
8820 "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 11734 "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
8821 "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 11735 "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
11736 "dev": true,
8822 "requires": { 11737 "requires": {
8823 "unc-path-regex": "^0.1.2" 11738 "unc-path-regex": "^0.1.2"
8824 } 11739 }
@@ -8838,7 +11753,14 @@
8838 "is-windows": { 11753 "is-windows": {
8839 "version": "1.0.2", 11754 "version": "1.0.2",
8840 "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 11755 "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
8841 "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" 11756 "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
11757 "dev": true
11758 },
11759 "is-wsl": {
11760 "version": "1.1.0",
11761 "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
11762 "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
11763 "dev": true
8842 }, 11764 },
8843 "isarray": { 11765 "isarray": {
8844 "version": "1.0.0", 11766 "version": "1.0.0",
@@ -8854,15 +11776,11 @@
8854 "buffer-alloc": "^1.2.0" 11776 "buffer-alloc": "^1.2.0"
8855 } 11777 }
8856 }, 11778 },
8857 "isemail": {
8858 "version": "1.2.0",
8859 "resolved": "http://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz",
8860 "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo="
8861 },
8862 "isexe": { 11779 "isexe": {
8863 "version": "2.0.0", 11780 "version": "2.0.0",
8864 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 11781 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
8865 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 11782 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
11783 "dev": true
8866 }, 11784 },
8867 "isobject": { 11785 "isobject": {
8868 "version": "3.0.1", 11786 "version": "3.0.1",
@@ -8884,27 +11802,675 @@
8884 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 11802 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
8885 "dev": true 11803 "dev": true
8886 }, 11804 },
8887 "joi": { 11805 "istanbul-api": {
8888 "version": "6.10.1", 11806 "version": "2.1.4",
8889 "resolved": "http://registry.npmjs.org/joi/-/joi-6.10.1.tgz", 11807 "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.4.tgz",
8890 "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", 11808 "integrity": "sha512-aAFQL0HA2BLUl18XmTQ7H7CGKI58DtZFvvfmg6e+rA3iNFergvpi16czLV4CpI7HOImMeZ5mqI62dvSNVtUQVA==",
11809 "dev": true,
11810 "requires": {
11811 "async": "^2.6.1",
11812 "compare-versions": "^3.2.1",
11813 "fileset": "^2.0.3",
11814 "istanbul-lib-coverage": "^2.0.4",
11815 "istanbul-lib-hook": "^2.0.6",
11816 "istanbul-lib-instrument": "^3.2.0",
11817 "istanbul-lib-report": "^2.0.7",
11818 "istanbul-lib-source-maps": "^3.0.5",
11819 "istanbul-reports": "^2.2.2",
11820 "js-yaml": "^3.13.0",
11821 "make-dir": "^2.1.0",
11822 "minimatch": "^3.0.4",
11823 "once": "^1.4.0"
11824 },
11825 "dependencies": {
11826 "async": {
11827 "version": "2.6.2",
11828 "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
11829 "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
11830 "dev": true,
11831 "requires": {
11832 "lodash": "^4.17.11"
11833 }
11834 },
11835 "js-yaml": {
11836 "version": "3.13.1",
11837 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
11838 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
11839 "dev": true,
11840 "requires": {
11841 "argparse": "^1.0.7",
11842 "esprima": "^4.0.0"
11843 }
11844 },
11845 "make-dir": {
11846 "version": "2.1.0",
11847 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
11848 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
11849 "dev": true,
11850 "requires": {
11851 "pify": "^4.0.1",
11852 "semver": "^5.6.0"
11853 }
11854 },
11855 "pify": {
11856 "version": "4.0.1",
11857 "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
11858 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
11859 "dev": true
11860 }
11861 }
11862 },
11863 "istanbul-lib-coverage": {
11864 "version": "2.0.4",
11865 "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
11866 "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==",
11867 "dev": true
11868 },
11869 "istanbul-lib-hook": {
11870 "version": "2.0.6",
11871 "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz",
11872 "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==",
11873 "dev": true,
11874 "requires": {
11875 "append-transform": "^1.0.0"
11876 }
11877 },
11878 "istanbul-lib-instrument": {
11879 "version": "3.2.0",
11880 "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz",
11881 "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==",
11882 "dev": true,
11883 "requires": {
11884 "@babel/generator": "^7.0.0",
11885 "@babel/parser": "^7.0.0",
11886 "@babel/template": "^7.0.0",
11887 "@babel/traverse": "^7.0.0",
11888 "@babel/types": "^7.0.0",
11889 "istanbul-lib-coverage": "^2.0.4",
11890 "semver": "^6.0.0"
11891 },
11892 "dependencies": {
11893 "semver": {
11894 "version": "6.0.0",
11895 "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
11896 "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==",
11897 "dev": true
11898 }
11899 }
11900 },
11901 "istanbul-lib-report": {
11902 "version": "2.0.7",
11903 "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz",
11904 "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==",
11905 "dev": true,
11906 "requires": {
11907 "istanbul-lib-coverage": "^2.0.4",
11908 "make-dir": "^2.1.0",
11909 "supports-color": "^6.0.0"
11910 },
11911 "dependencies": {
11912 "make-dir": {
11913 "version": "2.1.0",
11914 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
11915 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
11916 "dev": true,
11917 "requires": {
11918 "pify": "^4.0.1",
11919 "semver": "^5.6.0"
11920 }
11921 },
11922 "pify": {
11923 "version": "4.0.1",
11924 "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
11925 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
11926 "dev": true
11927 },
11928 "supports-color": {
11929 "version": "6.1.0",
11930 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
11931 "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
11932 "dev": true,
11933 "requires": {
11934 "has-flag": "^3.0.0"
11935 }
11936 }
11937 }
11938 },
11939 "istanbul-lib-source-maps": {
11940 "version": "3.0.5",
11941 "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz",
11942 "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==",
11943 "dev": true,
8891 "requires": { 11944 "requires": {
8892 "hoek": "2.x.x", 11945 "debug": "^4.1.1",
8893 "isemail": "1.x.x", 11946 "istanbul-lib-coverage": "^2.0.4",
8894 "moment": "2.x.x", 11947 "make-dir": "^2.1.0",
8895 "topo": "1.x.x" 11948 "rimraf": "^2.6.2",
11949 "source-map": "^0.6.1"
11950 },
11951 "dependencies": {
11952 "debug": {
11953 "version": "4.1.1",
11954 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
11955 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
11956 "dev": true,
11957 "requires": {
11958 "ms": "^2.1.1"
11959 }
11960 },
11961 "make-dir": {
11962 "version": "2.1.0",
11963 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
11964 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
11965 "dev": true,
11966 "requires": {
11967 "pify": "^4.0.1",
11968 "semver": "^5.6.0"
11969 }
11970 },
11971 "pify": {
11972 "version": "4.0.1",
11973 "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
11974 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
11975 "dev": true
11976 }
11977 }
11978 },
11979 "istanbul-reports": {
11980 "version": "2.2.2",
11981 "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.2.tgz",
11982 "integrity": "sha512-ZFuTdBQ3PSaPnm02aEA4R6mzQ2AF9w03CYiXADzWbbE48v/EFOWF4MaX4FT0NRdqIk48I7o0RPi+S8TMswaCbQ==",
11983 "dev": true,
11984 "requires": {
11985 "handlebars": "^4.1.0"
11986 }
11987 },
11988 "jest": {
11989 "version": "24.7.1",
11990 "resolved": "https://registry.npmjs.org/jest/-/jest-24.7.1.tgz",
11991 "integrity": "sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA==",
11992 "dev": true,
11993 "requires": {
11994 "import-local": "^2.0.0",
11995 "jest-cli": "^24.7.1"
11996 },
11997 "dependencies": {
11998 "import-local": {
11999 "version": "2.0.0",
12000 "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
12001 "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
12002 "dev": true,
12003 "requires": {
12004 "pkg-dir": "^3.0.0",
12005 "resolve-cwd": "^2.0.0"
12006 }
12007 },
12008 "jest-cli": {
12009 "version": "24.7.1",
12010 "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.7.1.tgz",
12011 "integrity": "sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ==",
12012 "dev": true,
12013 "requires": {
12014 "@jest/core": "^24.7.1",
12015 "@jest/test-result": "^24.7.1",
12016 "@jest/types": "^24.7.0",
12017 "chalk": "^2.0.1",
12018 "exit": "^0.1.2",
12019 "import-local": "^2.0.0",
12020 "is-ci": "^2.0.0",
12021 "jest-config": "^24.7.1",
12022 "jest-util": "^24.7.1",
12023 "jest-validate": "^24.7.0",
12024 "prompts": "^2.0.1",
12025 "realpath-native": "^1.1.0",
12026 "yargs": "^12.0.2"
12027 }
12028 },
12029 "pkg-dir": {
12030 "version": "3.0.0",
12031 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
12032 "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
12033 "dev": true,
12034 "requires": {
12035 "find-up": "^3.0.0"
12036 }
12037 }
12038 }
12039 },
12040 "jest-changed-files": {
12041 "version": "24.7.0",
12042 "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.7.0.tgz",
12043 "integrity": "sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw==",
12044 "dev": true,
12045 "requires": {
12046 "@jest/types": "^24.7.0",
12047 "execa": "^1.0.0",
12048 "throat": "^4.0.0"
12049 }
12050 },
12051 "jest-config": {
12052 "version": "24.7.1",
12053 "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.7.1.tgz",
12054 "integrity": "sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g==",
12055 "dev": true,
12056 "requires": {
12057 "@babel/core": "^7.1.0",
12058 "@jest/test-sequencer": "^24.7.1",
12059 "@jest/types": "^24.7.0",
12060 "babel-jest": "^24.7.1",
12061 "chalk": "^2.0.1",
12062 "glob": "^7.1.1",
12063 "jest-environment-jsdom": "^24.7.1",
12064 "jest-environment-node": "^24.7.1",
12065 "jest-get-type": "^24.3.0",
12066 "jest-jasmine2": "^24.7.1",
12067 "jest-regex-util": "^24.3.0",
12068 "jest-resolve": "^24.7.1",
12069 "jest-util": "^24.7.1",
12070 "jest-validate": "^24.7.0",
12071 "micromatch": "^3.1.10",
12072 "pretty-format": "^24.7.0",
12073 "realpath-native": "^1.1.0"
12074 }
12075 },
12076 "jest-diff": {
12077 "version": "24.7.0",
12078 "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.7.0.tgz",
12079 "integrity": "sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg==",
12080 "dev": true,
12081 "requires": {
12082 "chalk": "^2.0.1",
12083 "diff-sequences": "^24.3.0",
12084 "jest-get-type": "^24.3.0",
12085 "pretty-format": "^24.7.0"
12086 }
12087 },
12088 "jest-docblock": {
12089 "version": "24.3.0",
12090 "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz",
12091 "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==",
12092 "dev": true,
12093 "requires": {
12094 "detect-newline": "^2.1.0"
12095 }
12096 },
12097 "jest-each": {
12098 "version": "24.7.1",
12099 "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.7.1.tgz",
12100 "integrity": "sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA==",
12101 "dev": true,
12102 "requires": {
12103 "@jest/types": "^24.7.0",
12104 "chalk": "^2.0.1",
12105 "jest-get-type": "^24.3.0",
12106 "jest-util": "^24.7.1",
12107 "pretty-format": "^24.7.0"
12108 }
12109 },
12110 "jest-environment-jsdom": {
12111 "version": "24.7.1",
12112 "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz",
12113 "integrity": "sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg==",
12114 "dev": true,
12115 "requires": {
12116 "@jest/environment": "^24.7.1",
12117 "@jest/fake-timers": "^24.7.1",
12118 "@jest/types": "^24.7.0",
12119 "jest-mock": "^24.7.0",
12120 "jest-util": "^24.7.1",
12121 "jsdom": "^11.5.1"
12122 }
12123 },
12124 "jest-environment-node": {
12125 "version": "24.7.1",
12126 "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.7.1.tgz",
12127 "integrity": "sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA==",
12128 "dev": true,
12129 "requires": {
12130 "@jest/environment": "^24.7.1",
12131 "@jest/fake-timers": "^24.7.1",
12132 "@jest/types": "^24.7.0",
12133 "jest-mock": "^24.7.0",
12134 "jest-util": "^24.7.1"
12135 }
12136 },
12137 "jest-get-type": {
12138 "version": "24.3.0",
12139 "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz",
12140 "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==",
12141 "dev": true
12142 },
12143 "jest-haste-map": {
12144 "version": "24.7.1",
12145 "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.7.1.tgz",
12146 "integrity": "sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw==",
12147 "dev": true,
12148 "requires": {
12149 "@jest/types": "^24.7.0",
12150 "anymatch": "^2.0.0",
12151 "fb-watchman": "^2.0.0",
12152 "fsevents": "^1.2.7",
12153 "graceful-fs": "^4.1.15",
12154 "invariant": "^2.2.4",
12155 "jest-serializer": "^24.4.0",
12156 "jest-util": "^24.7.1",
12157 "jest-worker": "^24.6.0",
12158 "micromatch": "^3.1.10",
12159 "sane": "^4.0.3",
12160 "walker": "^1.0.7"
12161 }
12162 },
12163 "jest-jasmine2": {
12164 "version": "24.7.1",
12165 "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz",
12166 "integrity": "sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w==",
12167 "dev": true,
12168 "requires": {
12169 "@babel/traverse": "^7.1.0",
12170 "@jest/environment": "^24.7.1",
12171 "@jest/test-result": "^24.7.1",
12172 "@jest/types": "^24.7.0",
12173 "chalk": "^2.0.1",
12174 "co": "^4.6.0",
12175 "expect": "^24.7.1",
12176 "is-generator-fn": "^2.0.0",
12177 "jest-each": "^24.7.1",
12178 "jest-matcher-utils": "^24.7.0",
12179 "jest-message-util": "^24.7.1",
12180 "jest-runtime": "^24.7.1",
12181 "jest-snapshot": "^24.7.1",
12182 "jest-util": "^24.7.1",
12183 "pretty-format": "^24.7.0",
12184 "throat": "^4.0.0"
12185 }
12186 },
12187 "jest-leak-detector": {
12188 "version": "24.7.0",
12189 "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz",
12190 "integrity": "sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ==",
12191 "dev": true,
12192 "requires": {
12193 "pretty-format": "^24.7.0"
12194 }
12195 },
12196 "jest-matcher-utils": {
12197 "version": "24.7.0",
12198 "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz",
12199 "integrity": "sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg==",
12200 "dev": true,
12201 "requires": {
12202 "chalk": "^2.0.1",
12203 "jest-diff": "^24.7.0",
12204 "jest-get-type": "^24.3.0",
12205 "pretty-format": "^24.7.0"
12206 }
12207 },
12208 "jest-message-util": {
12209 "version": "24.7.1",
12210 "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.7.1.tgz",
12211 "integrity": "sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg==",
12212 "dev": true,
12213 "requires": {
12214 "@babel/code-frame": "^7.0.0",
12215 "@jest/test-result": "^24.7.1",
12216 "@jest/types": "^24.7.0",
12217 "@types/stack-utils": "^1.0.1",
12218 "chalk": "^2.0.1",
12219 "micromatch": "^3.1.10",
12220 "slash": "^2.0.0",
12221 "stack-utils": "^1.0.1"
12222 }
12223 },
12224 "jest-mock": {
12225 "version": "24.7.0",
12226 "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.7.0.tgz",
12227 "integrity": "sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng==",
12228 "dev": true,
12229 "requires": {
12230 "@jest/types": "^24.7.0"
12231 }
12232 },
12233 "jest-pnp-resolver": {
12234 "version": "1.2.1",
12235 "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz",
12236 "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==",
12237 "dev": true
12238 },
12239 "jest-regex-util": {
12240 "version": "24.3.0",
12241 "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz",
12242 "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==",
12243 "dev": true
12244 },
12245 "jest-resolve": {
12246 "version": "24.7.1",
12247 "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.7.1.tgz",
12248 "integrity": "sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw==",
12249 "dev": true,
12250 "requires": {
12251 "@jest/types": "^24.7.0",
12252 "browser-resolve": "^1.11.3",
12253 "chalk": "^2.0.1",
12254 "jest-pnp-resolver": "^1.2.1",
12255 "realpath-native": "^1.1.0"
12256 }
12257 },
12258 "jest-resolve-dependencies": {
12259 "version": "24.7.1",
12260 "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz",
12261 "integrity": "sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg==",
12262 "dev": true,
12263 "requires": {
12264 "@jest/types": "^24.7.0",
12265 "jest-regex-util": "^24.3.0",
12266 "jest-snapshot": "^24.7.1"
12267 }
12268 },
12269 "jest-runner": {
12270 "version": "24.7.1",
12271 "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.7.1.tgz",
12272 "integrity": "sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw==",
12273 "dev": true,
12274 "requires": {
12275 "@jest/console": "^24.7.1",
12276 "@jest/environment": "^24.7.1",
12277 "@jest/test-result": "^24.7.1",
12278 "@jest/types": "^24.7.0",
12279 "chalk": "^2.4.2",
12280 "exit": "^0.1.2",
12281 "graceful-fs": "^4.1.15",
12282 "jest-config": "^24.7.1",
12283 "jest-docblock": "^24.3.0",
12284 "jest-haste-map": "^24.7.1",
12285 "jest-jasmine2": "^24.7.1",
12286 "jest-leak-detector": "^24.7.0",
12287 "jest-message-util": "^24.7.1",
12288 "jest-resolve": "^24.7.1",
12289 "jest-runtime": "^24.7.1",
12290 "jest-util": "^24.7.1",
12291 "jest-worker": "^24.6.0",
12292 "source-map-support": "^0.5.6",
12293 "throat": "^4.0.0"
12294 }
12295 },
12296 "jest-runtime": {
12297 "version": "24.7.1",
12298 "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.7.1.tgz",
12299 "integrity": "sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A==",
12300 "dev": true,
12301 "requires": {
12302 "@jest/console": "^24.7.1",
12303 "@jest/environment": "^24.7.1",
12304 "@jest/source-map": "^24.3.0",
12305 "@jest/transform": "^24.7.1",
12306 "@jest/types": "^24.7.0",
12307 "@types/yargs": "^12.0.2",
12308 "chalk": "^2.0.1",
12309 "exit": "^0.1.2",
12310 "glob": "^7.1.3",
12311 "graceful-fs": "^4.1.15",
12312 "jest-config": "^24.7.1",
12313 "jest-haste-map": "^24.7.1",
12314 "jest-message-util": "^24.7.1",
12315 "jest-mock": "^24.7.0",
12316 "jest-regex-util": "^24.3.0",
12317 "jest-resolve": "^24.7.1",
12318 "jest-snapshot": "^24.7.1",
12319 "jest-util": "^24.7.1",
12320 "jest-validate": "^24.7.0",
12321 "realpath-native": "^1.1.0",
12322 "slash": "^2.0.0",
12323 "strip-bom": "^3.0.0",
12324 "yargs": "^12.0.2"
12325 }
12326 },
12327 "jest-serializer": {
12328 "version": "24.4.0",
12329 "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz",
12330 "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==",
12331 "dev": true
12332 },
12333 "jest-snapshot": {
12334 "version": "24.7.1",
12335 "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.7.1.tgz",
12336 "integrity": "sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA==",
12337 "dev": true,
12338 "requires": {
12339 "@babel/types": "^7.0.0",
12340 "@jest/types": "^24.7.0",
12341 "chalk": "^2.0.1",
12342 "expect": "^24.7.1",
12343 "jest-diff": "^24.7.0",
12344 "jest-matcher-utils": "^24.7.0",
12345 "jest-message-util": "^24.7.1",
12346 "jest-resolve": "^24.7.1",
12347 "mkdirp": "^0.5.1",
12348 "natural-compare": "^1.4.0",
12349 "pretty-format": "^24.7.0",
12350 "semver": "^5.5.0"
12351 }
12352 },
12353 "jest-util": {
12354 "version": "24.7.1",
12355 "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.7.1.tgz",
12356 "integrity": "sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A==",
12357 "dev": true,
12358 "requires": {
12359 "@jest/console": "^24.7.1",
12360 "@jest/fake-timers": "^24.7.1",
12361 "@jest/source-map": "^24.3.0",
12362 "@jest/test-result": "^24.7.1",
12363 "@jest/types": "^24.7.0",
12364 "callsites": "^3.0.0",
12365 "chalk": "^2.0.1",
12366 "graceful-fs": "^4.1.15",
12367 "is-ci": "^2.0.0",
12368 "mkdirp": "^0.5.1",
12369 "slash": "^2.0.0",
12370 "source-map": "^0.6.0"
12371 },
12372 "dependencies": {
12373 "callsites": {
12374 "version": "3.1.0",
12375 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
12376 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
12377 "dev": true
12378 }
12379 }
12380 },
12381 "jest-validate": {
12382 "version": "24.7.0",
12383 "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.7.0.tgz",
12384 "integrity": "sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA==",
12385 "dev": true,
12386 "requires": {
12387 "@jest/types": "^24.7.0",
12388 "camelcase": "^5.0.0",
12389 "chalk": "^2.0.1",
12390 "jest-get-type": "^24.3.0",
12391 "leven": "^2.1.0",
12392 "pretty-format": "^24.7.0"
12393 }
12394 },
12395 "jest-watcher": {
12396 "version": "24.7.1",
12397 "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.7.1.tgz",
12398 "integrity": "sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw==",
12399 "dev": true,
12400 "requires": {
12401 "@jest/test-result": "^24.7.1",
12402 "@jest/types": "^24.7.0",
12403 "@types/yargs": "^12.0.9",
12404 "ansi-escapes": "^3.0.0",
12405 "chalk": "^2.0.1",
12406 "jest-util": "^24.7.1",
12407 "string-length": "^2.0.0"
12408 }
12409 },
12410 "jest-worker": {
12411 "version": "24.6.0",
12412 "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz",
12413 "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==",
12414 "dev": true,
12415 "requires": {
12416 "merge-stream": "^1.0.1",
12417 "supports-color": "^6.1.0"
12418 },
12419 "dependencies": {
12420 "merge-stream": {
12421 "version": "1.0.1",
12422 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
12423 "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
12424 "dev": true,
12425 "requires": {
12426 "readable-stream": "^2.0.1"
12427 }
12428 },
12429 "readable-stream": {
12430 "version": "2.3.6",
12431 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
12432 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
12433 "dev": true,
12434 "requires": {
12435 "core-util-is": "~1.0.0",
12436 "inherits": "~2.0.3",
12437 "isarray": "~1.0.0",
12438 "process-nextick-args": "~2.0.0",
12439 "safe-buffer": "~5.1.1",
12440 "string_decoder": "~1.1.1",
12441 "util-deprecate": "~1.0.1"
12442 }
12443 },
12444 "string_decoder": {
12445 "version": "1.1.1",
12446 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
12447 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
12448 "dev": true,
12449 "requires": {
12450 "safe-buffer": "~5.1.0"
12451 }
12452 },
12453 "supports-color": {
12454 "version": "6.1.0",
12455 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
12456 "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
12457 "dev": true,
12458 "requires": {
12459 "has-flag": "^3.0.0"
12460 }
12461 }
8896 } 12462 }
8897 }, 12463 },
8898 "js-base64": { 12464 "js-base64": {
8899 "version": "2.4.9", 12465 "version": "2.5.1",
8900 "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", 12466 "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
8901 "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==", 12467 "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
8902 "dev": true 12468 "dev": true
8903 }, 12469 },
8904 "js-levenshtein": { 12470 "js-levenshtein": {
8905 "version": "1.1.4", 12471 "version": "1.1.6",
8906 "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", 12472 "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
8907 "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==", 12473 "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
8908 "dev": true 12474 "dev": true
8909 }, 12475 },
8910 "js-tokens": { 12476 "js-tokens": {
@@ -8913,9 +12479,9 @@
8913 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 12479 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
8914 }, 12480 },
8915 "js-yaml": { 12481 "js-yaml": {
8916 "version": "3.12.0", 12482 "version": "3.12.1",
8917 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", 12483 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
8918 "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", 12484 "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
8919 "requires": { 12485 "requires": {
8920 "argparse": "^1.0.7", 12486 "argparse": "^1.0.7",
8921 "esprima": "^4.0.0" 12487 "esprima": "^4.0.0"
@@ -8927,10 +12493,72 @@
8927 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 12493 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
8928 "dev": true 12494 "dev": true
8929 }, 12495 },
12496 "jsdom": {
12497 "version": "11.12.0",
12498 "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
12499 "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
12500 "dev": true,
12501 "requires": {
12502 "abab": "^2.0.0",
12503 "acorn": "^5.5.3",
12504 "acorn-globals": "^4.1.0",
12505 "array-equal": "^1.0.0",
12506 "cssom": ">= 0.3.2 < 0.4.0",
12507 "cssstyle": "^1.0.0",
12508 "data-urls": "^1.0.0",
12509 "domexception": "^1.0.1",
12510 "escodegen": "^1.9.1",
12511 "html-encoding-sniffer": "^1.0.2",
12512 "left-pad": "^1.3.0",
12513 "nwsapi": "^2.0.7",
12514 "parse5": "4.0.0",
12515 "pn": "^1.1.0",
12516 "request": "^2.87.0",
12517 "request-promise-native": "^1.0.5",
12518 "sax": "^1.2.4",
12519 "symbol-tree": "^3.2.2",
12520 "tough-cookie": "^2.3.4",
12521 "w3c-hr-time": "^1.0.1",
12522 "webidl-conversions": "^4.0.2",
12523 "whatwg-encoding": "^1.0.3",
12524 "whatwg-mimetype": "^2.1.0",
12525 "whatwg-url": "^6.4.1",
12526 "ws": "^5.2.0",
12527 "xml-name-validator": "^3.0.0"
12528 },
12529 "dependencies": {
12530 "acorn": {
12531 "version": "5.7.3",
12532 "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
12533 "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
12534 "dev": true
12535 },
12536 "whatwg-url": {
12537 "version": "6.5.0",
12538 "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
12539 "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
12540 "dev": true,
12541 "requires": {
12542 "lodash.sortby": "^4.7.0",
12543 "tr46": "^1.0.1",
12544 "webidl-conversions": "^4.0.2"
12545 }
12546 },
12547 "ws": {
12548 "version": "5.2.2",
12549 "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
12550 "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
12551 "dev": true,
12552 "requires": {
12553 "async-limiter": "~1.0.0"
12554 }
12555 }
12556 }
12557 },
8930 "jsesc": { 12558 "jsesc": {
8931 "version": "2.5.1", 12559 "version": "2.5.2",
8932 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", 12560 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
8933 "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", 12561 "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
8934 "dev": true 12562 "dev": true
8935 }, 12563 },
8936 "json-parse-better-errors": { 12564 "json-parse-better-errors": {
@@ -8946,9 +12574,9 @@
8946 "dev": true 12574 "dev": true
8947 }, 12575 },
8948 "json-schema-traverse": { 12576 "json-schema-traverse": {
8949 "version": "0.3.1", 12577 "version": "0.4.1",
8950 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 12578 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
8951 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 12579 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
8952 "dev": true 12580 "dev": true
8953 }, 12581 },
8954 "json-stable-stringify": { 12582 "json-stable-stringify": {
@@ -8979,10 +12607,13 @@
8979 "dev": true 12607 "dev": true
8980 }, 12608 },
8981 "json5": { 12609 "json5": {
8982 "version": "0.5.1", 12610 "version": "2.1.0",
8983 "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 12611 "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
8984 "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 12612 "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
8985 "dev": true 12613 "dev": true,
12614 "requires": {
12615 "minimist": "^1.2.0"
12616 }
8986 }, 12617 },
8987 "jsonfile": { 12618 "jsonfile": {
8988 "version": "4.0.0", 12619 "version": "4.0.0",
@@ -9005,15 +12636,20 @@
9005 "dev": true 12636 "dev": true
9006 }, 12637 },
9007 "jsonwebtoken": { 12638 "jsonwebtoken": {
9008 "version": "7.4.3", 12639 "version": "8.5.1",
9009 "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", 12640 "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
9010 "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", 12641 "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
9011 "requires": { 12642 "requires": {
9012 "joi": "^6.10.1", 12643 "jws": "^3.2.2",
9013 "jws": "^3.1.4", 12644 "lodash.includes": "^4.3.0",
12645 "lodash.isboolean": "^3.0.3",
12646 "lodash.isinteger": "^4.0.4",
12647 "lodash.isnumber": "^3.0.3",
12648 "lodash.isplainobject": "^4.0.6",
12649 "lodash.isstring": "^4.0.1",
9014 "lodash.once": "^4.0.0", 12650 "lodash.once": "^4.0.0",
9015 "ms": "^2.0.0", 12651 "ms": "^2.1.1",
9016 "xtend": "^4.0.1" 12652 "semver": "^5.6.0"
9017 } 12653 }
9018 }, 12654 },
9019 "jsprim": { 12655 "jsprim": {
@@ -9036,13 +12672,6 @@
9036 "is-in-browser": "^1.1.3", 12672 "is-in-browser": "^1.1.3",
9037 "symbol-observable": "^1.1.0", 12673 "symbol-observable": "^1.1.0",
9038 "warning": "^3.0.0" 12674 "warning": "^3.0.0"
9039 },
9040 "dependencies": {
9041 "symbol-observable": {
9042 "version": "1.2.0",
9043 "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
9044 "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
9045 }
9046 } 12675 }
9047 }, 12676 },
9048 "jss-camel-case": { 12677 "jss-camel-case": {
@@ -9146,21 +12775,21 @@
9146 "dev": true 12775 "dev": true
9147 }, 12776 },
9148 "jwa": { 12777 "jwa": {
9149 "version": "1.1.6", 12778 "version": "1.4.1",
9150 "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", 12779 "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
9151 "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", 12780 "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
9152 "requires": { 12781 "requires": {
9153 "buffer-equal-constant-time": "1.0.1", 12782 "buffer-equal-constant-time": "1.0.1",
9154 "ecdsa-sig-formatter": "1.0.10", 12783 "ecdsa-sig-formatter": "1.0.11",
9155 "safe-buffer": "^5.0.1" 12784 "safe-buffer": "^5.0.1"
9156 } 12785 }
9157 }, 12786 },
9158 "jws": { 12787 "jws": {
9159 "version": "3.1.5", 12788 "version": "3.2.2",
9160 "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", 12789 "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
9161 "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", 12790 "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
9162 "requires": { 12791 "requires": {
9163 "jwa": "^1.1.5", 12792 "jwa": "^1.4.1",
9164 "safe-buffer": "^5.0.1" 12793 "safe-buffer": "^5.0.1"
9165 } 12794 }
9166 }, 12795 },
@@ -9170,15 +12799,23 @@
9170 "integrity": "sha1-P55JkK3K0MaGwOcB92RYaPdfkes=", 12799 "integrity": "sha1-P55JkK3K0MaGwOcB92RYaPdfkes=",
9171 "dev": true 12800 "dev": true
9172 }, 12801 },
9173 "keymaster": { 12802 "killable": {
9174 "version": "1.6.2", 12803 "version": "1.0.1",
9175 "resolved": "https://registry.npmjs.org/keymaster/-/keymaster-1.6.2.tgz", 12804 "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
9176 "integrity": "sha1-4a5U0OqUiPn2C2a2aPAumhlGxus=" 12805 "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
12806 "dev": true
9177 }, 12807 },
9178 "kind-of": { 12808 "kind-of": {
9179 "version": "6.0.2", 12809 "version": "6.0.2",
9180 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 12810 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
9181 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" 12811 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
12812 "dev": true
12813 },
12814 "kleur": {
12815 "version": "3.0.3",
12816 "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
12817 "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
12818 "dev": true
9182 }, 12819 },
9183 "last-run": { 12820 "last-run": {
9184 "version": "1.1.1", 12821 "version": "1.1.1",
@@ -9211,14 +12848,41 @@
9211 "dev": true, 12848 "dev": true,
9212 "requires": { 12849 "requires": {
9213 "readable-stream": "^2.0.5" 12850 "readable-stream": "^2.0.5"
12851 },
12852 "dependencies": {
12853 "readable-stream": {
12854 "version": "2.3.6",
12855 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
12856 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
12857 "dev": true,
12858 "requires": {
12859 "core-util-is": "~1.0.0",
12860 "inherits": "~2.0.3",
12861 "isarray": "~1.0.0",
12862 "process-nextick-args": "~2.0.0",
12863 "safe-buffer": "~5.1.1",
12864 "string_decoder": "~1.1.1",
12865 "util-deprecate": "~1.0.1"
12866 }
12867 },
12868 "string_decoder": {
12869 "version": "1.1.1",
12870 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
12871 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
12872 "dev": true,
12873 "requires": {
12874 "safe-buffer": "~5.1.0"
12875 }
12876 }
9214 } 12877 }
9215 }, 12878 },
9216 "lcid": { 12879 "lcid": {
9217 "version": "1.0.0", 12880 "version": "2.0.0",
9218 "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 12881 "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
9219 "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 12882 "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
12883 "dev": true,
9220 "requires": { 12884 "requires": {
9221 "invert-kv": "^1.0.0" 12885 "invert-kv": "^2.0.0"
9222 } 12886 }
9223 }, 12887 },
9224 "lead": { 12888 "lead": {
@@ -9230,6 +12894,43 @@
9230 "flush-write-stream": "^1.0.2" 12894 "flush-write-stream": "^1.0.2"
9231 } 12895 }
9232 }, 12896 },
12897 "left-pad": {
12898 "version": "1.3.0",
12899 "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
12900 "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
12901 "dev": true
12902 },
12903 "lerna": {
12904 "version": "3.11.1",
12905 "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.11.1.tgz",
12906 "integrity": "sha512-7an/cia9u6qVTts5PQ/adFq8QSgE7gzG1pUHhH+XKVU1seDKQ99JLu61n3/euv2qeQF+ww4WLKnFHIPa5+LJSQ==",
12907 "dev": true,
12908 "requires": {
12909 "@lerna/add": "3.11.0",
12910 "@lerna/bootstrap": "3.11.0",
12911 "@lerna/changed": "3.11.1",
12912 "@lerna/clean": "3.11.0",
12913 "@lerna/cli": "3.11.0",
12914 "@lerna/create": "3.11.0",
12915 "@lerna/diff": "3.11.0",
12916 "@lerna/exec": "3.11.0",
12917 "@lerna/import": "3.11.0",
12918 "@lerna/init": "3.11.0",
12919 "@lerna/link": "3.11.0",
12920 "@lerna/list": "3.11.0",
12921 "@lerna/publish": "3.11.1",
12922 "@lerna/run": "3.11.0",
12923 "@lerna/version": "3.11.1",
12924 "import-local": "^1.0.0",
12925 "npmlog": "^4.1.2"
12926 }
12927 },
12928 "leven": {
12929 "version": "2.1.0",
12930 "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
12931 "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
12932 "dev": true
12933 },
9233 "levn": { 12934 "levn": {
9234 "version": "0.3.0", 12935 "version": "0.3.0",
9235 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 12936 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
@@ -9240,10 +12941,56 @@
9240 "type-check": "~0.3.2" 12941 "type-check": "~0.3.2"
9241 } 12942 }
9242 }, 12943 },
12944 "libnpmaccess": {
12945 "version": "3.0.1",
12946 "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-3.0.1.tgz",
12947 "integrity": "sha512-RlZ7PNarCBt+XbnP7R6PoVgOq9t+kou5rvhaInoNibhPO7eMlRfS0B8yjatgn2yaHIwWNyoJDolC/6Lc5L/IQA==",
12948 "dev": true,
12949 "requires": {
12950 "aproba": "^2.0.0",
12951 "get-stream": "^4.0.0",
12952 "npm-package-arg": "^6.1.0",
12953 "npm-registry-fetch": "^3.8.0"
12954 },
12955 "dependencies": {
12956 "aproba": {
12957 "version": "2.0.0",
12958 "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
12959 "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
12960 "dev": true
12961 }
12962 }
12963 },
12964 "libnpmpublish": {
12965 "version": "1.1.1",
12966 "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-1.1.1.tgz",
12967 "integrity": "sha512-nefbvJd/wY38zdt+b9SHL6171vqBrMtZ56Gsgfd0duEKb/pB8rDT4/ObUQLrHz1tOfht1flt2zM+UGaemzAG5g==",
12968 "dev": true,
12969 "requires": {
12970 "aproba": "^2.0.0",
12971 "figgy-pudding": "^3.5.1",
12972 "get-stream": "^4.0.0",
12973 "lodash.clonedeep": "^4.5.0",
12974 "normalize-package-data": "^2.4.0",
12975 "npm-package-arg": "^6.1.0",
12976 "npm-registry-fetch": "^3.8.0",
12977 "semver": "^5.5.1",
12978 "ssri": "^6.0.1"
12979 },
12980 "dependencies": {
12981 "aproba": {
12982 "version": "2.0.0",
12983 "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
12984 "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
12985 "dev": true
12986 }
12987 }
12988 },
9243 "liftoff": { 12989 "liftoff": {
9244 "version": "2.5.0", 12990 "version": "2.5.0",
9245 "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", 12991 "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
9246 "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", 12992 "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
12993 "dev": true,
9247 "requires": { 12994 "requires": {
9248 "extend": "^3.0.0", 12995 "extend": "^3.0.0",
9249 "findup-sync": "^2.0.0", 12996 "findup-sync": "^2.0.0",
@@ -9255,17 +13002,22 @@
9255 "resolve": "^1.1.7" 13002 "resolve": "^1.1.7"
9256 } 13003 }
9257 }, 13004 },
13005 "lightercollective": {
13006 "version": "0.1.0",
13007 "resolved": "https://registry.npmjs.org/lightercollective/-/lightercollective-0.1.0.tgz",
13008 "integrity": "sha512-J9tg5uraYoQKaWbmrzDDexbG6hHnMcWS1qLYgJSWE+mpA3U5OCSeMUhb+K55otgZJ34oFdR0ECvdIb3xuO5JOQ==",
13009 "dev": true
13010 },
9258 "load-json-file": { 13011 "load-json-file": {
9259 "version": "1.1.0", 13012 "version": "4.0.0",
9260 "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 13013 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
9261 "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 13014 "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
9262 "dev": true, 13015 "dev": true,
9263 "requires": { 13016 "requires": {
9264 "graceful-fs": "^4.1.2", 13017 "graceful-fs": "^4.1.2",
9265 "parse-json": "^2.2.0", 13018 "parse-json": "^4.0.0",
9266 "pify": "^2.0.0", 13019 "pify": "^3.0.0",
9267 "pinkie-promise": "^2.0.0", 13020 "strip-bom": "^3.0.0"
9268 "strip-bom": "^2.0.0"
9269 } 13021 }
9270 }, 13022 },
9271 "loader-fs-cache": { 13023 "loader-fs-cache": {
@@ -9276,35 +13028,85 @@
9276 "requires": { 13028 "requires": {
9277 "find-cache-dir": "^0.1.1", 13029 "find-cache-dir": "^0.1.1",
9278 "mkdirp": "0.5.1" 13030 "mkdirp": "0.5.1"
13031 },
13032 "dependencies": {
13033 "find-cache-dir": {
13034 "version": "0.1.1",
13035 "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
13036 "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
13037 "dev": true,
13038 "requires": {
13039 "commondir": "^1.0.1",
13040 "mkdirp": "^0.5.1",
13041 "pkg-dir": "^1.0.0"
13042 }
13043 },
13044 "find-up": {
13045 "version": "1.1.2",
13046 "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
13047 "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
13048 "dev": true,
13049 "requires": {
13050 "path-exists": "^2.0.0",
13051 "pinkie-promise": "^2.0.0"
13052 }
13053 },
13054 "path-exists": {
13055 "version": "2.1.0",
13056 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
13057 "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
13058 "dev": true,
13059 "requires": {
13060 "pinkie-promise": "^2.0.0"
13061 }
13062 },
13063 "pkg-dir": {
13064 "version": "1.0.0",
13065 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
13066 "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
13067 "dev": true,
13068 "requires": {
13069 "find-up": "^1.0.0"
13070 }
13071 }
9279 } 13072 }
9280 }, 13073 },
13074 "loader-runner": {
13075 "version": "2.4.0",
13076 "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
13077 "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
13078 "dev": true
13079 },
9281 "loader-utils": { 13080 "loader-utils": {
9282 "version": "1.1.0", 13081 "version": "1.2.3",
9283 "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", 13082 "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
9284 "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", 13083 "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
9285 "dev": true, 13084 "dev": true,
9286 "requires": { 13085 "requires": {
9287 "big.js": "^3.1.3", 13086 "big.js": "^5.2.2",
9288 "emojis-list": "^2.0.0", 13087 "emojis-list": "^2.0.0",
9289 "json5": "^0.5.0" 13088 "json5": "^1.0.1"
13089 },
13090 "dependencies": {
13091 "json5": {
13092 "version": "1.0.1",
13093 "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
13094 "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
13095 "dev": true,
13096 "requires": {
13097 "minimist": "^1.2.0"
13098 }
13099 }
9290 } 13100 }
9291 }, 13101 },
9292 "locate-path": { 13102 "locate-path": {
9293 "version": "2.0.0", 13103 "version": "3.0.0",
9294 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 13104 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
9295 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 13105 "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
9296 "dev": true, 13106 "dev": true,
9297 "requires": { 13107 "requires": {
9298 "p-locate": "^2.0.0", 13108 "p-locate": "^3.0.0",
9299 "path-exists": "^3.0.0" 13109 "path-exists": "^3.0.0"
9300 },
9301 "dependencies": {
9302 "path-exists": {
9303 "version": "3.0.0",
9304 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
9305 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
9306 "dev": true
9307 }
9308 } 13110 }
9309 }, 13111 },
9310 "lodash": { 13112 "lodash": {
@@ -9383,12 +13185,6 @@
9383 "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 13185 "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
9384 "dev": true 13186 "dev": true
9385 }, 13187 },
9386 "lodash.debounce": {
9387 "version": "4.0.8",
9388 "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
9389 "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
9390 "dev": true
9391 },
9392 "lodash.escape": { 13188 "lodash.escape": {
9393 "version": "3.2.0", 13189 "version": "3.2.0",
9394 "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", 13190 "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
@@ -9398,6 +13194,17 @@
9398 "lodash._root": "^3.0.0" 13194 "lodash._root": "^3.0.0"
9399 } 13195 }
9400 }, 13196 },
13197 "lodash.get": {
13198 "version": "4.4.2",
13199 "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
13200 "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
13201 "dev": true
13202 },
13203 "lodash.includes": {
13204 "version": "4.3.0",
13205 "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
13206 "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
13207 },
9401 "lodash.isarguments": { 13208 "lodash.isarguments": {
9402 "version": "3.1.0", 13209 "version": "3.1.0",
9403 "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 13210 "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
@@ -9410,6 +13217,11 @@
9410 "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 13217 "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
9411 "dev": true 13218 "dev": true
9412 }, 13219 },
13220 "lodash.isboolean": {
13221 "version": "3.0.3",
13222 "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
13223 "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
13224 },
9413 "lodash.isequal": { 13225 "lodash.isequal": {
9414 "version": "4.5.0", 13226 "version": "4.5.0",
9415 "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 13227 "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
@@ -9418,7 +13230,18 @@
9418 "lodash.isfunction": { 13230 "lodash.isfunction": {
9419 "version": "3.0.9", 13231 "version": "3.0.9",
9420 "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", 13232 "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
9421 "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" 13233 "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==",
13234 "dev": true
13235 },
13236 "lodash.isinteger": {
13237 "version": "4.0.4",
13238 "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
13239 "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
13240 },
13241 "lodash.isnumber": {
13242 "version": "3.0.3",
13243 "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
13244 "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
9422 }, 13245 },
9423 "lodash.isplainobject": { 13246 "lodash.isplainobject": {
9424 "version": "4.0.6", 13247 "version": "4.0.6",
@@ -9464,38 +13287,43 @@
9464 "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", 13287 "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
9465 "dev": true 13288 "dev": true
9466 }, 13289 },
13290 "lodash.set": {
13291 "version": "4.3.2",
13292 "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
13293 "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
13294 "dev": true
13295 },
9467 "lodash.sortby": { 13296 "lodash.sortby": {
9468 "version": "4.7.0", 13297 "version": "4.7.0",
9469 "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 13298 "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
9470 "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" 13299 "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
13300 "dev": true
9471 }, 13301 },
9472 "lodash.template": { 13302 "lodash.template": {
9473 "version": "3.6.2", 13303 "version": "4.4.0",
9474 "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", 13304 "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
9475 "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", 13305 "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
9476 "dev": true, 13306 "dev": true,
9477 "requires": { 13307 "requires": {
9478 "lodash._basecopy": "^3.0.0", 13308 "lodash._reinterpolate": "~3.0.0",
9479 "lodash._basetostring": "^3.0.0", 13309 "lodash.templatesettings": "^4.0.0"
9480 "lodash._basevalues": "^3.0.0",
9481 "lodash._isiterateecall": "^3.0.0",
9482 "lodash._reinterpolate": "^3.0.0",
9483 "lodash.escape": "^3.0.0",
9484 "lodash.keys": "^3.0.0",
9485 "lodash.restparam": "^3.0.0",
9486 "lodash.templatesettings": "^3.0.0"
9487 } 13310 }
9488 }, 13311 },
9489 "lodash.templatesettings": { 13312 "lodash.templatesettings": {
9490 "version": "3.1.1", 13313 "version": "4.1.0",
9491 "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", 13314 "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
9492 "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", 13315 "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
9493 "dev": true, 13316 "dev": true,
9494 "requires": { 13317 "requires": {
9495 "lodash._reinterpolate": "^3.0.0", 13318 "lodash._reinterpolate": "~3.0.0"
9496 "lodash.escape": "^3.0.0"
9497 } 13319 }
9498 }, 13320 },
13321 "lodash.uniq": {
13322 "version": "4.5.0",
13323 "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
13324 "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
13325 "dev": true
13326 },
9499 "log-symbols": { 13327 "log-symbols": {
9500 "version": "2.2.0", 13328 "version": "2.2.0",
9501 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 13329 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
@@ -9503,39 +13331,14 @@
9503 "dev": true, 13331 "dev": true,
9504 "requires": { 13332 "requires": {
9505 "chalk": "^2.0.1" 13333 "chalk": "^2.0.1"
9506 },
9507 "dependencies": {
9508 "ansi-styles": {
9509 "version": "3.2.1",
9510 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
9511 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
9512 "dev": true,
9513 "requires": {
9514 "color-convert": "^1.9.0"
9515 }
9516 },
9517 "chalk": {
9518 "version": "2.4.1",
9519 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
9520 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
9521 "dev": true,
9522 "requires": {
9523 "ansi-styles": "^3.2.1",
9524 "escape-string-regexp": "^1.0.5",
9525 "supports-color": "^5.3.0"
9526 }
9527 },
9528 "supports-color": {
9529 "version": "5.5.0",
9530 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
9531 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
9532 "dev": true,
9533 "requires": {
9534 "has-flag": "^3.0.0"
9535 }
9536 }
9537 } 13334 }
9538 }, 13335 },
13336 "loglevel": {
13337 "version": "1.6.1",
13338 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
13339 "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
13340 "dev": true
13341 },
9539 "longest": { 13342 "longest": {
9540 "version": "1.0.1", 13343 "version": "1.0.1",
9541 "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 13344 "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
@@ -9560,6 +13363,12 @@
9560 "signal-exit": "^3.0.0" 13363 "signal-exit": "^3.0.0"
9561 } 13364 }
9562 }, 13365 },
13366 "lower-case": {
13367 "version": "1.1.4",
13368 "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
13369 "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
13370 "dev": true
13371 },
9563 "lowercase-keys": { 13372 "lowercase-keys": {
9564 "version": "1.0.1", 13373 "version": "1.0.1",
9565 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 13374 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -9567,24 +13376,38 @@
9567 "dev": true 13376 "dev": true
9568 }, 13377 },
9569 "lru-cache": { 13378 "lru-cache": {
9570 "version": "4.1.3", 13379 "version": "4.1.5",
9571 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", 13380 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
9572 "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", 13381 "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
9573 "dev": true, 13382 "dev": true,
9574 "requires": { 13383 "requires": {
9575 "pseudomap": "^1.0.2", 13384 "pseudomap": "^1.0.2",
9576 "yallist": "^2.1.2" 13385 "yallist": "^2.1.2"
13386 },
13387 "dependencies": {
13388 "yallist": {
13389 "version": "2.1.2",
13390 "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
13391 "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
13392 "dev": true
13393 }
9577 } 13394 }
9578 }, 13395 },
9579 "macos-notification-state": { 13396 "macos-notification-state": {
9580 "version": "1.1.0", 13397 "version": "1.2.0",
9581 "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.1.0.tgz", 13398 "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.2.0.tgz",
9582 "integrity": "sha1-7llnHgXB7DiMCwkQHvYRyFtLTg4=", 13399 "integrity": "sha512-80nPI5sFOMopZw5yt9tdaRAKd6gtTKdjuAIdQ5cMdA5ZtkC7jZH0yzBjeM3O4g+tt/GgLA2fORKwACje5dyGgA==",
9583 "requires": { 13400 "requires": {
9584 "bindings": "^1.2.1", 13401 "bindings": "^1.4.0",
9585 "nan": "^2.4.0" 13402 "nan": "^2.12.1"
9586 } 13403 }
9587 }, 13404 },
13405 "macos-release": {
13406 "version": "2.0.0",
13407 "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.0.0.tgz",
13408 "integrity": "sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A==",
13409 "dev": true
13410 },
9588 "make-dir": { 13411 "make-dir": {
9589 "version": "1.3.0", 13412 "version": "1.3.0",
9590 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 13413 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
@@ -9592,28 +13415,49 @@
9592 "dev": true, 13415 "dev": true,
9593 "requires": { 13416 "requires": {
9594 "pify": "^3.0.0" 13417 "pify": "^3.0.0"
9595 }, 13418 }
9596 "dependencies": { 13419 },
9597 "pify": { 13420 "make-fetch-happen": {
9598 "version": "3.0.0", 13421 "version": "4.0.1",
9599 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 13422 "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz",
9600 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 13423 "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==",
9601 "dev": true 13424 "dev": true,
9602 } 13425 "requires": {
13426 "agentkeepalive": "^3.4.1",
13427 "cacache": "^11.0.1",
13428 "http-cache-semantics": "^3.8.1",
13429 "http-proxy-agent": "^2.1.0",
13430 "https-proxy-agent": "^2.2.1",
13431 "lru-cache": "^4.1.2",
13432 "mississippi": "^3.0.0",
13433 "node-fetch-npm": "^2.0.2",
13434 "promise-retry": "^1.1.1",
13435 "socks-proxy-agent": "^4.0.0",
13436 "ssri": "^6.0.0"
9603 } 13437 }
9604 }, 13438 },
9605 "make-iterator": { 13439 "make-iterator": {
9606 "version": "1.0.1", 13440 "version": "1.0.1",
9607 "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", 13441 "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
9608 "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", 13442 "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
13443 "dev": true,
9609 "requires": { 13444 "requires": {
9610 "kind-of": "^6.0.2" 13445 "kind-of": "^6.0.2"
9611 } 13446 }
9612 }, 13447 },
13448 "makeerror": {
13449 "version": "1.0.11",
13450 "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
13451 "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
13452 "dev": true,
13453 "requires": {
13454 "tmpl": "1.0.x"
13455 }
13456 },
9613 "map-age-cleaner": { 13457 "map-age-cleaner": {
9614 "version": "0.1.2", 13458 "version": "0.1.3",
9615 "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", 13459 "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
9616 "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", 13460 "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
9617 "dev": true, 13461 "dev": true,
9618 "requires": { 13462 "requires": {
9619 "p-defer": "^1.0.0" 13463 "p-defer": "^1.0.0"
@@ -9622,22 +13466,29 @@
9622 "map-cache": { 13466 "map-cache": {
9623 "version": "0.2.2", 13467 "version": "0.2.2",
9624 "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 13468 "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
9625 "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" 13469 "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
13470 "dev": true
9626 }, 13471 },
9627 "map-obj": { 13472 "map-obj": {
9628 "version": "1.0.1", 13473 "version": "2.0.0",
9629 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 13474 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
9630 "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 13475 "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
9631 "dev": true 13476 "dev": true
9632 }, 13477 },
9633 "map-visit": { 13478 "map-visit": {
9634 "version": "1.0.0", 13479 "version": "1.0.0",
9635 "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 13480 "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
9636 "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 13481 "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
13482 "dev": true,
9637 "requires": { 13483 "requires": {
9638 "object-visit": "^1.0.0" 13484 "object-visit": "^1.0.0"
9639 } 13485 }
9640 }, 13486 },
13487 "marked": {
13488 "version": "0.6.1",
13489 "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.1.tgz",
13490 "integrity": "sha512-+H0L3ibcWhAZE02SKMqmvYsErLo4EAVJxu5h3bHBBDvvjeWXtl92rGUSBYHL2++5Y+RSNgl8dYOAXcYe7lp1fA=="
13491 },
9641 "matchdep": { 13492 "matchdep": {
9642 "version": "2.0.0", 13493 "version": "2.0.0",
9643 "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", 13494 "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
@@ -9651,44 +13502,103 @@
9651 } 13502 }
9652 }, 13503 },
9653 "math-random": { 13504 "math-random": {
9654 "version": "1.0.1", 13505 "version": "1.0.4",
9655 "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", 13506 "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
9656 "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" 13507 "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
13508 "dev": true
13509 },
13510 "md5.js": {
13511 "version": "1.3.5",
13512 "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
13513 "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
13514 "dev": true,
13515 "requires": {
13516 "hash-base": "^3.0.0",
13517 "inherits": "^2.0.1",
13518 "safe-buffer": "^5.1.2"
13519 }
9657 }, 13520 },
9658 "mdi": { 13521 "mdi": {
9659 "version": "1.9.33", 13522 "version": "1.9.33",
9660 "resolved": "https://registry.npmjs.org/mdi/-/mdi-1.9.33.tgz", 13523 "resolved": "https://registry.npmjs.org/mdi/-/mdi-1.9.33.tgz",
9661 "integrity": "sha1-PK9tlfxrgAYzYwvWK6DPH73msuI=" 13524 "integrity": "sha1-PK9tlfxrgAYzYwvWK6DPH73msuI="
9662 }, 13525 },
13526 "media-typer": {
13527 "version": "0.3.0",
13528 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
13529 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
13530 "dev": true
13531 },
9663 "mem": { 13532 "mem": {
9664 "version": "4.0.0", 13533 "version": "4.1.0",
9665 "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", 13534 "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
9666 "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", 13535 "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
9667 "dev": true, 13536 "dev": true,
9668 "requires": { 13537 "requires": {
9669 "map-age-cleaner": "^0.1.1", 13538 "map-age-cleaner": "^0.1.1",
9670 "mimic-fn": "^1.0.0", 13539 "mimic-fn": "^1.0.0",
9671 "p-is-promise": "^1.1.0" 13540 "p-is-promise": "^2.0.0"
13541 }
13542 },
13543 "memory-fs": {
13544 "version": "0.4.1",
13545 "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
13546 "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
13547 "dev": true,
13548 "requires": {
13549 "errno": "^0.1.3",
13550 "readable-stream": "^2.0.1"
13551 },
13552 "dependencies": {
13553 "readable-stream": {
13554 "version": "2.3.6",
13555 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
13556 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
13557 "dev": true,
13558 "requires": {
13559 "core-util-is": "~1.0.0",
13560 "inherits": "~2.0.3",
13561 "isarray": "~1.0.0",
13562 "process-nextick-args": "~2.0.0",
13563 "safe-buffer": "~5.1.1",
13564 "string_decoder": "~1.1.1",
13565 "util-deprecate": "~1.0.1"
13566 }
13567 },
13568 "string_decoder": {
13569 "version": "1.1.1",
13570 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
13571 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
13572 "dev": true,
13573 "requires": {
13574 "safe-buffer": "~5.1.0"
13575 }
13576 }
9672 } 13577 }
9673 }, 13578 },
9674 "meow": { 13579 "meow": {
9675 "version": "3.7.0", 13580 "version": "4.0.1",
9676 "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", 13581 "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
9677 "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", 13582 "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
9678 "dev": true, 13583 "dev": true,
9679 "requires": { 13584 "requires": {
9680 "camelcase-keys": "^2.0.0", 13585 "camelcase-keys": "^4.0.0",
9681 "decamelize": "^1.1.2", 13586 "decamelize-keys": "^1.0.0",
9682 "loud-rejection": "^1.0.0", 13587 "loud-rejection": "^1.0.0",
9683 "map-obj": "^1.0.1",
9684 "minimist": "^1.1.3", 13588 "minimist": "^1.1.3",
13589 "minimist-options": "^3.0.1",
9685 "normalize-package-data": "^2.3.4", 13590 "normalize-package-data": "^2.3.4",
9686 "object-assign": "^4.0.1", 13591 "read-pkg-up": "^3.0.0",
9687 "read-pkg-up": "^1.0.1", 13592 "redent": "^2.0.0",
9688 "redent": "^1.0.0", 13593 "trim-newlines": "^2.0.0"
9689 "trim-newlines": "^1.0.0"
9690 } 13594 }
9691 }, 13595 },
13596 "merge-descriptors": {
13597 "version": "1.0.1",
13598 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
13599 "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
13600 "dev": true
13601 },
9692 "merge-stream": { 13602 "merge-stream": {
9693 "version": "0.1.8", 13603 "version": "0.1.8",
9694 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-0.1.8.tgz", 13604 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-0.1.8.tgz",
@@ -9706,7 +13616,7 @@
9706 }, 13616 },
9707 "readable-stream": { 13617 "readable-stream": {
9708 "version": "1.0.34", 13618 "version": "1.0.34",
9709 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 13619 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
9710 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 13620 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
9711 "dev": true, 13621 "dev": true,
9712 "requires": { 13622 "requires": {
@@ -9734,10 +13644,23 @@
9734 } 13644 }
9735 } 13645 }
9736 }, 13646 },
13647 "merge2": {
13648 "version": "1.2.3",
13649 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz",
13650 "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==",
13651 "dev": true
13652 },
13653 "methods": {
13654 "version": "1.1.2",
13655 "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
13656 "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
13657 "dev": true
13658 },
9737 "micromatch": { 13659 "micromatch": {
9738 "version": "3.1.10", 13660 "version": "3.1.10",
9739 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 13661 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
9740 "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 13662 "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
13663 "dev": true,
9741 "requires": { 13664 "requires": {
9742 "arr-diff": "^4.0.0", 13665 "arr-diff": "^4.0.0",
9743 "array-unique": "^0.3.2", 13666 "array-unique": "^0.3.2",
@@ -9754,6 +13677,16 @@
9754 "to-regex": "^3.0.2" 13677 "to-regex": "^3.0.2"
9755 } 13678 }
9756 }, 13679 },
13680 "miller-rabin": {
13681 "version": "4.0.1",
13682 "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
13683 "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
13684 "dev": true,
13685 "requires": {
13686 "bn.js": "^4.0.0",
13687 "brorand": "^1.0.1"
13688 }
13689 },
9757 "mime": { 13690 "mime": {
9758 "version": "2.4.0", 13691 "version": "2.4.0",
9759 "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", 13692 "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
@@ -9761,9 +13694,9 @@
9761 "dev": true 13694 "dev": true
9762 }, 13695 },
9763 "mime-db": { 13696 "mime-db": {
9764 "version": "1.37.0", 13697 "version": "1.38.0",
9765 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", 13698 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
9766 "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" 13699 "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
9767 }, 13700 },
9768 "mime-types": { 13701 "mime-types": {
9769 "version": "2.1.21", 13702 "version": "2.1.21",
@@ -9771,6 +13704,13 @@
9771 "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", 13704 "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
9772 "requires": { 13705 "requires": {
9773 "mime-db": "~1.37.0" 13706 "mime-db": "~1.37.0"
13707 },
13708 "dependencies": {
13709 "mime-db": {
13710 "version": "1.37.0",
13711 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
13712 "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
13713 }
9774 } 13714 }
9775 }, 13715 },
9776 "mimic-fn": { 13716 "mimic-fn": {
@@ -9779,6 +13719,18 @@
9779 "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 13719 "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
9780 "dev": true 13720 "dev": true
9781 }, 13721 },
13722 "minimalistic-assert": {
13723 "version": "1.0.1",
13724 "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
13725 "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
13726 "dev": true
13727 },
13728 "minimalistic-crypto-utils": {
13729 "version": "1.0.1",
13730 "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
13731 "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
13732 "dev": true
13733 },
9782 "minimatch": { 13734 "minimatch": {
9783 "version": "3.0.4", 13735 "version": "3.0.4",
9784 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 13736 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -9789,8 +13741,9 @@
9789 }, 13741 },
9790 "minimist": { 13742 "minimist": {
9791 "version": "1.2.0", 13743 "version": "1.2.0",
9792 "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 13744 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
9793 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 13745 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
13746 "dev": true
9794 }, 13747 },
9795 "minimist-options": { 13748 "minimist-options": {
9796 "version": "3.0.2", 13749 "version": "3.0.2",
@@ -9803,33 +13756,45 @@
9803 } 13756 }
9804 }, 13757 },
9805 "minipass": { 13758 "minipass": {
9806 "version": "2.3.4", 13759 "version": "2.3.5",
9807 "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.4.tgz", 13760 "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
9808 "integrity": "sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w==", 13761 "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
9809 "requires": { 13762 "requires": {
9810 "safe-buffer": "^5.1.2", 13763 "safe-buffer": "^5.1.2",
9811 "yallist": "^3.0.0" 13764 "yallist": "^3.0.0"
9812 },
9813 "dependencies": {
9814 "yallist": {
9815 "version": "3.0.2",
9816 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
9817 "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
9818 }
9819 } 13765 }
9820 }, 13766 },
9821 "minizlib": { 13767 "minizlib": {
9822 "version": "1.1.1", 13768 "version": "1.2.1",
9823 "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.1.tgz", 13769 "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz",
9824 "integrity": "sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg==", 13770 "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
9825 "requires": { 13771 "requires": {
9826 "minipass": "^2.2.1" 13772 "minipass": "^2.2.1"
9827 } 13773 }
9828 }, 13774 },
13775 "mississippi": {
13776 "version": "3.0.0",
13777 "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
13778 "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
13779 "dev": true,
13780 "requires": {
13781 "concat-stream": "^1.5.0",
13782 "duplexify": "^3.4.2",
13783 "end-of-stream": "^1.1.0",
13784 "flush-write-stream": "^1.0.0",
13785 "from2": "^2.1.0",
13786 "parallel-transform": "^1.1.0",
13787 "pump": "^3.0.0",
13788 "pumpify": "^1.3.3",
13789 "stream-each": "^1.1.0",
13790 "through2": "^2.0.0"
13791 }
13792 },
9829 "mixin-deep": { 13793 "mixin-deep": {
9830 "version": "1.3.1", 13794 "version": "1.3.1",
9831 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", 13795 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
9832 "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", 13796 "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
13797 "dev": true,
9833 "requires": { 13798 "requires": {
9834 "for-in": "^1.0.2", 13799 "for-in": "^1.0.2",
9835 "is-extendable": "^1.0.1" 13800 "is-extendable": "^1.0.1"
@@ -9839,6 +13804,7 @@
9839 "version": "1.0.1", 13804 "version": "1.0.1",
9840 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 13805 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
9841 "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 13806 "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
13807 "dev": true,
9842 "requires": { 13808 "requires": {
9843 "is-plain-object": "^2.0.4" 13809 "is-plain-object": "^2.0.4"
9844 } 13810 }
@@ -9847,7 +13813,7 @@
9847 }, 13813 },
9848 "mkdirp": { 13814 "mkdirp": {
9849 "version": "0.5.1", 13815 "version": "0.5.1",
9850 "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 13816 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
9851 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 13817 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
9852 "requires": { 13818 "requires": {
9853 "minimist": "0.0.8" 13819 "minimist": "0.0.8"
@@ -9855,7 +13821,7 @@
9855 "dependencies": { 13821 "dependencies": {
9856 "minimist": { 13822 "minimist": {
9857 "version": "0.0.8", 13823 "version": "0.0.8",
9858 "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 13824 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
9859 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 13825 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
9860 } 13826 }
9861 } 13827 }
@@ -9880,18 +13846,14 @@
9880 "requires": { 13846 "requires": {
9881 "hoist-non-react-statics": "^3.0.0", 13847 "hoist-non-react-statics": "^3.0.0",
9882 "react-lifecycles-compat": "^3.0.2" 13848 "react-lifecycles-compat": "^3.0.2"
9883 },
9884 "dependencies": {
9885 "hoist-non-react-statics": {
9886 "version": "3.2.1",
9887 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.2.1.tgz",
9888 "integrity": "sha512-TFsu3TV3YLY+zFTZDrN8L2DTFanObwmBLpWvJs1qfUuEQ5bTAdFcwfx2T/bsCXfM9QHSLvjfP+nihEl0yvozxw==",
9889 "requires": {
9890 "react-is": "^16.3.2"
9891 }
9892 }
9893 } 13849 }
9894 }, 13850 },
13851 "mobx-react-devtools": {
13852 "version": "6.0.3",
13853 "resolved": "https://registry.npmjs.org/mobx-react-devtools/-/mobx-react-devtools-6.0.3.tgz",
13854 "integrity": "sha512-PY+lG6XeWaC0DFnDaVC7ImrHJQu7XVXNy4z4fmqHzWc3p+fJisKmaZNwgToO2vJGBghz98Mx2yXUBLw1Ba2mPQ==",
13855 "dev": true
13856 },
9895 "mobx-react-form": { 13857 "mobx-react-form": {
9896 "version": "1.35.1", 13858 "version": "1.35.1",
9897 "resolved": "https://registry.npmjs.org/mobx-react-form/-/mobx-react-form-1.35.1.tgz", 13859 "resolved": "https://registry.npmjs.org/mobx-react-form/-/mobx-react-form-1.35.1.tgz",
@@ -9905,6 +13867,79 @@
9905 "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz", 13867 "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz",
9906 "integrity": "sha1-gzKLEIOTAXFI2G/qF/YR3i0qrNw=" 13868 "integrity": "sha1-gzKLEIOTAXFI2G/qF/YR3i0qrNw="
9907 }, 13869 },
13870 "mocha": {
13871 "version": "5.2.0",
13872 "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
13873 "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
13874 "dev": true,
13875 "requires": {
13876 "browser-stdout": "1.3.1",
13877 "commander": "2.15.1",
13878 "debug": "3.1.0",
13879 "diff": "3.5.0",
13880 "escape-string-regexp": "1.0.5",
13881 "glob": "7.1.2",
13882 "growl": "1.10.5",
13883 "he": "1.1.1",
13884 "minimatch": "3.0.4",
13885 "mkdirp": "0.5.1",
13886 "supports-color": "5.4.0"
13887 },
13888 "dependencies": {
13889 "commander": {
13890 "version": "2.15.1",
13891 "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
13892 "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
13893 "dev": true
13894 },
13895 "debug": {
13896 "version": "3.1.0",
13897 "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
13898 "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
13899 "dev": true,
13900 "requires": {
13901 "ms": "2.0.0"
13902 },
13903 "dependencies": {
13904 "ms": {
13905 "version": "2.0.0",
13906 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
13907 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
13908 "dev": true
13909 }
13910 }
13911 },
13912 "glob": {
13913 "version": "7.1.2",
13914 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
13915 "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
13916 "dev": true,
13917 "requires": {
13918 "fs.realpath": "^1.0.0",
13919 "inflight": "^1.0.4",
13920 "inherits": "2",
13921 "minimatch": "^3.0.4",
13922 "once": "^1.3.0",
13923 "path-is-absolute": "^1.0.0"
13924 }
13925 },
13926 "he": {
13927 "version": "1.1.1",
13928 "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
13929 "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
13930 "dev": true
13931 },
13932 "supports-color": {
13933 "version": "5.4.0",
13934 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
13935 "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
13936 "dev": true,
13937 "requires": {
13938 "has-flag": "^3.0.0"
13939 }
13940 }
13941 }
13942 },
9908 "modify-filename": { 13943 "modify-filename": {
9909 "version": "1.1.0", 13944 "version": "1.1.0",
9910 "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", 13945 "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
@@ -9917,14 +13952,56 @@
9917 "dev": true 13952 "dev": true
9918 }, 13953 },
9919 "moment": { 13954 "moment": {
9920 "version": "2.22.2", 13955 "version": "2.24.0",
9921 "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", 13956 "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
9922 "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" 13957 "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
13958 },
13959 "move-concurrently": {
13960 "version": "1.0.1",
13961 "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
13962 "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
13963 "dev": true,
13964 "requires": {
13965 "aproba": "^1.1.1",
13966 "copy-concurrently": "^1.0.0",
13967 "fs-write-stream-atomic": "^1.0.8",
13968 "mkdirp": "^0.5.1",
13969 "rimraf": "^2.5.4",
13970 "run-queue": "^1.0.3"
13971 }
9923 }, 13972 },
9924 "ms": { 13973 "ms": {
9925 "version": "2.0.0", 13974 "version": "2.1.1",
9926 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 13975 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
9927 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 13976 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
13977 },
13978 "multicast-dns": {
13979 "version": "6.2.3",
13980 "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
13981 "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
13982 "dev": true,
13983 "requires": {
13984 "dns-packet": "^1.3.1",
13985 "thunky": "^1.0.2"
13986 }
13987 },
13988 "multicast-dns-service-types": {
13989 "version": "1.1.0",
13990 "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
13991 "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
13992 "dev": true
13993 },
13994 "multimatch": {
13995 "version": "2.1.0",
13996 "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
13997 "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
13998 "dev": true,
13999 "requires": {
14000 "array-differ": "^1.0.0",
14001 "array-union": "^1.0.1",
14002 "arrify": "^1.0.0",
14003 "minimatch": "^3.0.0"
14004 }
9928 }, 14005 },
9929 "multipipe": { 14006 "multipipe": {
9930 "version": "0.1.2", 14007 "version": "0.1.2",
@@ -9938,7 +14015,8 @@
9938 "mute-stdout": { 14015 "mute-stdout": {
9939 "version": "1.0.1", 14016 "version": "1.0.1",
9940 "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", 14017 "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
9941 "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" 14018 "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
14019 "dev": true
9942 }, 14020 },
9943 "mute-stream": { 14021 "mute-stream": {
9944 "version": "0.0.7", 14022 "version": "0.0.7",
@@ -9947,9 +14025,9 @@
9947 "dev": true 14025 "dev": true
9948 }, 14026 },
9949 "nan": { 14027 "nan": {
9950 "version": "2.11.1", 14028 "version": "2.12.1",
9951 "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", 14029 "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
9952 "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==" 14030 "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw=="
9953 }, 14031 },
9954 "nanoid": { 14032 "nanoid": {
9955 "version": "1.3.4", 14033 "version": "1.3.4",
@@ -9960,6 +14038,7 @@
9960 "version": "1.2.13", 14038 "version": "1.2.13",
9961 "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 14039 "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
9962 "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 14040 "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
14041 "dev": true,
9963 "requires": { 14042 "requires": {
9964 "arr-diff": "^4.0.0", 14043 "arr-diff": "^4.0.0",
9965 "array-unique": "^0.3.2", 14044 "array-unique": "^0.3.2",
@@ -9986,16 +14065,35 @@
9986 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 14065 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
9987 "dev": true 14066 "dev": true
9988 }, 14067 },
14068 "needle": {
14069 "version": "2.2.4",
14070 "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz",
14071 "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==",
14072 "dev": true,
14073 "optional": true,
14074 "requires": {
14075 "debug": "^2.1.2",
14076 "iconv-lite": "^0.4.4",
14077 "sax": "^1.2.4"
14078 }
14079 },
9989 "negotiator": { 14080 "negotiator": {
9990 "version": "0.4.7", 14081 "version": "0.4.7",
9991 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz", 14082 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz",
9992 "integrity": "sha1-pBYPcXfsgGc4Yx0NMFIyXaQqvcg=", 14083 "integrity": "sha1-pBYPcXfsgGc4Yx0NMFIyXaQqvcg=",
9993 "dev": true 14084 "dev": true
9994 }, 14085 },
14086 "neo-async": {
14087 "version": "2.6.0",
14088 "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
14089 "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
14090 "dev": true
14091 },
9995 "next-tick": { 14092 "next-tick": {
9996 "version": "1.0.0", 14093 "version": "1.0.0",
9997 "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 14094 "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
9998 "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" 14095 "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
14096 "dev": true
9999 }, 14097 },
10000 "nice-try": { 14098 "nice-try": {
10001 "version": "1.0.5", 14099 "version": "1.0.5",
@@ -10003,10 +14101,19 @@
10003 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 14101 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
10004 "dev": true 14102 "dev": true
10005 }, 14103 },
14104 "no-case": {
14105 "version": "2.3.2",
14106 "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
14107 "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
14108 "dev": true,
14109 "requires": {
14110 "lower-case": "^1.1.1"
14111 }
14112 },
10006 "node-abi": { 14113 "node-abi": {
10007 "version": "2.4.5", 14114 "version": "2.7.1",
10008 "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.5.tgz", 14115 "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.7.1.tgz",
10009 "integrity": "sha512-aa/UC6Nr3+tqhHGRsAuw/edz7/q9nnetBrKWxj6rpTtm+0X9T1qU7lIEHMS3yN9JwAbRiKUbRRFy1PLz/y3aaA==", 14116 "integrity": "sha512-OV8Bq1OrPh6z+Y4dqwo05HqrRL9YNF7QVMRfq1/pguwKLG+q9UB/Lk0x5qXjO23JjJg+/jqCHSTaG1P3tfKfuw==",
10010 "dev": true, 14117 "dev": true,
10011 "requires": { 14118 "requires": {
10012 "semver": "^5.4.1" 14119 "semver": "^5.4.1"
@@ -10021,6 +14128,23 @@
10021 "is-stream": "^1.0.1" 14128 "is-stream": "^1.0.1"
10022 } 14129 }
10023 }, 14130 },
14131 "node-fetch-npm": {
14132 "version": "2.0.2",
14133 "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
14134 "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==",
14135 "dev": true,
14136 "requires": {
14137 "encoding": "^0.1.11",
14138 "json-parse-better-errors": "^1.0.0",
14139 "safe-buffer": "^5.1.1"
14140 }
14141 },
14142 "node-forge": {
14143 "version": "0.7.5",
14144 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
14145 "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
14146 "dev": true
14147 },
10024 "node-gyp": { 14148 "node-gyp": {
10025 "version": "3.8.0", 14149 "version": "3.8.0",
10026 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", 14150 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
@@ -10043,7 +14167,7 @@
10043 "dependencies": { 14167 "dependencies": {
10044 "semver": { 14168 "semver": {
10045 "version": "5.3.0", 14169 "version": "5.3.0",
10046 "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 14170 "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
10047 "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", 14171 "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
10048 "dev": true 14172 "dev": true
10049 }, 14173 },
@@ -10060,25 +14184,141 @@
10060 } 14184 }
10061 } 14185 }
10062 }, 14186 },
14187 "node-int64": {
14188 "version": "0.4.0",
14189 "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
14190 "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
14191 "dev": true
14192 },
14193 "node-libs-browser": {
14194 "version": "2.2.0",
14195 "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz",
14196 "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==",
14197 "dev": true,
14198 "requires": {
14199 "assert": "^1.1.1",
14200 "browserify-zlib": "^0.2.0",
14201 "buffer": "^4.3.0",
14202 "console-browserify": "^1.1.0",
14203 "constants-browserify": "^1.0.0",
14204 "crypto-browserify": "^3.11.0",
14205 "domain-browser": "^1.1.1",
14206 "events": "^3.0.0",
14207 "https-browserify": "^1.0.0",
14208 "os-browserify": "^0.3.0",
14209 "path-browserify": "0.0.0",
14210 "process": "^0.11.10",
14211 "punycode": "^1.2.4",
14212 "querystring-es3": "^0.2.0",
14213 "readable-stream": "^2.3.3",
14214 "stream-browserify": "^2.0.1",
14215 "stream-http": "^2.7.2",
14216 "string_decoder": "^1.0.0",
14217 "timers-browserify": "^2.0.4",
14218 "tty-browserify": "0.0.0",
14219 "url": "^0.11.0",
14220 "util": "^0.11.0",
14221 "vm-browserify": "0.0.4"
14222 },
14223 "dependencies": {
14224 "punycode": {
14225 "version": "1.4.1",
14226 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
14227 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
14228 "dev": true
14229 },
14230 "readable-stream": {
14231 "version": "2.3.6",
14232 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
14233 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
14234 "dev": true,
14235 "requires": {
14236 "core-util-is": "~1.0.0",
14237 "inherits": "~2.0.3",
14238 "isarray": "~1.0.0",
14239 "process-nextick-args": "~2.0.0",
14240 "safe-buffer": "~5.1.1",
14241 "string_decoder": "~1.1.1",
14242 "util-deprecate": "~1.0.1"
14243 },
14244 "dependencies": {
14245 "string_decoder": {
14246 "version": "1.1.1",
14247 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
14248 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
14249 "dev": true,
14250 "requires": {
14251 "safe-buffer": "~5.1.0"
14252 }
14253 }
14254 }
14255 }
14256 }
14257 },
10063 "node-modules-regexp": { 14258 "node-modules-regexp": {
10064 "version": "1.0.0", 14259 "version": "1.0.0",
10065 "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", 14260 "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
10066 "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", 14261 "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
10067 "dev": true 14262 "dev": true
10068 }, 14263 },
14264 "node-notifier": {
14265 "version": "5.4.0",
14266 "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz",
14267 "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==",
14268 "dev": true,
14269 "requires": {
14270 "growly": "^1.3.0",
14271 "is-wsl": "^1.1.0",
14272 "semver": "^5.5.0",
14273 "shellwords": "^0.1.1",
14274 "which": "^1.3.0"
14275 }
14276 },
14277 "node-pre-gyp": {
14278 "version": "0.10.3",
14279 "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz",
14280 "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==",
14281 "dev": true,
14282 "optional": true,
14283 "requires": {
14284 "detect-libc": "^1.0.2",
14285 "mkdirp": "^0.5.1",
14286 "needle": "^2.2.1",
14287 "nopt": "^4.0.1",
14288 "npm-packlist": "^1.1.6",
14289 "npmlog": "^4.0.2",
14290 "rc": "^1.2.7",
14291 "rimraf": "^2.6.1",
14292 "semver": "^5.3.0",
14293 "tar": "^4"
14294 },
14295 "dependencies": {
14296 "nopt": {
14297 "version": "4.0.1",
14298 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
14299 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
14300 "dev": true,
14301 "optional": true,
14302 "requires": {
14303 "abbrev": "1",
14304 "osenv": "^0.1.4"
14305 }
14306 }
14307 }
14308 },
10069 "node-releases": { 14309 "node-releases": {
10070 "version": "1.0.0-alpha.14", 14310 "version": "1.1.7",
10071 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.14.tgz", 14311 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.7.tgz",
10072 "integrity": "sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g==", 14312 "integrity": "sha512-bKdrwaqJUPHqlCzDD7so/R+Nk0jGv9a11ZhLrD9f6i947qGLrGAhU3OxRENa19QQmwzGy/g6zCDEuLGDO8HPvA==",
10073 "dev": true, 14313 "dev": true,
10074 "requires": { 14314 "requires": {
10075 "semver": "^5.3.0" 14315 "semver": "^5.3.0"
10076 } 14316 }
10077 }, 14317 },
10078 "node-sass": { 14318 "node-sass": {
10079 "version": "4.9.4", 14319 "version": "4.11.0",
10080 "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.4.tgz", 14320 "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz",
10081 "integrity": "sha512-MXyurANsUoE4/6KmfMkwGcBzAnJQ5xJBGW7Ei6ea8KnUKuzHr/SguVBIi3uaUAHtZCPUYkvlJ3Ef5T5VAwVpaA==", 14321 "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==",
10082 "dev": true, 14322 "dev": true,
10083 "requires": { 14323 "requires": {
10084 "async-foreach": "^0.1.3", 14324 "async-foreach": "^0.1.3",
@@ -10102,3235 +14342,576 @@
10102 "true-case-path": "^1.0.2" 14342 "true-case-path": "^1.0.2"
10103 }, 14343 },
10104 "dependencies": { 14344 "dependencies": {
10105 "cross-spawn": {
10106 "version": "3.0.1",
10107 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
10108 "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
10109 "dev": true,
10110 "requires": {
10111 "lru-cache": "^4.0.1",
10112 "which": "^1.2.9"
10113 }
10114 }
10115 }
10116 },
10117 "node-watch": {
10118 "version": "0.3.5",
10119 "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.3.5.tgz",
10120 "integrity": "sha1-oH8lOk9TjenUylIt1/GZbu7A2X4=",
10121 "dev": true
10122 },
10123 "node.extend": {
10124 "version": "1.0.10",
10125 "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.0.10.tgz",
10126 "integrity": "sha1-Mmm934HFRTX0CKvHhMMrDSvVX28=",
10127 "dev": true,
10128 "requires": {
10129 "is": "~0.3.0"
10130 }
10131 },
10132 "nopt": {
10133 "version": "3.0.6",
10134 "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
10135 "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
10136 "dev": true,
10137 "requires": {
10138 "abbrev": "1"
10139 }
10140 },
10141 "normalize-package-data": {
10142 "version": "2.4.0",
10143 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
10144 "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
10145 "dev": true,
10146 "requires": {
10147 "hosted-git-info": "^2.1.4",
10148 "is-builtin-module": "^1.0.0",
10149 "semver": "2 || 3 || 4 || 5",
10150 "validate-npm-package-license": "^3.0.1"
10151 },
10152 "dependencies": {
10153 "semver": {
10154 "version": "5.6.0",
10155 "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
10156 "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
10157 "dev": true
10158 }
10159 }
10160 },
10161 "normalize-path": {
10162 "version": "2.1.1",
10163 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
10164 "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
10165 "requires": {
10166 "remove-trailing-separator": "^1.0.1"
10167 }
10168 },
10169 "normalize-url": {
10170 "version": "1.9.1",
10171 "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
10172 "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
10173 "requires": {
10174 "object-assign": "^4.0.1",
10175 "prepend-http": "^1.0.0",
10176 "query-string": "^4.1.0",
10177 "sort-keys": "^1.0.0"
10178 }
10179 },
10180 "now-and-later": {
10181 "version": "2.0.0",
10182 "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz",
10183 "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=",
10184 "dev": true,
10185 "requires": {
10186 "once": "^1.3.2"
10187 }
10188 },
10189 "npm": {
10190 "version": "6.5.0",
10191 "resolved": "https://registry.npmjs.org/npm/-/npm-6.5.0.tgz",
10192 "integrity": "sha512-SPq8zG2Kto+Xrq55E97O14Jla13PmQT5kSnvwBj88BmJZ5Nvw++OmlWfhjkB67pcgP5UEXljEtnGFKZtOgt6MQ==",
10193 "dev": true,
10194 "requires": {
10195 "JSONStream": "^1.3.4",
10196 "abbrev": "~1.1.1",
10197 "ansicolors": "~0.3.2",
10198 "ansistyles": "~0.1.3",
10199 "aproba": "~1.2.0",
10200 "archy": "~1.0.0",
10201 "bin-links": "^1.1.2",
10202 "bluebird": "^3.5.3",
10203 "byte-size": "^4.0.3",
10204 "cacache": "^11.2.0",
10205 "call-limit": "~1.1.0",
10206 "chownr": "~1.0.1",
10207 "ci-info": "^1.6.0",
10208 "cli-columns": "^3.1.2",
10209 "cli-table3": "^0.5.0",
10210 "cmd-shim": "~2.0.2",
10211 "columnify": "~1.5.4",
10212 "config-chain": "^1.1.12",
10213 "debuglog": "*",
10214 "detect-indent": "~5.0.0",
10215 "detect-newline": "^2.1.0",
10216 "dezalgo": "~1.0.3",
10217 "editor": "~1.0.0",
10218 "figgy-pudding": "^3.5.1",
10219 "find-npm-prefix": "^1.0.2",
10220 "fs-vacuum": "~1.2.10",
10221 "fs-write-stream-atomic": "~1.0.10",
10222 "gentle-fs": "^2.0.1",
10223 "glob": "^7.1.3",
10224 "graceful-fs": "^4.1.15",
10225 "has-unicode": "~2.0.1",
10226 "hosted-git-info": "^2.7.1",
10227 "iferr": "^1.0.2",
10228 "imurmurhash": "*",
10229 "inflight": "~1.0.6",
10230 "inherits": "~2.0.3",
10231 "ini": "^1.3.5",
10232 "init-package-json": "^1.10.3",
10233 "is-cidr": "^2.0.6",
10234 "json-parse-better-errors": "^1.0.2",
10235 "lazy-property": "~1.0.0",
10236 "libcipm": "^2.0.2",
10237 "libnpmhook": "^4.0.1",
10238 "libnpx": "^10.2.0",
10239 "lock-verify": "^2.0.2",
10240 "lockfile": "^1.0.4",
10241 "lodash._baseindexof": "*",
10242 "lodash._baseuniq": "~4.6.0",
10243 "lodash._bindcallback": "*",
10244 "lodash._cacheindexof": "*",
10245 "lodash._createcache": "*",
10246 "lodash._getnative": "*",
10247 "lodash.clonedeep": "~4.5.0",
10248 "lodash.restparam": "*",
10249 "lodash.union": "~4.6.0",
10250 "lodash.uniq": "~4.5.0",
10251 "lodash.without": "~4.4.0",
10252 "lru-cache": "^4.1.3",
10253 "meant": "~1.0.1",
10254 "mississippi": "^3.0.0",
10255 "mkdirp": "~0.5.1",
10256 "move-concurrently": "^1.0.1",
10257 "node-gyp": "^3.8.0",
10258 "nopt": "~4.0.1",
10259 "normalize-package-data": "~2.4.0",
10260 "npm-audit-report": "^1.3.1",
10261 "npm-cache-filename": "~1.0.2",
10262 "npm-install-checks": "~3.0.0",
10263 "npm-lifecycle": "^2.1.0",
10264 "npm-package-arg": "^6.1.0",
10265 "npm-packlist": "^1.1.12",
10266 "npm-pick-manifest": "^2.1.0",
10267 "npm-profile": "^3.0.2",
10268 "npm-registry-client": "^8.6.0",
10269 "npm-registry-fetch": "^1.1.0",
10270 "npm-user-validate": "~1.0.0",
10271 "npmlog": "~4.1.2",
10272 "once": "~1.4.0",
10273 "opener": "^1.5.1",
10274 "osenv": "^0.1.5",
10275 "pacote": "^8.1.6",
10276 "path-is-inside": "~1.0.2",
10277 "promise-inflight": "~1.0.1",
10278 "qrcode-terminal": "^0.12.0",
10279 "query-string": "^6.1.0",
10280 "qw": "~1.0.1",
10281 "read": "~1.0.7",
10282 "read-cmd-shim": "~1.0.1",
10283 "read-installed": "~4.0.3",
10284 "read-package-json": "^2.0.13",
10285 "read-package-tree": "^5.2.1",
10286 "readable-stream": "^2.3.6",
10287 "readdir-scoped-modules": "*",
10288 "request": "^2.88.0",
10289 "retry": "^0.12.0",
10290 "rimraf": "~2.6.2",
10291 "safe-buffer": "^5.1.2",
10292 "semver": "^5.5.1",
10293 "sha": "~2.0.1",
10294 "slide": "~1.1.6",
10295 "sorted-object": "~2.0.1",
10296 "sorted-union-stream": "~2.1.3",
10297 "ssri": "^6.0.1",
10298 "stringify-package": "^1.0.0",
10299 "tar": "^4.4.8",
10300 "text-table": "~0.2.0",
10301 "tiny-relative-date": "^1.3.0",
10302 "uid-number": "0.0.6",
10303 "umask": "~1.1.0",
10304 "unique-filename": "~1.1.0",
10305 "unpipe": "~1.0.0",
10306 "update-notifier": "^2.5.0",
10307 "uuid": "^3.3.2",
10308 "validate-npm-package-license": "^3.0.4",
10309 "validate-npm-package-name": "~3.0.0",
10310 "which": "^1.3.1",
10311 "worker-farm": "^1.6.0",
10312 "write-file-atomic": "^2.3.0"
10313 },
10314 "dependencies": {
10315 "JSONStream": {
10316 "version": "1.3.4",
10317 "bundled": true,
10318 "dev": true,
10319 "requires": {
10320 "jsonparse": "^1.2.0",
10321 "through": ">=2.2.7 <3"
10322 }
10323 },
10324 "abbrev": {
10325 "version": "1.1.1",
10326 "bundled": true,
10327 "dev": true
10328 },
10329 "agent-base": {
10330 "version": "4.2.0",
10331 "bundled": true,
10332 "dev": true,
10333 "requires": {
10334 "es6-promisify": "^5.0.0"
10335 }
10336 },
10337 "agentkeepalive": {
10338 "version": "3.4.1",
10339 "bundled": true,
10340 "dev": true,
10341 "requires": {
10342 "humanize-ms": "^1.2.1"
10343 }
10344 },
10345 "ajv": {
10346 "version": "5.5.2",
10347 "bundled": true,
10348 "dev": true,
10349 "requires": {
10350 "co": "^4.6.0",
10351 "fast-deep-equal": "^1.0.0",
10352 "fast-json-stable-stringify": "^2.0.0",
10353 "json-schema-traverse": "^0.3.0"
10354 }
10355 },
10356 "ansi-align": {
10357 "version": "2.0.0",
10358 "bundled": true,
10359 "dev": true,
10360 "requires": {
10361 "string-width": "^2.0.0"
10362 }
10363 },
10364 "ansi-regex": { 14345 "ansi-regex": {
10365 "version": "2.1.1", 14346 "version": "2.1.1",
10366 "bundled": true, 14347 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
14348 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
10367 "dev": true 14349 "dev": true
10368 }, 14350 },
10369 "ansi-styles": { 14351 "ansi-styles": {
10370 "version": "3.2.1", 14352 "version": "2.2.1",
10371 "bundled": true, 14353 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
10372 "dev": true, 14354 "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
10373 "requires": {
10374 "color-convert": "^1.9.0"
10375 }
10376 },
10377 "ansicolors": {
10378 "version": "0.3.2",
10379 "bundled": true,
10380 "dev": true
10381 },
10382 "ansistyles": {
10383 "version": "0.1.3",
10384 "bundled": true,
10385 "dev": true
10386 },
10387 "aproba": {
10388 "version": "1.2.0",
10389 "bundled": true,
10390 "dev": true
10391 },
10392 "archy": {
10393 "version": "1.0.0",
10394 "bundled": true,
10395 "dev": true
10396 },
10397 "are-we-there-yet": {
10398 "version": "1.1.4",
10399 "bundled": true,
10400 "dev": true,
10401 "requires": {
10402 "delegates": "^1.0.0",
10403 "readable-stream": "^2.0.6"
10404 }
10405 },
10406 "asap": {
10407 "version": "2.0.6",
10408 "bundled": true,
10409 "dev": true
10410 },
10411 "asn1": {
10412 "version": "0.2.4",
10413 "bundled": true,
10414 "dev": true,
10415 "requires": {
10416 "safer-buffer": "~2.1.0"
10417 }
10418 },
10419 "assert-plus": {
10420 "version": "1.0.0",
10421 "bundled": true,
10422 "dev": true
10423 },
10424 "asynckit": {
10425 "version": "0.4.0",
10426 "bundled": true,
10427 "dev": true
10428 },
10429 "aws-sign2": {
10430 "version": "0.7.0",
10431 "bundled": true,
10432 "dev": true
10433 },
10434 "aws4": {
10435 "version": "1.8.0",
10436 "bundled": true,
10437 "dev": true
10438 },
10439 "balanced-match": {
10440 "version": "1.0.0",
10441 "bundled": true,
10442 "dev": true
10443 },
10444 "bcrypt-pbkdf": {
10445 "version": "1.0.2",
10446 "bundled": true,
10447 "dev": true,
10448 "optional": true,
10449 "requires": {
10450 "tweetnacl": "^0.14.3"
10451 }
10452 },
10453 "bin-links": {
10454 "version": "1.1.2",
10455 "bundled": true,
10456 "dev": true,
10457 "requires": {
10458 "bluebird": "^3.5.0",
10459 "cmd-shim": "^2.0.2",
10460 "gentle-fs": "^2.0.0",
10461 "graceful-fs": "^4.1.11",
10462 "write-file-atomic": "^2.3.0"
10463 }
10464 },
10465 "block-stream": {
10466 "version": "0.0.9",
10467 "bundled": true,
10468 "dev": true,
10469 "requires": {
10470 "inherits": "~2.0.0"
10471 }
10472 },
10473 "bluebird": {
10474 "version": "3.5.3",
10475 "bundled": true,
10476 "dev": true
10477 },
10478 "boxen": {
10479 "version": "1.3.0",
10480 "bundled": true,
10481 "dev": true,
10482 "requires": {
10483 "ansi-align": "^2.0.0",
10484 "camelcase": "^4.0.0",
10485 "chalk": "^2.0.1",
10486 "cli-boxes": "^1.0.0",
10487 "string-width": "^2.0.0",
10488 "term-size": "^1.2.0",
10489 "widest-line": "^2.0.0"
10490 }
10491 },
10492 "brace-expansion": {
10493 "version": "1.1.11",
10494 "bundled": true,
10495 "dev": true,
10496 "requires": {
10497 "balanced-match": "^1.0.0",
10498 "concat-map": "0.0.1"
10499 }
10500 },
10501 "buffer-from": {
10502 "version": "1.0.0",
10503 "bundled": true,
10504 "dev": true
10505 },
10506 "builtin-modules": {
10507 "version": "1.1.1",
10508 "bundled": true,
10509 "dev": true
10510 },
10511 "builtins": {
10512 "version": "1.0.3",
10513 "bundled": true,
10514 "dev": true
10515 },
10516 "byline": {
10517 "version": "5.0.0",
10518 "bundled": true,
10519 "dev": true
10520 },
10521 "byte-size": {
10522 "version": "4.0.3",
10523 "bundled": true,
10524 "dev": true
10525 },
10526 "cacache": {
10527 "version": "11.2.0",
10528 "bundled": true,
10529 "dev": true,
10530 "requires": {
10531 "bluebird": "^3.5.1",
10532 "chownr": "^1.0.1",
10533 "figgy-pudding": "^3.1.0",
10534 "glob": "^7.1.2",
10535 "graceful-fs": "^4.1.11",
10536 "lru-cache": "^4.1.3",
10537 "mississippi": "^3.0.0",
10538 "mkdirp": "^0.5.1",
10539 "move-concurrently": "^1.0.1",
10540 "promise-inflight": "^1.0.1",
10541 "rimraf": "^2.6.2",
10542 "ssri": "^6.0.0",
10543 "unique-filename": "^1.1.0",
10544 "y18n": "^4.0.0"
10545 }
10546 },
10547 "call-limit": {
10548 "version": "1.1.0",
10549 "bundled": true,
10550 "dev": true 14355 "dev": true
10551 }, 14356 },
10552 "camelcase": { 14357 "camelcase": {
10553 "version": "4.1.0", 14358 "version": "2.1.1",
10554 "bundled": true, 14359 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
10555 "dev": true 14360 "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
10556 },
10557 "capture-stack-trace": {
10558 "version": "1.0.0",
10559 "bundled": true,
10560 "dev": true
10561 },
10562 "caseless": {
10563 "version": "0.12.0",
10564 "bundled": true,
10565 "dev": true
10566 },
10567 "chalk": {
10568 "version": "2.4.1",
10569 "bundled": true,
10570 "dev": true,
10571 "requires": {
10572 "ansi-styles": "^3.2.1",
10573 "escape-string-regexp": "^1.0.5",
10574 "supports-color": "^5.3.0"
10575 }
10576 },
10577 "chownr": {
10578 "version": "1.0.1",
10579 "bundled": true,
10580 "dev": true
10581 },
10582 "ci-info": {
10583 "version": "1.6.0",
10584 "bundled": true,
10585 "dev": true
10586 },
10587 "cidr-regex": {
10588 "version": "2.0.9",
10589 "bundled": true,
10590 "dev": true,
10591 "requires": {
10592 "ip-regex": "^2.1.0"
10593 }
10594 },
10595 "cli-boxes": {
10596 "version": "1.0.0",
10597 "bundled": true,
10598 "dev": true
10599 },
10600 "cli-columns": {
10601 "version": "3.1.2",
10602 "bundled": true,
10603 "dev": true,
10604 "requires": {
10605 "string-width": "^2.0.0",
10606 "strip-ansi": "^3.0.1"
10607 }
10608 },
10609 "cli-table3": {
10610 "version": "0.5.0",
10611 "bundled": true,
10612 "dev": true,
10613 "requires": {
10614 "colors": "^1.1.2",
10615 "object-assign": "^4.1.0",
10616 "string-width": "^2.1.1"
10617 }
10618 },
10619 "cliui": {
10620 "version": "4.1.0",
10621 "bundled": true,
10622 "dev": true,
10623 "requires": {
10624 "string-width": "^2.1.1",
10625 "strip-ansi": "^4.0.0",
10626 "wrap-ansi": "^2.0.0"
10627 },
10628 "dependencies": {
10629 "ansi-regex": {
10630 "version": "3.0.0",
10631 "bundled": true,
10632 "dev": true
10633 },
10634 "strip-ansi": {
10635 "version": "4.0.0",
10636 "bundled": true,
10637 "dev": true,
10638 "requires": {
10639 "ansi-regex": "^3.0.0"
10640 }
10641 }
10642 }
10643 },
10644 "clone": {
10645 "version": "1.0.4",
10646 "bundled": true,
10647 "dev": true
10648 },
10649 "cmd-shim": {
10650 "version": "2.0.2",
10651 "bundled": true,
10652 "dev": true,
10653 "requires": {
10654 "graceful-fs": "^4.1.2",
10655 "mkdirp": "~0.5.0"
10656 }
10657 },
10658 "co": {
10659 "version": "4.6.0",
10660 "bundled": true,
10661 "dev": true
10662 },
10663 "code-point-at": {
10664 "version": "1.1.0",
10665 "bundled": true,
10666 "dev": true 14361 "dev": true
10667 }, 14362 },
10668 "color-convert": { 14363 "camelcase-keys": {
10669 "version": "1.9.1", 14364 "version": "2.1.0",
10670 "bundled": true, 14365 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
14366 "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
10671 "dev": true, 14367 "dev": true,
10672 "requires": { 14368 "requires": {
10673 "color-name": "^1.1.1" 14369 "camelcase": "^2.0.0",
14370 "map-obj": "^1.0.0"
10674 } 14371 }
10675 }, 14372 },
10676 "color-name": { 14373 "chalk": {
10677 "version": "1.1.3", 14374 "version": "1.1.3",
10678 "bundled": true, 14375 "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
10679 "dev": true 14376 "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
10680 },
10681 "colors": {
10682 "version": "1.1.2",
10683 "bundled": true,
10684 "dev": true,
10685 "optional": true
10686 },
10687 "columnify": {
10688 "version": "1.5.4",
10689 "bundled": true,
10690 "dev": true, 14377 "dev": true,
10691 "requires": { 14378 "requires": {
14379 "ansi-styles": "^2.2.1",
14380 "escape-string-regexp": "^1.0.2",
14381 "has-ansi": "^2.0.0",
10692 "strip-ansi": "^3.0.0", 14382 "strip-ansi": "^3.0.0",
10693 "wcwidth": "^1.0.0" 14383 "supports-color": "^2.0.0"
10694 }
10695 },
10696 "combined-stream": {
10697 "version": "1.0.6",
10698 "bundled": true,
10699 "dev": true,
10700 "requires": {
10701 "delayed-stream": "~1.0.0"
10702 }
10703 },
10704 "concat-map": {
10705 "version": "0.0.1",
10706 "bundled": true,
10707 "dev": true
10708 },
10709 "concat-stream": {
10710 "version": "1.6.2",
10711 "bundled": true,
10712 "dev": true,
10713 "requires": {
10714 "buffer-from": "^1.0.0",
10715 "inherits": "^2.0.3",
10716 "readable-stream": "^2.2.2",
10717 "typedarray": "^0.0.6"
10718 }
10719 },
10720 "config-chain": {
10721 "version": "1.1.12",
10722 "bundled": true,
10723 "dev": true,
10724 "requires": {
10725 "ini": "^1.3.4",
10726 "proto-list": "~1.2.1"
10727 }
10728 },
10729 "configstore": {
10730 "version": "3.1.2",
10731 "bundled": true,
10732 "dev": true,
10733 "requires": {
10734 "dot-prop": "^4.1.0",
10735 "graceful-fs": "^4.1.2",
10736 "make-dir": "^1.0.0",
10737 "unique-string": "^1.0.0",
10738 "write-file-atomic": "^2.0.0",
10739 "xdg-basedir": "^3.0.0"
10740 }
10741 },
10742 "console-control-strings": {
10743 "version": "1.1.0",
10744 "bundled": true,
10745 "dev": true
10746 },
10747 "copy-concurrently": {
10748 "version": "1.0.5",
10749 "bundled": true,
10750 "dev": true,
10751 "requires": {
10752 "aproba": "^1.1.1",
10753 "fs-write-stream-atomic": "^1.0.8",
10754 "iferr": "^0.1.5",
10755 "mkdirp": "^0.5.1",
10756 "rimraf": "^2.5.4",
10757 "run-queue": "^1.0.0"
10758 },
10759 "dependencies": {
10760 "iferr": {
10761 "version": "0.1.5",
10762 "bundled": true,
10763 "dev": true
10764 }
10765 }
10766 },
10767 "core-util-is": {
10768 "version": "1.0.2",
10769 "bundled": true,
10770 "dev": true
10771 },
10772 "create-error-class": {
10773 "version": "3.0.2",
10774 "bundled": true,
10775 "dev": true,
10776 "requires": {
10777 "capture-stack-trace": "^1.0.0"
10778 } 14384 }
10779 }, 14385 },
10780 "cross-spawn": { 14386 "cross-spawn": {
10781 "version": "5.1.0", 14387 "version": "3.0.1",
10782 "bundled": true, 14388 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
14389 "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
10783 "dev": true, 14390 "dev": true,
10784 "requires": { 14391 "requires": {
10785 "lru-cache": "^4.0.1", 14392 "lru-cache": "^4.0.1",
10786 "shebang-command": "^1.2.0",
10787 "which": "^1.2.9" 14393 "which": "^1.2.9"
10788 } 14394 }
10789 }, 14395 },
10790 "crypto-random-string": { 14396 "find-up": {
10791 "version": "1.0.0",
10792 "bundled": true,
10793 "dev": true
10794 },
10795 "cyclist": {
10796 "version": "0.2.2",
10797 "bundled": true,
10798 "dev": true
10799 },
10800 "dashdash": {
10801 "version": "1.14.1",
10802 "bundled": true,
10803 "dev": true,
10804 "requires": {
10805 "assert-plus": "^1.0.0"
10806 }
10807 },
10808 "debug": {
10809 "version": "3.1.0",
10810 "bundled": true,
10811 "dev": true,
10812 "requires": {
10813 "ms": "2.0.0"
10814 },
10815 "dependencies": {
10816 "ms": {
10817 "version": "2.0.0",
10818 "bundled": true,
10819 "dev": true
10820 }
10821 }
10822 },
10823 "debuglog": {
10824 "version": "1.0.1",
10825 "bundled": true,
10826 "dev": true
10827 },
10828 "decamelize": {
10829 "version": "1.2.0",
10830 "bundled": true,
10831 "dev": true
10832 },
10833 "decode-uri-component": {
10834 "version": "0.2.0",
10835 "bundled": true,
10836 "dev": true
10837 },
10838 "deep-extend": {
10839 "version": "0.5.1",
10840 "bundled": true,
10841 "dev": true
10842 },
10843 "defaults": {
10844 "version": "1.0.3",
10845 "bundled": true,
10846 "dev": true,
10847 "requires": {
10848 "clone": "^1.0.2"
10849 }
10850 },
10851 "delayed-stream": {
10852 "version": "1.0.0",
10853 "bundled": true,
10854 "dev": true
10855 },
10856 "delegates": {
10857 "version": "1.0.0",
10858 "bundled": true,
10859 "dev": true
10860 },
10861 "detect-indent": {
10862 "version": "5.0.0",
10863 "bundled": true,
10864 "dev": true
10865 },
10866 "detect-newline": {
10867 "version": "2.1.0",
10868 "bundled": true,
10869 "dev": true
10870 },
10871 "dezalgo": {
10872 "version": "1.0.3",
10873 "bundled": true,
10874 "dev": true,
10875 "requires": {
10876 "asap": "^2.0.0",
10877 "wrappy": "1"
10878 }
10879 },
10880 "dot-prop": {
10881 "version": "4.2.0",
10882 "bundled": true,
10883 "dev": true,
10884 "requires": {
10885 "is-obj": "^1.0.0"
10886 }
10887 },
10888 "dotenv": {
10889 "version": "5.0.1",
10890 "bundled": true,
10891 "dev": true
10892 },
10893 "duplexer3": {
10894 "version": "0.1.4",
10895 "bundled": true,
10896 "dev": true
10897 },
10898 "duplexify": {
10899 "version": "3.6.0",
10900 "bundled": true,
10901 "dev": true,
10902 "requires": {
10903 "end-of-stream": "^1.0.0",
10904 "inherits": "^2.0.1",
10905 "readable-stream": "^2.0.0",
10906 "stream-shift": "^1.0.0"
10907 }
10908 },
10909 "ecc-jsbn": {
10910 "version": "0.1.2",
10911 "bundled": true,
10912 "dev": true,
10913 "optional": true,
10914 "requires": {
10915 "jsbn": "~0.1.0",
10916 "safer-buffer": "^2.1.0"
10917 }
10918 },
10919 "editor": {
10920 "version": "1.0.0",
10921 "bundled": true,
10922 "dev": true
10923 },
10924 "encoding": {
10925 "version": "0.1.12",
10926 "bundled": true,
10927 "dev": true,
10928 "requires": {
10929 "iconv-lite": "~0.4.13"
10930 }
10931 },
10932 "end-of-stream": {
10933 "version": "1.4.1",
10934 "bundled": true,
10935 "dev": true,
10936 "requires": {
10937 "once": "^1.4.0"
10938 }
10939 },
10940 "err-code": {
10941 "version": "1.1.2", 14397 "version": "1.1.2",
10942 "bundled": true, 14398 "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
10943 "dev": true 14399 "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
10944 },
10945 "errno": {
10946 "version": "0.1.7",
10947 "bundled": true,
10948 "dev": true,
10949 "requires": {
10950 "prr": "~1.0.1"
10951 }
10952 },
10953 "es6-promise": {
10954 "version": "4.2.4",
10955 "bundled": true,
10956 "dev": true
10957 },
10958 "es6-promisify": {
10959 "version": "5.0.0",
10960 "bundled": true,
10961 "dev": true, 14400 "dev": true,
10962 "requires": { 14401 "requires": {
10963 "es6-promise": "^4.0.3" 14402 "path-exists": "^2.0.0",
14403 "pinkie-promise": "^2.0.0"
10964 } 14404 }
10965 }, 14405 },
10966 "escape-string-regexp": { 14406 "indent-string": {
10967 "version": "1.0.5",
10968 "bundled": true,
10969 "dev": true
10970 },
10971 "execa": {
10972 "version": "0.7.0",
10973 "bundled": true,
10974 "dev": true,
10975 "requires": {
10976 "cross-spawn": "^5.0.1",
10977 "get-stream": "^3.0.0",
10978 "is-stream": "^1.1.0",
10979 "npm-run-path": "^2.0.0",
10980 "p-finally": "^1.0.0",
10981 "signal-exit": "^3.0.0",
10982 "strip-eof": "^1.0.0"
10983 }
10984 },
10985 "extend": {
10986 "version": "3.0.2",
10987 "bundled": true,
10988 "dev": true
10989 },
10990 "extsprintf": {
10991 "version": "1.3.0",
10992 "bundled": true,
10993 "dev": true
10994 },
10995 "fast-deep-equal": {
10996 "version": "1.1.0",
10997 "bundled": true,
10998 "dev": true
10999 },
11000 "fast-json-stable-stringify": {
11001 "version": "2.0.0",
11002 "bundled": true,
11003 "dev": true
11004 },
11005 "figgy-pudding": {
11006 "version": "3.5.1",
11007 "bundled": true,
11008 "dev": true
11009 },
11010 "find-npm-prefix": {
11011 "version": "1.0.2",
11012 "bundled": true,
11013 "dev": true
11014 },
11015 "find-up": {
11016 "version": "2.1.0", 14407 "version": "2.1.0",
11017 "bundled": true, 14408 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
11018 "dev": true, 14409 "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
11019 "requires": {
11020 "locate-path": "^2.0.0"
11021 }
11022 },
11023 "flush-write-stream": {
11024 "version": "1.0.3",
11025 "bundled": true,
11026 "dev": true,
11027 "requires": {
11028 "inherits": "^2.0.1",
11029 "readable-stream": "^2.0.4"
11030 }
11031 },
11032 "forever-agent": {
11033 "version": "0.6.1",
11034 "bundled": true,
11035 "dev": true
11036 },
11037 "form-data": {
11038 "version": "2.3.2",
11039 "bundled": true,
11040 "dev": true,
11041 "requires": {
11042 "asynckit": "^0.4.0",
11043 "combined-stream": "1.0.6",
11044 "mime-types": "^2.1.12"
11045 }
11046 },
11047 "from2": {
11048 "version": "2.3.0",
11049 "bundled": true,
11050 "dev": true,
11051 "requires": {
11052 "inherits": "^2.0.1",
11053 "readable-stream": "^2.0.0"
11054 }
11055 },
11056 "fs-minipass": {
11057 "version": "1.2.5",
11058 "bundled": true,
11059 "dev": true,
11060 "requires": {
11061 "minipass": "^2.2.1"
11062 }
11063 },
11064 "fs-vacuum": {
11065 "version": "1.2.10",
11066 "bundled": true,
11067 "dev": true,
11068 "requires": {
11069 "graceful-fs": "^4.1.2",
11070 "path-is-inside": "^1.0.1",
11071 "rimraf": "^2.5.2"
11072 }
11073 },
11074 "fs-write-stream-atomic": {
11075 "version": "1.0.10",
11076 "bundled": true,
11077 "dev": true, 14410 "dev": true,
11078 "requires": { 14411 "requires": {
11079 "graceful-fs": "^4.1.2", 14412 "repeating": "^2.0.0"
11080 "iferr": "^0.1.5",
11081 "imurmurhash": "^0.1.4",
11082 "readable-stream": "1 || 2"
11083 },
11084 "dependencies": {
11085 "iferr": {
11086 "version": "0.1.5",
11087 "bundled": true,
11088 "dev": true
11089 }
11090 } 14413 }
11091 }, 14414 },
11092 "fs.realpath": { 14415 "load-json-file": {
11093 "version": "1.0.0", 14416 "version": "1.1.0",
11094 "bundled": true, 14417 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
11095 "dev": true 14418 "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
11096 },
11097 "fstream": {
11098 "version": "1.0.11",
11099 "bundled": true,
11100 "dev": true, 14419 "dev": true,
11101 "requires": { 14420 "requires": {
11102 "graceful-fs": "^4.1.2", 14421 "graceful-fs": "^4.1.2",
11103 "inherits": "~2.0.0", 14422 "parse-json": "^2.2.0",
11104 "mkdirp": ">=0.5 0", 14423 "pify": "^2.0.0",
11105 "rimraf": "2" 14424 "pinkie-promise": "^2.0.0",
11106 } 14425 "strip-bom": "^2.0.0"
11107 },
11108 "gauge": {
11109 "version": "2.7.4",
11110 "bundled": true,
11111 "dev": true,
11112 "requires": {
11113 "aproba": "^1.0.3",
11114 "console-control-strings": "^1.0.0",
11115 "has-unicode": "^2.0.0",
11116 "object-assign": "^4.1.0",
11117 "signal-exit": "^3.0.0",
11118 "string-width": "^1.0.1",
11119 "strip-ansi": "^3.0.1",
11120 "wide-align": "^1.1.0"
11121 },
11122 "dependencies": {
11123 "string-width": {
11124 "version": "1.0.2",
11125 "bundled": true,
11126 "dev": true,
11127 "requires": {
11128 "code-point-at": "^1.0.0",
11129 "is-fullwidth-code-point": "^1.0.0",
11130 "strip-ansi": "^3.0.0"
11131 }
11132 }
11133 }
11134 },
11135 "genfun": {
11136 "version": "4.0.1",
11137 "bundled": true,
11138 "dev": true
11139 },
11140 "gentle-fs": {
11141 "version": "2.0.1",
11142 "bundled": true,
11143 "dev": true,
11144 "requires": {
11145 "aproba": "^1.1.2",
11146 "fs-vacuum": "^1.2.10",
11147 "graceful-fs": "^4.1.11",
11148 "iferr": "^0.1.5",
11149 "mkdirp": "^0.5.1",
11150 "path-is-inside": "^1.0.2",
11151 "read-cmd-shim": "^1.0.1",
11152 "slide": "^1.1.6"
11153 },
11154 "dependencies": {
11155 "iferr": {
11156 "version": "0.1.5",
11157 "bundled": true,
11158 "dev": true
11159 }
11160 }
11161 },
11162 "get-caller-file": {
11163 "version": "1.0.2",
11164 "bundled": true,
11165 "dev": true
11166 },
11167 "get-stream": {
11168 "version": "3.0.0",
11169 "bundled": true,
11170 "dev": true
11171 },
11172 "getpass": {
11173 "version": "0.1.7",
11174 "bundled": true,
11175 "dev": true,
11176 "requires": {
11177 "assert-plus": "^1.0.0"
11178 }
11179 },
11180 "glob": {
11181 "version": "7.1.3",
11182 "bundled": true,
11183 "dev": true,
11184 "requires": {
11185 "fs.realpath": "^1.0.0",
11186 "inflight": "^1.0.4",
11187 "inherits": "2",
11188 "minimatch": "^3.0.4",
11189 "once": "^1.3.0",
11190 "path-is-absolute": "^1.0.0"
11191 }
11192 },
11193 "global-dirs": {
11194 "version": "0.1.1",
11195 "bundled": true,
11196 "dev": true,
11197 "requires": {
11198 "ini": "^1.3.4"
11199 }
11200 },
11201 "got": {
11202 "version": "6.7.1",
11203 "bundled": true,
11204 "dev": true,
11205 "requires": {
11206 "create-error-class": "^3.0.0",
11207 "duplexer3": "^0.1.4",
11208 "get-stream": "^3.0.0",
11209 "is-redirect": "^1.0.0",
11210 "is-retry-allowed": "^1.0.0",
11211 "is-stream": "^1.0.0",
11212 "lowercase-keys": "^1.0.0",
11213 "safe-buffer": "^5.0.1",
11214 "timed-out": "^4.0.0",
11215 "unzip-response": "^2.0.1",
11216 "url-parse-lax": "^1.0.0"
11217 }
11218 },
11219 "graceful-fs": {
11220 "version": "4.1.15",
11221 "bundled": true,
11222 "dev": true
11223 },
11224 "har-schema": {
11225 "version": "2.0.0",
11226 "bundled": true,
11227 "dev": true
11228 },
11229 "har-validator": {
11230 "version": "5.1.0",
11231 "bundled": true,
11232 "dev": true,
11233 "requires": {
11234 "ajv": "^5.3.0",
11235 "har-schema": "^2.0.0"
11236 }
11237 },
11238 "has-flag": {
11239 "version": "3.0.0",
11240 "bundled": true,
11241 "dev": true
11242 },
11243 "has-unicode": {
11244 "version": "2.0.1",
11245 "bundled": true,
11246 "dev": true
11247 },
11248 "hosted-git-info": {
11249 "version": "2.7.1",
11250 "bundled": true,
11251 "dev": true
11252 },
11253 "http-cache-semantics": {
11254 "version": "3.8.1",
11255 "bundled": true,
11256 "dev": true
11257 },
11258 "http-proxy-agent": {
11259 "version": "2.1.0",
11260 "bundled": true,
11261 "dev": true,
11262 "requires": {
11263 "agent-base": "4",
11264 "debug": "3.1.0"
11265 }
11266 },
11267 "http-signature": {
11268 "version": "1.2.0",
11269 "bundled": true,
11270 "dev": true,
11271 "requires": {
11272 "assert-plus": "^1.0.0",
11273 "jsprim": "^1.2.2",
11274 "sshpk": "^1.7.0"
11275 }
11276 },
11277 "https-proxy-agent": {
11278 "version": "2.2.1",
11279 "bundled": true,
11280 "dev": true,
11281 "requires": {
11282 "agent-base": "^4.1.0",
11283 "debug": "^3.1.0"
11284 }
11285 },
11286 "humanize-ms": {
11287 "version": "1.2.1",
11288 "bundled": true,
11289 "dev": true,
11290 "requires": {
11291 "ms": "^2.0.0"
11292 }
11293 },
11294 "iconv-lite": {
11295 "version": "0.4.23",
11296 "bundled": true,
11297 "dev": true,
11298 "requires": {
11299 "safer-buffer": ">= 2.1.2 < 3"
11300 }
11301 },
11302 "iferr": {
11303 "version": "1.0.2",
11304 "bundled": true,
11305 "dev": true
11306 },
11307 "ignore-walk": {
11308 "version": "3.0.1",
11309 "bundled": true,
11310 "dev": true,
11311 "requires": {
11312 "minimatch": "^3.0.4"
11313 } 14426 }
11314 }, 14427 },
11315 "import-lazy": { 14428 "map-obj": {
11316 "version": "2.1.0", 14429 "version": "1.0.1",
11317 "bundled": true, 14430 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
11318 "dev": true 14431 "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
11319 },
11320 "imurmurhash": {
11321 "version": "0.1.4",
11322 "bundled": true,
11323 "dev": true 14432 "dev": true
11324 }, 14433 },
11325 "inflight": { 14434 "meow": {
11326 "version": "1.0.6", 14435 "version": "3.7.0",
11327 "bundled": true, 14436 "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
14437 "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
11328 "dev": true, 14438 "dev": true,
11329 "requires": { 14439 "requires": {
11330 "once": "^1.3.0", 14440 "camelcase-keys": "^2.0.0",
11331 "wrappy": "1" 14441 "decamelize": "^1.1.2",
14442 "loud-rejection": "^1.0.0",
14443 "map-obj": "^1.0.1",
14444 "minimist": "^1.1.3",
14445 "normalize-package-data": "^2.3.4",
14446 "object-assign": "^4.0.1",
14447 "read-pkg-up": "^1.0.1",
14448 "redent": "^1.0.0",
14449 "trim-newlines": "^1.0.0"
11332 } 14450 }
11333 }, 14451 },
11334 "inherits": { 14452 "parse-json": {
11335 "version": "2.0.3", 14453 "version": "2.2.0",
11336 "bundled": true, 14454 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
11337 "dev": true 14455 "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
11338 },
11339 "ini": {
11340 "version": "1.3.5",
11341 "bundled": true,
11342 "dev": true
11343 },
11344 "init-package-json": {
11345 "version": "1.10.3",
11346 "bundled": true,
11347 "dev": true, 14456 "dev": true,
11348 "requires": { 14457 "requires": {
11349 "glob": "^7.1.1", 14458 "error-ex": "^1.2.0"
11350 "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
11351 "promzard": "^0.3.0",
11352 "read": "~1.0.1",
11353 "read-package-json": "1 || 2",
11354 "semver": "2.x || 3.x || 4 || 5",
11355 "validate-npm-package-license": "^3.0.1",
11356 "validate-npm-package-name": "^3.0.0"
11357 } 14459 }
11358 }, 14460 },
11359 "invert-kv": { 14461 "path-exists": {
11360 "version": "1.0.0",
11361 "bundled": true,
11362 "dev": true
11363 },
11364 "ip": {
11365 "version": "1.1.5",
11366 "bundled": true,
11367 "dev": true
11368 },
11369 "ip-regex": {
11370 "version": "2.1.0", 14462 "version": "2.1.0",
11371 "bundled": true, 14463 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
11372 "dev": true 14464 "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
11373 },
11374 "is-builtin-module": {
11375 "version": "1.0.0",
11376 "bundled": true,
11377 "dev": true, 14465 "dev": true,
11378 "requires": { 14466 "requires": {
11379 "builtin-modules": "^1.0.0" 14467 "pinkie-promise": "^2.0.0"
11380 } 14468 }
11381 }, 14469 },
11382 "is-ci": { 14470 "path-type": {
11383 "version": "1.1.0", 14471 "version": "1.1.0",
11384 "bundled": true, 14472 "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
11385 "dev": true, 14473 "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
11386 "requires": {
11387 "ci-info": "^1.0.0"
11388 }
11389 },
11390 "is-cidr": {
11391 "version": "2.0.6",
11392 "bundled": true,
11393 "dev": true, 14474 "dev": true,
11394 "requires": { 14475 "requires": {
11395 "cidr-regex": "^2.0.8" 14476 "graceful-fs": "^4.1.2",
11396 } 14477 "pify": "^2.0.0",
11397 }, 14478 "pinkie-promise": "^2.0.0"
11398 "is-fullwidth-code-point": {
11399 "version": "1.0.0",
11400 "bundled": true,
11401 "dev": true,
11402 "requires": {
11403 "number-is-nan": "^1.0.0"
11404 }
11405 },
11406 "is-installed-globally": {
11407 "version": "0.1.0",
11408 "bundled": true,
11409 "dev": true,
11410 "requires": {
11411 "global-dirs": "^0.1.0",
11412 "is-path-inside": "^1.0.0"
11413 }
11414 },
11415 "is-npm": {
11416 "version": "1.0.0",
11417 "bundled": true,
11418 "dev": true
11419 },
11420 "is-obj": {
11421 "version": "1.0.1",
11422 "bundled": true,
11423 "dev": true
11424 },
11425 "is-path-inside": {
11426 "version": "1.0.1",
11427 "bundled": true,
11428 "dev": true,
11429 "requires": {
11430 "path-is-inside": "^1.0.1"
11431 } 14479 }
11432 }, 14480 },
11433 "is-redirect": { 14481 "pify": {
11434 "version": "1.0.0", 14482 "version": "2.3.0",
11435 "bundled": true, 14483 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
11436 "dev": true 14484 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
11437 },
11438 "is-retry-allowed": {
11439 "version": "1.1.0",
11440 "bundled": true,
11441 "dev": true 14485 "dev": true
11442 }, 14486 },
11443 "is-stream": { 14487 "read-pkg": {
11444 "version": "1.1.0", 14488 "version": "1.1.0",
11445 "bundled": true, 14489 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
11446 "dev": true 14490 "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
11447 },
11448 "is-typedarray": {
11449 "version": "1.0.0",
11450 "bundled": true,
11451 "dev": true
11452 },
11453 "isarray": {
11454 "version": "1.0.0",
11455 "bundled": true,
11456 "dev": true
11457 },
11458 "isexe": {
11459 "version": "2.0.0",
11460 "bundled": true,
11461 "dev": true
11462 },
11463 "isstream": {
11464 "version": "0.1.2",
11465 "bundled": true,
11466 "dev": true
11467 },
11468 "jsbn": {
11469 "version": "0.1.1",
11470 "bundled": true,
11471 "dev": true,
11472 "optional": true
11473 },
11474 "json-parse-better-errors": {
11475 "version": "1.0.2",
11476 "bundled": true,
11477 "dev": true
11478 },
11479 "json-schema": {
11480 "version": "0.2.3",
11481 "bundled": true,
11482 "dev": true
11483 },
11484 "json-schema-traverse": {
11485 "version": "0.3.1",
11486 "bundled": true,
11487 "dev": true
11488 },
11489 "json-stringify-safe": {
11490 "version": "5.0.1",
11491 "bundled": true,
11492 "dev": true
11493 },
11494 "jsonparse": {
11495 "version": "1.3.1",
11496 "bundled": true,
11497 "dev": true
11498 },
11499 "jsprim": {
11500 "version": "1.4.1",
11501 "bundled": true,
11502 "dev": true, 14491 "dev": true,
11503 "requires": { 14492 "requires": {
11504 "assert-plus": "1.0.0", 14493 "load-json-file": "^1.0.0",
11505 "extsprintf": "1.3.0", 14494 "normalize-package-data": "^2.3.2",
11506 "json-schema": "0.2.3", 14495 "path-type": "^1.0.0"
11507 "verror": "1.10.0"
11508 } 14496 }
11509 }, 14497 },
11510 "latest-version": { 14498 "read-pkg-up": {
11511 "version": "3.1.0", 14499 "version": "1.0.1",
11512 "bundled": true, 14500 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
14501 "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
11513 "dev": true, 14502 "dev": true,
11514 "requires": { 14503 "requires": {
11515 "package-json": "^4.0.0" 14504 "find-up": "^1.0.0",
14505 "read-pkg": "^1.0.0"
11516 } 14506 }
11517 }, 14507 },
11518 "lazy-property": { 14508 "redent": {
11519 "version": "1.0.0",
11520 "bundled": true,
11521 "dev": true
11522 },
11523 "lcid": {
11524 "version": "1.0.0", 14509 "version": "1.0.0",
11525 "bundled": true, 14510 "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
11526 "dev": true, 14511 "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
11527 "requires": {
11528 "invert-kv": "^1.0.0"
11529 }
11530 },
11531 "libcipm": {
11532 "version": "2.0.2",
11533 "bundled": true,
11534 "dev": true,
11535 "requires": {
11536 "bin-links": "^1.1.2",
11537 "bluebird": "^3.5.1",
11538 "find-npm-prefix": "^1.0.2",
11539 "graceful-fs": "^4.1.11",
11540 "lock-verify": "^2.0.2",
11541 "mkdirp": "^0.5.1",
11542 "npm-lifecycle": "^2.0.3",
11543 "npm-logical-tree": "^1.2.1",
11544 "npm-package-arg": "^6.1.0",
11545 "pacote": "^8.1.6",
11546 "protoduck": "^5.0.0",
11547 "read-package-json": "^2.0.13",
11548 "rimraf": "^2.6.2",
11549 "worker-farm": "^1.6.0"
11550 }
11551 },
11552 "libnpmhook": {
11553 "version": "4.0.1",
11554 "bundled": true,
11555 "dev": true,
11556 "requires": {
11557 "figgy-pudding": "^3.1.0",
11558 "npm-registry-fetch": "^3.0.0"
11559 },
11560 "dependencies": {
11561 "npm-registry-fetch": {
11562 "version": "3.1.1",
11563 "bundled": true,
11564 "dev": true,
11565 "requires": {
11566 "bluebird": "^3.5.1",
11567 "figgy-pudding": "^3.1.0",
11568 "lru-cache": "^4.1.2",
11569 "make-fetch-happen": "^4.0.0",
11570 "npm-package-arg": "^6.0.0"
11571 }
11572 }
11573 }
11574 },
11575 "libnpx": {
11576 "version": "10.2.0",
11577 "bundled": true,
11578 "dev": true,
11579 "requires": {
11580 "dotenv": "^5.0.1",
11581 "npm-package-arg": "^6.0.0",
11582 "rimraf": "^2.6.2",
11583 "safe-buffer": "^5.1.0",
11584 "update-notifier": "^2.3.0",
11585 "which": "^1.3.0",
11586 "y18n": "^4.0.0",
11587 "yargs": "^11.0.0"
11588 }
11589 },
11590 "locate-path": {
11591 "version": "2.0.0",
11592 "bundled": true,
11593 "dev": true,
11594 "requires": {
11595 "p-locate": "^2.0.0",
11596 "path-exists": "^3.0.0"
11597 }
11598 },
11599 "lock-verify": {
11600 "version": "2.0.2",
11601 "bundled": true,
11602 "dev": true,
11603 "requires": {
11604 "npm-package-arg": "^5.1.2 || 6",
11605 "semver": "^5.4.1"
11606 }
11607 },
11608 "lockfile": {
11609 "version": "1.0.4",
11610 "bundled": true,
11611 "dev": true,
11612 "requires": {
11613 "signal-exit": "^3.0.2"
11614 }
11615 },
11616 "lodash._baseindexof": {
11617 "version": "3.1.0",
11618 "bundled": true,
11619 "dev": true
11620 },
11621 "lodash._baseuniq": {
11622 "version": "4.6.0",
11623 "bundled": true,
11624 "dev": true,
11625 "requires": {
11626 "lodash._createset": "~4.0.0",
11627 "lodash._root": "~3.0.0"
11628 }
11629 },
11630 "lodash._bindcallback": {
11631 "version": "3.0.1",
11632 "bundled": true,
11633 "dev": true
11634 },
11635 "lodash._cacheindexof": {
11636 "version": "3.0.2",
11637 "bundled": true,
11638 "dev": true
11639 },
11640 "lodash._createcache": {
11641 "version": "3.1.2",
11642 "bundled": true,
11643 "dev": true, 14512 "dev": true,
11644 "requires": { 14513 "requires": {
11645 "lodash._getnative": "^3.0.0" 14514 "indent-string": "^2.1.0",
14515 "strip-indent": "^1.0.1"
11646 } 14516 }
11647 }, 14517 },
11648 "lodash._createset": { 14518 "strip-ansi": {
11649 "version": "4.0.3",
11650 "bundled": true,
11651 "dev": true
11652 },
11653 "lodash._getnative": {
11654 "version": "3.9.1",
11655 "bundled": true,
11656 "dev": true
11657 },
11658 "lodash._root": {
11659 "version": "3.0.1", 14519 "version": "3.0.1",
11660 "bundled": true, 14520 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
11661 "dev": true 14521 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
11662 },
11663 "lodash.clonedeep": {
11664 "version": "4.5.0",
11665 "bundled": true,
11666 "dev": true
11667 },
11668 "lodash.restparam": {
11669 "version": "3.6.1",
11670 "bundled": true,
11671 "dev": true
11672 },
11673 "lodash.union": {
11674 "version": "4.6.0",
11675 "bundled": true,
11676 "dev": true
11677 },
11678 "lodash.uniq": {
11679 "version": "4.5.0",
11680 "bundled": true,
11681 "dev": true
11682 },
11683 "lodash.without": {
11684 "version": "4.4.0",
11685 "bundled": true,
11686 "dev": true
11687 },
11688 "lowercase-keys": {
11689 "version": "1.0.1",
11690 "bundled": true,
11691 "dev": true
11692 },
11693 "lru-cache": {
11694 "version": "4.1.3",
11695 "bundled": true,
11696 "dev": true,
11697 "requires": {
11698 "pseudomap": "^1.0.2",
11699 "yallist": "^2.1.2"
11700 }
11701 },
11702 "make-dir": {
11703 "version": "1.3.0",
11704 "bundled": true,
11705 "dev": true, 14522 "dev": true,
11706 "requires": { 14523 "requires": {
11707 "pify": "^3.0.0" 14524 "ansi-regex": "^2.0.0"
11708 } 14525 }
11709 }, 14526 },
11710 "make-fetch-happen": { 14527 "strip-bom": {
11711 "version": "4.0.1", 14528 "version": "2.0.0",
11712 "bundled": true, 14529 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
14530 "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
11713 "dev": true, 14531 "dev": true,
11714 "requires": { 14532 "requires": {
11715 "agentkeepalive": "^3.4.1", 14533 "is-utf8": "^0.2.0"
11716 "cacache": "^11.0.1",
11717 "http-cache-semantics": "^3.8.1",
11718 "http-proxy-agent": "^2.1.0",
11719 "https-proxy-agent": "^2.2.1",
11720 "lru-cache": "^4.1.2",
11721 "mississippi": "^3.0.0",
11722 "node-fetch-npm": "^2.0.2",
11723 "promise-retry": "^1.1.1",
11724 "socks-proxy-agent": "^4.0.0",
11725 "ssri": "^6.0.0"
11726 } 14534 }
11727 }, 14535 },
11728 "meant": { 14536 "strip-indent": {
11729 "version": "1.0.1", 14537 "version": "1.0.1",
11730 "bundled": true, 14538 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
11731 "dev": true 14539 "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
11732 },
11733 "mem": {
11734 "version": "1.1.0",
11735 "bundled": true,
11736 "dev": true, 14540 "dev": true,
11737 "requires": { 14541 "requires": {
11738 "mimic-fn": "^1.0.0" 14542 "get-stdin": "^4.0.1"
11739 } 14543 }
11740 }, 14544 },
11741 "mime-db": { 14545 "supports-color": {
11742 "version": "1.35.0", 14546 "version": "2.0.0",
11743 "bundled": true, 14547 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
14548 "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
11744 "dev": true 14549 "dev": true
11745 }, 14550 },
11746 "mime-types": { 14551 "trim-newlines": {
11747 "version": "2.1.19", 14552 "version": "1.0.0",
11748 "bundled": true, 14553 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
11749 "dev": true, 14554 "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
11750 "requires": {
11751 "mime-db": "~1.35.0"
11752 }
11753 },
11754 "mimic-fn": {
11755 "version": "1.2.0",
11756 "bundled": true,
11757 "dev": true 14555 "dev": true
11758 }, 14556 }
11759 "minimatch": { 14557 }
11760 "version": "3.0.4", 14558 },
11761 "bundled": true, 14559 "node-watch": {
11762 "dev": true, 14560 "version": "0.3.5",
11763 "requires": { 14561 "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.3.5.tgz",
11764 "brace-expansion": "^1.1.7" 14562 "integrity": "sha1-oH8lOk9TjenUylIt1/GZbu7A2X4=",
11765 } 14563 "dev": true
11766 }, 14564 },
11767 "minimist": { 14565 "node.extend": {
11768 "version": "0.0.8", 14566 "version": "1.0.10",
11769 "bundled": true, 14567 "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.0.10.tgz",
14568 "integrity": "sha1-Mmm934HFRTX0CKvHhMMrDSvVX28=",
14569 "dev": true,
14570 "requires": {
14571 "is": "~0.3.0"
14572 }
14573 },
14574 "nopt": {
14575 "version": "3.0.6",
14576 "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
14577 "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
14578 "dev": true,
14579 "requires": {
14580 "abbrev": "1"
14581 }
14582 },
14583 "normalize-package-data": {
14584 "version": "2.5.0",
14585 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
14586 "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
14587 "requires": {
14588 "hosted-git-info": "^2.1.4",
14589 "resolve": "^1.10.0",
14590 "semver": "2 || 3 || 4 || 5",
14591 "validate-npm-package-license": "^3.0.1"
14592 }
14593 },
14594 "normalize-path": {
14595 "version": "2.1.1",
14596 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
14597 "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
14598 "requires": {
14599 "remove-trailing-separator": "^1.0.1"
14600 }
14601 },
14602 "normalize-url": {
14603 "version": "1.9.1",
14604 "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
14605 "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
14606 "requires": {
14607 "object-assign": "^4.0.1",
14608 "prepend-http": "^1.0.0",
14609 "query-string": "^4.1.0",
14610 "sort-keys": "^1.0.0"
14611 }
14612 },
14613 "now-and-later": {
14614 "version": "2.0.0",
14615 "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz",
14616 "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=",
14617 "dev": true,
14618 "requires": {
14619 "once": "^1.3.2"
14620 }
14621 },
14622 "npm-bundled": {
14623 "version": "1.0.6",
14624 "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz",
14625 "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
14626 "dev": true
14627 },
14628 "npm-lifecycle": {
14629 "version": "2.1.0",
14630 "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz",
14631 "integrity": "sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g==",
14632 "dev": true,
14633 "requires": {
14634 "byline": "^5.0.0",
14635 "graceful-fs": "^4.1.11",
14636 "node-gyp": "^3.8.0",
14637 "resolve-from": "^4.0.0",
14638 "slide": "^1.1.6",
14639 "uid-number": "0.0.6",
14640 "umask": "^1.1.0",
14641 "which": "^1.3.1"
14642 },
14643 "dependencies": {
14644 "resolve-from": {
14645 "version": "4.0.0",
14646 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
14647 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
11770 "dev": true 14648 "dev": true
11771 }, 14649 }
11772 "minipass": { 14650 }
11773 "version": "2.3.3", 14651 },
11774 "bundled": true, 14652 "npm-package-arg": {
11775 "dev": true, 14653 "version": "6.1.0",
11776 "requires": { 14654 "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz",
11777 "safe-buffer": "^5.1.2", 14655 "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==",
11778 "yallist": "^3.0.0" 14656 "dev": true,
11779 }, 14657 "requires": {
11780 "dependencies": { 14658 "hosted-git-info": "^2.6.0",
11781 "yallist": { 14659 "osenv": "^0.1.5",
11782 "version": "3.0.2", 14660 "semver": "^5.5.0",
11783 "bundled": true, 14661 "validate-npm-package-name": "^3.0.0"
11784 "dev": true 14662 }
11785 } 14663 },
11786 } 14664 "npm-packlist": {
11787 }, 14665 "version": "1.3.0",
11788 "minizlib": { 14666 "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.3.0.tgz",
11789 "version": "1.1.1", 14667 "integrity": "sha512-qPBc6CnxEzpOcc4bjoIBJbYdy0D/LFFPUdxvfwor4/w3vxeE0h6TiOVurCEPpQ6trjN77u/ShyfeJGsbAfB3dA==",
11790 "bundled": true, 14668 "dev": true,
11791 "dev": true, 14669 "requires": {
11792 "requires": { 14670 "ignore-walk": "^3.0.1",
11793 "minipass": "^2.2.1" 14671 "npm-bundled": "^1.0.1"
11794 } 14672 }
11795 }, 14673 },
11796 "mississippi": { 14674 "npm-pick-manifest": {
11797 "version": "3.0.0", 14675 "version": "2.2.3",
11798 "bundled": true, 14676 "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz",
11799 "dev": true, 14677 "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==",
11800 "requires": { 14678 "dev": true,
11801 "concat-stream": "^1.5.0", 14679 "requires": {
11802 "duplexify": "^3.4.2", 14680 "figgy-pudding": "^3.5.1",
11803 "end-of-stream": "^1.1.0", 14681 "npm-package-arg": "^6.0.0",
11804 "flush-write-stream": "^1.0.0", 14682 "semver": "^5.4.1"
11805 "from2": "^2.1.0", 14683 }
11806 "parallel-transform": "^1.1.0", 14684 },
11807 "pump": "^3.0.0", 14685 "npm-registry-fetch": {
11808 "pumpify": "^1.3.3", 14686 "version": "3.9.0",
11809 "stream-each": "^1.1.0", 14687 "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz",
11810 "through2": "^2.0.0" 14688 "integrity": "sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw==",
11811 } 14689 "dev": true,
11812 }, 14690 "requires": {
11813 "mkdirp": { 14691 "JSONStream": "^1.3.4",
11814 "version": "0.5.1", 14692 "bluebird": "^3.5.1",
11815 "bundled": true, 14693 "figgy-pudding": "^3.4.1",
11816 "dev": true, 14694 "lru-cache": "^4.1.3",
11817 "requires": { 14695 "make-fetch-happen": "^4.0.1",
11818 "minimist": "0.0.8" 14696 "npm-package-arg": "^6.1.0"
11819 } 14697 }
11820 }, 14698 },
11821 "move-concurrently": { 14699 "npm-run-path": {
11822 "version": "1.0.1", 14700 "version": "2.0.2",
11823 "bundled": true, 14701 "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
11824 "dev": true, 14702 "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
11825 "requires": { 14703 "dev": true,
11826 "aproba": "^1.1.1", 14704 "requires": {
11827 "copy-concurrently": "^1.0.0", 14705 "path-key": "^2.0.0"
11828 "fs-write-stream-atomic": "^1.0.8", 14706 }
11829 "mkdirp": "^0.5.1", 14707 },
11830 "rimraf": "^2.5.4", 14708 "npmlog": {
11831 "run-queue": "^1.0.3" 14709 "version": "4.1.2",
11832 } 14710 "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
11833 }, 14711 "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
11834 "ms": { 14712 "dev": true,
14713 "requires": {
14714 "are-we-there-yet": "~1.1.2",
14715 "console-control-strings": "~1.1.0",
14716 "gauge": "~2.7.3",
14717 "set-blocking": "~2.0.0"
14718 }
14719 },
14720 "nth-check": {
14721 "version": "1.0.2",
14722 "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
14723 "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
14724 "dev": true,
14725 "requires": {
14726 "boolbase": "~1.0.0"
14727 }
14728 },
14729 "nugget": {
14730 "version": "2.0.1",
14731 "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz",
14732 "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
14733 "dev": true,
14734 "requires": {
14735 "debug": "^2.1.3",
14736 "minimist": "^1.1.0",
14737 "pretty-bytes": "^1.0.2",
14738 "progress-stream": "^1.1.0",
14739 "request": "^2.45.0",
14740 "single-line-log": "^1.1.2",
14741 "throttleit": "0.0.2"
14742 },
14743 "dependencies": {
14744 "camelcase": {
11835 "version": "2.1.1", 14745 "version": "2.1.1",
11836 "bundled": true, 14746 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
11837 "dev": true 14747 "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
11838 },
11839 "mute-stream": {
11840 "version": "0.0.7",
11841 "bundled": true,
11842 "dev": true
11843 },
11844 "node-fetch-npm": {
11845 "version": "2.0.2",
11846 "bundled": true,
11847 "dev": true,
11848 "requires": {
11849 "encoding": "^0.1.11",
11850 "json-parse-better-errors": "^1.0.0",
11851 "safe-buffer": "^5.1.1"
11852 }
11853 },
11854 "node-gyp": {
11855 "version": "3.8.0",
11856 "bundled": true,
11857 "dev": true,
11858 "requires": {
11859 "fstream": "^1.0.0",
11860 "glob": "^7.0.3",
11861 "graceful-fs": "^4.1.2",
11862 "mkdirp": "^0.5.0",
11863 "nopt": "2 || 3",
11864 "npmlog": "0 || 1 || 2 || 3 || 4",
11865 "osenv": "0",
11866 "request": "^2.87.0",
11867 "rimraf": "2",
11868 "semver": "~5.3.0",
11869 "tar": "^2.0.0",
11870 "which": "1"
11871 },
11872 "dependencies": {
11873 "nopt": {
11874 "version": "3.0.6",
11875 "bundled": true,
11876 "dev": true,
11877 "requires": {
11878 "abbrev": "1"
11879 }
11880 },
11881 "semver": {
11882 "version": "5.3.0",
11883 "bundled": true,
11884 "dev": true
11885 },
11886 "tar": {
11887 "version": "2.2.1",
11888 "bundled": true,
11889 "dev": true,
11890 "requires": {
11891 "block-stream": "*",
11892 "fstream": "^1.0.2",
11893 "inherits": "2"
11894 }
11895 }
11896 }
11897 },
11898 "nopt": {
11899 "version": "4.0.1",
11900 "bundled": true,
11901 "dev": true,
11902 "requires": {
11903 "abbrev": "1",
11904 "osenv": "^0.1.4"
11905 }
11906 },
11907 "normalize-package-data": {
11908 "version": "2.4.0",
11909 "bundled": true,
11910 "dev": true,
11911 "requires": {
11912 "hosted-git-info": "^2.1.4",
11913 "is-builtin-module": "^1.0.0",
11914 "semver": "2 || 3 || 4 || 5",
11915 "validate-npm-package-license": "^3.0.1"
11916 }
11917 },
11918 "npm-audit-report": {
11919 "version": "1.3.1",
11920 "bundled": true,
11921 "dev": true,
11922 "requires": {
11923 "cli-table3": "^0.5.0",
11924 "console-control-strings": "^1.1.0"
11925 }
11926 },
11927 "npm-bundled": {
11928 "version": "1.0.5",
11929 "bundled": true,
11930 "dev": true
11931 },
11932 "npm-cache-filename": {
11933 "version": "1.0.2",
11934 "bundled": true,
11935 "dev": true 14748 "dev": true
11936 }, 14749 },
11937 "npm-install-checks": { 14750 "camelcase-keys": {
11938 "version": "3.0.0",
11939 "bundled": true,
11940 "dev": true,
11941 "requires": {
11942 "semver": "^2.3.0 || 3.x || 4 || 5"
11943 }
11944 },
11945 "npm-lifecycle": {
11946 "version": "2.1.0", 14751 "version": "2.1.0",
11947 "bundled": true, 14752 "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
11948 "dev": true, 14753 "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
11949 "requires": {
11950 "byline": "^5.0.0",
11951 "graceful-fs": "^4.1.11",
11952 "node-gyp": "^3.8.0",
11953 "resolve-from": "^4.0.0",
11954 "slide": "^1.1.6",
11955 "uid-number": "0.0.6",
11956 "umask": "^1.1.0",
11957 "which": "^1.3.1"
11958 }
11959 },
11960 "npm-logical-tree": {
11961 "version": "1.2.1",
11962 "bundled": true,
11963 "dev": true
11964 },
11965 "npm-package-arg": {
11966 "version": "6.1.0",
11967 "bundled": true,
11968 "dev": true, 14754 "dev": true,
11969 "requires": { 14755 "requires": {
11970 "hosted-git-info": "^2.6.0", 14756 "camelcase": "^2.0.0",
11971 "osenv": "^0.1.5", 14757 "map-obj": "^1.0.0"
11972 "semver": "^5.5.0",
11973 "validate-npm-package-name": "^3.0.0"
11974 } 14758 }
11975 }, 14759 },
11976 "npm-packlist": { 14760 "find-up": {
11977 "version": "1.1.12", 14761 "version": "1.1.2",
11978 "bundled": true, 14762 "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
14763 "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
11979 "dev": true, 14764 "dev": true,
11980 "requires": { 14765 "requires": {
11981 "ignore-walk": "^3.0.1", 14766 "path-exists": "^2.0.0",
11982 "npm-bundled": "^1.0.1" 14767 "pinkie-promise": "^2.0.0"
11983 } 14768 }
11984 }, 14769 },
11985 "npm-pick-manifest": { 14770 "indent-string": {
11986 "version": "2.1.0", 14771 "version": "2.1.0",
11987 "bundled": true, 14772 "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
11988 "dev": true, 14773 "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
11989 "requires": {
11990 "npm-package-arg": "^6.0.0",
11991 "semver": "^5.4.1"
11992 }
11993 },
11994 "npm-profile": {
11995 "version": "3.0.2",
11996 "bundled": true,
11997 "dev": true, 14774 "dev": true,
11998 "requires": { 14775 "requires": {
11999 "aproba": "^1.1.2 || 2", 14776 "repeating": "^2.0.0"
12000 "make-fetch-happen": "^2.5.0 || 3 || 4"
12001 } 14777 }
12002 }, 14778 },
12003 "npm-registry-client": { 14779 "load-json-file": {
12004 "version": "8.6.0",
12005 "bundled": true,
12006 "dev": true,
12007 "requires": {
12008 "concat-stream": "^1.5.2",
12009 "graceful-fs": "^4.1.6",
12010 "normalize-package-data": "~1.0.1 || ^2.0.0",
12011 "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
12012 "npmlog": "2 || ^3.1.0 || ^4.0.0",
12013 "once": "^1.3.3",
12014 "request": "^2.74.0",
12015 "retry": "^0.10.0",
12016 "safe-buffer": "^5.1.1",
12017 "semver": "2 >=2.2.1 || 3.x || 4 || 5",
12018 "slide": "^1.1.3",
12019 "ssri": "^5.2.4"
12020 },
12021 "dependencies": {
12022 "retry": {
12023 "version": "0.10.1",
12024 "bundled": true,
12025 "dev": true
12026 },
12027 "ssri": {
12028 "version": "5.3.0",
12029 "bundled": true,
12030 "dev": true,
12031 "requires": {
12032 "safe-buffer": "^5.1.1"
12033 }
12034 }
12035 }
12036 },
12037 "npm-registry-fetch": {
12038 "version": "1.1.0", 14780 "version": "1.1.0",
12039 "bundled": true, 14781 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
14782 "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
12040 "dev": true, 14783 "dev": true,
12041 "requires": { 14784 "requires": {
12042 "bluebird": "^3.5.1", 14785 "graceful-fs": "^4.1.2",
12043 "figgy-pudding": "^2.0.1", 14786 "parse-json": "^2.2.0",
12044 "lru-cache": "^4.1.2", 14787 "pify": "^2.0.0",
12045 "make-fetch-happen": "^3.0.0", 14788 "pinkie-promise": "^2.0.0",
12046 "npm-package-arg": "^6.0.0", 14789 "strip-bom": "^2.0.0"
12047 "safe-buffer": "^5.1.1"
12048 },
12049 "dependencies": {
12050 "cacache": {
12051 "version": "10.0.4",
12052 "bundled": true,
12053 "dev": true,
12054 "requires": {
12055 "bluebird": "^3.5.1",
12056 "chownr": "^1.0.1",
12057 "glob": "^7.1.2",
12058 "graceful-fs": "^4.1.11",
12059 "lru-cache": "^4.1.1",
12060 "mississippi": "^2.0.0",
12061 "mkdirp": "^0.5.1",
12062 "move-concurrently": "^1.0.1",
12063 "promise-inflight": "^1.0.1",
12064 "rimraf": "^2.6.2",
12065 "ssri": "^5.2.4",
12066 "unique-filename": "^1.1.0",
12067 "y18n": "^4.0.0"
12068 },
12069 "dependencies": {
12070 "mississippi": {
12071 "version": "2.0.0",
12072 "bundled": true,
12073 "dev": true,
12074 "requires": {
12075 "concat-stream": "^1.5.0",
12076 "duplexify": "^3.4.2",
12077 "end-of-stream": "^1.1.0",
12078 "flush-write-stream": "^1.0.0",
12079 "from2": "^2.1.0",
12080 "parallel-transform": "^1.1.0",
12081 "pump": "^2.0.1",
12082 "pumpify": "^1.3.3",
12083 "stream-each": "^1.1.0",
12084 "through2": "^2.0.0"
12085 }
12086 }
12087 }
12088 },
12089 "figgy-pudding": {
12090 "version": "2.0.1",
12091 "bundled": true,
12092 "dev": true
12093 },
12094 "make-fetch-happen": {
12095 "version": "3.0.0",
12096 "bundled": true,
12097 "dev": true,
12098 "requires": {
12099 "agentkeepalive": "^3.4.1",
12100 "cacache": "^10.0.4",
12101 "http-cache-semantics": "^3.8.1",
12102 "http-proxy-agent": "^2.1.0",
12103 "https-proxy-agent": "^2.2.0",
12104 "lru-cache": "^4.1.2",
12105 "mississippi": "^3.0.0",
12106 "node-fetch-npm": "^2.0.2",
12107 "promise-retry": "^1.1.1",
12108 "socks-proxy-agent": "^3.0.1",
12109 "ssri": "^5.2.4"
12110 }
12111 },
12112 "pump": {
12113 "version": "2.0.1",
12114 "bundled": true,
12115 "dev": true,
12116 "requires": {
12117 "end-of-stream": "^1.1.0",
12118 "once": "^1.3.1"
12119 }
12120 },
12121 "smart-buffer": {
12122 "version": "1.1.15",
12123 "bundled": true,
12124 "dev": true
12125 },
12126 "socks": {
12127 "version": "1.1.10",
12128 "bundled": true,
12129 "dev": true,
12130 "requires": {
12131 "ip": "^1.1.4",
12132 "smart-buffer": "^1.0.13"
12133 }
12134 },
12135 "socks-proxy-agent": {
12136 "version": "3.0.1",
12137 "bundled": true,
12138 "dev": true,
12139 "requires": {
12140 "agent-base": "^4.1.0",
12141 "socks": "^1.1.10"
12142 }
12143 },
12144 "ssri": {
12145 "version": "5.3.0",
12146 "bundled": true,
12147 "dev": true,
12148 "requires": {
12149 "safe-buffer": "^5.1.1"
12150 }
12151 }
12152 }
12153 },
12154 "npm-run-path": {
12155 "version": "2.0.2",
12156 "bundled": true,
12157 "dev": true,
12158 "requires": {
12159 "path-key": "^2.0.0"
12160 }
12161 },
12162 "npm-user-validate": {
12163 "version": "1.0.0",
12164 "bundled": true,
12165 "dev": true
12166 },
12167 "npmlog": {
12168 "version": "4.1.2",
12169 "bundled": true,
12170 "dev": true,
12171 "requires": {
12172 "are-we-there-yet": "~1.1.2",
12173 "console-control-strings": "~1.1.0",
12174 "gauge": "~2.7.3",
12175 "set-blocking": "~2.0.0"
12176 } 14790 }
12177 }, 14791 },
12178 "number-is-nan": { 14792 "map-obj": {
12179 "version": "1.0.1", 14793 "version": "1.0.1",
12180 "bundled": true, 14794 "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
12181 "dev": true 14795 "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
12182 },
12183 "oauth-sign": {
12184 "version": "0.9.0",
12185 "bundled": true,
12186 "dev": true
12187 },
12188 "object-assign": {
12189 "version": "4.1.1",
12190 "bundled": true,
12191 "dev": true
12192 },
12193 "once": {
12194 "version": "1.4.0",
12195 "bundled": true,
12196 "dev": true,
12197 "requires": {
12198 "wrappy": "1"
12199 }
12200 },
12201 "opener": {
12202 "version": "1.5.1",
12203 "bundled": true,
12204 "dev": true
12205 },
12206 "os-homedir": {
12207 "version": "1.0.2",
12208 "bundled": true,
12209 "dev": true
12210 },
12211 "os-locale": {
12212 "version": "2.1.0",
12213 "bundled": true,
12214 "dev": true,
12215 "requires": {
12216 "execa": "^0.7.0",
12217 "lcid": "^1.0.0",
12218 "mem": "^1.1.0"
12219 }
12220 },
12221 "os-tmpdir": {
12222 "version": "1.0.2",
12223 "bundled": true,
12224 "dev": true
12225 },
12226 "osenv": {
12227 "version": "0.1.5",
12228 "bundled": true,
12229 "dev": true,
12230 "requires": {
12231 "os-homedir": "^1.0.0",
12232 "os-tmpdir": "^1.0.0"
12233 }
12234 },
12235 "p-finally": {
12236 "version": "1.0.0",
12237 "bundled": true,
12238 "dev": true 14796 "dev": true
12239 }, 14797 },
12240 "p-limit": { 14798 "meow": {
12241 "version": "1.2.0", 14799 "version": "3.7.0",
12242 "bundled": true, 14800 "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
14801 "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
12243 "dev": true, 14802 "dev": true,
12244 "requires": { 14803 "requires": {
12245 "p-try": "^1.0.0" 14804 "camelcase-keys": "^2.0.0",
14805 "decamelize": "^1.1.2",
14806 "loud-rejection": "^1.0.0",
14807 "map-obj": "^1.0.1",
14808 "minimist": "^1.1.3",
14809 "normalize-package-data": "^2.3.4",
14810 "object-assign": "^4.0.1",
14811 "read-pkg-up": "^1.0.1",
14812 "redent": "^1.0.0",
14813 "trim-newlines": "^1.0.0"
12246 } 14814 }
12247 }, 14815 },
12248 "p-locate": { 14816 "parse-json": {
12249 "version": "2.0.0", 14817 "version": "2.2.0",
12250 "bundled": true, 14818 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
14819 "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
12251 "dev": true, 14820 "dev": true,
12252 "requires": { 14821 "requires": {
12253 "p-limit": "^1.1.0" 14822 "error-ex": "^1.2.0"
12254 } 14823 }
12255 }, 14824 },
12256 "p-try": { 14825 "path-exists": {
12257 "version": "1.0.0", 14826 "version": "2.1.0",
12258 "bundled": true, 14827 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
12259 "dev": true 14828 "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
12260 },
12261 "package-json": {
12262 "version": "4.0.1",
12263 "bundled": true,
12264 "dev": true, 14829 "dev": true,
12265 "requires": { 14830 "requires": {
12266 "got": "^6.7.1", 14831 "pinkie-promise": "^2.0.0"
12267 "registry-auth-token": "^3.0.1",
12268 "registry-url": "^3.0.3",
12269 "semver": "^5.1.0"
12270 } 14832 }
12271 }, 14833 },
12272 "pacote": { 14834 "path-type": {
12273 "version": "8.1.6",
12274 "bundled": true,
12275 "dev": true,
12276 "requires": {
12277 "bluebird": "^3.5.1",
12278 "cacache": "^11.0.2",
12279 "get-stream": "^3.0.0",
12280 "glob": "^7.1.2",
12281 "lru-cache": "^4.1.3",
12282 "make-fetch-happen": "^4.0.1",
12283 "minimatch": "^3.0.4",
12284 "minipass": "^2.3.3",
12285 "mississippi": "^3.0.0",
12286 "mkdirp": "^0.5.1",
12287 "normalize-package-data": "^2.4.0",
12288 "npm-package-arg": "^6.1.0",
12289 "npm-packlist": "^1.1.10",
12290 "npm-pick-manifest": "^2.1.0",
12291 "osenv": "^0.1.5",
12292 "promise-inflight": "^1.0.1",
12293 "promise-retry": "^1.1.1",
12294 "protoduck": "^5.0.0",
12295 "rimraf": "^2.6.2",
12296 "safe-buffer": "^5.1.2",
12297 "semver": "^5.5.0",
12298 "ssri": "^6.0.0",
12299 "tar": "^4.4.3",
12300 "unique-filename": "^1.1.0",
12301 "which": "^1.3.0"
12302 }
12303 },
12304 "parallel-transform": {
12305 "version": "1.1.0", 14835 "version": "1.1.0",
12306 "bundled": true, 14836 "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
14837 "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
12307 "dev": true, 14838 "dev": true,
12308 "requires": { 14839 "requires": {
12309 "cyclist": "~0.2.2", 14840 "graceful-fs": "^4.1.2",
12310 "inherits": "^2.0.3", 14841 "pify": "^2.0.0",
12311 "readable-stream": "^2.1.5" 14842 "pinkie-promise": "^2.0.0"
12312 } 14843 }
12313 }, 14844 },
12314 "path-exists": {
12315 "version": "3.0.0",
12316 "bundled": true,
12317 "dev": true
12318 },
12319 "path-is-absolute": {
12320 "version": "1.0.1",
12321 "bundled": true,
12322 "dev": true
12323 },
12324 "path-is-inside": {
12325 "version": "1.0.2",
12326 "bundled": true,
12327 "dev": true
12328 },
12329 "path-key": {
12330 "version": "2.0.1",
12331 "bundled": true,
12332 "dev": true
12333 },
12334 "performance-now": {
12335 "version": "2.1.0",
12336 "bundled": true,
12337 "dev": true
12338 },
12339 "pify": { 14845 "pify": {
12340 "version": "3.0.0", 14846 "version": "2.3.0",
12341 "bundled": true, 14847 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
14848 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
12342 "dev": true 14849 "dev": true
12343 }, 14850 },
12344 "prepend-http": { 14851 "pretty-bytes": {
12345 "version": "1.0.4", 14852 "version": "1.0.4",
12346 "bundled": true, 14853 "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
12347 "dev": true 14854 "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
12348 },
12349 "process-nextick-args": {
12350 "version": "2.0.0",
12351 "bundled": true,
12352 "dev": true
12353 },
12354 "promise-inflight": {
12355 "version": "1.0.1",
12356 "bundled": true,
12357 "dev": true
12358 },
12359 "promise-retry": {
12360 "version": "1.1.1",
12361 "bundled": true,
12362 "dev": true,
12363 "requires": {
12364 "err-code": "^1.0.0",
12365 "retry": "^0.10.0"
12366 },
12367 "dependencies": {
12368 "retry": {
12369 "version": "0.10.1",
12370 "bundled": true,
12371 "dev": true
12372 }
12373 }
12374 },
12375 "promzard": {
12376 "version": "0.3.0",
12377 "bundled": true,
12378 "dev": true,
12379 "requires": {
12380 "read": "1"
12381 }
12382 },
12383 "proto-list": {
12384 "version": "1.2.4",
12385 "bundled": true,
12386 "dev": true
12387 },
12388 "protoduck": {
12389 "version": "5.0.0",
12390 "bundled": true,
12391 "dev": true,
12392 "requires": {
12393 "genfun": "^4.0.1"
12394 }
12395 },
12396 "prr": {
12397 "version": "1.0.1",
12398 "bundled": true,
12399 "dev": true
12400 },
12401 "pseudomap": {
12402 "version": "1.0.2",
12403 "bundled": true,
12404 "dev": true
12405 },
12406 "psl": {
12407 "version": "1.1.29",
12408 "bundled": true,
12409 "dev": true
12410 },
12411 "pump": {
12412 "version": "3.0.0",
12413 "bundled": true,
12414 "dev": true,
12415 "requires": {
12416 "end-of-stream": "^1.1.0",
12417 "once": "^1.3.1"
12418 }
12419 },
12420 "pumpify": {
12421 "version": "1.5.1",
12422 "bundled": true,
12423 "dev": true,
12424 "requires": {
12425 "duplexify": "^3.6.0",
12426 "inherits": "^2.0.3",
12427 "pump": "^2.0.0"
12428 },
12429 "dependencies": {
12430 "pump": {
12431 "version": "2.0.1",
12432 "bundled": true,
12433 "dev": true,
12434 "requires": {
12435 "end-of-stream": "^1.1.0",
12436 "once": "^1.3.1"
12437 }
12438 }
12439 }
12440 },
12441 "punycode": {
12442 "version": "1.4.1",
12443 "bundled": true,
12444 "dev": true
12445 },
12446 "qrcode-terminal": {
12447 "version": "0.12.0",
12448 "bundled": true,
12449 "dev": true
12450 },
12451 "qs": {
12452 "version": "6.5.2",
12453 "bundled": true,
12454 "dev": true
12455 },
12456 "query-string": {
12457 "version": "6.1.0",
12458 "bundled": true,
12459 "dev": true,
12460 "requires": {
12461 "decode-uri-component": "^0.2.0",
12462 "strict-uri-encode": "^2.0.0"
12463 }
12464 },
12465 "qw": {
12466 "version": "1.0.1",
12467 "bundled": true,
12468 "dev": true
12469 },
12470 "rc": {
12471 "version": "1.2.7",
12472 "bundled": true,
12473 "dev": true,
12474 "requires": {
12475 "deep-extend": "^0.5.1",
12476 "ini": "~1.3.0",
12477 "minimist": "^1.2.0",
12478 "strip-json-comments": "~2.0.1"
12479 },
12480 "dependencies": {
12481 "minimist": {
12482 "version": "1.2.0",
12483 "bundled": true,
12484 "dev": true
12485 }
12486 }
12487 },
12488 "read": {
12489 "version": "1.0.7",
12490 "bundled": true,
12491 "dev": true,
12492 "requires": {
12493 "mute-stream": "~0.0.4"
12494 }
12495 },
12496 "read-cmd-shim": {
12497 "version": "1.0.1",
12498 "bundled": true,
12499 "dev": true,
12500 "requires": {
12501 "graceful-fs": "^4.1.2"
12502 }
12503 },
12504 "read-installed": {
12505 "version": "4.0.3",
12506 "bundled": true,
12507 "dev": true,
12508 "requires": {
12509 "debuglog": "^1.0.1",
12510 "graceful-fs": "^4.1.2",
12511 "read-package-json": "^2.0.0",
12512 "readdir-scoped-modules": "^1.0.0",
12513 "semver": "2 || 3 || 4 || 5",
12514 "slide": "~1.1.3",
12515 "util-extend": "^1.0.1"
12516 }
12517 },
12518 "read-package-json": {
12519 "version": "2.0.13",
12520 "bundled": true,
12521 "dev": true,
12522 "requires": {
12523 "glob": "^7.1.1",
12524 "graceful-fs": "^4.1.2",
12525 "json-parse-better-errors": "^1.0.1",
12526 "normalize-package-data": "^2.0.0",
12527 "slash": "^1.0.0"
12528 }
12529 },
12530 "read-package-tree": {
12531 "version": "5.2.1",
12532 "bundled": true,
12533 "dev": true,
12534 "requires": {
12535 "debuglog": "^1.0.1",
12536 "dezalgo": "^1.0.0",
12537 "once": "^1.3.0",
12538 "read-package-json": "^2.0.0",
12539 "readdir-scoped-modules": "^1.0.0"
12540 }
12541 },
12542 "readable-stream": {
12543 "version": "2.3.6",
12544 "bundled": true,
12545 "dev": true,
12546 "requires": {
12547 "core-util-is": "~1.0.0",
12548 "inherits": "~2.0.3",
12549 "isarray": "~1.0.0",
12550 "process-nextick-args": "~2.0.0",
12551 "safe-buffer": "~5.1.1",
12552 "string_decoder": "~1.1.1",
12553 "util-deprecate": "~1.0.1"
12554 }
12555 },
12556 "readdir-scoped-modules": {
12557 "version": "1.0.2",
12558 "bundled": true,
12559 "dev": true,
12560 "requires": {
12561 "debuglog": "^1.0.1",
12562 "dezalgo": "^1.0.0",
12563 "graceful-fs": "^4.1.2",
12564 "once": "^1.3.0"
12565 }
12566 },
12567 "registry-auth-token": {
12568 "version": "3.3.2",
12569 "bundled": true,
12570 "dev": true,
12571 "requires": {
12572 "rc": "^1.1.6",
12573 "safe-buffer": "^5.0.1"
12574 }
12575 },
12576 "registry-url": {
12577 "version": "3.1.0",
12578 "bundled": true,
12579 "dev": true, 14855 "dev": true,
12580 "requires": { 14856 "requires": {
12581 "rc": "^1.0.1" 14857 "get-stdin": "^4.0.1",
14858 "meow": "^3.1.0"
12582 } 14859 }
12583 }, 14860 },
12584 "request": { 14861 "read-pkg": {
12585 "version": "2.88.0", 14862 "version": "1.1.0",
12586 "bundled": true, 14863 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
14864 "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
12587 "dev": true, 14865 "dev": true,
12588 "requires": { 14866 "requires": {
12589 "aws-sign2": "~0.7.0", 14867 "load-json-file": "^1.0.0",
12590 "aws4": "^1.8.0", 14868 "normalize-package-data": "^2.3.2",
12591 "caseless": "~0.12.0", 14869 "path-type": "^1.0.0"
12592 "combined-stream": "~1.0.6",
12593 "extend": "~3.0.2",
12594 "forever-agent": "~0.6.1",
12595 "form-data": "~2.3.2",
12596 "har-validator": "~5.1.0",
12597 "http-signature": "~1.2.0",
12598 "is-typedarray": "~1.0.0",
12599 "isstream": "~0.1.2",
12600 "json-stringify-safe": "~5.0.1",
12601 "mime-types": "~2.1.19",
12602 "oauth-sign": "~0.9.0",
12603 "performance-now": "^2.1.0",
12604 "qs": "~6.5.2",
12605 "safe-buffer": "^5.1.2",
12606 "tough-cookie": "~2.4.3",
12607 "tunnel-agent": "^0.6.0",
12608 "uuid": "^3.3.2"
12609 } 14870 }
12610 }, 14871 },
12611 "require-directory": { 14872 "read-pkg-up": {
12612 "version": "2.1.1",
12613 "bundled": true,
12614 "dev": true
12615 },
12616 "require-main-filename": {
12617 "version": "1.0.1", 14873 "version": "1.0.1",
12618 "bundled": true, 14874 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
12619 "dev": true 14875 "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
12620 },
12621 "resolve-from": {
12622 "version": "4.0.0",
12623 "bundled": true,
12624 "dev": true
12625 },
12626 "retry": {
12627 "version": "0.12.0",
12628 "bundled": true,
12629 "dev": true
12630 },
12631 "rimraf": {
12632 "version": "2.6.2",
12633 "bundled": true,
12634 "dev": true,
12635 "requires": {
12636 "glob": "^7.0.5"
12637 }
12638 },
12639 "run-queue": {
12640 "version": "1.0.3",
12641 "bundled": true,
12642 "dev": true, 14876 "dev": true,
12643 "requires": { 14877 "requires": {
12644 "aproba": "^1.1.1" 14878 "find-up": "^1.0.0",
14879 "read-pkg": "^1.0.0"
12645 } 14880 }
12646 }, 14881 },
12647 "safe-buffer": { 14882 "redent": {
12648 "version": "5.1.2",
12649 "bundled": true,
12650 "dev": true
12651 },
12652 "safer-buffer": {
12653 "version": "2.1.2",
12654 "bundled": true,
12655 "dev": true
12656 },
12657 "semver": {
12658 "version": "5.5.1",
12659 "bundled": true,
12660 "dev": true
12661 },
12662 "semver-diff": {
12663 "version": "2.1.0",
12664 "bundled": true,
12665 "dev": true,
12666 "requires": {
12667 "semver": "^5.0.3"
12668 }
12669 },
12670 "set-blocking": {
12671 "version": "2.0.0",
12672 "bundled": true,
12673 "dev": true
12674 },
12675 "sha": {
12676 "version": "2.0.1",
12677 "bundled": true,
12678 "dev": true,
12679 "requires": {
12680 "graceful-fs": "^4.1.2",
12681 "readable-stream": "^2.0.2"
12682 }
12683 },
12684 "shebang-command": {
12685 "version": "1.2.0",
12686 "bundled": true,
12687 "dev": true,
12688 "requires": {
12689 "shebang-regex": "^1.0.0"
12690 }
12691 },
12692 "shebang-regex": {
12693 "version": "1.0.0",
12694 "bundled": true,
12695 "dev": true
12696 },
12697 "signal-exit": {
12698 "version": "3.0.2",
12699 "bundled": true,
12700 "dev": true
12701 },
12702 "slash": {
12703 "version": "1.0.0",
12704 "bundled": true,
12705 "dev": true
12706 },
12707 "slide": {
12708 "version": "1.1.6",
12709 "bundled": true,
12710 "dev": true
12711 },
12712 "smart-buffer": {
12713 "version": "4.0.1",
12714 "bundled": true,
12715 "dev": true
12716 },
12717 "socks": {
12718 "version": "2.2.0",
12719 "bundled": true,
12720 "dev": true,
12721 "requires": {
12722 "ip": "^1.1.5",
12723 "smart-buffer": "^4.0.1"
12724 }
12725 },
12726 "socks-proxy-agent": {
12727 "version": "4.0.1",
12728 "bundled": true,
12729 "dev": true,
12730 "requires": {
12731 "agent-base": "~4.2.0",
12732 "socks": "~2.2.0"
12733 }
12734 },
12735 "sorted-object": {
12736 "version": "2.0.1",
12737 "bundled": true,
12738 "dev": true
12739 },
12740 "sorted-union-stream": {
12741 "version": "2.1.3",
12742 "bundled": true,
12743 "dev": true,
12744 "requires": {
12745 "from2": "^1.3.0",
12746 "stream-iterate": "^1.1.0"
12747 },
12748 "dependencies": {
12749 "from2": {
12750 "version": "1.3.0",
12751 "bundled": true,
12752 "dev": true,
12753 "requires": {
12754 "inherits": "~2.0.1",
12755 "readable-stream": "~1.1.10"
12756 }
12757 },
12758 "isarray": {
12759 "version": "0.0.1",
12760 "bundled": true,
12761 "dev": true
12762 },
12763 "readable-stream": {
12764 "version": "1.1.14",
12765 "bundled": true,
12766 "dev": true,
12767 "requires": {
12768 "core-util-is": "~1.0.0",
12769 "inherits": "~2.0.1",
12770 "isarray": "0.0.1",
12771 "string_decoder": "~0.10.x"
12772 }
12773 },
12774 "string_decoder": {
12775 "version": "0.10.31",
12776 "bundled": true,
12777 "dev": true
12778 }
12779 }
12780 },
12781 "spdx-correct": {
12782 "version": "3.0.0",
12783 "bundled": true,
12784 "dev": true,
12785 "requires": {
12786 "spdx-expression-parse": "^3.0.0",
12787 "spdx-license-ids": "^3.0.0"
12788 }
12789 },
12790 "spdx-exceptions": {
12791 "version": "2.1.0",
12792 "bundled": true,
12793 "dev": true
12794 },
12795 "spdx-expression-parse": {
12796 "version": "3.0.0",
12797 "bundled": true,
12798 "dev": true,
12799 "requires": {
12800 "spdx-exceptions": "^2.1.0",
12801 "spdx-license-ids": "^3.0.0"
12802 }
12803 },
12804 "spdx-license-ids": {
12805 "version": "3.0.0",
12806 "bundled": true,
12807 "dev": true
12808 },
12809 "sshpk": {
12810 "version": "1.14.2",
12811 "bundled": true,
12812 "dev": true,
12813 "requires": {
12814 "asn1": "~0.2.3",
12815 "assert-plus": "^1.0.0",
12816 "bcrypt-pbkdf": "^1.0.0",
12817 "dashdash": "^1.12.0",
12818 "ecc-jsbn": "~0.1.1",
12819 "getpass": "^0.1.1",
12820 "jsbn": "~0.1.0",
12821 "safer-buffer": "^2.0.2",
12822 "tweetnacl": "~0.14.0"
12823 }
12824 },
12825 "ssri": {
12826 "version": "6.0.1",
12827 "bundled": true,
12828 "dev": true,
12829 "requires": {
12830 "figgy-pudding": "^3.5.1"
12831 }
12832 },
12833 "stream-each": {
12834 "version": "1.2.2",
12835 "bundled": true,
12836 "dev": true,
12837 "requires": {
12838 "end-of-stream": "^1.1.0",
12839 "stream-shift": "^1.0.0"
12840 }
12841 },
12842 "stream-iterate": {
12843 "version": "1.2.0",
12844 "bundled": true,
12845 "dev": true,
12846 "requires": {
12847 "readable-stream": "^2.1.5",
12848 "stream-shift": "^1.0.0"
12849 }
12850 },
12851 "stream-shift": {
12852 "version": "1.0.0",
12853 "bundled": true,
12854 "dev": true
12855 },
12856 "strict-uri-encode": {
12857 "version": "2.0.0",
12858 "bundled": true,
12859 "dev": true
12860 },
12861 "string-width": {
12862 "version": "2.1.1",
12863 "bundled": true,
12864 "dev": true,
12865 "requires": {
12866 "is-fullwidth-code-point": "^2.0.0",
12867 "strip-ansi": "^4.0.0"
12868 },
12869 "dependencies": {
12870 "ansi-regex": {
12871 "version": "3.0.0",
12872 "bundled": true,
12873 "dev": true
12874 },
12875 "is-fullwidth-code-point": {
12876 "version": "2.0.0",
12877 "bundled": true,
12878 "dev": true
12879 },
12880 "strip-ansi": {
12881 "version": "4.0.0",
12882 "bundled": true,
12883 "dev": true,
12884 "requires": {
12885 "ansi-regex": "^3.0.0"
12886 }
12887 }
12888 }
12889 },
12890 "string_decoder": {
12891 "version": "1.1.1",
12892 "bundled": true,
12893 "dev": true,
12894 "requires": {
12895 "safe-buffer": "~5.1.0"
12896 }
12897 },
12898 "stringify-package": {
12899 "version": "1.0.0",
12900 "bundled": true,
12901 "dev": true
12902 },
12903 "strip-ansi": {
12904 "version": "3.0.1",
12905 "bundled": true,
12906 "dev": true,
12907 "requires": {
12908 "ansi-regex": "^2.0.0"
12909 }
12910 },
12911 "strip-eof": {
12912 "version": "1.0.0", 14883 "version": "1.0.0",
12913 "bundled": true, 14884 "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
12914 "dev": true 14885 "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
12915 },
12916 "strip-json-comments": {
12917 "version": "2.0.1",
12918 "bundled": true,
12919 "dev": true
12920 },
12921 "supports-color": {
12922 "version": "5.4.0",
12923 "bundled": true,
12924 "dev": true, 14886 "dev": true,
12925 "requires": { 14887 "requires": {
12926 "has-flag": "^3.0.0" 14888 "indent-string": "^2.1.0",
14889 "strip-indent": "^1.0.1"
12927 } 14890 }
12928 }, 14891 },
12929 "tar": { 14892 "strip-bom": {
12930 "version": "4.4.8",
12931 "bundled": true,
12932 "dev": true,
12933 "requires": {
12934 "chownr": "^1.1.1",
12935 "fs-minipass": "^1.2.5",
12936 "minipass": "^2.3.4",
12937 "minizlib": "^1.1.1",
12938 "mkdirp": "^0.5.0",
12939 "safe-buffer": "^5.1.2",
12940 "yallist": "^3.0.2"
12941 },
12942 "dependencies": {
12943 "chownr": {
12944 "version": "1.1.1",
12945 "bundled": true,
12946 "dev": true
12947 },
12948 "minipass": {
12949 "version": "2.3.5",
12950 "bundled": true,
12951 "dev": true,
12952 "requires": {
12953 "safe-buffer": "^5.1.2",
12954 "yallist": "^3.0.0"
12955 }
12956 },
12957 "yallist": {
12958 "version": "3.0.3",
12959 "bundled": true,
12960 "dev": true
12961 }
12962 }
12963 },
12964 "term-size": {
12965 "version": "1.2.0",
12966 "bundled": true,
12967 "dev": true,
12968 "requires": {
12969 "execa": "^0.7.0"
12970 }
12971 },
12972 "text-table": {
12973 "version": "0.2.0",
12974 "bundled": true,
12975 "dev": true
12976 },
12977 "through": {
12978 "version": "2.3.8",
12979 "bundled": true,
12980 "dev": true
12981 },
12982 "through2": {
12983 "version": "2.0.3",
12984 "bundled": true,
12985 "dev": true,
12986 "requires": {
12987 "readable-stream": "^2.1.5",
12988 "xtend": "~4.0.1"
12989 }
12990 },
12991 "timed-out": {
12992 "version": "4.0.1",
12993 "bundled": true,
12994 "dev": true
12995 },
12996 "tiny-relative-date": {
12997 "version": "1.3.0",
12998 "bundled": true,
12999 "dev": true
13000 },
13001 "tough-cookie": {
13002 "version": "2.4.3",
13003 "bundled": true,
13004 "dev": true,
13005 "requires": {
13006 "psl": "^1.1.24",
13007 "punycode": "^1.4.1"
13008 }
13009 },
13010 "tunnel-agent": {
13011 "version": "0.6.0",
13012 "bundled": true,
13013 "dev": true,
13014 "requires": {
13015 "safe-buffer": "^5.0.1"
13016 }
13017 },
13018 "tweetnacl": {
13019 "version": "0.14.5",
13020 "bundled": true,
13021 "dev": true,
13022 "optional": true
13023 },
13024 "typedarray": {
13025 "version": "0.0.6",
13026 "bundled": true,
13027 "dev": true
13028 },
13029 "uid-number": {
13030 "version": "0.0.6",
13031 "bundled": true,
13032 "dev": true
13033 },
13034 "umask": {
13035 "version": "1.1.0",
13036 "bundled": true,
13037 "dev": true
13038 },
13039 "unique-filename": {
13040 "version": "1.1.0",
13041 "bundled": true,
13042 "dev": true,
13043 "requires": {
13044 "unique-slug": "^2.0.0"
13045 }
13046 },
13047 "unique-slug": {
13048 "version": "2.0.0", 14893 "version": "2.0.0",
13049 "bundled": true, 14894 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
13050 "dev": true, 14895 "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
13051 "requires": {
13052 "imurmurhash": "^0.1.4"
13053 }
13054 },
13055 "unique-string": {
13056 "version": "1.0.0",
13057 "bundled": true,
13058 "dev": true,
13059 "requires": {
13060 "crypto-random-string": "^1.0.0"
13061 }
13062 },
13063 "unpipe": {
13064 "version": "1.0.0",
13065 "bundled": true,
13066 "dev": true
13067 },
13068 "unzip-response": {
13069 "version": "2.0.1",
13070 "bundled": true,
13071 "dev": true
13072 },
13073 "update-notifier": {
13074 "version": "2.5.0",
13075 "bundled": true,
13076 "dev": true, 14896 "dev": true,
13077 "requires": { 14897 "requires": {
13078 "boxen": "^1.2.1", 14898 "is-utf8": "^0.2.0"
13079 "chalk": "^2.0.1",
13080 "configstore": "^3.0.0",
13081 "import-lazy": "^2.1.0",
13082 "is-ci": "^1.0.10",
13083 "is-installed-globally": "^0.1.0",
13084 "is-npm": "^1.0.0",
13085 "latest-version": "^3.0.0",
13086 "semver-diff": "^2.0.0",
13087 "xdg-basedir": "^3.0.0"
13088 }
13089 },
13090 "url-parse-lax": {
13091 "version": "1.0.0",
13092 "bundled": true,
13093 "dev": true,
13094 "requires": {
13095 "prepend-http": "^1.0.1"
13096 }
13097 },
13098 "util-deprecate": {
13099 "version": "1.0.2",
13100 "bundled": true,
13101 "dev": true
13102 },
13103 "util-extend": {
13104 "version": "1.0.3",
13105 "bundled": true,
13106 "dev": true
13107 },
13108 "uuid": {
13109 "version": "3.3.2",
13110 "bundled": true,
13111 "dev": true
13112 },
13113 "validate-npm-package-license": {
13114 "version": "3.0.4",
13115 "bundled": true,
13116 "dev": true,
13117 "requires": {
13118 "spdx-correct": "^3.0.0",
13119 "spdx-expression-parse": "^3.0.0"
13120 }
13121 },
13122 "validate-npm-package-name": {
13123 "version": "3.0.0",
13124 "bundled": true,
13125 "dev": true,
13126 "requires": {
13127 "builtins": "^1.0.3"
13128 }
13129 },
13130 "verror": {
13131 "version": "1.10.0",
13132 "bundled": true,
13133 "dev": true,
13134 "requires": {
13135 "assert-plus": "^1.0.0",
13136 "core-util-is": "1.0.2",
13137 "extsprintf": "^1.2.0"
13138 } 14899 }
13139 }, 14900 },
13140 "wcwidth": { 14901 "strip-indent": {
13141 "version": "1.0.1", 14902 "version": "1.0.1",
13142 "bundled": true, 14903 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
13143 "dev": true, 14904 "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
13144 "requires": {
13145 "defaults": "^1.0.3"
13146 }
13147 },
13148 "which": {
13149 "version": "1.3.1",
13150 "bundled": true,
13151 "dev": true,
13152 "requires": {
13153 "isexe": "^2.0.0"
13154 }
13155 },
13156 "which-module": {
13157 "version": "2.0.0",
13158 "bundled": true,
13159 "dev": true
13160 },
13161 "wide-align": {
13162 "version": "1.1.2",
13163 "bundled": true,
13164 "dev": true,
13165 "requires": {
13166 "string-width": "^1.0.2"
13167 },
13168 "dependencies": {
13169 "string-width": {
13170 "version": "1.0.2",
13171 "bundled": true,
13172 "dev": true,
13173 "requires": {
13174 "code-point-at": "^1.0.0",
13175 "is-fullwidth-code-point": "^1.0.0",
13176 "strip-ansi": "^3.0.0"
13177 }
13178 }
13179 }
13180 },
13181 "widest-line": {
13182 "version": "2.0.0",
13183 "bundled": true,
13184 "dev": true, 14905 "dev": true,
13185 "requires": { 14906 "requires": {
13186 "string-width": "^2.1.1" 14907 "get-stdin": "^4.0.1"
13187 } 14908 }
13188 }, 14909 },
13189 "worker-farm": { 14910 "trim-newlines": {
13190 "version": "1.6.0", 14911 "version": "1.0.0",
13191 "bundled": true, 14912 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
13192 "dev": true, 14913 "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
13193 "requires": {
13194 "errno": "~0.1.7"
13195 }
13196 },
13197 "wrap-ansi": {
13198 "version": "2.1.0",
13199 "bundled": true,
13200 "dev": true,
13201 "requires": {
13202 "string-width": "^1.0.1",
13203 "strip-ansi": "^3.0.1"
13204 },
13205 "dependencies": {
13206 "string-width": {
13207 "version": "1.0.2",
13208 "bundled": true,
13209 "dev": true,
13210 "requires": {
13211 "code-point-at": "^1.0.0",
13212 "is-fullwidth-code-point": "^1.0.0",
13213 "strip-ansi": "^3.0.0"
13214 }
13215 }
13216 }
13217 },
13218 "wrappy": {
13219 "version": "1.0.2",
13220 "bundled": true,
13221 "dev": true
13222 },
13223 "write-file-atomic": {
13224 "version": "2.3.0",
13225 "bundled": true,
13226 "dev": true,
13227 "requires": {
13228 "graceful-fs": "^4.1.11",
13229 "imurmurhash": "^0.1.4",
13230 "signal-exit": "^3.0.2"
13231 }
13232 },
13233 "xdg-basedir": {
13234 "version": "3.0.0",
13235 "bundled": true,
13236 "dev": true
13237 },
13238 "xtend": {
13239 "version": "4.0.1",
13240 "bundled": true,
13241 "dev": true
13242 },
13243 "y18n": {
13244 "version": "4.0.0",
13245 "bundled": true,
13246 "dev": true
13247 },
13248 "yallist": {
13249 "version": "2.1.2",
13250 "bundled": true,
13251 "dev": true 14914 "dev": true
13252 },
13253 "yargs": {
13254 "version": "11.0.0",
13255 "bundled": true,
13256 "dev": true,
13257 "requires": {
13258 "cliui": "^4.0.0",
13259 "decamelize": "^1.1.1",
13260 "find-up": "^2.1.0",
13261 "get-caller-file": "^1.0.1",
13262 "os-locale": "^2.0.0",
13263 "require-directory": "^2.1.1",
13264 "require-main-filename": "^1.0.1",
13265 "set-blocking": "^2.0.0",
13266 "string-width": "^2.0.0",
13267 "which-module": "^2.0.0",
13268 "y18n": "^3.2.1",
13269 "yargs-parser": "^9.0.2"
13270 },
13271 "dependencies": {
13272 "y18n": {
13273 "version": "3.2.1",
13274 "bundled": true,
13275 "dev": true
13276 }
13277 }
13278 },
13279 "yargs-parser": {
13280 "version": "9.0.2",
13281 "bundled": true,
13282 "dev": true,
13283 "requires": {
13284 "camelcase": "^4.1.0"
13285 }
13286 }
13287 }
13288 },
13289 "npm-run-path": {
13290 "version": "2.0.2",
13291 "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
13292 "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
13293 "dev": true,
13294 "requires": {
13295 "path-key": "^2.0.0"
13296 }
13297 },
13298 "npmlog": {
13299 "version": "4.1.2",
13300 "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
13301 "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
13302 "dev": true,
13303 "requires": {
13304 "are-we-there-yet": "~1.1.2",
13305 "console-control-strings": "~1.1.0",
13306 "gauge": "~2.7.3",
13307 "set-blocking": "~2.0.0"
13308 }
13309 },
13310 "nugget": {
13311 "version": "2.0.1",
13312 "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz",
13313 "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
13314 "dev": true,
13315 "requires": {
13316 "debug": "^2.1.3",
13317 "minimist": "^1.1.0",
13318 "pretty-bytes": "^1.0.2",
13319 "progress-stream": "^1.1.0",
13320 "request": "^2.45.0",
13321 "single-line-log": "^1.1.2",
13322 "throttleit": "0.0.2"
13323 },
13324 "dependencies": {
13325 "pretty-bytes": {
13326 "version": "1.0.4",
13327 "resolved": "http://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
13328 "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
13329 "dev": true,
13330 "requires": {
13331 "get-stdin": "^4.0.1",
13332 "meow": "^3.1.0"
13333 }
13334 } 14915 }
13335 } 14916 }
13336 }, 14917 },
@@ -13339,6 +14920,12 @@
13339 "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 14920 "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
13340 "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 14921 "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
13341 }, 14922 },
14923 "nwsapi": {
14924 "version": "2.1.3",
14925 "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.3.tgz",
14926 "integrity": "sha512-RowAaJGEgYXEZfQ7tvvdtAQUKPyTR6T6wNu0fwlNsGQYr/h3yQc6oI8WnVZh3Y/Sylwc+dtAlvPqfFZjhTyk3A==",
14927 "dev": true
14928 },
13342 "oauth-sign": { 14929 "oauth-sign": {
13343 "version": "0.9.0", 14930 "version": "0.9.0",
13344 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 14931 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
@@ -13360,6 +14947,7 @@
13360 "version": "0.1.0", 14947 "version": "0.1.0",
13361 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 14948 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
13362 "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 14949 "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
14950 "dev": true,
13363 "requires": { 14951 "requires": {
13364 "copy-descriptor": "^0.1.0", 14952 "copy-descriptor": "^0.1.0",
13365 "define-property": "^0.2.5", 14953 "define-property": "^0.2.5",
@@ -13370,6 +14958,7 @@
13370 "version": "0.2.5", 14958 "version": "0.2.5",
13371 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 14959 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
13372 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 14960 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
14961 "dev": true,
13373 "requires": { 14962 "requires": {
13374 "is-descriptor": "^0.1.0" 14963 "is-descriptor": "^0.1.0"
13375 } 14964 }
@@ -13378,6 +14967,7 @@
13378 "version": "3.2.2", 14967 "version": "3.2.2",
13379 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 14968 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
13380 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 14969 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
14970 "dev": true,
13381 "requires": { 14971 "requires": {
13382 "is-buffer": "^1.1.5" 14972 "is-buffer": "^1.1.5"
13383 } 14973 }
@@ -13385,21 +14975,22 @@
13385 } 14975 }
13386 }, 14976 },
13387 "object-hash": { 14977 "object-hash": {
13388 "version": "1.3.0", 14978 "version": "1.3.1",
13389 "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", 14979 "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
13390 "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==", 14980 "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==",
13391 "dev": true 14981 "dev": true
13392 }, 14982 },
13393 "object-keys": { 14983 "object-keys": {
13394 "version": "1.0.12", 14984 "version": "1.1.0",
13395 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", 14985 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz",
13396 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", 14986 "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==",
13397 "dev": true 14987 "dev": true
13398 }, 14988 },
13399 "object-visit": { 14989 "object-visit": {
13400 "version": "1.0.1", 14990 "version": "1.0.1",
13401 "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 14991 "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
13402 "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 14992 "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
14993 "dev": true,
13403 "requires": { 14994 "requires": {
13404 "isobject": "^3.0.0" 14995 "isobject": "^3.0.0"
13405 } 14996 }
@@ -13420,6 +15011,7 @@
13420 "version": "1.1.0", 15011 "version": "1.1.0",
13421 "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 15012 "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
13422 "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 15013 "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
15014 "dev": true,
13423 "requires": { 15015 "requires": {
13424 "array-each": "^1.0.1", 15016 "array-each": "^1.0.1",
13425 "array-slice": "^1.0.0", 15017 "array-slice": "^1.0.0",
@@ -13428,21 +15020,32 @@
13428 } 15020 }
13429 }, 15021 },
13430 "object.entries": { 15022 "object.entries": {
13431 "version": "1.0.4", 15023 "version": "1.1.0",
13432 "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", 15024 "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz",
13433 "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", 15025 "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==",
15026 "dev": true,
15027 "requires": {
15028 "define-properties": "^1.1.3",
15029 "es-abstract": "^1.12.0",
15030 "function-bind": "^1.1.1",
15031 "has": "^1.0.3"
15032 }
15033 },
15034 "object.getownpropertydescriptors": {
15035 "version": "2.0.3",
15036 "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
15037 "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
13434 "dev": true, 15038 "dev": true,
13435 "requires": { 15039 "requires": {
13436 "define-properties": "^1.1.2", 15040 "define-properties": "^1.1.2",
13437 "es-abstract": "^1.6.1", 15041 "es-abstract": "^1.5.1"
13438 "function-bind": "^1.1.0",
13439 "has": "^1.0.1"
13440 } 15042 }
13441 }, 15043 },
13442 "object.map": { 15044 "object.map": {
13443 "version": "1.0.1", 15045 "version": "1.0.1",
13444 "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", 15046 "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
13445 "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", 15047 "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
15048 "dev": true,
13446 "requires": { 15049 "requires": {
13447 "for-own": "^1.0.0", 15050 "for-own": "^1.0.0",
13448 "make-iterator": "^1.0.0" 15051 "make-iterator": "^1.0.0"
@@ -13452,6 +15055,7 @@
13452 "version": "2.0.1", 15055 "version": "2.0.1",
13453 "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 15056 "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
13454 "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 15057 "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
15058 "dev": true,
13455 "requires": { 15059 "requires": {
13456 "for-own": "^0.1.4", 15060 "for-own": "^0.1.4",
13457 "is-extendable": "^0.1.1" 15061 "is-extendable": "^0.1.1"
@@ -13461,6 +15065,7 @@
13461 "version": "0.1.5", 15065 "version": "0.1.5",
13462 "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 15066 "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
13463 "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 15067 "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
15068 "dev": true,
13464 "requires": { 15069 "requires": {
13465 "for-in": "^1.0.1" 15070 "for-in": "^1.0.1"
13466 } 15071 }
@@ -13471,6 +15076,7 @@
13471 "version": "1.3.0", 15076 "version": "1.3.0",
13472 "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 15077 "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
13473 "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 15078 "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
15079 "dev": true,
13474 "requires": { 15080 "requires": {
13475 "isobject": "^3.0.1" 15081 "isobject": "^3.0.1"
13476 } 15082 }
@@ -13485,6 +15091,18 @@
13485 "make-iterator": "^1.0.0" 15091 "make-iterator": "^1.0.0"
13486 } 15092 }
13487 }, 15093 },
15094 "obuf": {
15095 "version": "1.1.2",
15096 "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
15097 "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
15098 "dev": true
15099 },
15100 "octokit-pagination-methods": {
15101 "version": "1.1.0",
15102 "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
15103 "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
15104 "dev": true
15105 },
13488 "on-finished": { 15106 "on-finished": {
13489 "version": "2.1.0", 15107 "version": "2.1.0",
13490 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz", 15108 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz",
@@ -13494,6 +15112,12 @@
13494 "ee-first": "1.0.5" 15112 "ee-first": "1.0.5"
13495 } 15113 }
13496 }, 15114 },
15115 "on-headers": {
15116 "version": "1.0.1",
15117 "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
15118 "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
15119 "dev": true
15120 },
13497 "once": { 15121 "once": {
13498 "version": "1.4.0", 15122 "version": "1.4.0",
13499 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 15123 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -13517,6 +15141,15 @@
13517 "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", 15141 "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=",
13518 "dev": true 15142 "dev": true
13519 }, 15143 },
15144 "opn": {
15145 "version": "5.4.0",
15146 "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz",
15147 "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==",
15148 "dev": true,
15149 "requires": {
15150 "is-wsl": "^1.1.0"
15151 }
15152 },
13520 "optimist": { 15153 "optimist": {
13521 "version": "0.6.1", 15154 "version": "0.6.1",
13522 "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 15155 "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
@@ -13532,12 +15165,6 @@
13532 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 15165 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
13533 "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", 15166 "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
13534 "dev": true 15167 "dev": true
13535 },
13536 "wordwrap": {
13537 "version": "0.0.3",
13538 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
13539 "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
13540 "dev": true
13541 } 15168 }
13542 } 15169 }
13543 }, 15170 },
@@ -13553,6 +15180,14 @@
13553 "prelude-ls": "~1.1.2", 15180 "prelude-ls": "~1.1.2",
13554 "type-check": "~0.3.2", 15181 "type-check": "~0.3.2",
13555 "wordwrap": "~1.0.0" 15182 "wordwrap": "~1.0.0"
15183 },
15184 "dependencies": {
15185 "wordwrap": {
15186 "version": "1.0.0",
15187 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
15188 "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
15189 "dev": true
15190 }
13556 } 15191 }
13557 }, 15192 },
13558 "options": { 15193 "options": {
@@ -13562,68 +15197,111 @@
13562 "dev": true 15197 "dev": true
13563 }, 15198 },
13564 "ora": { 15199 "ora": {
13565 "version": "1.4.0", 15200 "version": "3.1.0",
13566 "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", 15201 "resolved": "https://registry.npmjs.org/ora/-/ora-3.1.0.tgz",
13567 "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", 15202 "integrity": "sha512-vRBPaNCclUi8pUxRF/G8+5qEQkc6EgzKK1G2ZNJUIGu088Un5qIxFXeDgymvPRM9nmrcUOGzQgS1Vmtz+NtlMw==",
13568 "dev": true, 15203 "dev": true,
13569 "requires": { 15204 "requires": {
13570 "chalk": "^2.1.0", 15205 "chalk": "^2.4.2",
13571 "cli-cursor": "^2.1.0", 15206 "cli-cursor": "^2.1.0",
13572 "cli-spinners": "^1.0.1", 15207 "cli-spinners": "^1.3.1",
13573 "log-symbols": "^2.1.0" 15208 "log-symbols": "^2.2.0",
15209 "strip-ansi": "^5.0.0",
15210 "wcwidth": "^1.0.1"
13574 }, 15211 },
13575 "dependencies": { 15212 "dependencies": {
13576 "ansi-styles": { 15213 "ansi-regex": {
13577 "version": "3.2.1", 15214 "version": "4.0.0",
13578 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 15215 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
13579 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 15216 "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
15217 "dev": true
15218 },
15219 "strip-ansi": {
15220 "version": "5.0.0",
15221 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
15222 "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
13580 "dev": true, 15223 "dev": true,
13581 "requires": { 15224 "requires": {
13582 "color-convert": "^1.9.0" 15225 "ansi-regex": "^4.0.0"
13583 } 15226 }
13584 }, 15227 }
13585 "chalk": { 15228 }
13586 "version": "2.4.1", 15229 },
13587 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 15230 "ordered-read-streams": {
13588 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 15231 "version": "1.0.1",
15232 "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
15233 "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
15234 "dev": true,
15235 "requires": {
15236 "readable-stream": "^2.0.1"
15237 },
15238 "dependencies": {
15239 "readable-stream": {
15240 "version": "2.3.6",
15241 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
15242 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
13589 "dev": true, 15243 "dev": true,
13590 "requires": { 15244 "requires": {
13591 "ansi-styles": "^3.2.1", 15245 "core-util-is": "~1.0.0",
13592 "escape-string-regexp": "^1.0.5", 15246 "inherits": "~2.0.3",
13593 "supports-color": "^5.3.0" 15247 "isarray": "~1.0.0",
15248 "process-nextick-args": "~2.0.0",
15249 "safe-buffer": "~5.1.1",
15250 "string_decoder": "~1.1.1",
15251 "util-deprecate": "~1.0.1"
13594 } 15252 }
13595 }, 15253 },
13596 "supports-color": { 15254 "string_decoder": {
13597 "version": "5.5.0", 15255 "version": "1.1.1",
13598 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 15256 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
13599 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 15257 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
13600 "dev": true, 15258 "dev": true,
13601 "requires": { 15259 "requires": {
13602 "has-flag": "^3.0.0" 15260 "safe-buffer": "~5.1.0"
13603 } 15261 }
13604 } 15262 }
13605 } 15263 }
13606 }, 15264 },
13607 "ordered-read-streams": { 15265 "original": {
13608 "version": "1.0.1", 15266 "version": "1.0.2",
13609 "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", 15267 "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
13610 "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", 15268 "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
13611 "dev": true, 15269 "dev": true,
13612 "requires": { 15270 "requires": {
13613 "readable-stream": "^2.0.1" 15271 "url-parse": "^1.4.3"
13614 } 15272 }
13615 }, 15273 },
15274 "os-browserify": {
15275 "version": "0.3.0",
15276 "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
15277 "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
15278 "dev": true
15279 },
13616 "os-homedir": { 15280 "os-homedir": {
13617 "version": "1.0.2", 15281 "version": "1.0.2",
13618 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 15282 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
13619 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 15283 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
15284 "dev": true
13620 }, 15285 },
13621 "os-locale": { 15286 "os-locale": {
13622 "version": "1.4.0", 15287 "version": "3.1.0",
13623 "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", 15288 "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
13624 "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", 15289 "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
15290 "dev": true,
15291 "requires": {
15292 "execa": "^1.0.0",
15293 "lcid": "^2.0.0",
15294 "mem": "^4.0.0"
15295 }
15296 },
15297 "os-name": {
15298 "version": "3.0.0",
15299 "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.0.0.tgz",
15300 "integrity": "sha512-7c74tib2FsdFbQ3W+qj8Tyd1R3Z6tuVRNNxXjJcZ4NgjIEQU9N/prVMqcW29XZPXGACqaXN3jq58/6hoaoXH6g==",
15301 "dev": true,
13625 "requires": { 15302 "requires": {
13626 "lcid": "^1.0.0" 15303 "macos-release": "^2.0.0",
15304 "windows-release": "^3.1.0"
13627 } 15305 }
13628 }, 15306 },
13629 "os-tmpdir": { 15307 "os-tmpdir": {
@@ -13642,12 +15320,32 @@
13642 "os-tmpdir": "^1.0.0" 15320 "os-tmpdir": "^1.0.0"
13643 } 15321 }
13644 }, 15322 },
15323 "output-file-sync": {
15324 "version": "2.0.1",
15325 "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz",
15326 "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==",
15327 "dev": true,
15328 "requires": {
15329 "graceful-fs": "^4.1.11",
15330 "is-plain-obj": "^1.1.0",
15331 "mkdirp": "^0.5.1"
15332 }
15333 },
13645 "p-defer": { 15334 "p-defer": {
13646 "version": "1.0.0", 15335 "version": "1.0.0",
13647 "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", 15336 "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
13648 "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", 15337 "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
13649 "dev": true 15338 "dev": true
13650 }, 15339 },
15340 "p-each-series": {
15341 "version": "1.0.0",
15342 "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz",
15343 "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=",
15344 "dev": true,
15345 "requires": {
15346 "p-reduce": "^1.0.0"
15347 }
15348 },
13651 "p-finally": { 15349 "p-finally": {
13652 "version": "1.0.0", 15350 "version": "1.0.0",
13653 "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 15351 "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -13655,35 +15353,71 @@
13655 "dev": true 15353 "dev": true
13656 }, 15354 },
13657 "p-is-promise": { 15355 "p-is-promise": {
13658 "version": "1.1.0", 15356 "version": "2.0.0",
13659 "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", 15357 "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
13660 "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", 15358 "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==",
13661 "dev": true 15359 "dev": true
13662 }, 15360 },
13663 "p-limit": { 15361 "p-limit": {
13664 "version": "1.3.0", 15362 "version": "2.1.0",
13665 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 15363 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
13666 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 15364 "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
13667 "dev": true, 15365 "dev": true,
13668 "requires": { 15366 "requires": {
13669 "p-try": "^1.0.0" 15367 "p-try": "^2.0.0"
13670 } 15368 }
13671 }, 15369 },
13672 "p-locate": { 15370 "p-locate": {
13673 "version": "2.0.0", 15371 "version": "3.0.0",
13674 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 15372 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
13675 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 15373 "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
13676 "dev": true, 15374 "dev": true,
13677 "requires": { 15375 "requires": {
13678 "p-limit": "^1.1.0" 15376 "p-limit": "^2.0.0"
13679 } 15377 }
13680 }, 15378 },
13681 "p-try": { 15379 "p-map": {
15380 "version": "1.2.0",
15381 "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
15382 "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
15383 "dev": true
15384 },
15385 "p-map-series": {
13682 "version": "1.0.0", 15386 "version": "1.0.0",
13683 "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 15387 "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz",
13684 "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 15388 "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=",
15389 "dev": true,
15390 "requires": {
15391 "p-reduce": "^1.0.0"
15392 }
15393 },
15394 "p-pipe": {
15395 "version": "1.2.0",
15396 "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz",
15397 "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=",
15398 "dev": true
15399 },
15400 "p-reduce": {
15401 "version": "1.0.0",
15402 "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
15403 "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=",
15404 "dev": true
15405 },
15406 "p-try": {
15407 "version": "2.0.0",
15408 "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
15409 "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
13685 "dev": true 15410 "dev": true
13686 }, 15411 },
15412 "p-waterfall": {
15413 "version": "1.0.0",
15414 "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-1.0.0.tgz",
15415 "integrity": "sha1-ftlLPOszMngjU69qrhGqn8I1uwA=",
15416 "dev": true,
15417 "requires": {
15418 "p-reduce": "^1.0.0"
15419 }
15420 },
13687 "package-json": { 15421 "package-json": {
13688 "version": "4.0.1", 15422 "version": "4.0.1",
13689 "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 15423 "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
@@ -13696,10 +15430,116 @@
13696 "semver": "^5.1.0" 15430 "semver": "^5.1.0"
13697 } 15431 }
13698 }, 15432 },
15433 "pacote": {
15434 "version": "9.4.1",
15435 "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.4.1.tgz",
15436 "integrity": "sha512-YKSRsQqmeHxgra0KCdWA2FtVxDPUlBiCdmew+mSe44pzlx5t1ViRMWiQg18T+DREA+vSqYfKzynaToFR4hcKHw==",
15437 "dev": true,
15438 "requires": {
15439 "bluebird": "^3.5.3",
15440 "cacache": "^11.3.2",
15441 "figgy-pudding": "^3.5.1",
15442 "get-stream": "^4.1.0",
15443 "glob": "^7.1.3",
15444 "lru-cache": "^5.1.1",
15445 "make-fetch-happen": "^4.0.1",
15446 "minimatch": "^3.0.4",
15447 "minipass": "^2.3.5",
15448 "mississippi": "^3.0.0",
15449 "mkdirp": "^0.5.1",
15450 "normalize-package-data": "^2.4.0",
15451 "npm-package-arg": "^6.1.0",
15452 "npm-packlist": "^1.1.12",
15453 "npm-pick-manifest": "^2.2.3",
15454 "npm-registry-fetch": "^3.8.0",
15455 "osenv": "^0.1.5",
15456 "promise-inflight": "^1.0.1",
15457 "promise-retry": "^1.1.1",
15458 "protoduck": "^5.0.1",
15459 "rimraf": "^2.6.2",
15460 "safe-buffer": "^5.1.2",
15461 "semver": "^5.6.0",
15462 "ssri": "^6.0.1",
15463 "tar": "^4.4.8",
15464 "unique-filename": "^1.1.1",
15465 "which": "^1.3.1"
15466 },
15467 "dependencies": {
15468 "lru-cache": {
15469 "version": "5.1.1",
15470 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
15471 "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
15472 "dev": true,
15473 "requires": {
15474 "yallist": "^3.0.2"
15475 }
15476 }
15477 }
15478 },
13699 "pako": { 15479 "pako": {
13700 "version": "1.0.7", 15480 "version": "1.0.8",
13701 "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", 15481 "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz",
13702 "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==" 15482 "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA=="
15483 },
15484 "parallel-transform": {
15485 "version": "1.1.0",
15486 "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
15487 "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
15488 "dev": true,
15489 "requires": {
15490 "cyclist": "~0.2.2",
15491 "inherits": "^2.0.3",
15492 "readable-stream": "^2.1.5"
15493 },
15494 "dependencies": {
15495 "readable-stream": {
15496 "version": "2.3.6",
15497 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
15498 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
15499 "dev": true,
15500 "requires": {
15501 "core-util-is": "~1.0.0",
15502 "inherits": "~2.0.3",
15503 "isarray": "~1.0.0",
15504 "process-nextick-args": "~2.0.0",
15505 "safe-buffer": "~5.1.1",
15506 "string_decoder": "~1.1.1",
15507 "util-deprecate": "~1.0.1"
15508 }
15509 },
15510 "string_decoder": {
15511 "version": "1.1.1",
15512 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
15513 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
15514 "dev": true,
15515 "requires": {
15516 "safe-buffer": "~5.1.0"
15517 }
15518 }
15519 }
15520 },
15521 "param-case": {
15522 "version": "2.1.1",
15523 "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
15524 "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
15525 "dev": true,
15526 "requires": {
15527 "no-case": "^2.2.0"
15528 }
15529 },
15530 "parse-asn1": {
15531 "version": "5.1.3",
15532 "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz",
15533 "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==",
15534 "dev": true,
15535 "requires": {
15536 "asn1.js": "^4.0.0",
15537 "browserify-aes": "^1.0.0",
15538 "create-hash": "^1.1.0",
15539 "evp_bytestokey": "^1.0.0",
15540 "pbkdf2": "^3.0.3",
15541 "safe-buffer": "^5.1.1"
15542 }
13703 }, 15543 },
13704 "parse-color": { 15544 "parse-color": {
13705 "version": "1.0.0", 15545 "version": "1.0.0",
@@ -13712,7 +15552,7 @@
13712 "dependencies": { 15552 "dependencies": {
13713 "color-convert": { 15553 "color-convert": {
13714 "version": "0.5.3", 15554 "version": "0.5.3",
13715 "resolved": "http://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", 15555 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
13716 "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=", 15556 "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=",
13717 "dev": true 15557 "dev": true
13718 } 15558 }
@@ -13722,6 +15562,7 @@
13722 "version": "1.0.2", 15562 "version": "1.0.2",
13723 "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", 15563 "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
13724 "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", 15564 "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
15565 "dev": true,
13725 "requires": { 15566 "requires": {
13726 "is-absolute": "^1.0.0", 15567 "is-absolute": "^1.0.0",
13727 "map-cache": "^0.2.0", 15568 "map-cache": "^0.2.0",
@@ -13738,6 +15579,7 @@
13738 "version": "3.0.4", 15579 "version": "3.0.4",
13739 "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 15580 "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
13740 "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 15581 "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
15582 "dev": true,
13741 "requires": { 15583 "requires": {
13742 "glob-base": "^0.3.0", 15584 "glob-base": "^0.3.0",
13743 "is-dotfile": "^1.0.0", 15585 "is-dotfile": "^1.0.0",
@@ -13748,12 +15590,14 @@
13748 "is-extglob": { 15590 "is-extglob": {
13749 "version": "1.0.0", 15591 "version": "1.0.0",
13750 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 15592 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
13751 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" 15593 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
15594 "dev": true
13752 }, 15595 },
13753 "is-glob": { 15596 "is-glob": {
13754 "version": "2.0.1", 15597 "version": "2.0.1",
13755 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 15598 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
13756 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 15599 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
15600 "dev": true,
13757 "requires": { 15601 "requires": {
13758 "is-extglob": "^1.0.0" 15602 "is-extglob": "^1.0.0"
13759 } 15603 }
@@ -13761,18 +15605,62 @@
13761 } 15605 }
13762 }, 15606 },
13763 "parse-json": { 15607 "parse-json": {
13764 "version": "2.2.0", 15608 "version": "4.0.0",
13765 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 15609 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
13766 "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 15610 "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
13767 "dev": true, 15611 "dev": true,
13768 "requires": { 15612 "requires": {
13769 "error-ex": "^1.2.0" 15613 "error-ex": "^1.3.1",
15614 "json-parse-better-errors": "^1.0.1"
13770 } 15615 }
13771 }, 15616 },
15617 "parse-node-version": {
15618 "version": "1.0.1",
15619 "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
15620 "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
15621 "dev": true
15622 },
13772 "parse-passwd": { 15623 "parse-passwd": {
13773 "version": "1.0.0", 15624 "version": "1.0.0",
13774 "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 15625 "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
13775 "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" 15626 "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
15627 "dev": true
15628 },
15629 "parse-path": {
15630 "version": "4.0.1",
15631 "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz",
15632 "integrity": "sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA==",
15633 "dev": true,
15634 "requires": {
15635 "is-ssh": "^1.3.0",
15636 "protocols": "^1.4.0"
15637 }
15638 },
15639 "parse-url": {
15640 "version": "5.0.1",
15641 "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz",
15642 "integrity": "sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg==",
15643 "dev": true,
15644 "requires": {
15645 "is-ssh": "^1.3.0",
15646 "normalize-url": "^3.3.0",
15647 "parse-path": "^4.0.0",
15648 "protocols": "^1.4.0"
15649 },
15650 "dependencies": {
15651 "normalize-url": {
15652 "version": "3.3.0",
15653 "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
15654 "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
15655 "dev": true
15656 }
15657 }
15658 },
15659 "parse5": {
15660 "version": "4.0.0",
15661 "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
15662 "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
15663 "dev": true
13776 }, 15664 },
13777 "parsejson": { 15665 "parsejson": {
13778 "version": "0.0.3", 15666 "version": "0.0.3",
@@ -13810,7 +15698,14 @@
13810 "pascalcase": { 15698 "pascalcase": {
13811 "version": "0.1.1", 15699 "version": "0.1.1",
13812 "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 15700 "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
13813 "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" 15701 "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
15702 "dev": true
15703 },
15704 "path-browserify": {
15705 "version": "0.0.0",
15706 "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
15707 "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
15708 "dev": true
13814 }, 15709 },
13815 "path-dirname": { 15710 "path-dirname": {
13816 "version": "1.0.2", 15711 "version": "1.0.2",
@@ -13819,13 +15714,9 @@
13819 "dev": true 15714 "dev": true
13820 }, 15715 },
13821 "path-exists": { 15716 "path-exists": {
13822 "version": "2.1.0", 15717 "version": "3.0.0",
13823 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 15718 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
13824 "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 15719 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
13825 "dev": true,
13826 "requires": {
13827 "pinkie-promise": "^2.0.0"
13828 }
13829 }, 15720 },
13830 "path-is-absolute": { 15721 "path-is-absolute": {
13831 "version": "1.0.1", 15722 "version": "1.0.1",
@@ -13853,6 +15744,7 @@
13853 "version": "0.1.1", 15744 "version": "0.1.1",
13854 "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 15745 "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
13855 "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 15746 "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
15747 "dev": true,
13856 "requires": { 15748 "requires": {
13857 "path-root-regex": "^0.1.0" 15749 "path-root-regex": "^0.1.0"
13858 } 15750 }
@@ -13860,17 +15752,35 @@
13860 "path-root-regex": { 15752 "path-root-regex": {
13861 "version": "0.1.2", 15753 "version": "0.1.2",
13862 "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 15754 "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
13863 "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" 15755 "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
15756 "dev": true
15757 },
15758 "path-to-regexp": {
15759 "version": "0.1.7",
15760 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
15761 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
15762 "dev": true
13864 }, 15763 },
13865 "path-type": { 15764 "path-type": {
13866 "version": "1.1.0", 15765 "version": "3.0.0",
13867 "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 15766 "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
13868 "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 15767 "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
13869 "dev": true, 15768 "dev": true,
13870 "requires": { 15769 "requires": {
13871 "graceful-fs": "^4.1.2", 15770 "pify": "^3.0.0"
13872 "pify": "^2.0.0", 15771 }
13873 "pinkie-promise": "^2.0.0" 15772 },
15773 "pbkdf2": {
15774 "version": "3.0.17",
15775 "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
15776 "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
15777 "dev": true,
15778 "requires": {
15779 "create-hash": "^1.1.2",
15780 "create-hmac": "^1.1.4",
15781 "ripemd160": "^2.0.1",
15782 "safe-buffer": "^5.0.1",
15783 "sha.js": "^2.4.8"
13874 } 15784 }
13875 }, 15785 },
13876 "pend": { 15786 "pend": {
@@ -13879,10 +15789,16 @@
13879 "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 15789 "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
13880 "dev": true 15790 "dev": true
13881 }, 15791 },
15792 "performance-now": {
15793 "version": "2.1.0",
15794 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
15795 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
15796 "dev": true
15797 },
13882 "pify": { 15798 "pify": {
13883 "version": "2.3.0", 15799 "version": "3.0.0",
13884 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 15800 "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
13885 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 15801 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
13886 "dev": true 15802 "dev": true
13887 }, 15803 },
13888 "pinkie": { 15804 "pinkie": {
@@ -13910,12 +15826,57 @@
13910 } 15826 }
13911 }, 15827 },
13912 "pkg-dir": { 15828 "pkg-dir": {
13913 "version": "1.0.0", 15829 "version": "2.0.0",
13914 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", 15830 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
13915 "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", 15831 "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
13916 "dev": true, 15832 "dev": true,
13917 "requires": { 15833 "requires": {
13918 "find-up": "^1.0.0" 15834 "find-up": "^2.1.0"
15835 },
15836 "dependencies": {
15837 "find-up": {
15838 "version": "2.1.0",
15839 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
15840 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
15841 "dev": true,
15842 "requires": {
15843 "locate-path": "^2.0.0"
15844 }
15845 },
15846 "locate-path": {
15847 "version": "2.0.0",
15848 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
15849 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
15850 "dev": true,
15851 "requires": {
15852 "p-locate": "^2.0.0",
15853 "path-exists": "^3.0.0"
15854 }
15855 },
15856 "p-limit": {
15857 "version": "1.3.0",
15858 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
15859 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
15860 "dev": true,
15861 "requires": {
15862 "p-try": "^1.0.0"
15863 }
15864 },
15865 "p-locate": {
15866 "version": "2.0.0",
15867 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
15868 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
15869 "dev": true,
15870 "requires": {
15871 "p-limit": "^1.1.0"
15872 }
15873 },
15874 "p-try": {
15875 "version": "1.0.0",
15876 "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
15877 "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
15878 "dev": true
15879 }
13919 } 15880 }
13920 }, 15881 },
13921 "please-upgrade-node": { 15882 "please-upgrade-node": {
@@ -13956,10 +15917,36 @@
13956 "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 15917 "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
13957 "dev": true 15918 "dev": true
13958 }, 15919 },
15920 "pn": {
15921 "version": "1.1.0",
15922 "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
15923 "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
15924 "dev": true
15925 },
15926 "portfinder": {
15927 "version": "1.0.20",
15928 "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz",
15929 "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==",
15930 "dev": true,
15931 "requires": {
15932 "async": "^1.5.2",
15933 "debug": "^2.2.0",
15934 "mkdirp": "0.5.x"
15935 },
15936 "dependencies": {
15937 "async": {
15938 "version": "1.5.2",
15939 "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
15940 "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
15941 "dev": true
15942 }
15943 }
15944 },
13959 "posix-character-classes": { 15945 "posix-character-classes": {
13960 "version": "0.1.1", 15946 "version": "0.1.1",
13961 "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 15947 "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
13962 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" 15948 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
15949 "dev": true
13963 }, 15950 },
13964 "prelude-ls": { 15951 "prelude-ls": {
13965 "version": "1.1.2", 15952 "version": "1.1.2",
@@ -13975,7 +15962,8 @@
13975 "preserve": { 15962 "preserve": {
13976 "version": "0.2.0", 15963 "version": "0.2.0",
13977 "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 15964 "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
13978 "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" 15965 "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
15966 "dev": true
13979 }, 15967 },
13980 "prettier": { 15968 "prettier": {
13981 "version": "1.15.2", 15969 "version": "1.15.2",
@@ -13988,10 +15976,47 @@
13988 "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", 15976 "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
13989 "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" 15977 "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk="
13990 }, 15978 },
15979 "pretty-error": {
15980 "version": "2.1.1",
15981 "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
15982 "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
15983 "dev": true,
15984 "requires": {
15985 "renderkid": "^2.0.1",
15986 "utila": "~0.4"
15987 }
15988 },
15989 "pretty-format": {
15990 "version": "24.7.0",
15991 "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz",
15992 "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==",
15993 "dev": true,
15994 "requires": {
15995 "@jest/types": "^24.7.0",
15996 "ansi-regex": "^4.0.0",
15997 "ansi-styles": "^3.2.0",
15998 "react-is": "^16.8.4"
15999 },
16000 "dependencies": {
16001 "ansi-regex": {
16002 "version": "4.1.0",
16003 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
16004 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
16005 "dev": true
16006 },
16007 "react-is": {
16008 "version": "16.8.6",
16009 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
16010 "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==",
16011 "dev": true
16012 }
16013 }
16014 },
13991 "pretty-hrtime": { 16015 "pretty-hrtime": {
13992 "version": "1.0.3", 16016 "version": "1.0.3",
13993 "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 16017 "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
13994 "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" 16018 "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
16019 "dev": true
13995 }, 16020 },
13996 "private": { 16021 "private": {
13997 "version": "0.1.8", 16022 "version": "0.1.8",
@@ -13999,10 +16024,16 @@
13999 "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 16024 "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
14000 "dev": true 16025 "dev": true
14001 }, 16026 },
16027 "process": {
16028 "version": "0.11.10",
16029 "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
16030 "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
16031 "dev": true
16032 },
14002 "process-nextick-args": { 16033 "process-nextick-args": {
14003 "version": "1.0.7", 16034 "version": "2.0.0",
14004 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 16035 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
14005 "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 16036 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
14006 "dev": true 16037 "dev": true
14007 }, 16038 },
14008 "progress": { 16039 "progress": {
@@ -14035,7 +16066,7 @@
14035 }, 16066 },
14036 "readable-stream": { 16067 "readable-stream": {
14037 "version": "1.1.14", 16068 "version": "1.1.14",
14038 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 16069 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
14039 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 16070 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
14040 "dev": true, 16071 "dev": true,
14041 "requires": { 16072 "requires": {
@@ -14047,13 +16078,13 @@
14047 }, 16078 },
14048 "string_decoder": { 16079 "string_decoder": {
14049 "version": "0.10.31", 16080 "version": "0.10.31",
14050 "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 16081 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
14051 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 16082 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
14052 "dev": true 16083 "dev": true
14053 }, 16084 },
14054 "through2": { 16085 "through2": {
14055 "version": "0.2.3", 16086 "version": "0.2.3",
14056 "resolved": "http://registry.npmjs.org/through2/-/through2-0.2.3.tgz", 16087 "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
14057 "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", 16088 "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
14058 "dev": true, 16089 "dev": true,
14059 "requires": { 16090 "requires": {
@@ -14080,21 +16111,79 @@
14080 "asap": "~2.0.3" 16111 "asap": "~2.0.3"
14081 } 16112 }
14082 }, 16113 },
16114 "promise-inflight": {
16115 "version": "1.0.1",
16116 "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
16117 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
16118 "dev": true
16119 },
16120 "promise-retry": {
16121 "version": "1.1.1",
16122 "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
16123 "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=",
16124 "dev": true,
16125 "requires": {
16126 "err-code": "^1.0.0",
16127 "retry": "^0.10.0"
16128 }
16129 },
16130 "prompts": {
16131 "version": "2.0.4",
16132 "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz",
16133 "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==",
16134 "dev": true,
16135 "requires": {
16136 "kleur": "^3.0.2",
16137 "sisteransi": "^1.0.0"
16138 }
16139 },
16140 "promzard": {
16141 "version": "0.3.0",
16142 "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz",
16143 "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=",
16144 "dev": true,
16145 "requires": {
16146 "read": "1"
16147 }
16148 },
14083 "prop-types": { 16149 "prop-types": {
14084 "version": "15.6.2", 16150 "version": "15.7.1",
14085 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", 16151 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.1.tgz",
14086 "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", 16152 "integrity": "sha512-f8Lku2z9kERjOCcnDOPm68EBJAO2K00Q5mSgPAUE/gJuBgsYLbVy6owSrtcHj90zt8PvW+z0qaIIgsIhHOa1Qw==",
14087 "requires": { 16153 "requires": {
14088 "loose-envify": "^1.3.1", 16154 "object-assign": "^4.1.1",
14089 "object-assign": "^4.1.1" 16155 "react-is": "^16.8.1"
14090 } 16156 }
14091 }, 16157 },
14092 "prop-types-extended": { 16158 "proto-list": {
14093 "version": "0.2.1", 16159 "version": "1.2.4",
14094 "resolved": "https://registry.npmjs.org/prop-types-extended/-/prop-types-extended-0.2.1.tgz", 16160 "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
14095 "integrity": "sha1-ziPz28SMzcds+hpMfj9+2aXdglk=", 16161 "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
16162 "dev": true
16163 },
16164 "protocols": {
16165 "version": "1.4.7",
16166 "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz",
16167 "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==",
16168 "dev": true
16169 },
16170 "protoduck": {
16171 "version": "5.0.1",
16172 "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
16173 "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==",
16174 "dev": true,
14096 "requires": { 16175 "requires": {
14097 "invariant": "^2.2.0" 16176 "genfun": "^5.0.0"
16177 }
16178 },
16179 "proxy-addr": {
16180 "version": "2.0.4",
16181 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
16182 "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
16183 "dev": true,
16184 "requires": {
16185 "forwarded": "~0.1.2",
16186 "ipaddr.js": "1.8.0"
14098 } 16187 }
14099 }, 16188 },
14100 "proxy-middleware": { 16189 "proxy-middleware": {
@@ -14103,6 +16192,12 @@
14103 "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=", 16192 "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=",
14104 "dev": true 16193 "dev": true
14105 }, 16194 },
16195 "prr": {
16196 "version": "1.0.1",
16197 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
16198 "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
16199 "dev": true
16200 },
14106 "pseudomap": { 16201 "pseudomap": {
14107 "version": "1.0.2", 16202 "version": "1.0.2",
14108 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 16203 "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -14110,15 +16205,29 @@
14110 "dev": true 16205 "dev": true
14111 }, 16206 },
14112 "psl": { 16207 "psl": {
14113 "version": "1.1.29", 16208 "version": "1.1.31",
14114 "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", 16209 "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
14115 "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", 16210 "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
14116 "dev": true 16211 "dev": true
14117 }, 16212 },
16213 "public-encrypt": {
16214 "version": "4.0.3",
16215 "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
16216 "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
16217 "dev": true,
16218 "requires": {
16219 "bn.js": "^4.1.0",
16220 "browserify-rsa": "^4.0.0",
16221 "create-hash": "^1.1.0",
16222 "parse-asn1": "^5.0.0",
16223 "randombytes": "^2.0.1",
16224 "safe-buffer": "^5.1.2"
16225 }
16226 },
14118 "pump": { 16227 "pump": {
14119 "version": "2.0.1", 16228 "version": "3.0.0",
14120 "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 16229 "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
14121 "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 16230 "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
14122 "dev": true, 16231 "dev": true,
14123 "requires": { 16232 "requires": {
14124 "end-of-stream": "^1.1.0", 16233 "end-of-stream": "^1.1.0",
@@ -14134,12 +16243,24 @@
14134 "duplexify": "^3.6.0", 16243 "duplexify": "^3.6.0",
14135 "inherits": "^2.0.3", 16244 "inherits": "^2.0.3",
14136 "pump": "^2.0.0" 16245 "pump": "^2.0.0"
16246 },
16247 "dependencies": {
16248 "pump": {
16249 "version": "2.0.1",
16250 "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
16251 "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
16252 "dev": true,
16253 "requires": {
16254 "end-of-stream": "^1.1.0",
16255 "once": "^1.3.1"
16256 }
16257 }
14137 } 16258 }
14138 }, 16259 },
14139 "punycode": { 16260 "punycode": {
14140 "version": "1.4.1", 16261 "version": "2.1.1",
14141 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 16262 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
14142 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 16263 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
14143 "dev": true 16264 "dev": true
14144 }, 16265 },
14145 "pupa": { 16266 "pupa": {
@@ -14168,6 +16289,24 @@
14168 "strict-uri-encode": "^1.0.0" 16289 "strict-uri-encode": "^1.0.0"
14169 } 16290 }
14170 }, 16291 },
16292 "querystring": {
16293 "version": "0.2.0",
16294 "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
16295 "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
16296 "dev": true
16297 },
16298 "querystring-es3": {
16299 "version": "0.2.1",
16300 "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
16301 "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
16302 "dev": true
16303 },
16304 "querystringify": {
16305 "version": "2.1.0",
16306 "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
16307 "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
16308 "dev": true
16309 },
14171 "quick-lru": { 16310 "quick-lru": {
14172 "version": "1.1.0", 16311 "version": "1.1.0",
14173 "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", 16312 "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
@@ -14175,9 +16314,10 @@
14175 "dev": true 16314 "dev": true
14176 }, 16315 },
14177 "randomatic": { 16316 "randomatic": {
14178 "version": "3.1.0", 16317 "version": "3.1.1",
14179 "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", 16318 "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
14180 "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", 16319 "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
16320 "dev": true,
14181 "requires": { 16321 "requires": {
14182 "is-number": "^4.0.0", 16322 "is-number": "^4.0.0",
14183 "kind-of": "^6.0.0", 16323 "kind-of": "^6.0.0",
@@ -14187,16 +16327,59 @@
14187 "is-number": { 16327 "is-number": {
14188 "version": "4.0.0", 16328 "version": "4.0.0",
14189 "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", 16329 "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
14190 "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" 16330 "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
16331 "dev": true
14191 } 16332 }
14192 } 16333 }
14193 }, 16334 },
16335 "randombytes": {
16336 "version": "2.0.6",
16337 "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
16338 "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
16339 "dev": true,
16340 "requires": {
16341 "safe-buffer": "^5.1.0"
16342 }
16343 },
16344 "randomfill": {
16345 "version": "1.0.4",
16346 "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
16347 "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
16348 "dev": true,
16349 "requires": {
16350 "randombytes": "^2.0.5",
16351 "safe-buffer": "^5.1.0"
16352 }
16353 },
14194 "range-parser": { 16354 "range-parser": {
14195 "version": "1.0.3", 16355 "version": "1.0.3",
14196 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", 16356 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz",
14197 "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=", 16357 "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=",
14198 "dev": true 16358 "dev": true
14199 }, 16359 },
16360 "raw-body": {
16361 "version": "2.3.3",
16362 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
16363 "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
16364 "dev": true,
16365 "requires": {
16366 "bytes": "3.0.0",
16367 "http-errors": "1.6.3",
16368 "iconv-lite": "0.4.23",
16369 "unpipe": "1.0.0"
16370 },
16371 "dependencies": {
16372 "iconv-lite": {
16373 "version": "0.4.23",
16374 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
16375 "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
16376 "dev": true,
16377 "requires": {
16378 "safer-buffer": ">= 2.1.2 < 3"
16379 }
16380 }
16381 }
16382 },
14200 "rc": { 16383 "rc": {
14201 "version": "1.2.8", 16384 "version": "1.2.8",
14202 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 16385 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -14256,6 +16439,14 @@
14256 "lodash.camelcase": "^4.3.0" 16439 "lodash.camelcase": "^4.3.0"
14257 } 16440 }
14258 }, 16441 },
16442 "react-html-attributes": {
16443 "version": "1.4.3",
16444 "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.3.tgz",
16445 "integrity": "sha1-jDbDX85rdQk40oavQo7R2nYlGG4=",
16446 "requires": {
16447 "html-element-attributes": "^1.0.0"
16448 }
16449 },
14259 "react-intl": { 16450 "react-intl": {
14260 "version": "2.7.2", 16451 "version": "2.7.2",
14261 "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.7.2.tgz", 16452 "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.7.2.tgz",
@@ -14266,12 +16457,31 @@
14266 "intl-messageformat": "^2.1.0", 16457 "intl-messageformat": "^2.1.0",
14267 "intl-relativeformat": "^2.1.0", 16458 "intl-relativeformat": "^2.1.0",
14268 "invariant": "^2.1.1" 16459 "invariant": "^2.1.1"
16460 },
16461 "dependencies": {
16462 "hoist-non-react-statics": {
16463 "version": "2.5.5",
16464 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
16465 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
16466 }
16467 }
16468 },
16469 "react-intl-translations-manager": {
16470 "version": "5.0.3",
16471 "resolved": "https://registry.npmjs.org/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz",
16472 "integrity": "sha512-EfBeugnOGFcdUbQyY9TqBMbuauQ8wm73ZqFr0UqCljhbXl7YDHQcVzclWFRkVmlUffzxitLQFhAZEVVeRNQSwA==",
16473 "dev": true,
16474 "requires": {
16475 "chalk": "^2.3.2",
16476 "glob": "^7.1.2",
16477 "json-stable-stringify": "^1.0.1",
16478 "mkdirp": "^0.5.1"
14269 } 16479 }
14270 }, 16480 },
14271 "react-is": { 16481 "react-is": {
14272 "version": "16.6.3", 16482 "version": "16.8.1",
14273 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.6.3.tgz", 16483 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.1.tgz",
14274 "integrity": "sha512-u7FDWtthB4rWibG/+mFbVd5FvdI20yde86qKGx4lVUTWmPlSWQ4QxbBIrrs+HnXGbxOUlUzTAP/VDmvCwaP2yA==" 16484 "integrity": "sha512-ioMCzVDWvCvKD8eeT+iukyWrBGrA3DiFYkXfBsVYIRdaREZuBjENG+KjrikavCLasozqRWTwFUagU/O4vPpRMA=="
14275 }, 16485 },
14276 "react-jss": { 16486 "react-jss": {
14277 "version": "8.6.1", 16487 "version": "8.6.1",
@@ -14283,6 +16493,13 @@
14283 "jss-preset-default": "^4.3.0", 16493 "jss-preset-default": "^4.3.0",
14284 "prop-types": "^15.6.0", 16494 "prop-types": "^15.6.0",
14285 "theming": "^1.3.0" 16495 "theming": "^1.3.0"
16496 },
16497 "dependencies": {
16498 "hoist-non-react-statics": {
16499 "version": "2.5.5",
16500 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
16501 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
16502 }
14286 } 16503 }
14287 }, 16504 },
14288 "react-lifecycles-compat": { 16505 "react-lifecycles-compat": {
@@ -14313,7 +16530,7 @@
14313 }, 16530 },
14314 "react-router": { 16531 "react-router": {
14315 "version": "3.2.1", 16532 "version": "3.2.1",
14316 "resolved": "http://registry.npmjs.org/react-router/-/react-router-3.2.1.tgz", 16533 "resolved": "https://registry.npmjs.org/react-router/-/react-router-3.2.1.tgz",
14317 "integrity": "sha512-SXkhC0nr3G0ltzVU07IN8jYl0bB6FsrDIqlLC9dK3SITXqyTJyM7yhXlUqs89w3Nqi5OkXsfRUeHX+P874HQrg==", 16534 "integrity": "sha512-SXkhC0nr3G0ltzVU07IN8jYl0bB6FsrDIqlLC9dK3SITXqyTJyM7yhXlUqs89w3Nqi5OkXsfRUeHX+P874HQrg==",
14318 "requires": { 16535 "requires": {
14319 "create-react-class": "^15.5.1", 16536 "create-react-class": "^15.5.1",
@@ -14323,6 +16540,13 @@
14323 "loose-envify": "^1.2.0", 16540 "loose-envify": "^1.2.0",
14324 "prop-types": "^15.5.6", 16541 "prop-types": "^15.5.6",
14325 "warning": "^3.0.0" 16542 "warning": "^3.0.0"
16543 },
16544 "dependencies": {
16545 "hoist-non-react-statics": {
16546 "version": "2.5.5",
16547 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
16548 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
16549 }
14326 } 16550 }
14327 }, 16551 },
14328 "react-sortable-hoc": { 16552 "react-sortable-hoc": {
@@ -14375,6 +16599,24 @@
14375 "resolved": "https://registry.npmjs.org/reactive-localstorage/-/reactive-localstorage-0.0.2.tgz", 16599 "resolved": "https://registry.npmjs.org/reactive-localstorage/-/reactive-localstorage-0.0.2.tgz",
14376 "integrity": "sha512-+3oKBiiNxBbLH9mWw6eiBOAbwQSg3xpRIg7ys+E5Zc98DKQ1zyoUcQygWDDwZAn6mka2kWTaZD+ZUSgmV2VzLA==" 16600 "integrity": "sha512-+3oKBiiNxBbLH9mWw6eiBOAbwQSg3xpRIg7ys+E5Zc98DKQ1zyoUcQygWDDwZAn6mka2kWTaZD+ZUSgmV2VzLA=="
14377 }, 16601 },
16602 "read": {
16603 "version": "1.0.7",
16604 "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
16605 "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
16606 "dev": true,
16607 "requires": {
16608 "mute-stream": "~0.0.4"
16609 }
16610 },
16611 "read-cmd-shim": {
16612 "version": "1.0.1",
16613 "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz",
16614 "integrity": "sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs=",
16615 "dev": true,
16616 "requires": {
16617 "graceful-fs": "^4.1.2"
16618 }
16619 },
14378 "read-config-file": { 16620 "read-config-file": {
14379 "version": "3.2.0", 16621 "version": "3.2.0",
14380 "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.0.tgz", 16622 "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.0.tgz",
@@ -14392,91 +16634,147 @@
14392 "lazy-val": "^1.0.3" 16634 "lazy-val": "^1.0.3"
14393 }, 16635 },
14394 "dependencies": { 16636 "dependencies": {
14395 "ajv": {
14396 "version": "6.6.2",
14397 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz",
14398 "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==",
14399 "dev": true,
14400 "requires": {
14401 "fast-deep-equal": "^2.0.1",
14402 "fast-json-stable-stringify": "^2.0.0",
14403 "json-schema-traverse": "^0.4.1",
14404 "uri-js": "^4.2.2"
14405 }
14406 },
14407 "dotenv": { 16637 "dotenv": {
14408 "version": "6.2.0", 16638 "version": "6.2.0",
14409 "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", 16639 "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
14410 "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", 16640 "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==",
14411 "dev": true 16641 "dev": true
14412 }, 16642 }
14413 "fast-deep-equal": { 16643 }
14414 "version": "2.0.1", 16644 },
14415 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 16645 "read-package-json": {
14416 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 16646 "version": "2.0.13",
14417 "dev": true 16647 "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.13.tgz",
14418 }, 16648 "integrity": "sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==",
14419 "json-schema-traverse": { 16649 "dev": true,
14420 "version": "0.4.1", 16650 "requires": {
14421 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 16651 "glob": "^7.1.1",
14422 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 16652 "graceful-fs": "^4.1.2",
16653 "json-parse-better-errors": "^1.0.1",
16654 "normalize-package-data": "^2.0.0",
16655 "slash": "^1.0.0"
16656 },
16657 "dependencies": {
16658 "slash": {
16659 "version": "1.0.0",
16660 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
16661 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
14423 "dev": true 16662 "dev": true
14424 },
14425 "json5": {
14426 "version": "2.1.0",
14427 "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
14428 "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
14429 "dev": true,
14430 "requires": {
14431 "minimist": "^1.2.0"
14432 }
14433 } 16663 }
14434 } 16664 }
14435 }, 16665 },
16666 "read-package-tree": {
16667 "version": "5.2.1",
16668 "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.1.tgz",
16669 "integrity": "sha512-2CNoRoh95LxY47LvqrehIAfUVda2JbuFE/HaGYs42bNrGG+ojbw1h3zOcPcQ+1GQ3+rkzNndZn85u1XyZ3UsIA==",
16670 "dev": true,
16671 "requires": {
16672 "debuglog": "^1.0.1",
16673 "dezalgo": "^1.0.0",
16674 "once": "^1.3.0",
16675 "read-package-json": "^2.0.0",
16676 "readdir-scoped-modules": "^1.0.0"
16677 }
16678 },
14436 "read-pkg": { 16679 "read-pkg": {
14437 "version": "1.1.0", 16680 "version": "4.0.1",
14438 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 16681 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
14439 "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 16682 "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
14440 "dev": true, 16683 "dev": true,
14441 "requires": { 16684 "requires": {
14442 "load-json-file": "^1.0.0",
14443 "normalize-package-data": "^2.3.2", 16685 "normalize-package-data": "^2.3.2",
14444 "path-type": "^1.0.0" 16686 "parse-json": "^4.0.0",
16687 "pify": "^3.0.0"
14445 } 16688 }
14446 }, 16689 },
14447 "read-pkg-up": { 16690 "read-pkg-up": {
14448 "version": "1.0.1", 16691 "version": "3.0.0",
14449 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 16692 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
14450 "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 16693 "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
14451 "dev": true, 16694 "dev": true,
14452 "requires": { 16695 "requires": {
14453 "find-up": "^1.0.0", 16696 "find-up": "^2.0.0",
14454 "read-pkg": "^1.0.0" 16697 "read-pkg": "^3.0.0"
14455 }
14456 },
14457 "readable-stream": {
14458 "version": "2.3.6",
14459 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
14460 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
14461 "dev": true,
14462 "requires": {
14463 "core-util-is": "~1.0.0",
14464 "inherits": "~2.0.3",
14465 "isarray": "~1.0.0",
14466 "process-nextick-args": "~2.0.0",
14467 "safe-buffer": "~5.1.1",
14468 "string_decoder": "~1.1.1",
14469 "util-deprecate": "~1.0.1"
14470 }, 16698 },
14471 "dependencies": { 16699 "dependencies": {
14472 "process-nextick-args": { 16700 "find-up": {
16701 "version": "2.1.0",
16702 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
16703 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
16704 "dev": true,
16705 "requires": {
16706 "locate-path": "^2.0.0"
16707 }
16708 },
16709 "locate-path": {
16710 "version": "2.0.0",
16711 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
16712 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
16713 "dev": true,
16714 "requires": {
16715 "p-locate": "^2.0.0",
16716 "path-exists": "^3.0.0"
16717 }
16718 },
16719 "p-limit": {
16720 "version": "1.3.0",
16721 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
16722 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
16723 "dev": true,
16724 "requires": {
16725 "p-try": "^1.0.0"
16726 }
16727 },
16728 "p-locate": {
14473 "version": "2.0.0", 16729 "version": "2.0.0",
14474 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 16730 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
14475 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 16731 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
16732 "dev": true,
16733 "requires": {
16734 "p-limit": "^1.1.0"
16735 }
16736 },
16737 "p-try": {
16738 "version": "1.0.0",
16739 "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
16740 "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
14476 "dev": true 16741 "dev": true
16742 },
16743 "read-pkg": {
16744 "version": "3.0.0",
16745 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
16746 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
16747 "dev": true,
16748 "requires": {
16749 "load-json-file": "^4.0.0",
16750 "normalize-package-data": "^2.3.2",
16751 "path-type": "^3.0.0"
16752 }
14477 } 16753 }
14478 } 16754 }
14479 }, 16755 },
16756 "readable-stream": {
16757 "version": "3.1.1",
16758 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz",
16759 "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==",
16760 "requires": {
16761 "inherits": "^2.0.3",
16762 "string_decoder": "^1.1.1",
16763 "util-deprecate": "^1.0.1"
16764 }
16765 },
16766 "readdir-scoped-modules": {
16767 "version": "1.0.2",
16768 "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz",
16769 "integrity": "sha1-n6+jfShr5dksuuve4DDcm19AZ0c=",
16770 "dev": true,
16771 "requires": {
16772 "debuglog": "^1.0.1",
16773 "dezalgo": "^1.0.0",
16774 "graceful-fs": "^4.1.2",
16775 "once": "^1.3.0"
16776 }
16777 },
14480 "readdirp": { 16778 "readdirp": {
14481 "version": "2.2.1", 16779 "version": "2.2.1",
14482 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 16780 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
@@ -14486,26 +16784,68 @@
14486 "graceful-fs": "^4.1.11", 16784 "graceful-fs": "^4.1.11",
14487 "micromatch": "^3.1.10", 16785 "micromatch": "^3.1.10",
14488 "readable-stream": "^2.0.2" 16786 "readable-stream": "^2.0.2"
16787 },
16788 "dependencies": {
16789 "readable-stream": {
16790 "version": "2.3.6",
16791 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
16792 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
16793 "dev": true,
16794 "requires": {
16795 "core-util-is": "~1.0.0",
16796 "inherits": "~2.0.3",
16797 "isarray": "~1.0.0",
16798 "process-nextick-args": "~2.0.0",
16799 "safe-buffer": "~5.1.1",
16800 "string_decoder": "~1.1.1",
16801 "util-deprecate": "~1.0.1"
16802 }
16803 },
16804 "string_decoder": {
16805 "version": "1.1.1",
16806 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
16807 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
16808 "dev": true,
16809 "requires": {
16810 "safe-buffer": "~5.1.0"
16811 }
16812 }
16813 }
16814 },
16815 "realpath-native": {
16816 "version": "1.1.0",
16817 "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
16818 "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==",
16819 "dev": true,
16820 "requires": {
16821 "util.promisify": "^1.0.0"
14489 } 16822 }
14490 }, 16823 },
14491 "rechoir": { 16824 "rechoir": {
14492 "version": "0.6.2", 16825 "version": "0.6.2",
14493 "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 16826 "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
14494 "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 16827 "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
16828 "dev": true,
14495 "requires": { 16829 "requires": {
14496 "resolve": "^1.1.6" 16830 "resolve": "^1.1.6"
14497 } 16831 }
14498 }, 16832 },
14499 "redent": { 16833 "redent": {
14500 "version": "1.0.0", 16834 "version": "2.0.0",
14501 "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", 16835 "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
14502 "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", 16836 "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
14503 "dev": true, 16837 "dev": true,
14504 "requires": { 16838 "requires": {
14505 "indent-string": "^2.1.0", 16839 "indent-string": "^3.0.0",
14506 "strip-indent": "^1.0.1" 16840 "strip-indent": "^2.0.0"
14507 } 16841 }
14508 }, 16842 },
16843 "reflect-metadata": {
16844 "version": "0.1.13",
16845 "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
16846 "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==",
16847 "dev": true
16848 },
14509 "regenerate": { 16849 "regenerate": {
14510 "version": "1.4.0", 16850 "version": "1.4.0",
14511 "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 16851 "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
@@ -14522,9 +16862,9 @@
14522 } 16862 }
14523 }, 16863 },
14524 "regenerator-runtime": { 16864 "regenerator-runtime": {
14525 "version": "0.11.1", 16865 "version": "0.12.1",
14526 "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 16866 "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
14527 "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 16867 "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
14528 }, 16868 },
14529 "regenerator-transform": { 16869 "regenerator-transform": {
14530 "version": "0.13.3", 16870 "version": "0.13.3",
@@ -14539,6 +16879,7 @@
14539 "version": "0.4.4", 16879 "version": "0.4.4",
14540 "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 16880 "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
14541 "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 16881 "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
16882 "dev": true,
14542 "requires": { 16883 "requires": {
14543 "is-equal-shallow": "^0.1.3" 16884 "is-equal-shallow": "^0.1.3"
14544 } 16885 }
@@ -14547,6 +16888,7 @@
14547 "version": "1.0.2", 16888 "version": "1.0.2",
14548 "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 16889 "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
14549 "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 16890 "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
16891 "dev": true,
14550 "requires": { 16892 "requires": {
14551 "extend-shallow": "^3.0.2", 16893 "extend-shallow": "^3.0.2",
14552 "safe-regex": "^1.1.0" 16894 "safe-regex": "^1.1.0"
@@ -14557,6 +16899,17 @@
14557 "resolved": "https://registry.npmjs.org/regexp-quote/-/regexp-quote-0.0.0.tgz", 16899 "resolved": "https://registry.npmjs.org/regexp-quote/-/regexp-quote-0.0.0.tgz",
14558 "integrity": "sha1-Hg9GUMhi3L/tVP1CsUjpuxch/PI=" 16900 "integrity": "sha1-Hg9GUMhi3L/tVP1CsUjpuxch/PI="
14559 }, 16901 },
16902 "regexp-tree": {
16903 "version": "0.1.1",
16904 "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.1.tgz",
16905 "integrity": "sha512-HwRjOquc9QOwKTgbxvZTcddS5mlNlwePMQ3NFL8broajMLD5CXDAqas8Y5yxJH5QtZp5iRor3YCILd5pz71Cgw==",
16906 "dev": true,
16907 "requires": {
16908 "cli-table3": "^0.5.0",
16909 "colors": "^1.1.2",
16910 "yargs": "^12.0.5"
16911 }
16912 },
14560 "regexpp": { 16913 "regexpp": {
14561 "version": "2.0.1", 16914 "version": "2.0.1",
14562 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 16915 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
@@ -14564,15 +16917,15 @@
14564 "dev": true 16917 "dev": true
14565 }, 16918 },
14566 "regexpu-core": { 16919 "regexpu-core": {
14567 "version": "4.2.0", 16920 "version": "4.4.0",
14568 "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", 16921 "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz",
14569 "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", 16922 "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==",
14570 "dev": true, 16923 "dev": true,
14571 "requires": { 16924 "requires": {
14572 "regenerate": "^1.4.0", 16925 "regenerate": "^1.4.0",
14573 "regenerate-unicode-properties": "^7.0.0", 16926 "regenerate-unicode-properties": "^7.0.0",
14574 "regjsgen": "^0.4.0", 16927 "regjsgen": "^0.5.0",
14575 "regjsparser": "^0.3.0", 16928 "regjsparser": "^0.6.0",
14576 "unicode-match-property-ecmascript": "^1.0.4", 16929 "unicode-match-property-ecmascript": "^1.0.4",
14577 "unicode-match-property-value-ecmascript": "^1.0.2" 16930 "unicode-match-property-value-ecmascript": "^1.0.2"
14578 } 16931 }
@@ -14597,15 +16950,15 @@
14597 } 16950 }
14598 }, 16951 },
14599 "regjsgen": { 16952 "regjsgen": {
14600 "version": "0.4.0", 16953 "version": "0.5.0",
14601 "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", 16954 "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
14602 "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", 16955 "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==",
14603 "dev": true 16956 "dev": true
14604 }, 16957 },
14605 "regjsparser": { 16958 "regjsparser": {
14606 "version": "0.3.0", 16959 "version": "0.6.0",
14607 "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", 16960 "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
14608 "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", 16961 "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
14609 "dev": true, 16962 "dev": true,
14610 "requires": { 16963 "requires": {
14611 "jsesc": "~0.5.0" 16964 "jsesc": "~0.5.0"
@@ -14619,6 +16972,12 @@
14619 } 16972 }
14620 } 16973 }
14621 }, 16974 },
16975 "relateurl": {
16976 "version": "0.2.7",
16977 "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
16978 "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
16979 "dev": true
16980 },
14622 "remove-bom-buffer": { 16981 "remove-bom-buffer": {
14623 "version": "3.0.0", 16982 "version": "3.0.0",
14624 "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", 16983 "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
@@ -14645,15 +17004,101 @@
14645 "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 17004 "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
14646 "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" 17005 "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
14647 }, 17006 },
17007 "renderkid": {
17008 "version": "2.0.2",
17009 "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz",
17010 "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==",
17011 "dev": true,
17012 "requires": {
17013 "css-select": "^1.1.0",
17014 "dom-converter": "~0.2",
17015 "htmlparser2": "~3.3.0",
17016 "strip-ansi": "^3.0.0",
17017 "utila": "^0.4.0"
17018 },
17019 "dependencies": {
17020 "ansi-regex": {
17021 "version": "2.1.1",
17022 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
17023 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
17024 "dev": true
17025 },
17026 "domhandler": {
17027 "version": "2.1.0",
17028 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
17029 "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
17030 "dev": true,
17031 "requires": {
17032 "domelementtype": "1"
17033 }
17034 },
17035 "domutils": {
17036 "version": "1.1.6",
17037 "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
17038 "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
17039 "dev": true,
17040 "requires": {
17041 "domelementtype": "1"
17042 }
17043 },
17044 "htmlparser2": {
17045 "version": "3.3.0",
17046 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
17047 "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
17048 "dev": true,
17049 "requires": {
17050 "domelementtype": "1",
17051 "domhandler": "2.1",
17052 "domutils": "1.1",
17053 "readable-stream": "1.0"
17054 }
17055 },
17056 "isarray": {
17057 "version": "0.0.1",
17058 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
17059 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
17060 "dev": true
17061 },
17062 "readable-stream": {
17063 "version": "1.0.34",
17064 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
17065 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
17066 "dev": true,
17067 "requires": {
17068 "core-util-is": "~1.0.0",
17069 "inherits": "~2.0.1",
17070 "isarray": "0.0.1",
17071 "string_decoder": "~0.10.x"
17072 }
17073 },
17074 "string_decoder": {
17075 "version": "0.10.31",
17076 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
17077 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
17078 "dev": true
17079 },
17080 "strip-ansi": {
17081 "version": "3.0.1",
17082 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
17083 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
17084 "dev": true,
17085 "requires": {
17086 "ansi-regex": "^2.0.0"
17087 }
17088 }
17089 }
17090 },
14648 "repeat-element": { 17091 "repeat-element": {
14649 "version": "1.1.3", 17092 "version": "1.1.3",
14650 "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 17093 "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
14651 "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" 17094 "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
17095 "dev": true
14652 }, 17096 },
14653 "repeat-string": { 17097 "repeat-string": {
14654 "version": "1.6.1", 17098 "version": "1.6.1",
14655 "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 17099 "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
14656 "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 17100 "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
17101 "dev": true
14657 }, 17102 },
14658 "repeating": { 17103 "repeating": {
14659 "version": "2.0.1", 17104 "version": "2.0.1",
@@ -14707,14 +17152,26 @@
14707 "tough-cookie": "~2.4.3", 17152 "tough-cookie": "~2.4.3",
14708 "tunnel-agent": "^0.6.0", 17153 "tunnel-agent": "^0.6.0",
14709 "uuid": "^3.3.2" 17154 "uuid": "^3.3.2"
14710 }, 17155 }
14711 "dependencies": { 17156 },
14712 "performance-now": { 17157 "request-promise-core": {
14713 "version": "2.1.0", 17158 "version": "1.1.2",
14714 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 17159 "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz",
14715 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", 17160 "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==",
14716 "dev": true 17161 "dev": true,
14717 } 17162 "requires": {
17163 "lodash": "^4.17.11"
17164 }
17165 },
17166 "request-promise-native": {
17167 "version": "1.0.7",
17168 "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz",
17169 "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==",
17170 "dev": true,
17171 "requires": {
17172 "request-promise-core": "1.1.2",
17173 "stealthy-require": "^1.1.1",
17174 "tough-cookie": "^2.3.3"
14718 } 17175 }
14719 }, 17176 },
14720 "require-directory": { 17177 "require-directory": {
@@ -14739,18 +17196,42 @@
14739 "resolve-from": "^1.0.0" 17196 "resolve-from": "^1.0.0"
14740 } 17197 }
14741 }, 17198 },
17199 "requires-port": {
17200 "version": "1.0.0",
17201 "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
17202 "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
17203 "dev": true
17204 },
14742 "resolve": { 17205 "resolve": {
14743 "version": "1.8.1", 17206 "version": "1.10.0",
14744 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", 17207 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
14745 "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", 17208 "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
14746 "requires": { 17209 "requires": {
14747 "path-parse": "^1.0.5" 17210 "path-parse": "^1.0.6"
17211 }
17212 },
17213 "resolve-cwd": {
17214 "version": "2.0.0",
17215 "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
17216 "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
17217 "dev": true,
17218 "requires": {
17219 "resolve-from": "^3.0.0"
17220 },
17221 "dependencies": {
17222 "resolve-from": {
17223 "version": "3.0.0",
17224 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
17225 "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
17226 "dev": true
17227 }
14748 } 17228 }
14749 }, 17229 },
14750 "resolve-dir": { 17230 "resolve-dir": {
14751 "version": "1.0.1", 17231 "version": "1.0.1",
14752 "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 17232 "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
14753 "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 17233 "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
17234 "dev": true,
14754 "requires": { 17235 "requires": {
14755 "expand-tilde": "^2.0.0", 17236 "expand-tilde": "^2.0.0",
14756 "global-modules": "^1.0.0" 17237 "global-modules": "^1.0.0"
@@ -14774,7 +17255,8 @@
14774 "resolve-url": { 17255 "resolve-url": {
14775 "version": "0.2.1", 17256 "version": "0.2.1",
14776 "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 17257 "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
14777 "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" 17258 "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
17259 "dev": true
14778 }, 17260 },
14779 "restore-cursor": { 17261 "restore-cursor": {
14780 "version": "2.0.0", 17262 "version": "2.0.0",
@@ -14789,7 +17271,14 @@
14789 "ret": { 17271 "ret": {
14790 "version": "0.1.15", 17272 "version": "0.1.15",
14791 "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 17273 "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
14792 "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" 17274 "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
17275 "dev": true
17276 },
17277 "retry": {
17278 "version": "0.10.1",
17279 "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
17280 "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
17281 "dev": true
14793 }, 17282 },
14794 "right-pad": { 17283 "right-pad": {
14795 "version": "1.0.1", 17284 "version": "1.0.1",
@@ -14798,12 +17287,22 @@
14798 "dev": true 17287 "dev": true
14799 }, 17288 },
14800 "rimraf": { 17289 "rimraf": {
14801 "version": "2.6.2", 17290 "version": "2.6.3",
14802 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 17291 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
14803 "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", 17292 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
17293 "dev": true,
17294 "requires": {
17295 "glob": "^7.1.3"
17296 }
17297 },
17298 "ripemd160": {
17299 "version": "2.0.2",
17300 "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
17301 "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
14804 "dev": true, 17302 "dev": true,
14805 "requires": { 17303 "requires": {
14806 "glob": "^7.0.5" 17304 "hash-base": "^3.0.0",
17305 "inherits": "^2.0.1"
14807 } 17306 }
14808 }, 17307 },
14809 "route-parser": { 17308 "route-parser": {
@@ -14811,6 +17310,12 @@
14811 "resolved": "https://registry.npmjs.org/route-parser/-/route-parser-0.0.5.tgz", 17310 "resolved": "https://registry.npmjs.org/route-parser/-/route-parser-0.0.5.tgz",
14812 "integrity": "sha1-fR0J0zXkkJQDHqFpkaSnmwG74fQ=" 17311 "integrity": "sha1-fR0J0zXkkJQDHqFpkaSnmwG74fQ="
14813 }, 17312 },
17313 "rsvp": {
17314 "version": "4.8.4",
17315 "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.4.tgz",
17316 "integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==",
17317 "dev": true
17318 },
14814 "run-async": { 17319 "run-async": {
14815 "version": "2.3.0", 17320 "version": "2.3.0",
14816 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 17321 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
@@ -14826,13 +17331,28 @@
14826 "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", 17331 "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==",
14827 "dev": true 17332 "dev": true
14828 }, 17333 },
17334 "run-queue": {
17335 "version": "1.0.3",
17336 "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
17337 "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
17338 "dev": true,
17339 "requires": {
17340 "aproba": "^1.1.1"
17341 }
17342 },
17343 "rx": {
17344 "version": "4.1.0",
17345 "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
17346 "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
17347 "dev": true
17348 },
14829 "rxjs": { 17349 "rxjs": {
14830 "version": "5.5.12", 17350 "version": "6.4.0",
14831 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", 17351 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
14832 "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", 17352 "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
14833 "dev": true, 17353 "dev": true,
14834 "requires": { 17354 "requires": {
14835 "symbol-observable": "1.0.1" 17355 "tslib": "^1.9.0"
14836 } 17356 }
14837 }, 17357 },
14838 "safe-buffer": { 17358 "safe-buffer": {
@@ -14844,6 +17364,7 @@
14844 "version": "1.1.0", 17364 "version": "1.1.0",
14845 "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 17365 "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
14846 "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 17366 "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
17367 "dev": true,
14847 "requires": { 17368 "requires": {
14848 "ret": "~0.1.10" 17369 "ret": "~0.1.10"
14849 } 17370 }
@@ -14853,6 +17374,23 @@
14853 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 17374 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
14854 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 17375 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
14855 }, 17376 },
17377 "sane": {
17378 "version": "4.1.0",
17379 "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
17380 "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
17381 "dev": true,
17382 "requires": {
17383 "@cnakazawa/watch": "^1.0.3",
17384 "anymatch": "^2.0.0",
17385 "capture-exit": "^2.0.0",
17386 "exec-sh": "^0.3.2",
17387 "execa": "^1.0.0",
17388 "fb-watchman": "^2.0.0",
17389 "micromatch": "^3.1.4",
17390 "minimist": "^1.1.1",
17391 "walker": "~1.0.5"
17392 }
17393 },
14856 "sanitize-filename": { 17394 "sanitize-filename": {
14857 "version": "1.6.1", 17395 "version": "1.6.1",
14858 "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", 17396 "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz",
@@ -14882,6 +17420,214 @@
14882 "lodash": "^4.0.0", 17420 "lodash": "^4.0.0",
14883 "scss-tokenizer": "^0.2.3", 17421 "scss-tokenizer": "^0.2.3",
14884 "yargs": "^7.0.0" 17422 "yargs": "^7.0.0"
17423 },
17424 "dependencies": {
17425 "ansi-regex": {
17426 "version": "2.1.1",
17427 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
17428 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
17429 "dev": true
17430 },
17431 "camelcase": {
17432 "version": "3.0.0",
17433 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
17434 "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
17435 "dev": true
17436 },
17437 "cliui": {
17438 "version": "3.2.0",
17439 "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
17440 "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
17441 "dev": true,
17442 "requires": {
17443 "string-width": "^1.0.1",
17444 "strip-ansi": "^3.0.1",
17445 "wrap-ansi": "^2.0.0"
17446 }
17447 },
17448 "find-up": {
17449 "version": "1.1.2",
17450 "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
17451 "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
17452 "dev": true,
17453 "requires": {
17454 "path-exists": "^2.0.0",
17455 "pinkie-promise": "^2.0.0"
17456 }
17457 },
17458 "invert-kv": {
17459 "version": "1.0.0",
17460 "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
17461 "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
17462 "dev": true
17463 },
17464 "is-fullwidth-code-point": {
17465 "version": "1.0.0",
17466 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
17467 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
17468 "dev": true,
17469 "requires": {
17470 "number-is-nan": "^1.0.0"
17471 }
17472 },
17473 "lcid": {
17474 "version": "1.0.0",
17475 "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
17476 "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
17477 "dev": true,
17478 "requires": {
17479 "invert-kv": "^1.0.0"
17480 }
17481 },
17482 "load-json-file": {
17483 "version": "1.1.0",
17484 "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
17485 "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
17486 "dev": true,
17487 "requires": {
17488 "graceful-fs": "^4.1.2",
17489 "parse-json": "^2.2.0",
17490 "pify": "^2.0.0",
17491 "pinkie-promise": "^2.0.0",
17492 "strip-bom": "^2.0.0"
17493 }
17494 },
17495 "os-locale": {
17496 "version": "1.4.0",
17497 "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
17498 "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
17499 "dev": true,
17500 "requires": {
17501 "lcid": "^1.0.0"
17502 }
17503 },
17504 "parse-json": {
17505 "version": "2.2.0",
17506 "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
17507 "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
17508 "dev": true,
17509 "requires": {
17510 "error-ex": "^1.2.0"
17511 }
17512 },
17513 "path-exists": {
17514 "version": "2.1.0",
17515 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
17516 "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
17517 "dev": true,
17518 "requires": {
17519 "pinkie-promise": "^2.0.0"
17520 }
17521 },
17522 "path-type": {
17523 "version": "1.1.0",
17524 "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
17525 "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
17526 "dev": true,
17527 "requires": {
17528 "graceful-fs": "^4.1.2",
17529 "pify": "^2.0.0",
17530 "pinkie-promise": "^2.0.0"
17531 }
17532 },
17533 "pify": {
17534 "version": "2.3.0",
17535 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
17536 "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
17537 "dev": true
17538 },
17539 "read-pkg": {
17540 "version": "1.1.0",
17541 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
17542 "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
17543 "dev": true,
17544 "requires": {
17545 "load-json-file": "^1.0.0",
17546 "normalize-package-data": "^2.3.2",
17547 "path-type": "^1.0.0"
17548 }
17549 },
17550 "read-pkg-up": {
17551 "version": "1.0.1",
17552 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
17553 "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
17554 "dev": true,
17555 "requires": {
17556 "find-up": "^1.0.0",
17557 "read-pkg": "^1.0.0"
17558 }
17559 },
17560 "string-width": {
17561 "version": "1.0.2",
17562 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
17563 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
17564 "dev": true,
17565 "requires": {
17566 "code-point-at": "^1.0.0",
17567 "is-fullwidth-code-point": "^1.0.0",
17568 "strip-ansi": "^3.0.0"
17569 }
17570 },
17571 "strip-ansi": {
17572 "version": "3.0.1",
17573 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
17574 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
17575 "dev": true,
17576 "requires": {
17577 "ansi-regex": "^2.0.0"
17578 }
17579 },
17580 "strip-bom": {
17581 "version": "2.0.0",
17582 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
17583 "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
17584 "dev": true,
17585 "requires": {
17586 "is-utf8": "^0.2.0"
17587 }
17588 },
17589 "which-module": {
17590 "version": "1.0.0",
17591 "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
17592 "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
17593 "dev": true
17594 },
17595 "y18n": {
17596 "version": "3.2.1",
17597 "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
17598 "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
17599 "dev": true
17600 },
17601 "yargs": {
17602 "version": "7.1.0",
17603 "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
17604 "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
17605 "dev": true,
17606 "requires": {
17607 "camelcase": "^3.0.0",
17608 "cliui": "^3.2.0",
17609 "decamelize": "^1.1.1",
17610 "get-caller-file": "^1.0.1",
17611 "os-locale": "^1.4.0",
17612 "read-pkg-up": "^1.0.1",
17613 "require-directory": "^2.1.1",
17614 "require-main-filename": "^1.0.1",
17615 "set-blocking": "^2.0.0",
17616 "string-width": "^1.0.2",
17617 "which-module": "^1.0.0",
17618 "y18n": "^3.2.1",
17619 "yargs-parser": "^5.0.0"
17620 }
17621 },
17622 "yargs-parser": {
17623 "version": "5.0.0",
17624 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
17625 "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
17626 "dev": true,
17627 "requires": {
17628 "camelcase": "^3.0.0"
17629 }
17630 }
14885 } 17631 }
14886 }, 17632 },
14887 "sax": { 17633 "sax": {
@@ -14898,6 +17644,17 @@
14898 "object-assign": "^4.1.1" 17644 "object-assign": "^4.1.1"
14899 } 17645 }
14900 }, 17646 },
17647 "schema-utils": {
17648 "version": "1.0.0",
17649 "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
17650 "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
17651 "dev": true,
17652 "requires": {
17653 "ajv": "^6.1.0",
17654 "ajv-errors": "^1.0.0",
17655 "ajv-keywords": "^3.1.0"
17656 }
17657 },
14901 "scss-tokenizer": { 17658 "scss-tokenizer": {
14902 "version": "0.2.3", 17659 "version": "0.2.3",
14903 "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", 17660 "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
@@ -14919,6 +17676,21 @@
14919 } 17676 }
14920 } 17677 }
14921 }, 17678 },
17679 "select-hose": {
17680 "version": "2.0.0",
17681 "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
17682 "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
17683 "dev": true
17684 },
17685 "selfsigned": {
17686 "version": "1.10.4",
17687 "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
17688 "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
17689 "dev": true,
17690 "requires": {
17691 "node-forge": "0.7.5"
17692 }
17693 },
14922 "semver": { 17694 "semver": {
14923 "version": "5.6.0", 17695 "version": "5.6.0",
14924 "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", 17696 "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
@@ -14943,6 +17715,7 @@
14943 "version": "1.1.0", 17715 "version": "1.1.0",
14944 "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", 17716 "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
14945 "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", 17717 "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
17718 "dev": true,
14946 "requires": { 17719 "requires": {
14947 "sver-compat": "^1.5.0" 17720 "sver-compat": "^1.5.0"
14948 } 17721 }
@@ -14966,7 +17739,7 @@
14966 "dependencies": { 17739 "dependencies": {
14967 "debug": { 17740 "debug": {
14968 "version": "1.0.4", 17741 "version": "1.0.4",
14969 "resolved": "http://registry.npmjs.org/debug/-/debug-1.0.4.tgz", 17742 "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
14970 "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=", 17743 "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
14971 "dev": true, 17744 "dev": true,
14972 "requires": { 17745 "requires": {
@@ -14981,12 +17754,18 @@
14981 }, 17754 },
14982 "ms": { 17755 "ms": {
14983 "version": "0.6.2", 17756 "version": "0.6.2",
14984 "resolved": "http://registry.npmjs.org/ms/-/ms-0.6.2.tgz", 17757 "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
14985 "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=", 17758 "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=",
14986 "dev": true 17759 "dev": true
14987 } 17760 }
14988 } 17761 }
14989 }, 17762 },
17763 "serialize-javascript": {
17764 "version": "1.6.1",
17765 "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz",
17766 "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==",
17767 "dev": true
17768 },
14990 "serve-index": { 17769 "serve-index": {
14991 "version": "1.1.6", 17770 "version": "1.1.6",
14992 "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.1.6.tgz", 17771 "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.1.6.tgz",
@@ -15020,6 +17799,7 @@
15020 "version": "2.0.0", 17799 "version": "2.0.0",
15021 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 17800 "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
15022 "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", 17801 "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
17802 "dev": true,
15023 "requires": { 17803 "requires": {
15024 "extend-shallow": "^2.0.1", 17804 "extend-shallow": "^2.0.1",
15025 "is-extendable": "^0.1.1", 17805 "is-extendable": "^0.1.1",
@@ -15031,6 +17811,7 @@
15031 "version": "2.0.1", 17811 "version": "2.0.1",
15032 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 17812 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
15033 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 17813 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
17814 "dev": true,
15034 "requires": { 17815 "requires": {
15035 "is-extendable": "^0.1.0" 17816 "is-extendable": "^0.1.0"
15036 } 17817 }
@@ -15042,6 +17823,22 @@
15042 "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 17823 "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
15043 "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 17824 "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
15044 }, 17825 },
17826 "setprototypeof": {
17827 "version": "1.1.0",
17828 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
17829 "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
17830 "dev": true
17831 },
17832 "sha.js": {
17833 "version": "2.4.11",
17834 "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
17835 "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
17836 "dev": true,
17837 "requires": {
17838 "inherits": "^2.0.1",
17839 "safe-buffer": "^5.0.1"
17840 }
17841 },
15045 "shebang-command": { 17842 "shebang-command": {
15046 "version": "1.2.0", 17843 "version": "1.2.0",
15047 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 17844 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -15057,17 +17854,29 @@
15057 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 17854 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
15058 "dev": true 17855 "dev": true
15059 }, 17856 },
17857 "shellwords": {
17858 "version": "0.1.1",
17859 "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
17860 "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
17861 "dev": true
17862 },
15060 "sigmund": { 17863 "sigmund": {
15061 "version": "1.0.1", 17864 "version": "1.0.1",
15062 "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 17865 "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
15063 "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 17866 "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
15064 "dev": true
15065 }, 17867 },
15066 "signal-exit": { 17868 "signal-exit": {
15067 "version": "3.0.2", 17869 "version": "3.0.2",
15068 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 17870 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
15069 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 17871 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
15070 "dev": true 17872 },
17873 "simple-swizzle": {
17874 "version": "0.2.2",
17875 "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
17876 "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
17877 "requires": {
17878 "is-arrayish": "^0.3.1"
17879 }
15071 }, 17880 },
15072 "single-line-log": { 17881 "single-line-log": {
15073 "version": "1.1.2", 17882 "version": "1.1.2",
@@ -15076,8 +17885,51 @@
15076 "dev": true, 17885 "dev": true,
15077 "requires": { 17886 "requires": {
15078 "string-width": "^1.0.1" 17887 "string-width": "^1.0.1"
17888 },
17889 "dependencies": {
17890 "ansi-regex": {
17891 "version": "2.1.1",
17892 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
17893 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
17894 "dev": true
17895 },
17896 "is-fullwidth-code-point": {
17897 "version": "1.0.0",
17898 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
17899 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
17900 "dev": true,
17901 "requires": {
17902 "number-is-nan": "^1.0.0"
17903 }
17904 },
17905 "string-width": {
17906 "version": "1.0.2",
17907 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
17908 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
17909 "dev": true,
17910 "requires": {
17911 "code-point-at": "^1.0.0",
17912 "is-fullwidth-code-point": "^1.0.0",
17913 "strip-ansi": "^3.0.0"
17914 }
17915 },
17916 "strip-ansi": {
17917 "version": "3.0.1",
17918 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
17919 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
17920 "dev": true,
17921 "requires": {
17922 "ansi-regex": "^2.0.0"
17923 }
17924 }
15079 } 17925 }
15080 }, 17926 },
17927 "sisteransi": {
17928 "version": "1.0.0",
17929 "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz",
17930 "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==",
17931 "dev": true
17932 },
15081 "slash": { 17933 "slash": {
15082 "version": "2.0.0", 17934 "version": "2.0.0",
15083 "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", 17935 "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
@@ -15085,33 +17937,28 @@
15085 "dev": true 17937 "dev": true
15086 }, 17938 },
15087 "slice-ansi": { 17939 "slice-ansi": {
15088 "version": "2.0.0", 17940 "version": "2.1.0",
15089 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz", 17941 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
15090 "integrity": "sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==", 17942 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
15091 "dev": true, 17943 "dev": true,
15092 "requires": { 17944 "requires": {
15093 "ansi-styles": "^3.2.0", 17945 "ansi-styles": "^3.2.0",
15094 "astral-regex": "^1.0.0", 17946 "astral-regex": "^1.0.0",
15095 "is-fullwidth-code-point": "^2.0.0" 17947 "is-fullwidth-code-point": "^2.0.0"
15096 },
15097 "dependencies": {
15098 "ansi-styles": {
15099 "version": "3.2.1",
15100 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
15101 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
15102 "dev": true,
15103 "requires": {
15104 "color-convert": "^1.9.0"
15105 }
15106 },
15107 "is-fullwidth-code-point": {
15108 "version": "2.0.0",
15109 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
15110 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
15111 "dev": true
15112 }
15113 } 17948 }
15114 }, 17949 },
17950 "slide": {
17951 "version": "1.1.6",
17952 "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
17953 "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
17954 "dev": true
17955 },
17956 "smart-buffer": {
17957 "version": "4.0.2",
17958 "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz",
17959 "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==",
17960 "dev": true
17961 },
15115 "smoothscroll-polyfill": { 17962 "smoothscroll-polyfill": {
15116 "version": "0.3.6", 17963 "version": "0.3.6",
15117 "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.3.6.tgz", 17964 "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.3.6.tgz",
@@ -15121,6 +17968,7 @@
15121 "version": "0.8.2", 17968 "version": "0.8.2",
15122 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 17969 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
15123 "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 17970 "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
17971 "dev": true,
15124 "requires": { 17972 "requires": {
15125 "base": "^0.11.1", 17973 "base": "^0.11.1",
15126 "debug": "^2.2.0", 17974 "debug": "^2.2.0",
@@ -15136,6 +17984,7 @@
15136 "version": "0.2.5", 17984 "version": "0.2.5",
15137 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 17985 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
15138 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 17986 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
17987 "dev": true,
15139 "requires": { 17988 "requires": {
15140 "is-descriptor": "^0.1.0" 17989 "is-descriptor": "^0.1.0"
15141 } 17990 }
@@ -15144,9 +17993,16 @@
15144 "version": "2.0.1", 17993 "version": "2.0.1",
15145 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 17994 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
15146 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 17995 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
17996 "dev": true,
15147 "requires": { 17997 "requires": {
15148 "is-extendable": "^0.1.0" 17998 "is-extendable": "^0.1.0"
15149 } 17999 }
18000 },
18001 "source-map": {
18002 "version": "0.5.7",
18003 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
18004 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
18005 "dev": true
15150 } 18006 }
15151 } 18007 }
15152 }, 18008 },
@@ -15154,6 +18010,7 @@
15154 "version": "2.1.1", 18010 "version": "2.1.1",
15155 "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 18011 "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
15156 "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 18012 "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
18013 "dev": true,
15157 "requires": { 18014 "requires": {
15158 "define-property": "^1.0.0", 18015 "define-property": "^1.0.0",
15159 "isobject": "^3.0.0", 18016 "isobject": "^3.0.0",
@@ -15164,6 +18021,7 @@
15164 "version": "1.0.0", 18021 "version": "1.0.0",
15165 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 18022 "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
15166 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 18023 "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
18024 "dev": true,
15167 "requires": { 18025 "requires": {
15168 "is-descriptor": "^1.0.0" 18026 "is-descriptor": "^1.0.0"
15169 } 18027 }
@@ -15172,6 +18030,7 @@
15172 "version": "1.0.0", 18030 "version": "1.0.0",
15173 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 18031 "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
15174 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 18032 "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
18033 "dev": true,
15175 "requires": { 18034 "requires": {
15176 "kind-of": "^6.0.0" 18035 "kind-of": "^6.0.0"
15177 } 18036 }
@@ -15180,6 +18039,7 @@
15180 "version": "1.0.0", 18039 "version": "1.0.0",
15181 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 18040 "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
15182 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 18041 "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
18042 "dev": true,
15183 "requires": { 18043 "requires": {
15184 "kind-of": "^6.0.0" 18044 "kind-of": "^6.0.0"
15185 } 18045 }
@@ -15188,6 +18048,7 @@
15188 "version": "1.0.2", 18048 "version": "1.0.2",
15189 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 18049 "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
15190 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 18050 "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
18051 "dev": true,
15191 "requires": { 18052 "requires": {
15192 "is-accessor-descriptor": "^1.0.0", 18053 "is-accessor-descriptor": "^1.0.0",
15193 "is-data-descriptor": "^1.0.0", 18054 "is-data-descriptor": "^1.0.0",
@@ -15200,6 +18061,7 @@
15200 "version": "3.0.1", 18061 "version": "3.0.1",
15201 "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 18062 "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
15202 "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 18063 "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
18064 "dev": true,
15203 "requires": { 18065 "requires": {
15204 "kind-of": "^3.2.0" 18066 "kind-of": "^3.2.0"
15205 }, 18067 },
@@ -15208,6 +18070,7 @@
15208 "version": "3.2.2", 18070 "version": "3.2.2",
15209 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 18071 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
15210 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 18072 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
18073 "dev": true,
15211 "requires": { 18074 "requires": {
15212 "is-buffer": "^1.1.5" 18075 "is-buffer": "^1.1.5"
15213 } 18076 }
@@ -15231,7 +18094,7 @@
15231 "dependencies": { 18094 "dependencies": {
15232 "debug": { 18095 "debug": {
15233 "version": "2.3.3", 18096 "version": "2.3.3",
15234 "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 18097 "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
15235 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", 18098 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
15236 "dev": true, 18099 "dev": true,
15237 "requires": { 18100 "requires": {
@@ -15240,7 +18103,7 @@
15240 }, 18103 },
15241 "ms": { 18104 "ms": {
15242 "version": "0.7.2", 18105 "version": "0.7.2",
15243 "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 18106 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
15244 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", 18107 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
15245 "dev": true 18108 "dev": true
15246 }, 18109 },
@@ -15264,7 +18127,7 @@
15264 "dependencies": { 18127 "dependencies": {
15265 "debug": { 18128 "debug": {
15266 "version": "2.3.3", 18129 "version": "2.3.3",
15267 "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 18130 "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
15268 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", 18131 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
15269 "dev": true, 18132 "dev": true,
15270 "requires": { 18133 "requires": {
@@ -15273,7 +18136,7 @@
15273 }, 18136 },
15274 "ms": { 18137 "ms": {
15275 "version": "0.7.2", 18138 "version": "0.7.2",
15276 "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 18139 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
15277 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", 18140 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
15278 "dev": true 18141 "dev": true
15279 } 18142 }
@@ -15300,7 +18163,7 @@
15300 "dependencies": { 18163 "dependencies": {
15301 "debug": { 18164 "debug": {
15302 "version": "2.3.3", 18165 "version": "2.3.3",
15303 "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 18166 "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
15304 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", 18167 "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
15305 "dev": true, 18168 "dev": true,
15306 "requires": { 18169 "requires": {
@@ -15309,7 +18172,7 @@
15309 }, 18172 },
15310 "ms": { 18173 "ms": {
15311 "version": "0.7.2", 18174 "version": "0.7.2",
15312 "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 18175 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
15313 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", 18176 "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
15314 "dev": true 18177 "dev": true
15315 } 18178 }
@@ -15335,7 +18198,7 @@
15335 }, 18198 },
15336 "debug": { 18199 "debug": {
15337 "version": "2.2.0", 18200 "version": "2.2.0",
15338 "resolved": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 18201 "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
15339 "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 18202 "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
15340 "dev": true, 18203 "dev": true,
15341 "requires": { 18204 "requires": {
@@ -15350,12 +18213,89 @@
15350 }, 18213 },
15351 "ms": { 18214 "ms": {
15352 "version": "0.7.1", 18215 "version": "0.7.1",
15353 "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 18216 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
15354 "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 18217 "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
15355 "dev": true 18218 "dev": true
15356 } 18219 }
15357 } 18220 }
15358 }, 18221 },
18222 "sockjs": {
18223 "version": "0.3.19",
18224 "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
18225 "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
18226 "dev": true,
18227 "requires": {
18228 "faye-websocket": "^0.10.0",
18229 "uuid": "^3.0.1"
18230 }
18231 },
18232 "sockjs-client": {
18233 "version": "1.3.0",
18234 "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz",
18235 "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==",
18236 "dev": true,
18237 "requires": {
18238 "debug": "^3.2.5",
18239 "eventsource": "^1.0.7",
18240 "faye-websocket": "~0.11.1",
18241 "inherits": "^2.0.3",
18242 "json3": "^3.3.2",
18243 "url-parse": "^1.4.3"
18244 },
18245 "dependencies": {
18246 "debug": {
18247 "version": "3.2.6",
18248 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
18249 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
18250 "dev": true,
18251 "requires": {
18252 "ms": "^2.1.1"
18253 },
18254 "dependencies": {
18255 "ms": {
18256 "version": "2.1.1",
18257 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
18258 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
18259 "dev": true
18260 }
18261 }
18262 },
18263 "faye-websocket": {
18264 "version": "0.11.1",
18265 "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
18266 "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
18267 "dev": true,
18268 "requires": {
18269 "websocket-driver": ">=0.5.1"
18270 }
18271 },
18272 "ms": {
18273 "version": "0.7.1",
18274 "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
18275 "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
18276 }
18277 }
18278 },
18279 "socks": {
18280 "version": "2.2.3",
18281 "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.3.tgz",
18282 "integrity": "sha512-+2r83WaRT3PXYoO/1z+RDEBE7Z2f9YcdQnJ0K/ncXXbV5gJ6wYfNAebYFYiiUjM6E4JyXnPY8cimwyvFYHVUUA==",
18283 "dev": true,
18284 "requires": {
18285 "ip": "^1.1.5",
18286 "smart-buffer": "4.0.2"
18287 }
18288 },
18289 "socks-proxy-agent": {
18290 "version": "4.0.1",
18291 "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz",
18292 "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==",
18293 "dev": true,
18294 "requires": {
18295 "agent-base": "~4.2.0",
18296 "socks": "~2.2.0"
18297 }
18298 },
15359 "sort-keys": { 18299 "sort-keys": {
15360 "version": "1.1.2", 18300 "version": "1.1.2",
15361 "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", 18301 "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -15372,15 +18312,22 @@
15372 "sort-keys": "^1.0.0" 18312 "sort-keys": "^1.0.0"
15373 } 18313 }
15374 }, 18314 },
18315 "source-list-map": {
18316 "version": "2.0.1",
18317 "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
18318 "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
18319 "dev": true
18320 },
15375 "source-map": { 18321 "source-map": {
15376 "version": "0.5.7", 18322 "version": "0.6.1",
15377 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 18323 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
15378 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 18324 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
15379 }, 18325 },
15380 "source-map-resolve": { 18326 "source-map-resolve": {
15381 "version": "0.5.2", 18327 "version": "0.5.2",
15382 "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 18328 "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
15383 "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 18329 "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
18330 "dev": true,
15384 "requires": { 18331 "requires": {
15385 "atob": "^2.1.1", 18332 "atob": "^2.1.1",
15386 "decode-uri-component": "^0.2.0", 18333 "decode-uri-component": "^0.2.0",
@@ -15390,30 +18337,25 @@
15390 } 18337 }
15391 }, 18338 },
15392 "source-map-support": { 18339 "source-map-support": {
15393 "version": "0.5.9", 18340 "version": "0.5.10",
15394 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", 18341 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
15395 "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", 18342 "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
15396 "requires": { 18343 "requires": {
15397 "buffer-from": "^1.0.0", 18344 "buffer-from": "^1.0.0",
15398 "source-map": "^0.6.0" 18345 "source-map": "^0.6.0"
15399 },
15400 "dependencies": {
15401 "source-map": {
15402 "version": "0.6.1",
15403 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
15404 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
15405 }
15406 } 18346 }
15407 }, 18347 },
15408 "source-map-url": { 18348 "source-map-url": {
15409 "version": "0.4.0", 18349 "version": "0.4.0",
15410 "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 18350 "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
15411 "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" 18351 "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
18352 "dev": true
15412 }, 18353 },
15413 "sparkles": { 18354 "sparkles": {
15414 "version": "1.0.1", 18355 "version": "1.0.1",
15415 "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", 18356 "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
15416 "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" 18357 "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
18358 "dev": true
15417 }, 18359 },
15418 "spawn-command": { 18360 "spawn-command": {
15419 "version": "0.0.2-1", 18361 "version": "0.0.2-1",
@@ -15422,21 +18364,20 @@
15422 "dev": true 18364 "dev": true
15423 }, 18365 },
15424 "spawn-rx": { 18366 "spawn-rx": {
15425 "version": "2.0.12", 18367 "version": "3.0.0",
15426 "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-2.0.12.tgz", 18368 "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-3.0.0.tgz",
15427 "integrity": "sha512-gOPXiQQFQ9lTOLuys0iMn3jfxxv9c7zzwhbYLOEbQGvEShHVJ5sSR1oD3Daj88os7jKArDYT7rbOKdvNhe7iEg==", 18369 "integrity": "sha512-dw4Ryg/KMNfkKa5ezAR5aZe9wNwPdKlnHEXtHOjVnyEDSPQyOpIPPRtcIiu7127SmtHhaCjw21yC43HliW0iIg==",
15428 "dev": true, 18370 "dev": true,
15429 "requires": { 18371 "requires": {
15430 "debug": "^2.5.1", 18372 "debug": "^2.5.1",
15431 "lodash.assign": "^4.2.0", 18373 "lodash.assign": "^4.2.0",
15432 "rxjs": "^5.1.1" 18374 "rxjs": "^6.3.1"
15433 } 18375 }
15434 }, 18376 },
15435 "spdx-correct": { 18377 "spdx-correct": {
15436 "version": "3.0.2", 18378 "version": "3.1.0",
15437 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", 18379 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
15438 "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", 18380 "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
15439 "dev": true,
15440 "requires": { 18381 "requires": {
15441 "spdx-expression-parse": "^3.0.0", 18382 "spdx-expression-parse": "^3.0.0",
15442 "spdx-license-ids": "^3.0.0" 18383 "spdx-license-ids": "^3.0.0"
@@ -15445,24 +18386,82 @@
15445 "spdx-exceptions": { 18386 "spdx-exceptions": {
15446 "version": "2.2.0", 18387 "version": "2.2.0",
15447 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 18388 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
15448 "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 18389 "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
15449 "dev": true
15450 }, 18390 },
15451 "spdx-expression-parse": { 18391 "spdx-expression-parse": {
15452 "version": "3.0.0", 18392 "version": "3.0.0",
15453 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 18393 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
15454 "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 18394 "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
15455 "dev": true,
15456 "requires": { 18395 "requires": {
15457 "spdx-exceptions": "^2.1.0", 18396 "spdx-exceptions": "^2.1.0",
15458 "spdx-license-ids": "^3.0.0" 18397 "spdx-license-ids": "^3.0.0"
15459 } 18398 }
15460 }, 18399 },
15461 "spdx-license-ids": { 18400 "spdx-license-ids": {
15462 "version": "3.0.1", 18401 "version": "3.0.3",
15463 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", 18402 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
15464 "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", 18403 "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g=="
15465 "dev": true 18404 },
18405 "spdy": {
18406 "version": "4.0.0",
18407 "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz",
18408 "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==",
18409 "dev": true,
18410 "requires": {
18411 "debug": "^4.1.0",
18412 "handle-thing": "^2.0.0",
18413 "http-deceiver": "^1.2.7",
18414 "select-hose": "^2.0.0",
18415 "spdy-transport": "^3.0.0"
18416 },
18417 "dependencies": {
18418 "debug": {
18419 "version": "4.1.1",
18420 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
18421 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
18422 "dev": true,
18423 "requires": {
18424 "ms": "^2.1.1"
18425 }
18426 },
18427 "ms": {
18428 "version": "2.1.1",
18429 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
18430 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
18431 "dev": true
18432 }
18433 }
18434 },
18435 "spdy-transport": {
18436 "version": "3.0.0",
18437 "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
18438 "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
18439 "dev": true,
18440 "requires": {
18441 "debug": "^4.1.0",
18442 "detect-node": "^2.0.4",
18443 "hpack.js": "^2.1.6",
18444 "obuf": "^1.1.2",
18445 "readable-stream": "^3.0.6",
18446 "wbuf": "^1.7.3"
18447 },
18448 "dependencies": {
18449 "debug": {
18450 "version": "4.1.1",
18451 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
18452 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
18453 "dev": true,
18454 "requires": {
18455 "ms": "^2.1.1"
18456 }
18457 },
18458 "ms": {
18459 "version": "2.1.1",
18460 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
18461 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
18462 "dev": true
18463 }
18464 }
15466 }, 18465 },
15467 "speedometer": { 18466 "speedometer": {
15468 "version": "0.1.4", 18467 "version": "0.1.4",
@@ -15488,6 +18487,7 @@
15488 "version": "3.1.0", 18487 "version": "3.1.0",
15489 "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 18488 "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
15490 "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 18489 "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
18490 "dev": true,
15491 "requires": { 18491 "requires": {
15492 "extend-shallow": "^3.0.0" 18492 "extend-shallow": "^3.0.0"
15493 } 18493 }
@@ -15507,9 +18507,9 @@
15507 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 18507 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
15508 }, 18508 },
15509 "sshpk": { 18509 "sshpk": {
15510 "version": "1.15.1", 18510 "version": "1.16.1",
15511 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", 18511 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
15512 "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", 18512 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
15513 "dev": true, 18513 "dev": true,
15514 "requires": { 18514 "requires": {
15515 "asn1": "~0.2.3", 18515 "asn1": "~0.2.3",
@@ -15523,12 +18523,27 @@
15523 "tweetnacl": "~0.14.0" 18523 "tweetnacl": "~0.14.0"
15524 } 18524 }
15525 }, 18525 },
18526 "ssri": {
18527 "version": "6.0.1",
18528 "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
18529 "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
18530 "dev": true,
18531 "requires": {
18532 "figgy-pudding": "^3.5.1"
18533 }
18534 },
15526 "stack-trace": { 18535 "stack-trace": {
15527 "version": "0.0.10", 18536 "version": "0.0.10",
15528 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 18537 "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
15529 "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 18538 "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
15530 "dev": true 18539 "dev": true
15531 }, 18540 },
18541 "stack-utils": {
18542 "version": "1.0.2",
18543 "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
18544 "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
18545 "dev": true
18546 },
15532 "stat-mode": { 18547 "stat-mode": {
15533 "version": "0.2.2", 18548 "version": "0.2.2",
15534 "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", 18549 "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
@@ -15539,6 +18554,7 @@
15539 "version": "0.1.2", 18554 "version": "0.1.2",
15540 "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 18555 "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
15541 "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 18556 "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
18557 "dev": true,
15542 "requires": { 18558 "requires": {
15543 "define-property": "^0.2.5", 18559 "define-property": "^0.2.5",
15544 "object-copy": "^0.1.0" 18560 "object-copy": "^0.1.0"
@@ -15548,12 +18564,19 @@
15548 "version": "0.2.5", 18564 "version": "0.2.5",
15549 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 18565 "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
15550 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 18566 "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
18567 "dev": true,
15551 "requires": { 18568 "requires": {
15552 "is-descriptor": "^0.1.0" 18569 "is-descriptor": "^0.1.0"
15553 } 18570 }
15554 } 18571 }
15555 } 18572 }
15556 }, 18573 },
18574 "statuses": {
18575 "version": "1.4.0",
18576 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
18577 "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
18578 "dev": true
18579 },
15557 "stdout-stream": { 18580 "stdout-stream": {
15558 "version": "1.4.1", 18581 "version": "1.4.1",
15559 "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", 18582 "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
@@ -15561,6 +18584,84 @@
15561 "dev": true, 18584 "dev": true,
15562 "requires": { 18585 "requires": {
15563 "readable-stream": "^2.0.1" 18586 "readable-stream": "^2.0.1"
18587 },
18588 "dependencies": {
18589 "readable-stream": {
18590 "version": "2.3.6",
18591 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
18592 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
18593 "dev": true,
18594 "requires": {
18595 "core-util-is": "~1.0.0",
18596 "inherits": "~2.0.3",
18597 "isarray": "~1.0.0",
18598 "process-nextick-args": "~2.0.0",
18599 "safe-buffer": "~5.1.1",
18600 "string_decoder": "~1.1.1",
18601 "util-deprecate": "~1.0.1"
18602 }
18603 },
18604 "string_decoder": {
18605 "version": "1.1.1",
18606 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
18607 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
18608 "dev": true,
18609 "requires": {
18610 "safe-buffer": "~5.1.0"
18611 }
18612 }
18613 }
18614 },
18615 "stealthy-require": {
18616 "version": "1.1.1",
18617 "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
18618 "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
18619 "dev": true
18620 },
18621 "stream-browserify": {
18622 "version": "2.0.2",
18623 "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
18624 "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
18625 "dev": true,
18626 "requires": {
18627 "inherits": "~2.0.1",
18628 "readable-stream": "^2.0.2"
18629 },
18630 "dependencies": {
18631 "readable-stream": {
18632 "version": "2.3.6",
18633 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
18634 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
18635 "dev": true,
18636 "requires": {
18637 "core-util-is": "~1.0.0",
18638 "inherits": "~2.0.3",
18639 "isarray": "~1.0.0",
18640 "process-nextick-args": "~2.0.0",
18641 "safe-buffer": "~5.1.1",
18642 "string_decoder": "~1.1.1",
18643 "util-deprecate": "~1.0.1"
18644 }
18645 },
18646 "string_decoder": {
18647 "version": "1.1.1",
18648 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
18649 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
18650 "dev": true,
18651 "requires": {
18652 "safe-buffer": "~5.1.0"
18653 }
18654 }
18655 }
18656 },
18657 "stream-each": {
18658 "version": "1.2.3",
18659 "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
18660 "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
18661 "dev": true,
18662 "requires": {
18663 "end-of-stream": "^1.1.0",
18664 "stream-shift": "^1.0.0"
15564 } 18665 }
15565 }, 18666 },
15566 "stream-exhaust": { 18667 "stream-exhaust": {
@@ -15569,6 +18670,45 @@
15569 "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", 18670 "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
15570 "dev": true 18671 "dev": true
15571 }, 18672 },
18673 "stream-http": {
18674 "version": "2.8.3",
18675 "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
18676 "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
18677 "dev": true,
18678 "requires": {
18679 "builtin-status-codes": "^3.0.0",
18680 "inherits": "^2.0.1",
18681 "readable-stream": "^2.3.6",
18682 "to-arraybuffer": "^1.0.0",
18683 "xtend": "^4.0.0"
18684 },
18685 "dependencies": {
18686 "readable-stream": {
18687 "version": "2.3.6",
18688 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
18689 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
18690 "dev": true,
18691 "requires": {
18692 "core-util-is": "~1.0.0",
18693 "inherits": "~2.0.3",
18694 "isarray": "~1.0.0",
18695 "process-nextick-args": "~2.0.0",
18696 "safe-buffer": "~5.1.1",
18697 "string_decoder": "~1.1.1",
18698 "util-deprecate": "~1.0.1"
18699 }
18700 },
18701 "string_decoder": {
18702 "version": "1.1.1",
18703 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
18704 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
18705 "dev": true,
18706 "requires": {
18707 "safe-buffer": "~5.1.0"
18708 }
18709 }
18710 }
18711 },
15572 "stream-shift": { 18712 "stream-shift": {
15573 "version": "1.0.0", 18713 "version": "1.0.0",
15574 "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", 18714 "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
@@ -15580,40 +18720,46 @@
15580 "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", 18720 "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
15581 "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" 18721 "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM="
15582 }, 18722 },
18723 "string-length": {
18724 "version": "2.0.0",
18725 "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
18726 "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
18727 "dev": true,
18728 "requires": {
18729 "astral-regex": "^1.0.0",
18730 "strip-ansi": "^4.0.0"
18731 }
18732 },
15583 "string-width": { 18733 "string-width": {
15584 "version": "1.0.2", 18734 "version": "2.1.1",
15585 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 18735 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
15586 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 18736 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
15587 "requires": { 18737 "requires": {
15588 "code-point-at": "^1.0.0", 18738 "is-fullwidth-code-point": "^2.0.0",
15589 "is-fullwidth-code-point": "^1.0.0", 18739 "strip-ansi": "^4.0.0"
15590 "strip-ansi": "^3.0.0"
15591 } 18740 }
15592 }, 18741 },
15593 "string_decoder": { 18742 "string_decoder": {
15594 "version": "1.1.1", 18743 "version": "1.2.0",
15595 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 18744 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
15596 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 18745 "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
15597 "requires": { 18746 "requires": {
15598 "safe-buffer": "~5.1.0" 18747 "safe-buffer": "~5.1.0"
15599 } 18748 }
15600 }, 18749 },
15601 "strip-ansi": { 18750 "strip-ansi": {
15602 "version": "3.0.1", 18751 "version": "4.0.0",
15603 "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 18752 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
15604 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 18753 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
15605 "requires": { 18754 "requires": {
15606 "ansi-regex": "^2.0.0" 18755 "ansi-regex": "^3.0.0"
15607 } 18756 }
15608 }, 18757 },
15609 "strip-bom": { 18758 "strip-bom": {
15610 "version": "2.0.0", 18759 "version": "3.0.0",
15611 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 18760 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
15612 "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 18761 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
15613 "dev": true, 18762 "dev": true
15614 "requires": {
15615 "is-utf8": "^0.2.0"
15616 }
15617 }, 18763 },
15618 "strip-eof": { 18764 "strip-eof": {
15619 "version": "1.0.0", 18765 "version": "1.0.0",
@@ -15622,13 +18768,10 @@
15622 "dev": true 18768 "dev": true
15623 }, 18769 },
15624 "strip-indent": { 18770 "strip-indent": {
15625 "version": "1.0.1", 18771 "version": "2.0.0",
15626 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", 18772 "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
15627 "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", 18773 "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
15628 "dev": true, 18774 "dev": true
15629 "requires": {
15630 "get-stdin": "^4.0.1"
15631 }
15632 }, 18775 },
15633 "strip-json-comments": { 18776 "strip-json-comments": {
15634 "version": "2.0.1", 18777 "version": "2.0.1",
@@ -15636,6 +18779,17 @@
15636 "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 18779 "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
15637 "dev": true 18780 "dev": true
15638 }, 18781 },
18782 "strong-log-transformer": {
18783 "version": "2.1.0",
18784 "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz",
18785 "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==",
18786 "dev": true,
18787 "requires": {
18788 "duplexer": "^0.1.1",
18789 "minimist": "^1.2.0",
18790 "through": "^2.3.4"
18791 }
18792 },
15639 "sumchecker": { 18793 "sumchecker": {
15640 "version": "2.0.2", 18794 "version": "2.0.2",
15641 "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", 18795 "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
@@ -15646,115 +18800,101 @@
15646 } 18800 }
15647 }, 18801 },
15648 "supports-color": { 18802 "supports-color": {
15649 "version": "2.0.0", 18803 "version": "5.5.0",
15650 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 18804 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
15651 "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 18805 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
18806 "dev": true,
18807 "requires": {
18808 "has-flag": "^3.0.0"
18809 }
15652 }, 18810 },
15653 "sver-compat": { 18811 "sver-compat": {
15654 "version": "1.5.0", 18812 "version": "1.5.0",
15655 "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", 18813 "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
15656 "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", 18814 "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
18815 "dev": true,
15657 "requires": { 18816 "requires": {
15658 "es6-iterator": "^2.0.1", 18817 "es6-iterator": "^2.0.1",
15659 "es6-symbol": "^3.1.1" 18818 "es6-symbol": "^3.1.1"
15660 } 18819 }
15661 }, 18820 },
15662 "symbol-observable": { 18821 "symbol-observable": {
15663 "version": "1.0.1", 18822 "version": "1.2.0",
15664 "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", 18823 "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
15665 "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", 18824 "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
18825 },
18826 "symbol-tree": {
18827 "version": "3.2.2",
18828 "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
18829 "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
15666 "dev": true 18830 "dev": true
15667 }, 18831 },
15668 "table": { 18832 "table": {
15669 "version": "5.1.1", 18833 "version": "5.2.3",
15670 "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", 18834 "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz",
15671 "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==", 18835 "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==",
15672 "dev": true, 18836 "dev": true,
15673 "requires": { 18837 "requires": {
15674 "ajv": "^6.6.1", 18838 "ajv": "^6.9.1",
15675 "lodash": "^4.17.11", 18839 "lodash": "^4.17.11",
15676 "slice-ansi": "2.0.0", 18840 "slice-ansi": "^2.1.0",
15677 "string-width": "^2.1.1" 18841 "string-width": "^3.0.0"
15678 }, 18842 },
15679 "dependencies": { 18843 "dependencies": {
15680 "ajv": {
15681 "version": "6.6.1",
15682 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz",
15683 "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==",
15684 "dev": true,
15685 "requires": {
15686 "fast-deep-equal": "^2.0.1",
15687 "fast-json-stable-stringify": "^2.0.0",
15688 "json-schema-traverse": "^0.4.1",
15689 "uri-js": "^4.2.2"
15690 }
15691 },
15692 "ansi-regex": { 18844 "ansi-regex": {
15693 "version": "3.0.0", 18845 "version": "4.0.0",
15694 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 18846 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
15695 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 18847 "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
15696 "dev": true
15697 },
15698 "fast-deep-equal": {
15699 "version": "2.0.1",
15700 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
15701 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
15702 "dev": true
15703 },
15704 "is-fullwidth-code-point": {
15705 "version": "2.0.0",
15706 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
15707 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
15708 "dev": true
15709 },
15710 "json-schema-traverse": {
15711 "version": "0.4.1",
15712 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
15713 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
15714 "dev": true 18848 "dev": true
15715 }, 18849 },
15716 "string-width": { 18850 "string-width": {
15717 "version": "2.1.1", 18851 "version": "3.0.0",
15718 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 18852 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz",
15719 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 18853 "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==",
15720 "dev": true, 18854 "dev": true,
15721 "requires": { 18855 "requires": {
18856 "emoji-regex": "^7.0.1",
15722 "is-fullwidth-code-point": "^2.0.0", 18857 "is-fullwidth-code-point": "^2.0.0",
15723 "strip-ansi": "^4.0.0" 18858 "strip-ansi": "^5.0.0"
15724 } 18859 }
15725 }, 18860 },
15726 "strip-ansi": { 18861 "strip-ansi": {
15727 "version": "4.0.0", 18862 "version": "5.0.0",
15728 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 18863 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
15729 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 18864 "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
15730 "dev": true, 18865 "dev": true,
15731 "requires": { 18866 "requires": {
15732 "ansi-regex": "^3.0.0" 18867 "ansi-regex": "^4.0.0"
15733 } 18868 }
15734 } 18869 }
15735 } 18870 }
15736 }, 18871 },
18872 "tapable": {
18873 "version": "1.1.1",
18874 "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
18875 "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==",
18876 "dev": true
18877 },
15737 "tar": { 18878 "tar": {
15738 "version": "4.4.6", 18879 "version": "4.4.8",
15739 "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.6.tgz", 18880 "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
15740 "integrity": "sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==", 18881 "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
15741 "requires": { 18882 "requires": {
15742 "chownr": "^1.0.1", 18883 "chownr": "^1.1.1",
15743 "fs-minipass": "^1.2.5", 18884 "fs-minipass": "^1.2.5",
15744 "minipass": "^2.3.3", 18885 "minipass": "^2.3.4",
15745 "minizlib": "^1.1.0", 18886 "minizlib": "^1.1.1",
15746 "mkdirp": "^0.5.0", 18887 "mkdirp": "^0.5.0",
15747 "safe-buffer": "^5.1.2", 18888 "safe-buffer": "^5.1.2",
15748 "yallist": "^3.0.2" 18889 "yallist": "^3.0.2"
15749 },
15750 "dependencies": {
15751 "yallist": {
15752 "version": "3.0.2",
15753 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
15754 "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
15755 }
15756 } 18890 }
15757 }, 18891 },
18892 "temp-dir": {
18893 "version": "1.0.0",
18894 "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
18895 "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=",
18896 "dev": true
18897 },
15758 "temp-file": { 18898 "temp-file": {
15759 "version": "3.3.2", 18899 "version": "3.3.2",
15760 "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz", 18900 "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz",
@@ -15766,6 +18906,20 @@
15766 "fs-extra-p": "^7.0.0" 18906 "fs-extra-p": "^7.0.0"
15767 } 18907 }
15768 }, 18908 },
18909 "temp-write": {
18910 "version": "3.4.0",
18911 "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz",
18912 "integrity": "sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI=",
18913 "dev": true,
18914 "requires": {
18915 "graceful-fs": "^4.1.2",
18916 "is-stream": "^1.1.0",
18917 "make-dir": "^1.0.0",
18918 "pify": "^3.0.0",
18919 "temp-dir": "^1.0.0",
18920 "uuid": "^3.0.1"
18921 }
18922 },
15769 "tempfile": { 18923 "tempfile": {
15770 "version": "1.1.1", 18924 "version": "1.1.1",
15771 "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", 18925 "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
@@ -15791,6 +18945,138 @@
15791 "dev": true, 18945 "dev": true,
15792 "requires": { 18946 "requires": {
15793 "execa": "^0.7.0" 18947 "execa": "^0.7.0"
18948 },
18949 "dependencies": {
18950 "cross-spawn": {
18951 "version": "5.1.0",
18952 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
18953 "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
18954 "dev": true,
18955 "requires": {
18956 "lru-cache": "^4.0.1",
18957 "shebang-command": "^1.2.0",
18958 "which": "^1.2.9"
18959 }
18960 },
18961 "execa": {
18962 "version": "0.7.0",
18963 "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
18964 "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
18965 "dev": true,
18966 "requires": {
18967 "cross-spawn": "^5.0.1",
18968 "get-stream": "^3.0.0",
18969 "is-stream": "^1.1.0",
18970 "npm-run-path": "^2.0.0",
18971 "p-finally": "^1.0.0",
18972 "signal-exit": "^3.0.0",
18973 "strip-eof": "^1.0.0"
18974 }
18975 },
18976 "get-stream": {
18977 "version": "3.0.0",
18978 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
18979 "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
18980 "dev": true
18981 }
18982 }
18983 },
18984 "terser": {
18985 "version": "3.16.1",
18986 "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz",
18987 "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==",
18988 "dev": true,
18989 "requires": {
18990 "commander": "~2.17.1",
18991 "source-map": "~0.6.1",
18992 "source-map-support": "~0.5.9"
18993 },
18994 "dependencies": {
18995 "commander": {
18996 "version": "2.17.1",
18997 "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
18998 "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
18999 "dev": true
19000 }
19001 }
19002 },
19003 "terser-webpack-plugin": {
19004 "version": "1.2.1",
19005 "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz",
19006 "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==",
19007 "dev": true,
19008 "requires": {
19009 "cacache": "^11.0.2",
19010 "find-cache-dir": "^2.0.0",
19011 "schema-utils": "^1.0.0",
19012 "serialize-javascript": "^1.4.0",
19013 "source-map": "^0.6.1",
19014 "terser": "^3.8.1",
19015 "webpack-sources": "^1.1.0",
19016 "worker-farm": "^1.5.2"
19017 },
19018 "dependencies": {
19019 "find-cache-dir": {
19020 "version": "2.0.0",
19021 "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz",
19022 "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==",
19023 "dev": true,
19024 "requires": {
19025 "commondir": "^1.0.1",
19026 "make-dir": "^1.0.0",
19027 "pkg-dir": "^3.0.0"
19028 }
19029 },
19030 "pkg-dir": {
19031 "version": "3.0.0",
19032 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
19033 "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
19034 "dev": true,
19035 "requires": {
19036 "find-up": "^3.0.0"
19037 }
19038 }
19039 }
19040 },
19041 "test-exclude": {
19042 "version": "5.2.2",
19043 "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz",
19044 "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==",
19045 "dev": true,
19046 "requires": {
19047 "glob": "^7.1.3",
19048 "minimatch": "^3.0.4",
19049 "read-pkg-up": "^4.0.0",
19050 "require-main-filename": "^2.0.0"
19051 },
19052 "dependencies": {
19053 "read-pkg": {
19054 "version": "3.0.0",
19055 "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
19056 "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
19057 "dev": true,
19058 "requires": {
19059 "load-json-file": "^4.0.0",
19060 "normalize-package-data": "^2.3.2",
19061 "path-type": "^3.0.0"
19062 }
19063 },
19064 "read-pkg-up": {
19065 "version": "4.0.0",
19066 "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
19067 "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
19068 "dev": true,
19069 "requires": {
19070 "find-up": "^3.0.0",
19071 "read-pkg": "^3.0.0"
19072 }
19073 },
19074 "require-main-filename": {
19075 "version": "2.0.0",
19076 "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
19077 "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
19078 "dev": true
19079 }
15794 } 19080 }
15795 }, 19081 },
15796 "text-extensions": { 19082 "text-extensions": {
@@ -15816,6 +19102,12 @@
15816 "prop-types": "^15.5.8" 19102 "prop-types": "^15.5.8"
15817 } 19103 }
15818 }, 19104 },
19105 "throat": {
19106 "version": "4.1.0",
19107 "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
19108 "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
19109 "dev": true
19110 },
15819 "throttleit": { 19111 "throttleit": {
15820 "version": "0.0.2", 19112 "version": "0.0.2",
15821 "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", 19113 "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
@@ -15824,34 +19116,67 @@
15824 }, 19116 },
15825 "through": { 19117 "through": {
15826 "version": "2.3.8", 19118 "version": "2.3.8",
15827 "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", 19119 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
15828 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 19120 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
15829 "dev": true 19121 "dev": true
15830 }, 19122 },
15831 "through2": { 19123 "through2": {
15832 "version": "2.0.3", 19124 "version": "2.0.5",
15833 "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 19125 "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
15834 "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 19126 "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
15835 "dev": true, 19127 "dev": true,
15836 "requires": { 19128 "requires": {
15837 "readable-stream": "^2.1.5", 19129 "readable-stream": "~2.3.6",
15838 "xtend": "~4.0.1" 19130 "xtend": "~4.0.1"
19131 },
19132 "dependencies": {
19133 "readable-stream": {
19134 "version": "2.3.6",
19135 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
19136 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
19137 "dev": true,
19138 "requires": {
19139 "core-util-is": "~1.0.0",
19140 "inherits": "~2.0.3",
19141 "isarray": "~1.0.0",
19142 "process-nextick-args": "~2.0.0",
19143 "safe-buffer": "~5.1.1",
19144 "string_decoder": "~1.1.1",
19145 "util-deprecate": "~1.0.1"
19146 }
19147 },
19148 "string_decoder": {
19149 "version": "1.1.1",
19150 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
19151 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
19152 "dev": true,
19153 "requires": {
19154 "safe-buffer": "~5.1.0"
19155 }
19156 }
15839 } 19157 }
15840 }, 19158 },
15841 "through2-filter": { 19159 "through2-filter": {
15842 "version": "2.0.0", 19160 "version": "3.0.0",
15843 "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", 19161 "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
15844 "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", 19162 "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
15845 "dev": true, 19163 "dev": true,
15846 "requires": { 19164 "requires": {
15847 "through2": "~2.0.0", 19165 "through2": "~2.0.0",
15848 "xtend": "~4.0.0" 19166 "xtend": "~4.0.0"
15849 } 19167 }
15850 }, 19168 },
19169 "thunky": {
19170 "version": "1.0.3",
19171 "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz",
19172 "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==",
19173 "dev": true
19174 },
15851 "tildify": { 19175 "tildify": {
15852 "version": "1.2.0", 19176 "version": "1.2.0",
15853 "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", 19177 "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
15854 "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", 19178 "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
19179 "dev": true,
15855 "requires": { 19180 "requires": {
15856 "os-homedir": "^1.0.0" 19181 "os-homedir": "^1.0.0"
15857 } 19182 }
@@ -15859,7 +19184,8 @@
15859 "time-stamp": { 19184 "time-stamp": {
15860 "version": "1.1.0", 19185 "version": "1.1.0",
15861 "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 19186 "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
15862 "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" 19187 "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
19188 "dev": true
15863 }, 19189 },
15864 "timed-out": { 19190 "timed-out": {
15865 "version": "4.0.1", 19191 "version": "4.0.1",
@@ -15867,6 +19193,15 @@
15867 "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", 19193 "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
15868 "dev": true 19194 "dev": true
15869 }, 19195 },
19196 "timers-browserify": {
19197 "version": "2.0.10",
19198 "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
19199 "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
19200 "dev": true,
19201 "requires": {
19202 "setimmediate": "^1.0.4"
19203 }
19204 },
15870 "tmp": { 19205 "tmp": {
15871 "version": "0.0.33", 19206 "version": "0.0.33",
15872 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 19207 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -15876,6 +19211,12 @@
15876 "os-tmpdir": "~1.0.2" 19211 "os-tmpdir": "~1.0.2"
15877 } 19212 }
15878 }, 19213 },
19214 "tmpl": {
19215 "version": "1.0.4",
19216 "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
19217 "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
19218 "dev": true
19219 },
15879 "to-absolute-glob": { 19220 "to-absolute-glob": {
15880 "version": "2.0.2", 19221 "version": "2.0.2",
15881 "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", 19222 "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
@@ -15892,10 +19233,23 @@
15892 "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", 19233 "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
15893 "dev": true 19234 "dev": true
15894 }, 19235 },
19236 "to-arraybuffer": {
19237 "version": "1.0.1",
19238 "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
19239 "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
19240 "dev": true
19241 },
19242 "to-fast-properties": {
19243 "version": "2.0.0",
19244 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
19245 "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
19246 "dev": true
19247 },
15895 "to-object-path": { 19248 "to-object-path": {
15896 "version": "0.3.0", 19249 "version": "0.3.0",
15897 "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 19250 "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
15898 "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 19251 "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
19252 "dev": true,
15899 "requires": { 19253 "requires": {
15900 "kind-of": "^3.0.2" 19254 "kind-of": "^3.0.2"
15901 }, 19255 },
@@ -15904,6 +19258,7 @@
15904 "version": "3.2.2", 19258 "version": "3.2.2",
15905 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 19259 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
15906 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 19260 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
19261 "dev": true,
15907 "requires": { 19262 "requires": {
15908 "is-buffer": "^1.1.5" 19263 "is-buffer": "^1.1.5"
15909 } 19264 }
@@ -15914,6 +19269,7 @@
15914 "version": "3.0.2", 19269 "version": "3.0.2",
15915 "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 19270 "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
15916 "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 19271 "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
19272 "dev": true,
15917 "requires": { 19273 "requires": {
15918 "define-property": "^2.0.2", 19274 "define-property": "^2.0.2",
15919 "extend-shallow": "^3.0.2", 19275 "extend-shallow": "^3.0.2",
@@ -15925,6 +19281,7 @@
15925 "version": "2.1.1", 19281 "version": "2.1.1",
15926 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 19282 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
15927 "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 19283 "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
19284 "dev": true,
15928 "requires": { 19285 "requires": {
15929 "is-number": "^3.0.0", 19286 "is-number": "^3.0.0",
15930 "repeat-string": "^1.6.1" 19287 "repeat-string": "^1.6.1"
@@ -15939,14 +19296,6 @@
15939 "through2": "^2.0.3" 19296 "through2": "^2.0.3"
15940 } 19297 }
15941 }, 19298 },
15942 "topo": {
15943 "version": "1.1.0",
15944 "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
15945 "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=",
15946 "requires": {
15947 "hoek": "2.x.x"
15948 }
15949 },
15950 "tough-cookie": { 19299 "tough-cookie": {
15951 "version": "2.4.3", 19300 "version": "2.4.3",
15952 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", 19301 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
@@ -15955,18 +19304,35 @@
15955 "requires": { 19304 "requires": {
15956 "psl": "^1.1.24", 19305 "psl": "^1.1.24",
15957 "punycode": "^1.4.1" 19306 "punycode": "^1.4.1"
19307 },
19308 "dependencies": {
19309 "punycode": {
19310 "version": "1.4.1",
19311 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
19312 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
19313 "dev": true
19314 }
19315 }
19316 },
19317 "tr46": {
19318 "version": "1.0.1",
19319 "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
19320 "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
19321 "dev": true,
19322 "requires": {
19323 "punycode": "^2.1.0"
15958 } 19324 }
15959 }, 19325 },
15960 "tree-kill": { 19326 "tree-kill": {
15961 "version": "1.2.0", 19327 "version": "1.2.1",
15962 "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", 19328 "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz",
15963 "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", 19329 "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==",
15964 "dev": true 19330 "dev": true
15965 }, 19331 },
15966 "trim-newlines": { 19332 "trim-newlines": {
15967 "version": "1.0.0", 19333 "version": "2.0.0",
15968 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", 19334 "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
15969 "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", 19335 "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
15970 "dev": true 19336 "dev": true
15971 }, 19337 },
15972 "trim-off-newlines": { 19338 "trim-off-newlines": {
@@ -15999,11 +19365,151 @@
15999 "utf8-byte-length": "^1.0.1" 19365 "utf8-byte-length": "^1.0.1"
16000 } 19366 }
16001 }, 19367 },
19368 "ts-loader": {
19369 "version": "5.3.2",
19370 "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.2.tgz",
19371 "integrity": "sha512-TPeXFkdPjOrVEawY4xUgRnzlHEmKQF1DclJghPGq67jKnroVvs6mEGHWYtbUczgeWTvTaqUjSSaMmp1k5do4vw==",
19372 "dev": true,
19373 "requires": {
19374 "chalk": "^2.3.0",
19375 "enhanced-resolve": "^4.0.0",
19376 "loader-utils": "^1.0.2",
19377 "micromatch": "^3.1.4",
19378 "semver": "^5.0.1"
19379 }
19380 },
16002 "tslib": { 19381 "tslib": {
16003 "version": "1.9.3", 19382 "version": "1.9.3",
16004 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", 19383 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
16005 "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" 19384 "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
16006 }, 19385 },
19386 "tslint": {
19387 "version": "5.12.0",
19388 "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.12.0.tgz",
19389 "integrity": "sha512-CKEcH1MHUBhoV43SA/Jmy1l24HJJgI0eyLbBNSRyFlsQvb9v6Zdq+Nz2vEOH00nC5SUx4SneJ59PZUS/ARcokQ==",
19390 "dev": true,
19391 "requires": {
19392 "babel-code-frame": "^6.22.0",
19393 "builtin-modules": "^1.1.1",
19394 "chalk": "^2.3.0",
19395 "commander": "^2.12.1",
19396 "diff": "^3.2.0",
19397 "glob": "^7.1.1",
19398 "js-yaml": "^3.7.0",
19399 "minimatch": "^3.0.4",
19400 "resolve": "^1.3.2",
19401 "semver": "^5.3.0",
19402 "tslib": "^1.8.0",
19403 "tsutils": "^2.27.2"
19404 }
19405 },
19406 "tslint-config-airbnb": {
19407 "version": "5.11.1",
19408 "resolved": "https://registry.npmjs.org/tslint-config-airbnb/-/tslint-config-airbnb-5.11.1.tgz",
19409 "integrity": "sha512-hkaittm2607vVMe8eotANGN1CimD5tor7uoY3ypg2VTtEcDB/KGWYbJOz58t8LI4cWSyWtgqYQ5F0HwKxxhlkQ==",
19410 "dev": true,
19411 "requires": {
19412 "tslint-consistent-codestyle": "^1.14.1",
19413 "tslint-eslint-rules": "^5.4.0",
19414 "tslint-microsoft-contrib": "~5.2.1"
19415 }
19416 },
19417 "tslint-consistent-codestyle": {
19418 "version": "1.15.0",
19419 "resolved": "https://registry.npmjs.org/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.15.0.tgz",
19420 "integrity": "sha512-6BNDBbZh2K0ibRXe70Mkl9gfVttxQ3t3hqV1BRDfpIcjrUoOgD946iH4SrXp+IggDgeMs3dJORjD5tqL5j4jXg==",
19421 "dev": true,
19422 "requires": {
19423 "@fimbul/bifrost": "^0.17.0",
19424 "tslib": "^1.7.1",
19425 "tsutils": "^2.29.0"
19426 }
19427 },
19428 "tslint-eslint-rules": {
19429 "version": "5.4.0",
19430 "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz",
19431 "integrity": "sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w==",
19432 "dev": true,
19433 "requires": {
19434 "doctrine": "0.7.2",
19435 "tslib": "1.9.0",
19436 "tsutils": "^3.0.0"
19437 },
19438 "dependencies": {
19439 "doctrine": {
19440 "version": "0.7.2",
19441 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz",
19442 "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=",
19443 "dev": true,
19444 "requires": {
19445 "esutils": "^1.1.6",
19446 "isarray": "0.0.1"
19447 }
19448 },
19449 "esutils": {
19450 "version": "1.1.6",
19451 "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz",
19452 "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=",
19453 "dev": true
19454 },
19455 "isarray": {
19456 "version": "0.0.1",
19457 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
19458 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
19459 "dev": true
19460 },
19461 "tslib": {
19462 "version": "1.9.0",
19463 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
19464 "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==",
19465 "dev": true
19466 },
19467 "tsutils": {
19468 "version": "3.8.0",
19469 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.8.0.tgz",
19470 "integrity": "sha512-XQdPhgcoTbCD8baXC38PQ0vpTZ8T3YrE+vR66YIj/xvDt1//8iAhafpIT/4DmvzzC1QFapEImERu48Pa01dIUA==",
19471 "dev": true,
19472 "requires": {
19473 "tslib": "^1.8.1"
19474 }
19475 }
19476 }
19477 },
19478 "tslint-microsoft-contrib": {
19479 "version": "5.2.1",
19480 "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.2.1.tgz",
19481 "integrity": "sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA==",
19482 "dev": true,
19483 "requires": {
19484 "tsutils": "^2.27.2 <2.29.0"
19485 },
19486 "dependencies": {
19487 "tsutils": {
19488 "version": "2.28.0",
19489 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.28.0.tgz",
19490 "integrity": "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==",
19491 "dev": true,
19492 "requires": {
19493 "tslib": "^1.8.1"
19494 }
19495 }
19496 }
19497 },
19498 "tsutils": {
19499 "version": "2.29.0",
19500 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
19501 "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
19502 "dev": true,
19503 "requires": {
19504 "tslib": "^1.8.1"
19505 }
19506 },
19507 "tty-browserify": {
19508 "version": "0.0.0",
19509 "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
19510 "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
19511 "dev": true
19512 },
16007 "tunnel-agent": { 19513 "tunnel-agent": {
16008 "version": "0.6.0", 19514 "version": "0.6.0",
16009 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 19515 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -16028,23 +19534,38 @@
16028 "prelude-ls": "~1.1.2" 19534 "prelude-ls": "~1.1.2"
16029 } 19535 }
16030 }, 19536 },
19537 "type-is": {
19538 "version": "1.6.16",
19539 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
19540 "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
19541 "dev": true,
19542 "requires": {
19543 "media-typer": "0.3.0",
19544 "mime-types": "~2.1.18"
19545 }
19546 },
16031 "typedarray": { 19547 "typedarray": {
16032 "version": "0.0.6", 19548 "version": "0.0.6",
16033 "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 19549 "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
16034 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 19550 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
16035 "dev": true 19551 "dev": true
16036 }, 19552 },
19553 "typescript": {
19554 "version": "3.2.2",
19555 "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz",
19556 "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==",
19557 "dev": true
19558 },
16037 "ua-parser-js": { 19559 "ua-parser-js": {
16038 "version": "0.7.18", 19560 "version": "0.7.19",
16039 "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", 19561 "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz",
16040 "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" 19562 "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ=="
16041 }, 19563 },
16042 "uglify-js": { 19564 "uglify-js": {
16043 "version": "3.4.9", 19565 "version": "3.4.9",
16044 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", 19566 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
16045 "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", 19567 "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
16046 "dev": true, 19568 "dev": true,
16047 "optional": true,
16048 "requires": { 19569 "requires": {
16049 "commander": "~2.17.1", 19570 "commander": "~2.17.1",
16050 "source-map": "~0.6.1" 19571 "source-map": "~0.6.1"
@@ -16054,28 +19575,33 @@
16054 "version": "2.17.1", 19575 "version": "2.17.1",
16055 "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", 19576 "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
16056 "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", 19577 "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
16057 "dev": true, 19578 "dev": true
16058 "optional": true
16059 },
16060 "source-map": {
16061 "version": "0.6.1",
16062 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
16063 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
16064 "dev": true,
16065 "optional": true
16066 } 19579 }
16067 } 19580 }
16068 }, 19581 },
19582 "uid-number": {
19583 "version": "0.0.6",
19584 "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
19585 "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=",
19586 "dev": true
19587 },
16069 "ultron": { 19588 "ultron": {
16070 "version": "1.0.2", 19589 "version": "1.0.2",
16071 "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", 19590 "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
16072 "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", 19591 "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
16073 "dev": true 19592 "dev": true
16074 }, 19593 },
19594 "umask": {
19595 "version": "1.1.0",
19596 "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz",
19597 "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=",
19598 "dev": true
19599 },
16075 "unc-path-regex": { 19600 "unc-path-regex": {
16076 "version": "0.1.2", 19601 "version": "0.1.2",
16077 "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 19602 "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
16078 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" 19603 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
19604 "dev": true
16079 }, 19605 },
16080 "undertaker": { 19606 "undertaker": {
16081 "version": "1.2.0", 19607 "version": "1.2.0",
@@ -16132,6 +19658,7 @@
16132 "version": "1.0.0", 19658 "version": "1.0.0",
16133 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", 19659 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
16134 "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", 19660 "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
19661 "dev": true,
16135 "requires": { 19662 "requires": {
16136 "arr-union": "^3.1.0", 19663 "arr-union": "^3.1.0",
16137 "get-value": "^2.0.6", 19664 "get-value": "^2.0.6",
@@ -16143,6 +19670,7 @@
16143 "version": "2.0.1", 19670 "version": "2.0.1",
16144 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 19671 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
16145 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 19672 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
19673 "dev": true,
16146 "requires": { 19674 "requires": {
16147 "is-extendable": "^0.1.0" 19675 "is-extendable": "^0.1.0"
16148 } 19676 }
@@ -16151,6 +19679,7 @@
16151 "version": "0.4.3", 19679 "version": "0.4.3",
16152 "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", 19680 "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
16153 "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", 19681 "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
19682 "dev": true,
16154 "requires": { 19683 "requires": {
16155 "extend-shallow": "^2.0.1", 19684 "extend-shallow": "^2.0.1",
16156 "is-extendable": "^0.1.1", 19685 "is-extendable": "^0.1.1",
@@ -16160,14 +19689,32 @@
16160 } 19689 }
16161 } 19690 }
16162 }, 19691 },
19692 "unique-filename": {
19693 "version": "1.1.1",
19694 "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
19695 "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
19696 "dev": true,
19697 "requires": {
19698 "unique-slug": "^2.0.0"
19699 }
19700 },
19701 "unique-slug": {
19702 "version": "2.0.1",
19703 "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
19704 "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
19705 "dev": true,
19706 "requires": {
19707 "imurmurhash": "^0.1.4"
19708 }
19709 },
16163 "unique-stream": { 19710 "unique-stream": {
16164 "version": "2.2.1", 19711 "version": "2.3.1",
16165 "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", 19712 "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
16166 "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", 19713 "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
16167 "dev": true, 19714 "dev": true,
16168 "requires": { 19715 "requires": {
16169 "json-stable-stringify": "^1.0.0", 19716 "json-stable-stringify-without-jsonify": "^1.0.1",
16170 "through2-filter": "^2.0.0" 19717 "through2-filter": "^3.0.0"
16171 } 19718 }
16172 }, 19719 },
16173 "unique-string": { 19720 "unique-string": {
@@ -16179,6 +19726,15 @@
16179 "crypto-random-string": "^1.0.0" 19726 "crypto-random-string": "^1.0.0"
16180 } 19727 }
16181 }, 19728 },
19729 "universal-user-agent": {
19730 "version": "2.0.3",
19731 "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.3.tgz",
19732 "integrity": "sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==",
19733 "dev": true,
19734 "requires": {
19735 "os-name": "^3.0.0"
19736 }
19737 },
16182 "universalify": { 19738 "universalify": {
16183 "version": "0.1.2", 19739 "version": "0.1.2",
16184 "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 19740 "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -16192,10 +19748,17 @@
16192 "normalize-path": "^2.1.1" 19748 "normalize-path": "^2.1.1"
16193 } 19749 }
16194 }, 19750 },
19751 "unpipe": {
19752 "version": "1.0.0",
19753 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
19754 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
19755 "dev": true
19756 },
16195 "unset-value": { 19757 "unset-value": {
16196 "version": "1.0.0", 19758 "version": "1.0.0",
16197 "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 19759 "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
16198 "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 19760 "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
19761 "dev": true,
16199 "requires": { 19762 "requires": {
16200 "has-value": "^0.3.1", 19763 "has-value": "^0.3.1",
16201 "isobject": "^3.0.0" 19764 "isobject": "^3.0.0"
@@ -16205,6 +19768,7 @@
16205 "version": "0.3.1", 19768 "version": "0.3.1",
16206 "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 19769 "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
16207 "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 19770 "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
19771 "dev": true,
16208 "requires": { 19772 "requires": {
16209 "get-value": "^2.0.3", 19773 "get-value": "^2.0.3",
16210 "has-values": "^0.1.4", 19774 "has-values": "^0.1.4",
@@ -16215,6 +19779,7 @@
16215 "version": "2.1.0", 19779 "version": "2.1.0",
16216 "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 19780 "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
16217 "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 19781 "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
19782 "dev": true,
16218 "requires": { 19783 "requires": {
16219 "isarray": "1.0.0" 19784 "isarray": "1.0.0"
16220 } 19785 }
@@ -16224,7 +19789,8 @@
16224 "has-values": { 19789 "has-values": {
16225 "version": "0.1.4", 19790 "version": "0.1.4",
16226 "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 19791 "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
16227 "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" 19792 "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
19793 "dev": true
16228 } 19794 }
16229 } 19795 }
16230 }, 19796 },
@@ -16240,13 +19806,6 @@
16240 "requires": { 19806 "requires": {
16241 "modify-filename": "^1.1.0", 19807 "modify-filename": "^1.1.0",
16242 "path-exists": "^3.0.0" 19808 "path-exists": "^3.0.0"
16243 },
16244 "dependencies": {
16245 "path-exists": {
16246 "version": "3.0.0",
16247 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
16248 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
16249 }
16250 } 19809 }
16251 }, 19810 },
16252 "unzip-response": { 19811 "unzip-response": {
@@ -16279,37 +19838,29 @@
16279 "xdg-basedir": "^3.0.0" 19838 "xdg-basedir": "^3.0.0"
16280 }, 19839 },
16281 "dependencies": { 19840 "dependencies": {
16282 "ansi-styles": { 19841 "ci-info": {
16283 "version": "3.2.1", 19842 "version": "1.6.0",
16284 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 19843 "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
16285 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 19844 "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
16286 "dev": true, 19845 "dev": true
16287 "requires": {
16288 "color-convert": "^1.9.0"
16289 }
16290 },
16291 "chalk": {
16292 "version": "2.4.1",
16293 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
16294 "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
16295 "dev": true,
16296 "requires": {
16297 "ansi-styles": "^3.2.1",
16298 "escape-string-regexp": "^1.0.5",
16299 "supports-color": "^5.3.0"
16300 }
16301 }, 19846 },
16302 "supports-color": { 19847 "is-ci": {
16303 "version": "5.5.0", 19848 "version": "1.2.1",
16304 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 19849 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
16305 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 19850 "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
16306 "dev": true, 19851 "dev": true,
16307 "requires": { 19852 "requires": {
16308 "has-flag": "^3.0.0" 19853 "ci-info": "^1.5.0"
16309 } 19854 }
16310 } 19855 }
16311 } 19856 }
16312 }, 19857 },
19858 "upper-case": {
19859 "version": "1.1.3",
19860 "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
19861 "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
19862 "dev": true
19863 },
16313 "uri-js": { 19864 "uri-js": {
16314 "version": "4.2.2", 19865 "version": "4.2.2",
16315 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 19866 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -16317,20 +19868,41 @@
16317 "dev": true, 19868 "dev": true,
16318 "requires": { 19869 "requires": {
16319 "punycode": "^2.1.0" 19870 "punycode": "^2.1.0"
19871 }
19872 },
19873 "urix": {
19874 "version": "0.1.0",
19875 "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
19876 "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
19877 "dev": true
19878 },
19879 "url": {
19880 "version": "0.11.0",
19881 "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
19882 "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
19883 "dev": true,
19884 "requires": {
19885 "punycode": "1.3.2",
19886 "querystring": "0.2.0"
16320 }, 19887 },
16321 "dependencies": { 19888 "dependencies": {
16322 "punycode": { 19889 "punycode": {
16323 "version": "2.1.1", 19890 "version": "1.3.2",
16324 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 19891 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
16325 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 19892 "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
16326 "dev": true 19893 "dev": true
16327 } 19894 }
16328 } 19895 }
16329 }, 19896 },
16330 "urix": { 19897 "url-parse": {
16331 "version": "0.1.0", 19898 "version": "1.4.4",
16332 "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 19899 "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz",
16333 "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" 19900 "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==",
19901 "dev": true,
19902 "requires": {
19903 "querystringify": "^2.0.0",
19904 "requires-port": "^1.0.0"
19905 }
16334 }, 19906 },
16335 "url-parse-lax": { 19907 "url-parse-lax": {
16336 "version": "1.0.0", 19908 "version": "1.0.0",
@@ -16341,15 +19913,28 @@
16341 "prepend-http": "^1.0.1" 19913 "prepend-http": "^1.0.1"
16342 } 19914 }
16343 }, 19915 },
19916 "url-template": {
19917 "version": "2.0.8",
19918 "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
19919 "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=",
19920 "dev": true
19921 },
16344 "use": { 19922 "use": {
16345 "version": "3.1.1", 19923 "version": "3.1.1",
16346 "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 19924 "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
16347 "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" 19925 "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
19926 "dev": true
16348 }, 19927 },
16349 "user-home": { 19928 "user-home": {
16350 "version": "1.1.1", 19929 "version": "1.1.1",
16351 "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 19930 "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
16352 "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" 19931 "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
19932 "dev": true
19933 },
19934 "utf8": {
19935 "version": "3.0.0",
19936 "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
19937 "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ=="
16353 }, 19938 },
16354 "utf8-byte-length": { 19939 "utf8-byte-length": {
16355 "version": "1.0.4", 19940 "version": "1.0.4",
@@ -16357,11 +19942,36 @@
16357 "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", 19942 "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=",
16358 "dev": true 19943 "dev": true
16359 }, 19944 },
19945 "util": {
19946 "version": "0.11.1",
19947 "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
19948 "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
19949 "dev": true,
19950 "requires": {
19951 "inherits": "2.0.3"
19952 }
19953 },
16360 "util-deprecate": { 19954 "util-deprecate": {
16361 "version": "1.0.2", 19955 "version": "1.0.2",
16362 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 19956 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
16363 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 19957 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
16364 }, 19958 },
19959 "util.promisify": {
19960 "version": "1.0.0",
19961 "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
19962 "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
19963 "dev": true,
19964 "requires": {
19965 "define-properties": "^1.1.2",
19966 "object.getownpropertydescriptors": "^2.0.3"
19967 }
19968 },
19969 "utila": {
19970 "version": "0.4.0",
19971 "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
19972 "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
19973 "dev": true
19974 },
16365 "utils-merge": { 19975 "utils-merge": {
16366 "version": "1.0.0", 19976 "version": "1.0.0",
16367 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", 19977 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
@@ -16373,10 +19983,16 @@
16373 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 19983 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
16374 "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 19984 "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
16375 }, 19985 },
19986 "v8-compile-cache": {
19987 "version": "2.0.2",
19988 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
19989 "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
19990 "dev": true
19991 },
16376 "v8flags": { 19992 "v8flags": {
16377 "version": "3.1.1", 19993 "version": "3.1.2",
16378 "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", 19994 "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz",
16379 "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", 19995 "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==",
16380 "dev": true, 19996 "dev": true,
16381 "requires": { 19997 "requires": {
16382 "homedir-polyfill": "^1.0.1" 19998 "homedir-polyfill": "^1.0.1"
@@ -16386,18 +20002,32 @@
16386 "version": "3.0.4", 20002 "version": "3.0.4",
16387 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 20003 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
16388 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 20004 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
16389 "dev": true,
16390 "requires": { 20005 "requires": {
16391 "spdx-correct": "^3.0.0", 20006 "spdx-correct": "^3.0.0",
16392 "spdx-expression-parse": "^3.0.0" 20007 "spdx-expression-parse": "^3.0.0"
16393 } 20008 }
16394 }, 20009 },
20010 "validate-npm-package-name": {
20011 "version": "3.0.0",
20012 "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
20013 "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
20014 "dev": true,
20015 "requires": {
20016 "builtins": "^1.0.3"
20017 }
20018 },
16395 "value-or-function": { 20019 "value-or-function": {
16396 "version": "3.0.0", 20020 "version": "3.0.0",
16397 "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", 20021 "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
16398 "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", 20022 "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
16399 "dev": true 20023 "dev": true
16400 }, 20024 },
20025 "vary": {
20026 "version": "1.1.2",
20027 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
20028 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
20029 "dev": true
20030 },
16401 "verror": { 20031 "verror": {
16402 "version": "1.10.0", 20032 "version": "1.10.0",
16403 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 20033 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
@@ -16421,6 +20051,14 @@
16421 "cloneable-readable": "^1.0.0", 20051 "cloneable-readable": "^1.0.0",
16422 "remove-trailing-separator": "^1.0.1", 20052 "remove-trailing-separator": "^1.0.1",
16423 "replace-ext": "^1.0.0" 20053 "replace-ext": "^1.0.0"
20054 },
20055 "dependencies": {
20056 "clone": {
20057 "version": "2.1.2",
20058 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
20059 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
20060 "dev": true
20061 }
16424 } 20062 }
16425 }, 20063 },
16426 "vinyl-fs": { 20064 "vinyl-fs": {
@@ -16446,6 +20084,32 @@
16446 "value-or-function": "^3.0.0", 20084 "value-or-function": "^3.0.0",
16447 "vinyl": "^2.0.0", 20085 "vinyl": "^2.0.0",
16448 "vinyl-sourcemap": "^1.1.0" 20086 "vinyl-sourcemap": "^1.1.0"
20087 },
20088 "dependencies": {
20089 "readable-stream": {
20090 "version": "2.3.6",
20091 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
20092 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
20093 "dev": true,
20094 "requires": {
20095 "core-util-is": "~1.0.0",
20096 "inherits": "~2.0.3",
20097 "isarray": "~1.0.0",
20098 "process-nextick-args": "~2.0.0",
20099 "safe-buffer": "~5.1.1",
20100 "string_decoder": "~1.1.1",
20101 "util-deprecate": "~1.0.1"
20102 }
20103 },
20104 "string_decoder": {
20105 "version": "1.1.1",
20106 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
20107 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
20108 "dev": true,
20109 "requires": {
20110 "safe-buffer": "~5.1.0"
20111 }
20112 }
16449 } 20113 }
16450 }, 20114 },
16451 "vinyl-sourcemap": { 20115 "vinyl-sourcemap": {
@@ -16470,12 +20134,38 @@
16470 "dev": true, 20134 "dev": true,
16471 "requires": { 20135 "requires": {
16472 "source-map": "^0.5.1" 20136 "source-map": "^0.5.1"
20137 },
20138 "dependencies": {
20139 "source-map": {
20140 "version": "0.5.7",
20141 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
20142 "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
20143 "dev": true
20144 }
20145 }
20146 },
20147 "vm-browserify": {
20148 "version": "0.0.4",
20149 "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
20150 "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
20151 "dev": true,
20152 "requires": {
20153 "indexof": "0.0.1"
20154 }
20155 },
20156 "w3c-hr-time": {
20157 "version": "1.0.1",
20158 "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
20159 "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
20160 "dev": true,
20161 "requires": {
20162 "browser-process-hrtime": "^0.1.2"
16473 } 20163 }
16474 }, 20164 },
16475 "wait-on": { 20165 "wait-on": {
16476 "version": "3.1.0", 20166 "version": "3.2.0",
16477 "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.1.0.tgz", 20167 "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.2.0.tgz",
16478 "integrity": "sha512-yjYwMvnOhA3PTghvzPQAmT2TSVvBMbOdBRRjMPfBD6FU5si/PkAsI8P3X5sh9ntkYjZvPQLpQRpDUyax5h4COg==", 20168 "integrity": "sha512-QUGNKlKLDyY6W/qHdxaRlXUAgLPe+3mLL/tRByHpRNcHs/c7dZXbu+OnJWGNux6tU1WFh/Z8aEwvbuzSAu79Zg==",
16479 "dev": true, 20169 "dev": true,
16480 "requires": { 20170 "requires": {
16481 "core-js": "^2.5.7", 20171 "core-js": "^2.5.7",
@@ -16511,35 +20201,441 @@
16511 "topo": "3.x.x" 20201 "topo": "3.x.x"
16512 } 20202 }
16513 }, 20203 },
16514 "punycode": { 20204 "topo": {
20205 "version": "3.0.3",
20206 "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz",
20207 "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==",
20208 "dev": true,
20209 "requires": {
20210 "hoek": "6.x.x"
20211 },
20212 "dependencies": {
20213 "hoek": {
20214 "version": "6.1.2",
20215 "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.2.tgz",
20216 "integrity": "sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q==",
20217 "dev": true
20218 }
20219 }
20220 }
20221 }
20222 },
20223 "walker": {
20224 "version": "1.0.7",
20225 "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
20226 "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
20227 "dev": true,
20228 "requires": {
20229 "makeerror": "1.0.x"
20230 }
20231 },
20232 "warning": {
20233 "version": "3.0.0",
20234 "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
20235 "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
20236 "requires": {
20237 "loose-envify": "^1.0.0"
20238 }
20239 },
20240 "watchpack": {
20241 "version": "1.6.0",
20242 "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
20243 "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
20244 "dev": true,
20245 "requires": {
20246 "chokidar": "^2.0.2",
20247 "graceful-fs": "^4.1.2",
20248 "neo-async": "^2.5.0"
20249 }
20250 },
20251 "wbuf": {
20252 "version": "1.7.3",
20253 "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
20254 "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
20255 "dev": true,
20256 "requires": {
20257 "minimalistic-assert": "^1.0.0"
20258 }
20259 },
20260 "wcwidth": {
20261 "version": "1.0.1",
20262 "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
20263 "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
20264 "dev": true,
20265 "requires": {
20266 "defaults": "^1.0.3"
20267 }
20268 },
20269 "webidl-conversions": {
20270 "version": "4.0.2",
20271 "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
20272 "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
20273 "dev": true
20274 },
20275 "webpack": {
20276 "version": "4.28.3",
20277 "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.3.tgz",
20278 "integrity": "sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg==",
20279 "dev": true,
20280 "requires": {
20281 "@webassemblyjs/ast": "1.7.11",
20282 "@webassemblyjs/helper-module-context": "1.7.11",
20283 "@webassemblyjs/wasm-edit": "1.7.11",
20284 "@webassemblyjs/wasm-parser": "1.7.11",
20285 "acorn": "^5.6.2",
20286 "acorn-dynamic-import": "^3.0.0",
20287 "ajv": "^6.1.0",
20288 "ajv-keywords": "^3.1.0",
20289 "chrome-trace-event": "^1.0.0",
20290 "enhanced-resolve": "^4.1.0",
20291 "eslint-scope": "^4.0.0",
20292 "json-parse-better-errors": "^1.0.2",
20293 "loader-runner": "^2.3.0",
20294 "loader-utils": "^1.1.0",
20295 "memory-fs": "~0.4.1",
20296 "micromatch": "^3.1.8",
20297 "mkdirp": "~0.5.0",
20298 "neo-async": "^2.5.0",
20299 "node-libs-browser": "^2.0.0",
20300 "schema-utils": "^0.4.4",
20301 "tapable": "^1.1.0",
20302 "terser-webpack-plugin": "^1.1.0",
20303 "watchpack": "^1.5.0",
20304 "webpack-sources": "^1.3.0"
20305 },
20306 "dependencies": {
20307 "acorn": {
20308 "version": "5.7.3",
20309 "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
20310 "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
20311 "dev": true
20312 },
20313 "eslint-scope": {
20314 "version": "4.0.0",
20315 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
20316 "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
20317 "dev": true,
20318 "requires": {
20319 "esrecurse": "^4.1.0",
20320 "estraverse": "^4.1.1"
20321 }
20322 },
20323 "schema-utils": {
20324 "version": "0.4.7",
20325 "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
20326 "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
20327 "dev": true,
20328 "requires": {
20329 "ajv": "^6.1.0",
20330 "ajv-keywords": "^3.1.0"
20331 }
20332 }
20333 }
20334 },
20335 "webpack-cli": {
20336 "version": "3.2.1",
20337 "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.1.tgz",
20338 "integrity": "sha512-jeJveHwz/vwpJ3B8bxEL5a/rVKIpRNJDsKggfKnxuYeohNDW4Y/wB9N/XHJA093qZyS0r6mYL+/crLsIol4WKA==",
20339 "dev": true,
20340 "requires": {
20341 "chalk": "^2.4.1",
20342 "cross-spawn": "^6.0.5",
20343 "enhanced-resolve": "^4.1.0",
20344 "findup-sync": "^2.0.0",
20345 "global-modules": "^1.0.0",
20346 "global-modules-path": "^2.3.0",
20347 "import-local": "^2.0.0",
20348 "interpret": "^1.1.0",
20349 "lightercollective": "^0.1.0",
20350 "loader-utils": "^1.1.0",
20351 "supports-color": "^5.5.0",
20352 "v8-compile-cache": "^2.0.2",
20353 "yargs": "^12.0.4"
20354 },
20355 "dependencies": {
20356 "import-local": {
20357 "version": "2.0.0",
20358 "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
20359 "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
20360 "dev": true,
20361 "requires": {
20362 "pkg-dir": "^3.0.0",
20363 "resolve-cwd": "^2.0.0"
20364 }
20365 },
20366 "pkg-dir": {
20367 "version": "3.0.0",
20368 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
20369 "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
20370 "dev": true,
20371 "requires": {
20372 "find-up": "^3.0.0"
20373 }
20374 }
20375 }
20376 },
20377 "webpack-dev-middleware": {
20378 "version": "3.4.0",
20379 "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz",
20380 "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==",
20381 "dev": true,
20382 "requires": {
20383 "memory-fs": "~0.4.1",
20384 "mime": "^2.3.1",
20385 "range-parser": "^1.0.3",
20386 "webpack-log": "^2.0.0"
20387 }
20388 },
20389 "webpack-dev-server": {
20390 "version": "3.1.14",
20391 "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz",
20392 "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==",
20393 "dev": true,
20394 "requires": {
20395 "ansi-html": "0.0.7",
20396 "bonjour": "^3.5.0",
20397 "chokidar": "^2.0.0",
20398 "compression": "^1.5.2",
20399 "connect-history-api-fallback": "^1.3.0",
20400 "debug": "^3.1.0",
20401 "del": "^3.0.0",
20402 "express": "^4.16.2",
20403 "html-entities": "^1.2.0",
20404 "http-proxy-middleware": "~0.18.0",
20405 "import-local": "^2.0.0",
20406 "internal-ip": "^3.0.1",
20407 "ip": "^1.1.5",
20408 "killable": "^1.0.0",
20409 "loglevel": "^1.4.1",
20410 "opn": "^5.1.0",
20411 "portfinder": "^1.0.9",
20412 "schema-utils": "^1.0.0",
20413 "selfsigned": "^1.9.1",
20414 "semver": "^5.6.0",
20415 "serve-index": "^1.7.2",
20416 "sockjs": "0.3.19",
20417 "sockjs-client": "1.3.0",
20418 "spdy": "^4.0.0",
20419 "strip-ansi": "^3.0.0",
20420 "supports-color": "^5.1.0",
20421 "url": "^0.11.0",
20422 "webpack-dev-middleware": "3.4.0",
20423 "webpack-log": "^2.0.0",
20424 "yargs": "12.0.2"
20425 },
20426 "dependencies": {
20427 "accepts": {
20428 "version": "1.3.5",
20429 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
20430 "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
20431 "dev": true,
20432 "requires": {
20433 "mime-types": "~2.1.18",
20434 "negotiator": "0.6.1"
20435 }
20436 },
20437 "ansi-regex": {
16515 "version": "2.1.1", 20438 "version": "2.1.1",
16516 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 20439 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
16517 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 20440 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
20441 "dev": true
20442 },
20443 "batch": {
20444 "version": "0.6.1",
20445 "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
20446 "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
16518 "dev": true 20447 "dev": true
16519 }, 20448 },
16520 "rx": { 20449 "camelcase": {
16521 "version": "4.1.0", 20450 "version": "4.1.0",
16522 "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", 20451 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
16523 "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", 20452 "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
16524 "dev": true 20453 "dev": true
16525 }, 20454 },
16526 "topo": { 20455 "debug": {
20456 "version": "3.2.6",
20457 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
20458 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
20459 "dev": true,
20460 "requires": {
20461 "ms": "^2.1.1"
20462 }
20463 },
20464 "decamelize": {
20465 "version": "2.0.0",
20466 "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
20467 "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
20468 "dev": true,
20469 "requires": {
20470 "xregexp": "4.0.0"
20471 }
20472 },
20473 "escape-html": {
20474 "version": "1.0.3",
20475 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
20476 "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
20477 "dev": true
20478 },
20479 "import-local": {
20480 "version": "2.0.0",
20481 "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
20482 "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
20483 "dev": true,
20484 "requires": {
20485 "pkg-dir": "^3.0.0",
20486 "resolve-cwd": "^2.0.0"
20487 }
20488 },
20489 "ms": {
20490 "version": "2.1.1",
20491 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
20492 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
20493 "dev": true
20494 },
20495 "negotiator": {
20496 "version": "0.6.1",
20497 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
20498 "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
20499 "dev": true
20500 },
20501 "pkg-dir": {
16527 "version": "3.0.0", 20502 "version": "3.0.0",
16528 "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.0.tgz", 20503 "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
16529 "integrity": "sha512-Tlu1fGlR90iCdIPURqPiufqAlCZYzLjHYVVbcFWDMcX7+tK8hdZWAfsMrD/pBul9jqHHwFjNdf1WaxA9vTRRhw==", 20504 "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
16530 "dev": true, 20505 "dev": true,
16531 "requires": { 20506 "requires": {
16532 "hoek": "5.x.x" 20507 "find-up": "^3.0.0"
20508 }
20509 },
20510 "serve-index": {
20511 "version": "1.9.1",
20512 "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
20513 "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
20514 "dev": true,
20515 "requires": {
20516 "accepts": "~1.3.4",
20517 "batch": "0.6.1",
20518 "debug": "2.6.9",
20519 "escape-html": "~1.0.3",
20520 "http-errors": "~1.6.2",
20521 "mime-types": "~2.1.17",
20522 "parseurl": "~1.3.2"
20523 },
20524 "dependencies": {
20525 "debug": {
20526 "version": "2.6.9",
20527 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
20528 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
20529 "dev": true,
20530 "requires": {
20531 "ms": "2.0.0"
20532 }
20533 },
20534 "ms": {
20535 "version": "2.0.0",
20536 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
20537 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
20538 "dev": true
20539 }
20540 }
20541 },
20542 "strip-ansi": {
20543 "version": "3.0.1",
20544 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
20545 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
20546 "dev": true,
20547 "requires": {
20548 "ansi-regex": "^2.0.0"
20549 }
20550 },
20551 "yargs": {
20552 "version": "12.0.2",
20553 "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
20554 "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
20555 "dev": true,
20556 "requires": {
20557 "cliui": "^4.0.0",
20558 "decamelize": "^2.0.0",
20559 "find-up": "^3.0.0",
20560 "get-caller-file": "^1.0.1",
20561 "os-locale": "^3.0.0",
20562 "require-directory": "^2.1.1",
20563 "require-main-filename": "^1.0.1",
20564 "set-blocking": "^2.0.0",
20565 "string-width": "^2.0.0",
20566 "which-module": "^2.0.0",
20567 "y18n": "^3.2.1 || ^4.0.0",
20568 "yargs-parser": "^10.1.0"
20569 }
20570 },
20571 "yargs-parser": {
20572 "version": "10.1.0",
20573 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
20574 "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
20575 "dev": true,
20576 "requires": {
20577 "camelcase": "^4.1.0"
16533 } 20578 }
16534 } 20579 }
16535 } 20580 }
16536 }, 20581 },
16537 "warning": { 20582 "webpack-log": {
16538 "version": "3.0.0", 20583 "version": "2.0.0",
16539 "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", 20584 "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
16540 "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", 20585 "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
20586 "dev": true,
16541 "requires": { 20587 "requires": {
16542 "loose-envify": "^1.0.0" 20588 "ansi-colors": "^3.0.0",
20589 "uuid": "^3.3.2"
20590 },
20591 "dependencies": {
20592 "ansi-colors": {
20593 "version": "3.2.3",
20594 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
20595 "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
20596 "dev": true
20597 }
20598 }
20599 },
20600 "webpack-node-externals": {
20601 "version": "1.7.2",
20602 "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz",
20603 "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==",
20604 "dev": true
20605 },
20606 "webpack-sources": {
20607 "version": "1.3.0",
20608 "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
20609 "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
20610 "dev": true,
20611 "requires": {
20612 "source-list-map": "^2.0.0",
20613 "source-map": "~0.6.1"
20614 }
20615 },
20616 "websocket-driver": {
20617 "version": "0.7.0",
20618 "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
20619 "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
20620 "dev": true,
20621 "requires": {
20622 "http-parser-js": ">=0.4.0",
20623 "websocket-extensions": ">=0.1.1"
20624 }
20625 },
20626 "websocket-extensions": {
20627 "version": "0.1.3",
20628 "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
20629 "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
20630 "dev": true
20631 },
20632 "whatwg-encoding": {
20633 "version": "1.0.5",
20634 "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
20635 "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
20636 "dev": true,
20637 "requires": {
20638 "iconv-lite": "0.4.24"
16543 } 20639 }
16544 }, 20640 },
16545 "whatwg-fetch": { 20641 "whatwg-fetch": {
@@ -16547,25 +20643,42 @@
16547 "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", 20643 "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
16548 "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" 20644 "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
16549 }, 20645 },
20646 "whatwg-mimetype": {
20647 "version": "2.3.0",
20648 "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
20649 "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
20650 "dev": true
20651 },
20652 "whatwg-url": {
20653 "version": "7.0.0",
20654 "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
20655 "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
20656 "dev": true,
20657 "requires": {
20658 "lodash.sortby": "^4.7.0",
20659 "tr46": "^1.0.1",
20660 "webidl-conversions": "^4.0.2"
20661 }
20662 },
16550 "which": { 20663 "which": {
16551 "version": "1.3.1", 20664 "version": "1.3.1",
16552 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 20665 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
16553 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 20666 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
20667 "dev": true,
16554 "requires": { 20668 "requires": {
16555 "isexe": "^2.0.0" 20669 "isexe": "^2.0.0"
16556 } 20670 }
16557 }, 20671 },
16558 "which-module": { 20672 "which-module": {
16559 "version": "1.0.0", 20673 "version": "2.0.0",
16560 "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", 20674 "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
16561 "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", 20675 "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
16562 "dev": true 20676 "dev": true
16563 }, 20677 },
16564 "wide-align": { 20678 "wide-align": {
16565 "version": "1.1.3", 20679 "version": "1.1.3",
16566 "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 20680 "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
16567 "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 20681 "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
16568 "dev": true,
16569 "requires": { 20682 "requires": {
16570 "string-width": "^1.0.2 || 2" 20683 "string-width": "^1.0.2 || 2"
16571 } 20684 }
@@ -16577,39 +20690,6 @@
16577 "dev": true, 20690 "dev": true,
16578 "requires": { 20691 "requires": {
16579 "string-width": "^2.1.1" 20692 "string-width": "^2.1.1"
16580 },
16581 "dependencies": {
16582 "ansi-regex": {
16583 "version": "3.0.0",
16584 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
16585 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
16586 "dev": true
16587 },
16588 "is-fullwidth-code-point": {
16589 "version": "2.0.0",
16590 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
16591 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
16592 "dev": true
16593 },
16594 "string-width": {
16595 "version": "2.1.1",
16596 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
16597 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
16598 "dev": true,
16599 "requires": {
16600 "is-fullwidth-code-point": "^2.0.0",
16601 "strip-ansi": "^4.0.0"
16602 }
16603 },
16604 "strip-ansi": {
16605 "version": "4.0.0",
16606 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
16607 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
16608 "dev": true,
16609 "requires": {
16610 "ansi-regex": "^3.0.0"
16611 }
16612 }
16613 } 20693 }
16614 }, 20694 },
16615 "window-size": { 20695 "window-size": {
@@ -16627,14 +20707,46 @@
16627 } 20707 }
16628 }, 20708 },
16629 "windows-quiet-hours": { 20709 "windows-quiet-hours": {
16630 "version": "1.2.5", 20710 "version": "1.2.7",
16631 "resolved": "https://registry.npmjs.org/windows-quiet-hours/-/windows-quiet-hours-1.2.5.tgz", 20711 "resolved": "https://registry.npmjs.org/windows-quiet-hours/-/windows-quiet-hours-1.2.7.tgz",
16632 "integrity": "sha512-0JbfFw91Ys+A0vSR0pratoJgfTwWNFLHniu59dpOg1FC5IvpPSYQIATcQqhdy41HYSCijmT7Pyv9w0I2zC0+5w==", 20712 "integrity": "sha512-PjKM2/RQhZ3ikG4COq0vPpXvmJsxckcg2YN3xmQv8kZl5l1uu00a/epSGDeY6tczDPkzBhoThBz1FKRqxBA7cQ==",
16633 "requires": { 20713 "requires": {
16634 "bindings": "^1.3.0", 20714 "bindings": "^1.3.0",
16635 "nan": "^2.7.0" 20715 "nan": "^2.7.0"
16636 } 20716 }
16637 }, 20717 },
20718 "windows-release": {
20719 "version": "3.1.0",
20720 "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.1.0.tgz",
20721 "integrity": "sha512-hBb7m7acFgQPQc222uEQTmdcGLeBmQLNLFIh0rDk3CwFOBrfjefLzEfEfmpMq8Af/n/GnFf3eYf203FY1PmudA==",
20722 "dev": true,
20723 "requires": {
20724 "execa": "^0.10.0"
20725 },
20726 "dependencies": {
20727 "execa": {
20728 "version": "0.10.0",
20729 "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
20730 "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
20731 "dev": true,
20732 "requires": {
20733 "cross-spawn": "^6.0.0",
20734 "get-stream": "^3.0.0",
20735 "is-stream": "^1.1.0",
20736 "npm-run-path": "^2.0.0",
20737 "p-finally": "^1.0.0",
20738 "signal-exit": "^3.0.0",
20739 "strip-eof": "^1.0.0"
20740 }
20741 },
20742 "get-stream": {
20743 "version": "3.0.0",
20744 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
20745 "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
20746 "dev": true
20747 }
20748 }
20749 },
16638 "winreg": { 20750 "winreg": {
16639 "version": "1.2.2", 20751 "version": "1.2.2",
16640 "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.2.tgz", 20752 "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.2.tgz",
@@ -16647,18 +20759,65 @@
16647 "dev": true 20759 "dev": true
16648 }, 20760 },
16649 "wordwrap": { 20761 "wordwrap": {
16650 "version": "1.0.0", 20762 "version": "0.0.3",
16651 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 20763 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
16652 "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 20764 "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
16653 "dev": true 20765 "dev": true
16654 }, 20766 },
20767 "worker-farm": {
20768 "version": "1.6.0",
20769 "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
20770 "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
20771 "dev": true,
20772 "requires": {
20773 "errno": "~0.1.7"
20774 }
20775 },
16655 "wrap-ansi": { 20776 "wrap-ansi": {
16656 "version": "2.1.0", 20777 "version": "2.1.0",
16657 "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 20778 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
16658 "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 20779 "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
20780 "dev": true,
16659 "requires": { 20781 "requires": {
16660 "string-width": "^1.0.1", 20782 "string-width": "^1.0.1",
16661 "strip-ansi": "^3.0.1" 20783 "strip-ansi": "^3.0.1"
20784 },
20785 "dependencies": {
20786 "ansi-regex": {
20787 "version": "2.1.1",
20788 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
20789 "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
20790 "dev": true
20791 },
20792 "is-fullwidth-code-point": {
20793 "version": "1.0.0",
20794 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
20795 "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
20796 "dev": true,
20797 "requires": {
20798 "number-is-nan": "^1.0.0"
20799 }
20800 },
20801 "string-width": {
20802 "version": "1.0.2",
20803 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
20804 "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
20805 "dev": true,
20806 "requires": {
20807 "code-point-at": "^1.0.0",
20808 "is-fullwidth-code-point": "^1.0.0",
20809 "strip-ansi": "^3.0.0"
20810 }
20811 },
20812 "strip-ansi": {
20813 "version": "3.0.1",
20814 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
20815 "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
20816 "dev": true,
20817 "requires": {
20818 "ansi-regex": "^2.0.0"
20819 }
20820 }
16662 } 20821 }
16663 }, 20822 },
16664 "wrappy": { 20823 "wrappy": {
@@ -16670,6 +20829,7 @@
16670 "version": "6.3.0", 20829 "version": "6.3.0",
16671 "resolved": "https://registry.npmjs.org/wreck/-/wreck-6.3.0.tgz", 20830 "resolved": "https://registry.npmjs.org/wreck/-/wreck-6.3.0.tgz",
16672 "integrity": "sha1-oTaXafB7u2LWo3gzanhx/Hc8dAs=", 20831 "integrity": "sha1-oTaXafB7u2LWo3gzanhx/Hc8dAs=",
20832 "dev": true,
16673 "requires": { 20833 "requires": {
16674 "boom": "2.x.x", 20834 "boom": "2.x.x",
16675 "hoek": "2.x.x" 20835 "hoek": "2.x.x"
@@ -16685,9 +20845,9 @@
16685 } 20845 }
16686 }, 20846 },
16687 "write-file-atomic": { 20847 "write-file-atomic": {
16688 "version": "2.3.0", 20848 "version": "2.4.2",
16689 "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", 20849 "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
16690 "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", 20850 "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
16691 "dev": true, 20851 "dev": true,
16692 "requires": { 20852 "requires": {
16693 "graceful-fs": "^4.1.11", 20853 "graceful-fs": "^4.1.11",
@@ -16695,14 +20855,58 @@
16695 "signal-exit": "^3.0.2" 20855 "signal-exit": "^3.0.2"
16696 } 20856 }
16697 }, 20857 },
16698 "ws": { 20858 "write-json-file": {
16699 "version": "1.1.5", 20859 "version": "2.3.0",
16700 "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", 20860 "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz",
16701 "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", 20861 "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=",
16702 "dev": true, 20862 "dev": true,
16703 "requires": { 20863 "requires": {
16704 "options": ">=0.0.5", 20864 "detect-indent": "^5.0.0",
16705 "ultron": "1.0.x" 20865 "graceful-fs": "^4.1.2",
20866 "make-dir": "^1.0.0",
20867 "pify": "^3.0.0",
20868 "sort-keys": "^2.0.0",
20869 "write-file-atomic": "^2.0.0"
20870 },
20871 "dependencies": {
20872 "sort-keys": {
20873 "version": "2.0.0",
20874 "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
20875 "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
20876 "dev": true,
20877 "requires": {
20878 "is-plain-obj": "^1.0.0"
20879 }
20880 }
20881 }
20882 },
20883 "write-pkg": {
20884 "version": "3.2.0",
20885 "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz",
20886 "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==",
20887 "dev": true,
20888 "requires": {
20889 "sort-keys": "^2.0.0",
20890 "write-json-file": "^2.2.0"
20891 },
20892 "dependencies": {
20893 "sort-keys": {
20894 "version": "2.0.0",
20895 "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
20896 "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
20897 "dev": true,
20898 "requires": {
20899 "is-plain-obj": "^1.0.0"
20900 }
20901 }
20902 }
20903 },
20904 "ws": {
20905 "version": "6.2.1",
20906 "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
20907 "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
20908 "requires": {
20909 "async-limiter": "~1.0.0"
16706 } 20910 }
16707 }, 20911 },
16708 "wtf-8": { 20912 "wtf-8": {
@@ -16717,9 +20921,15 @@
16717 "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", 20921 "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
16718 "dev": true 20922 "dev": true
16719 }, 20923 },
20924 "xml-name-validator": {
20925 "version": "3.0.0",
20926 "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
20927 "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
20928 "dev": true
20929 },
16720 "xmlbuilder": { 20930 "xmlbuilder": {
16721 "version": "9.0.7", 20931 "version": "9.0.7",
16722 "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", 20932 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
16723 "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", 20933 "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
16724 "dev": true 20934 "dev": true
16725 }, 20935 },
@@ -16747,44 +20957,44 @@
16747 "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 20957 "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
16748 }, 20958 },
16749 "y18n": { 20959 "y18n": {
16750 "version": "3.2.1", 20960 "version": "4.0.0",
16751 "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", 20961 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
16752 "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" 20962 "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
20963 "dev": true
16753 }, 20964 },
16754 "yallist": { 20965 "yallist": {
16755 "version": "2.1.2", 20966 "version": "3.0.3",
16756 "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 20967 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
16757 "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 20968 "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A=="
16758 "dev": true
16759 }, 20969 },
16760 "yargs": { 20970 "yargs": {
16761 "version": "7.1.0", 20971 "version": "12.0.5",
16762 "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", 20972 "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
16763 "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", 20973 "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
16764 "dev": true, 20974 "dev": true,
16765 "requires": { 20975 "requires": {
16766 "camelcase": "^3.0.0", 20976 "cliui": "^4.0.0",
16767 "cliui": "^3.2.0", 20977 "decamelize": "^1.2.0",
16768 "decamelize": "^1.1.1", 20978 "find-up": "^3.0.0",
16769 "get-caller-file": "^1.0.1", 20979 "get-caller-file": "^1.0.1",
16770 "os-locale": "^1.4.0", 20980 "os-locale": "^3.0.0",
16771 "read-pkg-up": "^1.0.1",
16772 "require-directory": "^2.1.1", 20981 "require-directory": "^2.1.1",
16773 "require-main-filename": "^1.0.1", 20982 "require-main-filename": "^1.0.1",
16774 "set-blocking": "^2.0.0", 20983 "set-blocking": "^2.0.0",
16775 "string-width": "^1.0.2", 20984 "string-width": "^2.0.0",
16776 "which-module": "^1.0.0", 20985 "which-module": "^2.0.0",
16777 "y18n": "^3.2.1", 20986 "y18n": "^3.2.1 || ^4.0.0",
16778 "yargs-parser": "^5.0.0" 20987 "yargs-parser": "^11.1.1"
16779 } 20988 }
16780 }, 20989 },
16781 "yargs-parser": { 20990 "yargs-parser": {
16782 "version": "5.0.0", 20991 "version": "11.1.1",
16783 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", 20992 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
16784 "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", 20993 "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
16785 "dev": true, 20994 "dev": true,
16786 "requires": { 20995 "requires": {
16787 "camelcase": "^3.0.0" 20996 "camelcase": "^5.0.0",
20997 "decamelize": "^1.2.0"
16788 } 20998 }
16789 }, 20999 },
16790 "yauzl": { 21000 "yauzl": {
diff --git a/package.json b/package.json
index a3788a51d..c1a8c310f 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
2 "name": "franz", 2 "name": "franz",
3 "productName": "Franz", 3 "productName": "Franz",
4 "appId": "com.meetfranz.franz", 4 "appId": "com.meetfranz.franz",
5 "version": "5.0.0-beta.24", 5 "version": "5.1.0",
6 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", 6 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.",
7 "copyright": "adlk x franz - Stefan Malzner", 7 "copyright": "adlk x franz - Stefan Malzner",
8 "main": "index.js", 8 "main": "index.js",
@@ -15,14 +15,20 @@
15 "start:local": "cross-env LOCAL_API=1 npm start", 15 "start:local": "cross-env LOCAL_API=1 npm start",
16 "start:live": "cross-env LIVE_API=1 npm start", 16 "start:live": "cross-env LIVE_API=1 npm start",
17 "dev": "cross-env NODE_ENV=development gulp dev", 17 "dev": "cross-env NODE_ENV=development gulp dev",
18 "test": "jest",
19 "test:watch": "jest --watch",
18 "lint": "eslint src", 20 "lint": "eslint src",
21 "manage-translations": "node ./src/i18n/manage-translations.js",
19 "sign": "gulp sign", 22 "sign": "gulp sign",
20 "prebuild": "gulp build", 23 "prebuild": "gulp build",
21 "build": "npx electron-builder --publish onTag", 24 "build": "npx electron-builder --publish onTag",
22 "rebuild": "npx electron-builder install-app-deps", 25 "rebuild": "npx electron-rebuild",
23 "commit": "git-cz", 26 "commit": "git-cz",
24 "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", 27 "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
25 "reformat-files": "npx prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"" 28 "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"",
29 "packages": "npx lerna publish --no-git-tag-version",
30 "uidev": "cd uidev && webpack-dev-server",
31 "postinstall": "npx lerna run prepare"
26 }, 32 },
27 "keywords": [], 33 "keywords": [],
28 "author": "Stefan Malzner <stefan@adlk.io>", 34 "author": "Stefan Malzner <stefan@adlk.io>",
@@ -31,38 +37,38 @@
31 "@babel/polyfill": "^7.0.0", 37 "@babel/polyfill": "^7.0.0",
32 "@babel/runtime": "^7.0.0", 38 "@babel/runtime": "^7.0.0",
33 "@meetfranz/electron-notification-state": "^1.0.0", 39 "@meetfranz/electron-notification-state": "^1.0.0",
40 "@meetfranz/forms": "file:packages/forms",
41 "@meetfranz/theme": "file:packages/theme",
42 "@meetfranz/ui": "file:packages/ui",
34 "address-rfc2822": "^2.0.1", 43 "address-rfc2822": "^2.0.1",
35 "auto-launch": "https://github.com/meetfranz/node-auto-launch.git", 44 "auto-launch": "https://github.com/meetfranz/node-auto-launch.git",
36 "classnames": "2.2.6", 45 "classnames": "2.2.6",
37 "debug-electron": "^0.0.4", 46 "cld3-asm": "1.0.1",
38 "du": "^0.1.0", 47 "du": "^0.1.0",
39 "electron-dl": "1.12.0", 48 "electron-dl": "1.12.0",
40 "electron-fetch": "1.3.0", 49 "electron-fetch": "1.3.0",
41 "electron-hunspell": "0.1.1", 50 "electron-hunspell": "0.1.1",
51 "electron-is-dev": "1.0.1",
42 "electron-react-titlebar": "0.8.1", 52 "electron-react-titlebar": "0.8.1",
43 "electron-updater": "4.0.6", 53 "electron-updater": "4.0.6",
44 "electron-window-state": "^4.1.0", 54 "electron-window-state": "5.0.3",
45 "fs-extra": "7.0.1", 55 "fs-extra": "7.0.1",
46 "gulp-cli": "1.2.2",
47 "hex-to-rgba": "1.0.2", 56 "hex-to-rgba": "1.0.2",
48 "ini": "^1.3.4", 57 "jsonwebtoken": "8.5.1",
49 "jsonwebtoken": "^7.4.1",
50 "keymaster": "^1.6.2",
51 "lodash": "^4.17.4", 58 "lodash": "^4.17.4",
59 "marked": "0.6.1",
52 "mdi": "^1.9.33", 60 "mdi": "^1.9.33",
53 "mime-types": "2.1.21", 61 "mime-types": "2.1.21",
54 "minimist": "^1.2.0",
55 "mkdirp": "^0.5.1",
56 "mobx": "5.7.0", 62 "mobx": "5.7.0",
57 "mobx-localstorage": "1.1.0", 63 "mobx-localstorage": "1.1.0",
58 "mobx-react": "5.4.2", 64 "mobx-react": "5.4.2",
59 "mobx-react-form": "1.35.1", 65 "mobx-react-form": "1.35.1",
60 "mobx-react-router": "3.1.2", 66 "mobx-react-router": "3.1.2",
61 "moment": "^2.17.1", 67 "moment": "^2.17.1",
68 "ms": "2.1.1",
62 "normalize-url": "^1.9.1", 69 "normalize-url": "^1.9.1",
63 "pretty-bytes": "^4.0.2", 70 "pretty-bytes": "^4.0.2",
64 "prop-types": "^15.5.10", 71 "prop-types": "^15.5.10",
65 "prop-types-extended": "^0.2.1",
66 "react": "16.6.3", 72 "react": "16.6.3",
67 "react-addons-css-transition-group": "15.6.2", 73 "react-addons-css-transition-group": "15.6.2",
68 "react-dom": "16.6.3", 74 "react-dom": "16.6.3",
@@ -79,12 +85,13 @@
79 "semver": "^5.4.1", 85 "semver": "^5.4.1",
80 "smoothscroll-polyfill": "^0.3.4", 86 "smoothscroll-polyfill": "^0.3.4",
81 "tar": "^4.0.2", 87 "tar": "^4.0.2",
82 "uuid": "^3.0.1" 88 "uuid": "^3.0.1",
89 "ws": "6.2.1"
83 }, 90 },
84 "devDependencies": { 91 "devDependencies": {
85 "@adlk/misty": "^0.1.1", 92 "@adlk/misty": "^0.1.1",
86 "@babel/cli": "7.0.0", 93 "@babel/cli": "7.0.0",
87 "@babel/core": "7.0.0", 94 "@babel/core": "^7.2.2",
88 "@babel/plugin-proposal-class-properties": "^7.0.0", 95 "@babel/plugin-proposal-class-properties": "^7.0.0",
89 "@babel/plugin-proposal-decorators": "^7.0.0", 96 "@babel/plugin-proposal-decorators": "^7.0.0",
90 "@babel/plugin-proposal-export-default-from": "^7.0.0", 97 "@babel/plugin-proposal-export-default-from": "^7.0.0",
@@ -94,32 +101,59 @@
94 "@babel/preset-env": "^7.0.0", 101 "@babel/preset-env": "^7.0.0",
95 "@babel/preset-react": "^7.0.0", 102 "@babel/preset-react": "^7.0.0",
96 "@babel/register": "7.0.0", 103 "@babel/register": "7.0.0",
104 "@types/classnames": "^2.2.6",
105 "@types/color": "^3.0.0",
106 "@types/color-convert": "^1.9.0",
107 "@types/jss": "^9.5.7",
108 "@types/lodash": "^4.14.119",
109 "@types/react": "^16.7.18",
110 "@types/react-dom": "16.0.11",
111 "@types/react-jss": "^8.6.0",
112 "@types/uuid": "3.4.4",
97 "babel-eslint": "10.0.1", 113 "babel-eslint": "10.0.1",
114 "babel-loader": "^8.0.4",
115 "babel-plugin-react-intl": "3.0.1",
98 "conventional-changelog-cli": "2.0.11", 116 "conventional-changelog-cli": "2.0.11",
99 "cross-env": "^5.0.5", 117 "cross-env": "^5.0.5",
100 "cz-conventional-changelog": "2.1.0", 118 "cz-conventional-changelog": "2.1.0",
101 "dotenv": "^4.0.0", 119 "dotenv": "^4.0.0",
102 "electron": "4.0.2", 120 "electron": "4.1.4",
103 "electron-builder": "20.38.4", 121 "electron-builder": "20.38.4",
104 "electron-rebuild": "^1.6.0", 122 "electron-rebuild": "1.8.4",
105 "eslint": "5.10.0", 123 "eslint": "5.10.0",
106 "eslint-config-airbnb": "17.1.0", 124 "eslint-config-airbnb": "17.1.0",
107 "eslint-loader": "^1.9.0", 125 "eslint-loader": "^1.9.0",
108 "eslint-plugin-import": "2.14.0", 126 "eslint-plugin-import": "2.14.0",
127 "eslint-plugin-jest": "22.4.1",
109 "eslint-plugin-jsx-a11y": "6.1.2", 128 "eslint-plugin-jsx-a11y": "6.1.2",
110 "eslint-plugin-react": "7.11.1", 129 "eslint-plugin-react": "7.11.1",
130 "expect.js": "0.3.1",
111 "gulp": "^4.0.0", 131 "gulp": "^4.0.0",
112 "gulp-babel": "^8.0.0", 132 "gulp-babel": "^8.0.0",
133 "gulp-cli": "1.2.2",
113 "gulp-sass": "^4.0.2", 134 "gulp-sass": "^4.0.2",
114 "gulp-sass-variables": "^1.1.1", 135 "gulp-sass-variables": "1.1.1",
115 "gulp-server-livereload": "^1.9.2", 136 "gulp-server-livereload": "^1.9.2",
116 "hex-rgb": "3.0.0", 137 "hex-rgb": "3.0.0",
138 "html-webpack-plugin": "4.0.0-beta.5",
117 "husky": "^1.1.4", 139 "husky": "^1.1.4",
118 "install": "0.12.2", 140 "jest": "24.7.1",
119 "kebab-case": "1.0.0", 141 "kebab-case": "1.0.0",
120 "node-sass": "^4.7.2", 142 "lerna": "^3.8.0",
121 "npm": "6.5.0", 143 "mobx-react-devtools": "6.0.3",
122 "prettier": "1.15.2" 144 "mocha": "5.2.0",
145 "node-sass": "4.11.0",
146 "prettier": "1.15.2",
147 "react-intl-translations-manager": "5.0.3",
148 "terser-webpack-plugin": "1.2.1",
149 "ts-loader": "5.3.2",
150 "tslint": "5.12.0",
151 "tslint-config-airbnb": "5.11.1",
152 "typescript": "3.2.2",
153 "webpack": "4.28.3",
154 "webpack-cli": "3.2.1",
155 "webpack-dev-server": "3.1.14",
156 "webpack-node-externals": "1.7.2"
123 }, 157 },
124 "config": { 158 "config": {
125 "commitizen": { 159 "commitizen": {
@@ -127,11 +161,11 @@
127 } 161 }
128 }, 162 },
129 "browserslist": [ 163 "browserslist": [
130 "Chrome 66" 164 "Chrome 69"
131 ], 165 ],
132 "husky": { 166 "husky": {
133 "hooks": { 167 "hooks": {
134 "pre-push": "npm run lint && npm run reformat-files" 168 "pre-push": "npm run lint && npm run reformat-files && npm run manage-translations"
135 } 169 }
136 } 170 }
137} 171}
diff --git a/packages/forms/.gitignore b/packages/forms/.gitignore
new file mode 100644
index 000000000..d01826a6b
--- /dev/null
+++ b/packages/forms/.gitignore
@@ -0,0 +1,2 @@
1node_modules/
2lib
diff --git a/packages/forms/package-lock.json b/packages/forms/package-lock.json
new file mode 100644
index 000000000..b5b24c239
--- /dev/null
+++ b/packages/forms/package-lock.json
@@ -0,0 +1,220 @@
1{
2 "name": "@meetfranz/forms",
3 "version": "1.0.6",
4 "lockfileVersion": 1,
5 "requires": true,
6 "dependencies": {
7 "@mdi/js": {
8 "version": "3.3.92",
9 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.3.92.tgz",
10 "integrity": "sha512-l+12IwTycHlijWMiRWBAssm0RSgkQiwMthIy/EcBAdSqtnsHnFjHq+aI2MBZ8/AYX0QBxNUv4+EN0SXZgNkWDg=="
11 },
12 "@mdi/react": {
13 "version": "1.1.0",
14 "resolved": "https://registry.npmjs.org/@mdi/react/-/react-1.1.0.tgz",
15 "integrity": "sha512-c0+avMYEZ6i7Pg1ULLFs+p7k8bDPiie9rrgGYs8VWQhw2tUUYz7r0lIPVzD3bzMghWfyhfkArj88K5Of0WTMNw=="
16 },
17 "@meetfranz/theme": {
18 "version": "file:../theme",
19 "requires": {
20 "color": "^3.1.0"
21 },
22 "dependencies": {
23 "color": {
24 "version": "3.1.0",
25 "bundled": true,
26 "requires": {
27 "color-convert": "^1.9.1",
28 "color-string": "^1.5.2"
29 }
30 },
31 "color-convert": {
32 "version": "1.9.3",
33 "bundled": true,
34 "requires": {
35 "color-name": "1.1.3"
36 }
37 },
38 "color-name": {
39 "version": "1.1.3",
40 "bundled": true
41 },
42 "color-string": {
43 "version": "1.5.3",
44 "bundled": true,
45 "requires": {
46 "color-name": "^1.0.0",
47 "simple-swizzle": "^0.2.2"
48 }
49 },
50 "is-arrayish": {
51 "version": "0.3.2",
52 "bundled": true
53 },
54 "simple-swizzle": {
55 "version": "0.2.2",
56 "bundled": true,
57 "requires": {
58 "is-arrayish": "^0.3.1"
59 }
60 }
61 }
62 },
63 "asap": {
64 "version": "2.0.6",
65 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
66 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
67 },
68 "core-js": {
69 "version": "1.2.7",
70 "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
71 "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
72 },
73 "create-react-class": {
74 "version": "15.6.3",
75 "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
76 "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==",
77 "requires": {
78 "fbjs": "^0.8.9",
79 "loose-envify": "^1.3.1",
80 "object-assign": "^4.1.1"
81 }
82 },
83 "encoding": {
84 "version": "0.1.12",
85 "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
86 "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
87 "requires": {
88 "iconv-lite": "~0.4.13"
89 }
90 },
91 "fbjs": {
92 "version": "0.8.17",
93 "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
94 "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
95 "requires": {
96 "core-js": "^1.0.0",
97 "isomorphic-fetch": "^2.1.1",
98 "loose-envify": "^1.0.0",
99 "object-assign": "^4.1.0",
100 "promise": "^7.1.1",
101 "setimmediate": "^1.0.5",
102 "ua-parser-js": "^0.7.18"
103 }
104 },
105 "html-element-attributes": {
106 "version": "1.3.1",
107 "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz",
108 "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA=="
109 },
110 "iconv-lite": {
111 "version": "0.4.24",
112 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
113 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
114 "requires": {
115 "safer-buffer": ">= 2.1.2 < 3"
116 }
117 },
118 "is-stream": {
119 "version": "1.1.0",
120 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
121 "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
122 },
123 "isomorphic-fetch": {
124 "version": "2.2.1",
125 "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
126 "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
127 "requires": {
128 "node-fetch": "^1.0.1",
129 "whatwg-fetch": ">=0.10.0"
130 }
131 },
132 "js-tokens": {
133 "version": "4.0.0",
134 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
135 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
136 },
137 "loose-envify": {
138 "version": "1.4.0",
139 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
140 "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
141 "requires": {
142 "js-tokens": "^3.0.0 || ^4.0.0"
143 }
144 },
145 "node-fetch": {
146 "version": "1.7.3",
147 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
148 "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
149 "requires": {
150 "encoding": "^0.1.11",
151 "is-stream": "^1.0.1"
152 }
153 },
154 "object-assign": {
155 "version": "4.1.1",
156 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
157 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
158 },
159 "promise": {
160 "version": "7.3.1",
161 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
162 "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
163 "requires": {
164 "asap": "~2.0.3"
165 }
166 },
167 "prop-types": {
168 "version": "15.6.2",
169 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
170 "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
171 "requires": {
172 "loose-envify": "^1.3.1",
173 "object-assign": "^4.1.1"
174 }
175 },
176 "react-html-attributes": {
177 "version": "1.4.3",
178 "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.3.tgz",
179 "integrity": "sha1-jDbDX85rdQk40oavQo7R2nYlGG4=",
180 "requires": {
181 "html-element-attributes": "^1.0.0"
182 }
183 },
184 "react-loader": {
185 "version": "2.4.5",
186 "resolved": "https://registry.npmjs.org/react-loader/-/react-loader-2.4.5.tgz",
187 "integrity": "sha1-zT5VHGzQc4wcDxPwc2VPk4KL5ak=",
188 "requires": {
189 "create-react-class": "^15.5.2",
190 "prop-types": "^15.5.8",
191 "spin.js": "2.x"
192 }
193 },
194 "safer-buffer": {
195 "version": "2.1.2",
196 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
197 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
198 },
199 "setimmediate": {
200 "version": "1.0.5",
201 "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
202 "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
203 },
204 "spin.js": {
205 "version": "2.3.2",
206 "resolved": "https://registry.npmjs.org/spin.js/-/spin.js-2.3.2.tgz",
207 "integrity": "sha1-bKpW1SBnNFD9XPvGlx5tB3LDeho="
208 },
209 "ua-parser-js": {
210 "version": "0.7.19",
211 "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz",
212 "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ=="
213 },
214 "whatwg-fetch": {
215 "version": "3.0.0",
216 "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
217 "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
218 }
219 }
220}
diff --git a/packages/forms/package.json b/packages/forms/package.json
new file mode 100644
index 000000000..0ac9a846f
--- /dev/null
+++ b/packages/forms/package.json
@@ -0,0 +1,39 @@
1{
2 "name": "@meetfranz/forms",
3 "version": "1.0.15",
4 "description": "React form components for Franz",
5 "main": "lib/index.js",
6 "scripts": {
7 "dev": "tsc -w",
8 "prepare": "tsc"
9 },
10 "publishConfig": {
11 "access": "public"
12 },
13 "repository": {
14 "type": "git",
15 "url": "git+https://github.com/meetfranz/franz.git"
16 },
17 "keywords": [
18 "Franz",
19 "Forms",
20 "React",
21 "UI"
22 ],
23 "author": "Stefan Malzner <stefan@adlk.io>",
24 "license": "Apache-2.0",
25 "dependencies": {
26 "@mdi/js": "^3.3.92",
27 "@mdi/react": "^1.1.0",
28 "@meetfranz/theme": "^1.0.13",
29 "react-html-attributes": "^1.4.3",
30 "react-loader": "^2.4.5"
31 },
32 "peerDependencies": {
33 "classnames": "^2.2.6",
34 "react": "^16.7.0",
35 "react-dom": "16.7.0",
36 "react-jss": "^8.6.1"
37 },
38 "gitHead": "e9b9079dc921e85961954727a7b2a8eabe5b9798"
39}
diff --git a/packages/forms/src/button/index.tsx b/packages/forms/src/button/index.tsx
new file mode 100644
index 000000000..6959cde73
--- /dev/null
+++ b/packages/forms/src/button/index.tsx
@@ -0,0 +1,275 @@
1import * as mdiIcons from '@mdi/js';
2import Icon from '@mdi/react';
3import { Theme } from '@meetfranz/theme';
4import classnames from 'classnames';
5import CSS from 'csstype';
6import React, { Component } from 'react';
7import injectStyle, { withTheme } from 'react-jss';
8import Loader from 'react-loader';
9
10import { IFormField, IWithStyle } from '../typings/generic';
11
12type ButtonType = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'inverted';
13
14interface IProps extends IFormField, IWithStyle {
15 className?: string;
16 disabled?: boolean;
17 id?: string;
18 type?: string;
19 onClick: (event: React.MouseEvent<HTMLButtonElement> | React.MouseEvent<HTMLAnchorElement>) => void;
20 buttonType?: ButtonType;
21 stretch?: boolean;
22 loaded?: boolean;
23 busy?: boolean;
24 icon?: keyof typeof mdiIcons;
25 href?: string;
26 target?: string;
27}
28
29interface IState {
30 busy: boolean;
31}
32
33const styles = (theme: Theme) => ({
34 button: {
35 borderRadius: theme.borderRadiusSmall,
36 border: 'none',
37 display: 'inline-flex',
38 position: 'relative' as CSS.PositionProperty,
39 transition: 'background .5s, opacity 0.3s',
40 textAlign: 'center' as CSS.TextAlignProperty,
41 outline: 'none',
42 alignItems: 'center',
43 padding: 0,
44 width: (props: IProps) => (props.stretch ? '100%' : 'auto') as CSS.WidthProperty<string>,
45 fontSize: theme.uiFontSize,
46 textDecoration: 'none',
47 height: theme.buttonHeight,
48
49 '&:hover': {
50 opacity: 0.8,
51 },
52 '&:active': {
53 opacity: 0.5,
54 transition: 'none',
55 },
56 },
57 label: {
58 margin: '10px 20px',
59 width: '100%',
60 display: 'flex',
61 alignItems: 'center',
62 justifyContent: 'center',
63 },
64 primary: {
65 background: theme.buttonPrimaryBackground,
66 color: theme.buttonPrimaryTextColor,
67
68 '& svg': {
69 fill: theme.buttonPrimaryTextColor,
70 },
71 },
72 secondary: {
73 background: theme.buttonSecondaryBackground,
74 color: theme.buttonSecondaryTextColor,
75
76 '& svg': {
77 fill: theme.buttonSecondaryTextColor,
78 },
79 },
80 success: {
81 background: theme.buttonSuccessBackground,
82 color: theme.buttonSuccessTextColor,
83
84 '& svg': {
85 fill: theme.buttonSuccessTextColor,
86 },
87 },
88 danger: {
89 background: theme.buttonDangerBackground,
90 color: theme.buttonDangerTextColor,
91
92 '& svg': {
93 fill: theme.buttonDangerTextColor,
94 },
95 },
96 warning: {
97 background: theme.buttonWarningBackground,
98 color: theme.buttonWarningTextColor,
99
100 '& svg': {
101 fill: theme.buttonWarningTextColor,
102 },
103 },
104 inverted: {
105 background: theme.buttonInvertedBackground,
106 color: theme.buttonInvertedTextColor,
107 border: theme.buttonInvertedBorder,
108
109 '& svg': {
110 fill: theme.buttonInvertedTextColor,
111 },
112 },
113 disabled: {
114 opacity: theme.inputDisabledOpacity,
115 },
116 loader: {
117 position: 'relative' as CSS.PositionProperty,
118 width: 20,
119 height: 18,
120 zIndex: 9999,
121 },
122 loaderContainer: {
123 width: (props: IProps): string => (!props.busy ? '0' : '40px'),
124 height: 20,
125 overflow: 'hidden',
126 transition: 'all 0.3s',
127 marginLeft: (props: IProps): number => !props.busy ? 10 : 20,
128 marginRight: (props: IProps): number => !props.busy ? -10 : -20,
129 position: (props: IProps): CSS.PositionProperty => props.stretch ? 'absolute' : 'inherit',
130 },
131 icon: {
132 marginLeft: -5,
133 marginRight: 10,
134 },
135});
136
137class ButtonComponent extends Component<IProps> {
138 public static defaultProps = {
139 type: 'button',
140 disabled: false,
141 onClick: () => null,
142 buttonType: 'primary' as ButtonType,
143 stretch: false,
144 busy: false,
145 // target: '_self'
146 };
147
148 state = {
149 busy: false,
150 };
151
152 componentWillMount() {
153 this.setState({ busy: this.props.busy });
154 }
155
156 componentWillReceiveProps(nextProps: IProps) {
157 if (nextProps.busy !== this.props.busy) {
158 if (this.props.busy) {
159 setTimeout(() => {
160 this.setState({ busy: nextProps.busy });
161 }, 300);
162 } else {
163 this.setState({ busy: nextProps.busy });
164 }
165 }
166 }
167
168 render() {
169 const {
170 classes,
171 className,
172 theme,
173 disabled,
174 id,
175 label,
176 type,
177 onClick,
178 buttonType,
179 loaded,
180 icon: iconName,
181 busy: busyProp,
182 href,
183 target,
184 } = this.props;
185
186 const {
187 busy,
188 } = this.state;
189
190 let icon = '';
191 if (iconName && mdiIcons[iconName]) {
192 icon = mdiIcons[iconName];
193 } else if (iconName && !mdiIcons[iconName]) {
194 console.warn(`Icon '${iconName}' was not found`);
195 }
196
197 let showLoader = false;
198 if (loaded) {
199 showLoader = !loaded;
200 console.warn('Franz Button prop `loaded` will be deprecated in the future. Please use `busy` instead');
201 }
202 if (busy) {
203 showLoader = busy;
204 }
205
206 const content = (
207 <>
208 <div className={classes.loaderContainer}>
209 {showLoader && (
210 <Loader
211 loaded={false}
212 width={4}
213 scale={0.45}
214 color={theme.buttonLoaderColor[buttonType!]}
215 parentClassName={classes.loader}
216 />
217 )}
218 </div>
219 <div className={classes.label}>
220 {icon && (
221 <Icon
222 path={icon}
223 size={1}
224 className={classes.icon}
225 />
226 )}
227 {label}
228 </div>
229 </>
230 );
231
232 let wrapperComponent = null;
233
234 if (!href) {
235 wrapperComponent = (
236 <button
237 id={id}
238 type={type}
239 onClick={onClick}
240 className={classnames({
241 [`${classes.button}`]: true,
242 [`${classes[buttonType as ButtonType]}`]: true,
243 [`${classes.disabled}`]: disabled,
244 [`${className}`]: className,
245 })}
246 disabled={disabled}
247 data-type="franz-button"
248 >
249 {content}
250 </button>
251 );
252 } else {
253 wrapperComponent = (
254 <a
255 href={href}
256 target={target}
257 onClick={onClick}
258 className={classnames({
259 [`${classes.button}`]: true,
260 [`${classes[buttonType as ButtonType]}`]: true,
261 [`${className}`]: className,
262 })}
263 rel={target === '_blank' ? 'noopener' : ''}
264 data-type="franz-button"
265 >
266 {content}
267 </a>
268 );
269 }
270
271 return wrapperComponent;
272 }
273}
274
275export const Button = injectStyle(styles)(withTheme(ButtonComponent));
diff --git a/packages/forms/src/error/index.tsx b/packages/forms/src/error/index.tsx
new file mode 100644
index 000000000..a487bb281
--- /dev/null
+++ b/packages/forms/src/error/index.tsx
@@ -0,0 +1,29 @@
1import { Classes } from 'jss';
2import React, { Component } from 'react';
3import injectSheet from 'react-jss';
4
5import styles from './styles';
6
7interface IProps {
8 classes: Classes;
9 message: string;
10}
11
12class ErrorComponent extends Component<IProps> {
13 render() {
14 const {
15 classes,
16 message,
17 } = this.props;
18
19 return (
20 <p
21 className={classes.message}
22 >
23 {message}
24 </p>
25 );
26 }
27}
28
29export const Error = injectSheet(styles)(ErrorComponent);
diff --git a/packages/forms/src/error/styles.ts b/packages/forms/src/error/styles.ts
new file mode 100644
index 000000000..5104838a5
--- /dev/null
+++ b/packages/forms/src/error/styles.ts
@@ -0,0 +1,9 @@
1import { Theme } from '../../../theme/lib';
2
3export default (theme: Theme) => ({
4 message: {
5 color: theme.brandDanger,
6 margin: '5px 0 0',
7 fontSize: theme.uiFontSize,
8 },
9});
diff --git a/packages/forms/src/index.ts b/packages/forms/src/index.ts
new file mode 100644
index 000000000..ea47fe25e
--- /dev/null
+++ b/packages/forms/src/index.ts
@@ -0,0 +1,4 @@
1export { Input } from './input';
2export { Toggle } from './toggle';
3export { Button } from './button';
4export { Select } from './select';
diff --git a/packages/forms/src/input/index.tsx b/packages/forms/src/input/index.tsx
new file mode 100644
index 000000000..a2d7c62d5
--- /dev/null
+++ b/packages/forms/src/input/index.tsx
@@ -0,0 +1,211 @@
1import { mdiEye, mdiEyeOff } from '@mdi/js';
2import Icon from '@mdi/react';
3import classnames from 'classnames';
4import React, { Component, createRef } from 'react';
5import injectSheet from 'react-jss';
6
7import { IFormField, IWithStyle } from '../typings/generic';
8
9import { Error } from '../error';
10import { Label } from '../label';
11import { Wrapper } from '../wrapper';
12import { scorePasswordFunc } from './scorePassword';
13
14import styles from './styles';
15
16interface IData {
17 [index: string]: string;
18}
19
20interface IProps extends React.InputHTMLAttributes<HTMLInputElement>, IFormField, IWithStyle {
21 focus?: boolean;
22 prefix?: string;
23 suffix?: string;
24 scorePassword?: boolean;
25 showPasswordToggle?: boolean;
26 data: IData;
27 inputClassName?: string;
28 onEnterKey?: Function;
29}
30
31interface IState {
32 showPassword: boolean;
33 passwordScore: number;
34}
35
36class InputComponent extends Component<IProps, IState> {
37 static defaultProps = {
38 focus: false,
39 onChange: () => {},
40 onBlur: () => {},
41 onFocus: () => {},
42 scorePassword: false,
43 showLabel: true,
44 showPasswordToggle: false,
45 type: 'text',
46 disabled: false,
47 };
48
49 state = {
50 passwordScore: 0,
51 showPassword: false,
52 };
53
54 private inputRef = createRef<HTMLInputElement>();
55
56 componentDidMount() {
57 const { focus, data } = this.props;
58
59 if (this.inputRef && this.inputRef.current) {
60 if (focus) {
61 this.inputRef.current.focus();
62 }
63
64 if (data) {
65 Object.keys(data).map(key => this.inputRef.current!.dataset[key] = data[key]);
66 }
67 }
68 }
69
70 onChange(e: React.ChangeEvent<HTMLInputElement>) {
71 const {
72 scorePassword,
73 onChange,
74 } = this.props;
75
76 if (onChange) {
77 onChange(e);
78 }
79
80 if (this.inputRef && this.inputRef.current && scorePassword) {
81 this.setState({ passwordScore: scorePasswordFunc(this.inputRef.current.value) });
82 }
83 }
84
85 onInputKeyPress(e: React.KeyboardEvent) {
86 if (e.key === "Enter") {
87 const { onEnterKey } = this.props;
88 onEnterKey && onEnterKey();
89 }
90 }
91
92 render() {
93 const {
94 classes,
95 className,
96 disabled,
97 error,
98 id,
99 inputClassName,
100 label,
101 prefix,
102 scorePassword,
103 suffix,
104 showLabel,
105 showPasswordToggle,
106 type,
107 value,
108 name,
109 placeholder,
110 spellCheck,
111 onBlur,
112 onFocus,
113 min,
114 max,
115 step,
116 required,
117 } = this.props;
118
119 const {
120 showPassword,
121 passwordScore,
122 } = this.state;
123
124 const inputType = type === 'password' && showPassword ? 'text' : type;
125
126 return (
127 <Wrapper
128 className={className}
129 identifier="franz-input"
130 >
131 <Label
132 title={label}
133 showLabel={showLabel}
134 htmlFor={id}
135 className={classes.label}
136 isRequired={required}
137 >
138 <div
139 className={classnames({
140 [`${inputClassName}`]: inputClassName,
141 [`${classes.hasPasswordScore}`]: scorePassword,
142 [`${classes.wrapper}`]: true,
143 [`${classes.disabled}`]: disabled,
144 [`${classes.hasError}`]: error,
145 })}>
146 {prefix && (
147 <span className={classes.prefix}>
148 {prefix}
149 </span>
150 )}
151 <input
152 id={id}
153 type={inputType}
154 name={name}
155 value={value as string}
156 placeholder={placeholder}
157 spellCheck={spellCheck}
158 className={classes.input}
159 ref={this.inputRef}
160 onChange={this.onChange.bind(this)}
161 onFocus={onFocus}
162 onBlur={onBlur}
163 disabled={disabled}
164 onKeyPress={this.onInputKeyPress.bind(this)}
165 min={min}
166 max={max}
167 step={step}
168 />
169 {suffix && (
170 <span className={classes.suffix}>
171 {suffix}
172 </span>
173 )}
174 {showPasswordToggle && (
175 <button
176 type="button"
177 className={classes.formModifier}
178 onClick={() => this.setState(prevState => ({ showPassword: !prevState.showPassword }))}
179 tabIndex={-1}
180 >
181 <Icon
182 path={!showPassword ? mdiEye : mdiEyeOff}
183 size={1}
184 />
185 </button>
186 )}
187 </div>
188 {scorePassword && (
189 <div className={classnames({
190 [`${classes.passwordScore}`]: true,
191 [`${classes.hasError}`]: error,
192 })}>
193 <meter
194 value={passwordScore < 5 ? 5 : passwordScore}
195 low={30}
196 high={75}
197 optimum={100}
198 max={100}
199 />
200 </div>
201 )}
202 </Label>
203 {error && (
204 <Error message={error} />
205 )}
206 </Wrapper>
207 );
208 }
209}
210
211export const Input = injectSheet(styles)(InputComponent);
diff --git a/packages/forms/src/input/scorePassword.ts b/packages/forms/src/input/scorePassword.ts
new file mode 100644
index 000000000..0b7719ec1
--- /dev/null
+++ b/packages/forms/src/input/scorePassword.ts
@@ -0,0 +1,42 @@
1interface ILetters {
2 [key: string]: number;
3}
4
5interface IVariations {
6 [index: string]: boolean;
7 digits: boolean;
8 lower: boolean;
9 nonWords: boolean;
10 upper: boolean;
11}
12
13export function scorePasswordFunc(password: string): number {
14 let score: number = 0;
15 if (!password) {
16 return score;
17 }
18
19 // award every unique letter until 5 repetitions
20 const letters: ILetters = {};
21 for (let i = 0; i < password.length; i += 1) {
22 letters[password[i]] = (letters[password[i]] || 0) + 1;
23 score += 5.0 / letters[password[i]];
24 }
25
26 // bonus points for mixing it up
27 const variations: IVariations = {
28 digits: /\d/.test(password),
29 lower: /[a-z]/.test(password),
30 nonWords: /\W/.test(password),
31 upper: /[A-Z]/.test(password),
32 };
33
34 let variationCount = 0;
35 Object.keys(variations).forEach((key) => {
36 variationCount += (variations[key] === true) ? 1 : 0;
37 });
38
39 score += (variationCount - 1) * 10;
40
41 return Math.round(score);
42}
diff --git a/packages/forms/src/input/styles.ts b/packages/forms/src/input/styles.ts
new file mode 100644
index 000000000..e2ab30a4f
--- /dev/null
+++ b/packages/forms/src/input/styles.ts
@@ -0,0 +1,101 @@
1import { Theme } from '@meetfranz/theme';
2import CSS from 'csstype';
3
4const prefixStyles = (theme: Theme) => ({
5 background: theme.inputPrefixBackground,
6 color: theme.inputPrefixColor,
7 lineHeight: `${theme.inputHeight}px`,
8 padding: '0 10px',
9 fontSize: theme.uiFontSize,
10});
11
12export default (theme: Theme) => ({
13 label: {
14 '& > div': {
15 marginTop: 5,
16 }
17 },
18 disabled: {
19 opacity: theme.inputDisabledOpacity,
20 },
21 formModifier: {
22 background: 'none',
23 border: 0,
24 borderLeft: theme.inputBorder,
25 padding: '4px 20px 0',
26 outline: 'none',
27
28 '&:active': {
29 opacity: 0.5,
30 },
31
32 '& svg': {
33 fill: theme.inputModifierColor,
34 },
35 },
36 input: {
37 background: 'none',
38 border: 0,
39 fontSize: theme.uiFontSize,
40 outline: 'none',
41 padding: 8,
42 width: '100%',
43 color: theme.inputColor,
44
45 '&::placeholder': {
46 color: theme.inputPlaceholderColor,
47 },
48 },
49 passwordScore: {
50 background: theme.inputScorePasswordBackground,
51 border: theme.inputBorder,
52 borderTopWidth: 0,
53 borderBottomLeftRadius: theme.borderRadiusSmall,
54 borderBottomRightRadius: theme.borderRadiusSmall,
55 display: 'block',
56 flexBasis: '100%',
57 height: 5,
58 overflow: 'hidden',
59
60 '& meter': {
61 display: 'block',
62 height: '100%',
63 width: '100%',
64
65 '&::-webkit-meter-bar': {
66 background: 'none',
67 },
68
69 '&::-webkit-meter-even-less-good-value': {
70 background: theme.brandDanger,
71 },
72
73 '&::-webkit-meter-suboptimum-value': {
74 background: theme.brandWarning,
75 },
76
77 '&::-webkit-meter-optimum-value': {
78 background: theme.brandSuccess,
79 },
80 },
81 },
82 prefix: prefixStyles(theme),
83 suffix: prefixStyles(theme),
84 wrapper: {
85 background: theme.inputBackground,
86 border: theme.inputBorder,
87 borderRadius: theme.borderRadiusSmall,
88 boxSizing: 'border-box' as CSS.BoxSizingProperty,
89 display: 'flex',
90 height: theme.inputHeight,
91 order: 1,
92 width: '100%',
93 },
94 hasPasswordScore: {
95 borderBottomLeftRadius: 0,
96 borderBottomRightRadius: 0,
97 },
98 hasError: {
99 borderColor: theme.brandDanger,
100 },
101});
diff --git a/packages/forms/src/label/index.tsx b/packages/forms/src/label/index.tsx
new file mode 100644
index 000000000..1b33ba22c
--- /dev/null
+++ b/packages/forms/src/label/index.tsx
@@ -0,0 +1,51 @@
1import classnames from 'classnames';
2import { Classes } from 'jss';
3import React, { Component } from 'react';
4import injectSheet from 'react-jss';
5
6import { IFormField } from '../typings/generic';
7
8import styles from './styles';
9
10interface ILabel extends IFormField, React.LabelHTMLAttributes<HTMLLabelElement> {
11 classes: Classes;
12 isRequired: boolean;
13}
14
15class LabelComponent extends Component<ILabel> {
16 static defaultProps = {
17 showLabel: true,
18 };
19
20 render() {
21 const {
22 title,
23 showLabel,
24 classes,
25 className,
26 children,
27 htmlFor,
28 isRequired,
29 } = this.props;
30
31 if (!showLabel) return children;
32
33 return (
34 <label
35 className={classnames({
36 [`${className}`]: className,
37 })}
38 htmlFor={htmlFor}
39 >
40 {showLabel && (
41 <span className={classes.label}>{title}{isRequired && ' *'}</span>
42 )}
43 <div className={classes.content}>
44 {children}
45 </div>
46 </label>
47 );
48 }
49}
50
51export const Label = injectSheet(styles)(LabelComponent);
diff --git a/packages/forms/src/label/styles.ts b/packages/forms/src/label/styles.ts
new file mode 100644
index 000000000..c64c9b285
--- /dev/null
+++ b/packages/forms/src/label/styles.ts
@@ -0,0 +1,12 @@
1import { Theme } from '../../../theme/lib';
2
3export default (theme: Theme) => ({
4 content: {},
5 label: {
6 color: theme.labelColor,
7 fontSize: theme.uiFontSize,
8 },
9 hasError: {
10 color: theme.brandDanger,
11 },
12});
diff --git a/packages/forms/src/select/index.tsx b/packages/forms/src/select/index.tsx
new file mode 100644
index 000000000..0e5ded176
--- /dev/null
+++ b/packages/forms/src/select/index.tsx
@@ -0,0 +1,445 @@
1import { mdiArrowRightDropCircleOutline, mdiCloseCircle, mdiMagnify } from '@mdi/js';
2import Icon from '@mdi/react';
3import { Theme } from '@meetfranz/theme';
4import classnames from 'classnames';
5import React, { Component, createRef } from 'react';
6import injectStyle from 'react-jss';
7
8import { IFormField, IWithStyle } from '../typings/generic';
9
10import { NONAME } from 'dns';
11import { Error } from '../error';
12import { Label } from '../label';
13import { Wrapper } from '../wrapper';
14
15interface IOptions {
16 [index: string]: string;
17}
18
19interface IData {
20 [index: string]: string;
21}
22
23interface IProps extends IFormField, IWithStyle {
24 actionText: string;
25 className?: string;
26 inputClassName?: string;
27 defaultValue?: string;
28 disabled?: boolean;
29 id?: string;
30 name: string;
31 options: IOptions;
32 value: string;
33 onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
34 showSearch: boolean;
35 data: IData;
36}
37
38interface IState {
39 open: boolean;
40 value: string;
41 needle: string;
42 selected: number;
43 options: IOptions;
44}
45
46const styles = (theme: Theme) => ({
47 select: {
48 background: theme.selectBackground,
49 border: theme.selectBorder,
50 borderRadius: theme.borderRadiusSmall,
51 height: theme.selectHeight,
52 fontSize: theme.uiFontSize,
53 width: '100%',
54 display: 'flex',
55 alignItems: 'center',
56 textAlign: 'left',
57 color: theme.selectColor,
58 },
59 label: {
60 '& > div': {
61 marginTop: 5,
62 }
63 },
64 popup: {
65 opacity: 0,
66 height: 0,
67 overflowX: 'scroll',
68 border: theme.selectBorder,
69 borderTop: 0,
70 transition: 'all 0.3s',
71 },
72 open: {
73 opacity: 1,
74 height: 350,
75 background: theme.selectPopupBackground,
76 },
77 option: {
78 padding: 10,
79 borderBottom: theme.selectOptionBorder,
80 color: theme.selectOptionColor,
81
82 '&:hover': {
83 background: theme.selectOptionItemHover,
84 color: theme.selectOptionItemHoverColor,
85 },
86 '&:active': {
87 background: theme.selectOptionItemActive,
88 color: theme.selectOptionItemActiveColor,
89 },
90 },
91 selected: {
92 background: theme.selectOptionItemActive,
93 color: theme.selectOptionItemActiveColor,
94 },
95 toggle: {
96 marginLeft: 'auto',
97 fill: theme.selectToggleColor,
98 transition: 'transform 0.3s',
99 },
100 toggleOpened: {
101 transform: 'rotateZ(90deg)',
102 },
103 searchContainer: {
104 display: 'flex',
105 background: theme.selectSearchBackground,
106 alignItems: 'center',
107 paddingLeft: 10,
108 color: theme.selectColor,
109
110 '& svg': {
111 fill: theme.selectSearchColor,
112 },
113 },
114 search: {
115 border: 0,
116 width: '100%',
117 fontSize: theme.uiFontSize,
118 background: 'none',
119 marginLeft: 10,
120 padding: [10, 0],
121 color: theme.selectSearchColor,
122 },
123 clearNeedle: {
124 background: 'none',
125 border: 0,
126 },
127 focused: {
128 fontWeight: 'bold',
129 background: theme.selectOptionItemHover,
130 color: theme.selectOptionItemHoverColor,
131 },
132 hasError: {
133 borderColor: theme.brandDanger,
134 },
135 disabled: {
136 opacity: theme.selectDisabledOpacity,
137 },
138});
139
140class SelectComponent extends Component<IProps> {
141 public static defaultProps = {
142 onChange: () => {},
143 showLabel: true,
144 disabled: false,
145 error: '',
146 };
147
148 state = {
149 open: false,
150 value: '',
151 needle: '',
152 selected: 0,
153 options: null,
154 };
155
156 private componentRef = createRef<HTMLDivElement>();
157 private inputRef = createRef<HTMLInputElement>();
158 private searchInputRef = createRef<HTMLInputElement>();
159 private scrollContainerRef = createRef<HTMLDivElement>();
160 private activeOptionRef = createRef<HTMLDivElement>();
161
162 private keyListener: any;
163
164 componentWillReceiveProps(nextProps: IProps) {
165 if (nextProps.value && nextProps.value !== this.props.value) {
166 this.setState({
167 value: nextProps.value,
168 });
169 }
170 }
171
172 componentDidUpdate(prevProps: IProps, prevState: IState) {
173 const {
174 open,
175 } = this.state;
176
177 if (this.searchInputRef && this.searchInputRef.current) {
178 if (open) {
179 this.searchInputRef.current.focus();
180 }
181 }
182 }
183
184 componentDidMount() {
185 if (this.inputRef && this.inputRef.current) {
186 const {
187 data,
188 } = this.props;
189
190 if (data) {
191 Object.keys(data).map(key => this.inputRef.current!.dataset[key] = data[key]);
192 }
193 }
194
195 window.addEventListener('keydown', this.arrowKeysHandler.bind(this), false);
196 }
197
198 componentWillMount() {
199 const {
200 value,
201 } = this.props;
202
203 if (this.componentRef && this.componentRef.current) {
204 this.componentRef.current.removeEventListener('keydown', this.keyListener);
205 }
206
207 if (value) {
208 this.setState({
209 value,
210 });
211 }
212
213 this.setFilter();
214 }
215
216 componentWillUnmount() {
217 window.removeEventListener('keydown', this.arrowKeysHandler.bind(this));
218 }
219
220 setFilter(needle: string = '') {
221 const { options } = this.props;
222
223 let filteredOptions = {};
224 if (needle) {
225 Object.keys(options).map((key) => {
226 if (key.toLocaleLowerCase().startsWith(needle.toLocaleLowerCase()) || options[key].toLocaleLowerCase().startsWith(needle.toLocaleLowerCase())) {
227 Object.assign(filteredOptions, {
228 [`${key}`]: options[key],
229 });
230 }
231 });
232 } else {
233 filteredOptions = options;
234 }
235
236 this.setState({
237 needle,
238 options: filteredOptions,
239 selected: 0,
240 });
241 }
242
243 select(key: string) {
244 this.setState((state: IState) => ({
245 value: key,
246 open: false,
247 }));
248
249 this.setFilter();
250
251 if (this.props.onChange) {
252 this.props.onChange(key as any);
253 }
254 }
255
256 arrowKeysHandler(e: KeyboardEvent) {
257 const {
258 selected,
259 open,
260 options,
261 } = this.state;
262
263 if (!open) return;
264
265 if (e.keyCode === 38 || e.keyCode === 40) {
266 e.preventDefault();
267 }
268
269 if (this.componentRef && this.componentRef.current) {
270 if (e.keyCode === 38 && selected > 0) {
271 this.setState((state: IState) => ({
272 selected: state.selected - 1,
273 }));
274 } else if (e.keyCode === 40 && selected < Object.keys(options!).length - 1) {
275 this.setState((state: IState) => ({
276 selected: state.selected + 1,
277 }));
278 } else if (e.keyCode === 13) {
279 this.select(Object.keys(options!)[selected]);
280 }
281
282 if (this.activeOptionRef && this.activeOptionRef.current && this.scrollContainerRef && this.scrollContainerRef.current) {
283 const containerTopOffset = this.scrollContainerRef.current.offsetTop;
284 const optionTopOffset = this.activeOptionRef.current.offsetTop;
285
286 const topOffset = optionTopOffset - containerTopOffset;
287
288 this.scrollContainerRef.current.scrollTop = topOffset - 35;
289 }
290 }
291
292 switch (e.keyCode){
293 case 37: case 39: case 38: case 40: // Arrow keys
294 case 32: break; // Space
295 default: break; // do not block other keys
296 }
297 }
298
299 render() {
300 const {
301 actionText,
302 classes,
303 className,
304 defaultValue,
305 disabled,
306 error,
307 id,
308 inputClassName,
309 name,
310 label,
311 showLabel,
312 showSearch,
313 onChange,
314 required,
315 } = this.props;
316
317 const {
318 open,
319 needle,
320 value,
321 selected,
322 options,
323 } = this.state;
324
325 let selection = '';
326 if (!value && defaultValue && options![defaultValue]) {
327 selection = options![defaultValue];
328 } else if (value && options![value]) {
329 selection = options![value];
330 } else {
331 selection = actionText;
332 }
333
334 return (
335 <Wrapper
336 className={className}
337 identifier="franz-select"
338 >
339 <Label
340 title={label}
341 showLabel={showLabel}
342 htmlFor={id}
343 className={classes.label}
344 isRequired={required}
345 >
346 <div
347 className={classnames({
348 [`${classes.hasError}`]: error,
349 [`${classes.disabled}`]: disabled,
350 })}
351 ref={this.componentRef}
352 >
353 <button
354 type="button"
355 className={classnames({
356 [`${inputClassName}`]: inputClassName,
357 [`${classes.select}`]: true,
358 [`${classes.hasError}`]: error,
359 })}
360 onClick= {!disabled ? () => this.setState((state: IState) => ({
361 open: !state.open,
362 })) : () => {}}
363 >
364 {selection}
365 <Icon
366 path={mdiArrowRightDropCircleOutline}
367 size={0.8}
368 className={classnames({
369 [`${classes.toggle}`]: true,
370 [`${classes.toggleOpened}`]: open,
371 })}
372 />
373 </button>
374 {showSearch && open && (
375 <div className={classes.searchContainer}>
376 <Icon
377 path={mdiMagnify}
378 size={0.8}
379 />
380 <input
381 type="text"
382 value={needle}
383 onChange={e => this.setFilter(e.currentTarget.value)}
384 placeholder="Search"
385 className={classes.search}
386 ref={this.searchInputRef}
387 />
388 {needle && (
389 <button
390 type="button"
391 className={classes.clearNeedle}
392 onClick={() => this.setFilter()}
393 >
394 <Icon
395 path={mdiCloseCircle}
396 size={0.7}
397 />
398 </button>
399 )}
400 </div>
401 )}
402 <div
403 className={classnames({
404 [`${classes.popup}`]: true,
405 [`${classes.open}`]: open,
406 })}
407 ref={this.scrollContainerRef}
408 >
409 {Object.keys(options!).map(((key, i) => (
410 <div
411 key={key}
412 onClick={() => this.select(key)}
413 className={classnames({
414 [`${classes.option}`]: true,
415 [`${classes.selected}`]: options![key] === selection,
416 [`${classes.focused}`]: selected === i,
417 })}
418 onMouseOver={() => this.setState({ selected: i })}
419 ref={selected === i ? this.activeOptionRef : null}
420 >
421 {options![key]}
422 </div>
423 )))}
424 </div>
425 </div>
426 <input
427 className={classes.input}
428 id={id}
429 name={name}
430 type="hidden"
431 defaultValue={value}
432 onChange={onChange}
433 disabled={disabled}
434 ref={this.inputRef}
435 />
436 </Label>
437 {error && (
438 <Error message={error} />
439 )}
440 </Wrapper>
441 );
442 }
443}
444
445export const Select = injectStyle(styles)(SelectComponent);
diff --git a/packages/forms/src/toggle/index.tsx b/packages/forms/src/toggle/index.tsx
new file mode 100644
index 000000000..d84508a5f
--- /dev/null
+++ b/packages/forms/src/toggle/index.tsx
@@ -0,0 +1,117 @@
1import { Theme } from '@meetfranz/theme';
2import classnames from 'classnames';
3import CSS from 'csstype';
4import React, { Component } from 'react';
5import injectStyle from 'react-jss';
6
7import { IFormField, IWithStyle, Omit } from '../typings/generic';
8
9import { Error } from '../error';
10import { Label } from '../label';
11import { Wrapper } from '../wrapper';
12
13interface IProps extends React.InputHTMLAttributes<HTMLInputElement>, IFormField, IWithStyle {
14 className?: string;
15}
16
17const styles = (theme: Theme) => ({
18 toggle: {
19 background: theme.toggleBackground,
20 borderRadius: theme.borderRadius,
21 height: theme.toggleHeight,
22 position: 'relative' as CSS.PositionProperty,
23 width: theme.toggleWidth,
24 },
25 button: {
26 background: theme.toggleButton,
27 borderRadius: '100%',
28 boxShadow: '0 1px 4px rgba(0, 0, 0, .3)',
29 width: theme.toggleHeight - 2,
30 height: theme.toggleHeight - 2,
31 left: 1,
32 top: 1,
33 position: 'absolute' as CSS.PositionProperty,
34 transition: 'all .5s',
35 },
36 buttonActive: {
37 background: theme.toggleButtonActive,
38 left: (theme.toggleWidth - theme.toggleHeight) + 1,
39 },
40 input: {
41 visibility: 'hidden' as any,
42 },
43 disabled: {
44 opacity: theme.inputDisabledOpacity,
45 },
46 toggleLabel: {
47 display: 'flex',
48 alignItems: 'center',
49
50 '& > span': {
51 order: 1,
52 marginLeft: 15,
53 },
54 },
55});
56
57class ToggleComponent extends Component<IProps> {
58 public static defaultProps = {
59 onChange: () => {},
60 showLabel: true,
61 disabled: false,
62 error: '',
63 };
64
65 render() {
66 const {
67 classes,
68 className,
69 disabled,
70 error,
71 id,
72 label,
73 showLabel,
74 checked,
75 value,
76 onChange,
77 } = this.props;
78
79 return (
80 <Wrapper
81 className={className}
82 identifier="franz-toggle"
83 >
84 <Label
85 title={label}
86 showLabel={showLabel}
87 htmlFor={id}
88 className={classes.toggleLabel}
89 >
90 <div className={classnames({
91 [`${classes.toggle}`]: true,
92 [`${classes.disabled}`]: disabled,
93 })}>
94 <div className={classnames({
95 [`${classes.button}`]: true,
96 [`${classes.buttonActive}`]: checked,
97 })} />
98 <input
99 className={classes.input}
100 id={id || name}
101 type="checkbox"
102 checked={checked}
103 value={value}
104 onChange={onChange}
105 disabled={disabled}
106 />
107 </div>
108 </Label>
109 {error && (
110 <Error message={error} />
111 )}
112 </Wrapper>
113 );
114 }
115}
116
117export const Toggle = injectStyle(styles)(ToggleComponent);
diff --git a/packages/forms/src/typings/generic.ts b/packages/forms/src/typings/generic.ts
new file mode 100644
index 000000000..9688ce2c7
--- /dev/null
+++ b/packages/forms/src/typings/generic.ts
@@ -0,0 +1,17 @@
1import { Theme } from '@meetfranz/theme/lib';
2import { Classes } from 'jss';
3
4export interface IFormField {
5 showLabel?: boolean;
6 label?: string;
7 error?: string;
8 required?: boolean;
9}
10
11export interface IWithStyle {
12 classes: Classes;
13 theme: Theme;
14}
15
16export type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
17export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
diff --git a/packages/forms/src/wrapper/index.tsx b/packages/forms/src/wrapper/index.tsx
new file mode 100644
index 000000000..d9c61381d
--- /dev/null
+++ b/packages/forms/src/wrapper/index.tsx
@@ -0,0 +1,37 @@
1import classnames from 'classnames';
2import React, { Component } from 'react';
3import injectStyle from 'react-jss';
4import { IWithStyle } from '../typings/generic';
5
6import styles from './styles';
7
8interface IProps extends IWithStyle {
9 children: React.ReactNode;
10 className?: string;
11 identifier: string;
12}
13
14class WrapperComponent extends Component<IProps> {
15 render() {
16 const {
17 children,
18 classes,
19 className,
20 identifier,
21 } = this.props;
22
23 return (
24 <div
25 className={classnames({
26 [`${classes.container}`]: true,
27 [`${className}`]: className,
28 })}
29 data-type={identifier}
30 >
31 {children}
32 </div>
33 );
34 }
35}
36
37export const Wrapper = injectStyle(styles)(WrapperComponent);
diff --git a/packages/forms/src/wrapper/styles.ts b/packages/forms/src/wrapper/styles.ts
new file mode 100644
index 000000000..72306b252
--- /dev/null
+++ b/packages/forms/src/wrapper/styles.ts
@@ -0,0 +1,5 @@
1export default {
2 container: {
3 marginBottom: 20,
4 },
5};
diff --git a/packages/forms/tsconfig.json b/packages/forms/tsconfig.json
new file mode 100644
index 000000000..8b9507eac
--- /dev/null
+++ b/packages/forms/tsconfig.json
@@ -0,0 +1,12 @@
1{
2 "extends": "../../tsconfig.settings.json",
3 "compilerOptions": {
4 "outDir": "lib",
5 "rootDir": "src"
6 },
7 "references": [
8 {
9 "path": "../theme"
10 }
11 ]
12}
diff --git a/packages/forms/tslint.json b/packages/forms/tslint.json
new file mode 100644
index 000000000..0946f2096
--- /dev/null
+++ b/packages/forms/tslint.json
@@ -0,0 +1,3 @@
1{
2 "extends": "../../tslint.json"
3}
diff --git a/packages/misty.yml b/packages/misty.yml
new file mode 100644
index 000000000..2d8cff014
--- /dev/null
+++ b/packages/misty.yml
@@ -0,0 +1,11 @@
1theme:
2 cwd: ./theme
3 cmd: npm run dev
4
5forms:
6 cwd: ./forms
7 cmd: npm run dev
8
9ui:
10 cwd: ./ui
11 cmd: npm run dev
diff --git a/packages/theme/.gitignore b/packages/theme/.gitignore
new file mode 100644
index 000000000..d01826a6b
--- /dev/null
+++ b/packages/theme/.gitignore
@@ -0,0 +1,2 @@
1node_modules/
2lib
diff --git a/packages/theme/README.md b/packages/theme/README.md
new file mode 100644
index 000000000..6f9cc406b
--- /dev/null
+++ b/packages/theme/README.md
@@ -0,0 +1,11 @@
1# `theme`
2
3> TODO: description
4
5## Usage
6
7```
8const theme = require('theme');
9
10// TODO: DEMONSTRATE API
11```
diff --git a/packages/theme/package-lock.json b/packages/theme/package-lock.json
new file mode 100644
index 000000000..f74af2f24
--- /dev/null
+++ b/packages/theme/package-lock.json
@@ -0,0 +1,52 @@
1{
2 "name": "@meetfranz/theme",
3 "version": "1.0.4",
4 "lockfileVersion": 1,
5 "requires": true,
6 "dependencies": {
7 "color": {
8 "version": "3.1.0",
9 "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz",
10 "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==",
11 "requires": {
12 "color-convert": "^1.9.1",
13 "color-string": "^1.5.2"
14 }
15 },
16 "color-convert": {
17 "version": "1.9.3",
18 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
19 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
20 "requires": {
21 "color-name": "1.1.3"
22 }
23 },
24 "color-name": {
25 "version": "1.1.3",
26 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
27 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
28 },
29 "color-string": {
30 "version": "1.5.3",
31 "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
32 "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
33 "requires": {
34 "color-name": "^1.0.0",
35 "simple-swizzle": "^0.2.2"
36 }
37 },
38 "is-arrayish": {
39 "version": "0.3.2",
40 "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
41 "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
42 },
43 "simple-swizzle": {
44 "version": "0.2.2",
45 "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
46 "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
47 "requires": {
48 "is-arrayish": "^0.3.1"
49 }
50 }
51 }
52}
diff --git a/packages/theme/package.json b/packages/theme/package.json
new file mode 100644
index 000000000..642904089
--- /dev/null
+++ b/packages/theme/package.json
@@ -0,0 +1,29 @@
1{
2 "name": "@meetfranz/theme",
3 "version": "1.0.13",
4 "description": "Theme configuration for Franz",
5 "author": "Stefan Malzner <stefan@adlk.io>",
6 "homepage": "https://github.com/meetfranz/franz",
7 "license": "Apache-2.0",
8 "main": "lib/index.js",
9 "publishConfig": {
10 "access": "public"
11 },
12 "repository": {
13 "type": "git",
14 "url": "git+https://github.com/meetfranz/franz.git"
15 },
16 "scripts": {
17 "dev": "tsc -w",
18 "prepare": "tsc",
19 "preprepare": "npm run test",
20 "test": "npx mocha"
21 },
22 "bugs": {
23 "url": "https://github.com/meetfranz/franz/issues"
24 },
25 "dependencies": {
26 "color": "^3.1.0"
27 },
28 "gitHead": "e9b9079dc921e85961954727a7b2a8eabe5b9798"
29}
diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts
new file mode 100644
index 000000000..524a9edf1
--- /dev/null
+++ b/packages/theme/src/index.ts
@@ -0,0 +1,18 @@
1import * as darkThemeConfig from './themes/dark';
2import * as defaultThemeConfig from './themes/default';
3import * as legacyStyles from './themes/legacy';
4
5export enum ThemeType {
6 default = 'default',
7 dark = 'dark',
8}
9
10export function theme(themeId: ThemeType) {
11 if (themeId === ThemeType.dark) {
12 return Object.assign({}, defaultThemeConfig, darkThemeConfig, { legacyStyles });
13 }
14
15 return Object.assign({}, defaultThemeConfig, { legacyStyles });
16}
17
18export type Theme = typeof defaultThemeConfig;
diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts
new file mode 100644
index 000000000..d48dbf916
--- /dev/null
+++ b/packages/theme/src/themes/dark/index.ts
@@ -0,0 +1,120 @@
1import color from 'color';
2import { cloneDeep, merge } from 'lodash';
3
4import * as defaultStyles from '../default';
5import * as legacyStyles from '../legacy';
6
7export const colorBackground = legacyStyles.darkThemeGrayDarkest;
8export const colorContentBackground = legacyStyles.darkThemeGrayDarkest;
9export const colorBackgroundSubscriptionContainer = legacyStyles.themeBrandInfo;
10
11export const colorHeadline = legacyStyles.darkThemeTextColor;
12export const colorText = legacyStyles.darkThemeTextColor;
13
14// Loader
15export const colorFullscreenLoaderSpinner = '#FFF';
16export const colorWebviewLoaderBackground = color(legacyStyles.darkThemeGrayDarkest).alpha(0.5).rgb().string();
17
18// Input
19export const labelColor = legacyStyles.darkThemeTextColor;
20export const inputColor = legacyStyles.darkThemeGrayLightest;
21export const inputBackground = legacyStyles.themeGrayDark;
22export const inputBorder = `1px solid ${legacyStyles.darkThemeGrayLight}`;
23export const inputPrefixColor = color(legacyStyles.darkThemeGrayLighter).lighten(0.3).hex();
24export const inputPrefixBackground = legacyStyles.darkThemeGray;
25export const inputDisabledOpacity = 0.5;
26export const inputScorePasswordBackground = legacyStyles.darkThemeGrayDark;
27export const inputModifierColor = color(legacyStyles.darkThemeGrayLighter).lighten(0.3).hex();
28export const inputPlaceholderColor = color(legacyStyles.darkThemeGrayLighter).darken(0.1).hex();
29
30// Toggle
31export const toggleBackground = legacyStyles.darkThemeGray;
32export const toggleButton = legacyStyles.darkThemeGrayLighter;
33
34// Button
35export const buttonPrimaryTextColor = legacyStyles.darkThemeTextColor;
36
37export const buttonSecondaryBackground = legacyStyles.darkThemeGrayLighter;
38export const buttonSecondaryTextColor = legacyStyles.darkThemeTextColor;
39
40export const buttonDangerTextColor = legacyStyles.darkThemeTextColor;
41
42export const buttonWarningTextColor = legacyStyles.darkThemeTextColor;
43
44export const buttonLoaderColor = {
45 primary: '#FFF',
46 secondary: buttonSecondaryTextColor,
47 success: '#FFF',
48 warning: '#FFF',
49 danger: '#FFF',
50 inverted: defaultStyles.brandPrimary,
51};
52
53// Select
54export const selectBackground = inputBackground;
55export const selectBorder = inputBorder;
56export const selectColor = inputColor;
57export const selectToggleColor = inputPrefixColor;
58export const selectPopupBackground = legacyStyles.darkThemeGrayLight;
59export const selectOptionColor = '#FFF';
60export const selectOptionBorder = `1px solid ${color(legacyStyles.darkThemeGrayLight).darken(0.2).hex()}`;
61export const selectOptionItemHover = color(legacyStyles.darkThemeGrayLight).darken(0.2).hex();
62export const selectOptionItemHoverColor = selectColor;
63export const selectSearchColor = inputBackground;
64
65// Modal
66export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.8).rgb().string();
67
68// Services
69export const services = merge({}, defaultStyles.services, {
70 listItems: {
71 borderColor: legacyStyles.darkThemeGrayDarker,
72 hoverBgColor: legacyStyles.darkThemeGrayDarker,
73 disabled: {
74 color: legacyStyles.darkThemeGray,
75 },
76 },
77});
78
79// Service Icon
80export const serviceIcon = merge({}, defaultStyles.serviceIcon, {
81 isCustom: {
82 border: `1px solid ${legacyStyles.darkThemeGrayDark}`,
83 },
84});
85
86// Workspaces
87const drawerBg = color(colorBackground).lighten(0.3).hex();
88
89export const workspaces = merge({}, defaultStyles.workspaces, {
90 settings: {
91 listItems: cloneDeep(services.listItems),
92 },
93 drawer: {
94 background: drawerBg,
95 addButton: {
96 color: legacyStyles.darkThemeGrayLighter,
97 hoverColor: legacyStyles.darkThemeGraySmoke,
98 },
99 listItem: {
100 border: color(drawerBg).lighten(0.2).hex(),
101 hoverBackground: color(drawerBg).lighten(0.2).hex(),
102 activeBackground: defaultStyles.brandPrimary,
103 name: {
104 color: colorText,
105 activeColor: 'white',
106 },
107 services: {
108 color: color(colorText).darken(0.5).hex(),
109 active: color(defaultStyles.brandPrimary).lighten(0.5).hex(),
110 },
111 },
112 },
113});
114
115// Announcements
116export const announcements = merge({}, defaultStyles.workspaces, {
117 spotlight: {
118 background: legacyStyles.darkThemeGrayDark,
119 },
120});
diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts
new file mode 100644
index 000000000..0f02fa3c8
--- /dev/null
+++ b/packages/theme/src/themes/default/index.ts
@@ -0,0 +1,209 @@
1import color from 'color';
2import { cloneDeep } from 'lodash';
3
4import * as legacyStyles from '../legacy';
5
6export interface IStyleTypes {
7 [index: string]: {
8 accent: string;
9 contrast: string;
10 border?: string;
11 };
12}
13
14export const brandPrimary = '#3498db';
15export const brandSuccess = '#5cb85c';
16export const brandInfo = '#5bc0de';
17export const brandWarning = '#FF9F00';
18export const brandDanger = '#d9534f';
19
20export const uiFontSize = 14;
21
22export const borderRadius = legacyStyles.themeBorderRadius;
23export const borderRadiusSmall = legacyStyles.themeBorderRadiusSmall;
24
25export const colorBackground = legacyStyles.themeGrayLighter;
26export const colorContentBackground = '#FFFFFF';
27export const colorHeadline = legacyStyles.themeGrayDark;
28
29export const colorText = legacyStyles.themeTextColor;
30
31// Subscription Container Component
32export const colorSubscriptionContainerBackground = 'none';
33export const colorSubscriptionContainerBorder = `1px solid ${brandPrimary}`;
34export const colorSubscriptionContainerTitle = brandPrimary;
35export const colorSubscriptionContainerActionButtonBackground = brandPrimary;
36export const colorSubscriptionContainerActionButtonColor = '#FFF';
37
38// Loader
39export const colorAppLoaderSpinner = '#FFF';
40export const colorFullscreenLoaderSpinner = legacyStyles.themeGrayDark;
41export const colorWebviewLoaderBackground = color(legacyStyles.themeGrayLighter).alpha(0.8).rgb().string();
42
43// Input
44export const labelColor = legacyStyles.themeGrayLight;
45export const inputColor = legacyStyles.themeGray;
46export const inputHeight = 40;
47export const inputBackground = legacyStyles.themeGrayLightest;
48export const inputBorder = `1px solid ${legacyStyles.themeGrayLighter}`;
49export const inputModifierColor = legacyStyles.themeGrayLight;
50export const inputPlaceholderColor = color(legacyStyles.themeGrayLight).lighten(0.3).hex();
51export const inputPrefixColor = legacyStyles.themeGrayLight;
52export const inputPrefixBackground = legacyStyles.themeGrayLighter;
53export const inputDisabledOpacity = 0.5;
54export const inputScorePasswordBackground = legacyStyles.themeGrayLighter;
55
56// Toggle
57export const toggleBackground = legacyStyles.themeGrayLighter;
58export const toggleButton = legacyStyles.themeGrayLight;
59export const toggleButtonActive = brandPrimary;
60export const toggleWidth = 40;
61export const toggleHeight = 14;
62
63// Style Types
64export const styleTypes: IStyleTypes = {
65 primary: {
66 accent: brandPrimary,
67 contrast: '#FFF',
68 },
69 secondary: {
70 accent: legacyStyles.themeGrayLighter,
71 contrast: legacyStyles.themeGray,
72 },
73 success: {
74 accent: brandSuccess,
75 contrast: '#FFF',
76 },
77 warning: {
78 accent: brandWarning,
79 contrast: '#FFF',
80 },
81 danger: {
82 accent: brandDanger,
83 contrast: '#FFF',
84 },
85 inverted: {
86 accent: 'none',
87 contrast: brandPrimary,
88 border: `1px solid ${brandPrimary}`,
89 },
90};
91
92// Button
93export const buttonPrimaryBackground = brandPrimary;
94export const buttonPrimaryTextColor = '#FFF';
95
96export const buttonSecondaryBackground = legacyStyles.themeGrayLighter;
97export const buttonSecondaryTextColor = legacyStyles.themeGray;
98
99export const buttonSuccessBackground = brandSuccess;
100export const buttonSuccessTextColor = '#FFF';
101
102export const buttonDangerBackground = brandDanger;
103export const buttonDangerTextColor = '#FFF';
104
105export const buttonWarningBackground = brandWarning;
106export const buttonWarningTextColor = '#FFF';
107
108export const buttonInvertedBackground = 'none';
109export const buttonInvertedTextColor = brandPrimary;
110export const buttonInvertedBorder = `1px solid ${brandPrimary}`;
111
112export const buttonHeight = inputHeight;
113
114export const buttonLoaderColor = {
115 primary: '#FFF',
116 secondary: buttonSecondaryTextColor,
117 success: '#FFF',
118 warning: '#FFF',
119 danger: '#FFF',
120 inverted: brandPrimary,
121};
122
123// Select
124export const selectBackground = inputBackground;
125export const selectBorder = inputBorder;
126export const selectHeight = inputHeight;
127export const selectColor = inputColor;
128export const selectToggleColor = inputPrefixColor;
129export const selectPopupBackground = '#FFF';
130export const selectOptionColor = inputColor;
131export const selectOptionBorder = `1px solid ${legacyStyles.themeGrayLightest}`;
132export const selectOptionItemHover = legacyStyles.themeGrayLighter;
133export const selectOptionItemHoverColor = selectColor;
134export const selectOptionItemActive = brandPrimary;
135export const selectOptionItemActiveColor = '#FFF';
136export const selectSearchBackground = legacyStyles.themeGrayLighter;
137export const selectSearchColor = inputColor;
138export const selectDisabledOpacity = inputDisabledOpacity;
139
140// Badge
141export const badgeFontSize = uiFontSize - 2;
142export const badgeBorderRadius = 50;
143
144// Modal
145export const colorModalOverlayBackground = color('#000').alpha(0.5).rgb().string();
146
147// Services
148export const services = {
149 listItems: {
150 padding: 10,
151 height: 57,
152 borderColor: legacyStyles.themeGrayLightest,
153 hoverBgColor: legacyStyles.themeGrayLightest,
154 disabled: {
155 color: legacyStyles.themeGrayLight,
156 },
157 },
158};
159
160// Service Icon
161export const serviceIcon = {
162 width: 35,
163 isCustom: {
164 border: `1px solid ${legacyStyles.themeGrayLighter}`,
165 borderRadius: legacyStyles.themeBorderRadius,
166 width: 37,
167 },
168};
169
170// Workspaces
171const drawerBg = color(colorBackground).lighten(0.1).hex();
172
173export const workspaces = {
174 settings: {
175 listItems: cloneDeep(services.listItems),
176 },
177 drawer: {
178 width: 300,
179 padding: 20,
180 background: drawerBg,
181 buttons: {
182 color: color(legacyStyles.themeGrayLight).lighten(0.1).hex(),
183 hoverColor: legacyStyles.themeGrayLight,
184 },
185 listItem: {
186 hoverBackground: color(drawerBg).darken(0.01).hex(),
187 activeBackground: legacyStyles.themeGrayLightest,
188 border: color(drawerBg).darken(0.05).hex(),
189 name: {
190 color: colorText,
191 activeColor: colorText,
192 },
193 services: {
194 color: color(colorText).lighten(1.5).hex(),
195 active: color(colorText).lighten(1.5).hex(),
196 },
197 },
198 },
199 switchingIndicator: {
200 spinnerColor: 'white',
201 },
202};
203
204// Announcements
205export const announcements = {
206 spotlight: {
207 background: legacyStyles.themeGrayLightest,
208 },
209};
diff --git a/packages/theme/src/themes/legacy/index.ts b/packages/theme/src/themes/legacy/index.ts
new file mode 100644
index 000000000..2114b92c1
--- /dev/null
+++ b/packages/theme/src/themes/legacy/index.ts
@@ -0,0 +1,38 @@
1/* legacy config, injected into sass */
2export const themeBrandPrimary = '#3498db';
3export const themeBrandSuccess = '#5cb85c';
4export const themeBrandInfo = '#5bc0de';
5export const themeBrandWarning = '#FF9F00';
6export const themeBrandDanger = '#d9534f';
7
8export const themeGrayDark = '#373a3c';
9export const themeGray = '#55595c';
10export const themeGrayLight = '#818a91';
11export const themeGrayLighter = '#eceeef';
12export const themeGrayLightest = '#f7f7f9';
13
14export const themeBorderRadius = '6px';
15export const themeBorderRadiusSmall = '3px';
16
17export const themeSidebarWidth = '68px';
18
19export const themeTextColor = themeGrayDark;
20
21export const themeTransitionTime = '.5s';
22
23export const themeInsetShadow = 'inset 0 2px 5px rgba(0, 0, 0, .03)';
24
25export const darkThemeBlack = '#1A1A1A';
26
27export const darkThemeGrayDarkest = '#1E1E1E';
28export const darkThemeGrayDarker = '#2D2F31';
29export const darkThemeGrayDark = '#383A3B';
30
31export const darkThemeGray = '#47494B';
32
33export const darkThemeGrayLight = '#515355';
34export const darkThemeGrayLighter = '#8a8b8b';
35export const darkThemeGrayLightest = '#FFFFFF';
36
37export const darkThemeGraySmoke = '#CED0D1';
38export const darkThemeTextColor = '#FFFFFF';
diff --git a/packages/theme/test/index.test.js b/packages/theme/test/index.test.js
new file mode 100644
index 000000000..3906433c1
--- /dev/null
+++ b/packages/theme/test/index.test.js
@@ -0,0 +1,17 @@
1const expect = require('expect.js');
2
3const { colorBackground: colorBackgroundDefault } = require('../lib/themes/default');
4const { colorBackground: colorBackgroundDark } = require('../lib/themes/dark');
5const { default: theme } = require('../lib');
6
7describe('Load theme', () => {
8 it('Should load default theme', () => {
9 const { colorBackground } = theme('default');
10 expect(colorBackground).to.be(colorBackgroundDefault);
11 });
12
13 it('Should load dark theme', () => {
14 const { colorBackground } = theme('dark');
15 expect(colorBackground).to.be(colorBackgroundDark);
16 });
17});
diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json
new file mode 100644
index 000000000..d80ee9ee7
--- /dev/null
+++ b/packages/theme/tsconfig.json
@@ -0,0 +1,7 @@
1{
2 "extends": "../../tsconfig.settings.json",
3 "compilerOptions": {
4 "outDir": "lib",
5 "rootDir": "src"
6 },
7}
diff --git a/packages/theme/tslint.json b/packages/theme/tslint.json
new file mode 100644
index 000000000..0946f2096
--- /dev/null
+++ b/packages/theme/tslint.json
@@ -0,0 +1,3 @@
1{
2 "extends": "../../tslint.json"
3}
diff --git a/packages/typings/package.json b/packages/typings/package.json
new file mode 100644
index 000000000..5da8389d6
--- /dev/null
+++ b/packages/typings/package.json
@@ -0,0 +1,22 @@
1{
2 "name": "@meetfranz/typings",
3 "version": "0.0.11",
4 "description": "TypeScript typings for internal and external projects",
5 "author": "Stefan Malzner <stefan@adlk.io>",
6 "homepage": "https://github.com/meetfranz/franz",
7 "license": "Apache-2.0",
8 "directories": {
9 "types": "types"
10 },
11 "publishConfig": {
12 "access": "public"
13 },
14 "repository": {
15 "type": "git",
16 "url": "git+https://github.com/meetfranz/franz.git"
17 },
18 "bugs": {
19 "url": "https://github.com/meetfranz/franz/issues"
20 },
21 "gitHead": "e9b9079dc921e85961954727a7b2a8eabe5b9798"
22}
diff --git a/packages/typings/types/mobx-react-form.d.ts b/packages/typings/types/mobx-react-form.d.ts
new file mode 100644
index 000000000..4e19dc1c2
--- /dev/null
+++ b/packages/typings/types/mobx-react-form.d.ts
@@ -0,0 +1 @@
declare module 'mobx-react-form';
diff --git a/packages/typings/types/react-html-attributes.d.ts b/packages/typings/types/react-html-attributes.d.ts
new file mode 100644
index 000000000..6f8f20fe4
--- /dev/null
+++ b/packages/typings/types/react-html-attributes.d.ts
@@ -0,0 +1 @@
declare module 'react-html-attributes';
diff --git a/packages/typings/types/react-jss.d.ts b/packages/typings/types/react-jss.d.ts
new file mode 100644
index 000000000..9a77ddb87
--- /dev/null
+++ b/packages/typings/types/react-jss.d.ts
@@ -0,0 +1 @@
declare module 'react-jss';
diff --git a/packages/typings/types/react-loader.d.ts b/packages/typings/types/react-loader.d.ts
new file mode 100644
index 000000000..8dc36b71f
--- /dev/null
+++ b/packages/typings/types/react-loader.d.ts
@@ -0,0 +1,45 @@
1// Type definitions for react-loader 2.4
2// Project: https://github.com/quickleft/react-loader
3// Definitions by: Sudarsan Balaji <https://github.com/artfuldev>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5// TypeScript Version: 2.8
6
7import { Component } from 'react';
8
9interface LoaderOptions {
10 lines?: number;
11 length?: number;
12 width?: number;
13 radius?: number;
14 scale?: number;
15 corners?: number;
16 color?: string;
17 opacity?: number;
18 rotate?: number;
19 direction?: number;
20 speed?: number;
21 trail?: number;
22 fps?: number;
23 zIndex?: number;
24 top?: string;
25 left?: string;
26 shadow?: boolean;
27 hwaccel?: boolean;
28 position?: string;
29 loadedClassName?: string;
30 parentClassName?: string;
31}
32
33interface LoaderProps extends LoaderOptions {
34 loaded: boolean;
35 options?: LoaderOptions;
36 className?: string;
37}
38
39declare class ReactLoader extends Component<LoaderProps> {
40}
41
42declare namespace ReactLoader {
43}
44
45export = ReactLoader;
diff --git a/packages/ui/.gitignore b/packages/ui/.gitignore
new file mode 100644
index 000000000..d01826a6b
--- /dev/null
+++ b/packages/ui/.gitignore
@@ -0,0 +1,2 @@
1node_modules/
2lib
diff --git a/packages/ui/package-lock.json b/packages/ui/package-lock.json
new file mode 100644
index 000000000..8fa68a29b
--- /dev/null
+++ b/packages/ui/package-lock.json
@@ -0,0 +1,207 @@
1{
2 "name": "@meetfranz/ui",
3 "version": "0.0.0",
4 "lockfileVersion": 1,
5 "requires": true,
6 "dependencies": {
7 "@mdi/js": {
8 "version": "3.3.92",
9 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.3.92.tgz",
10 "integrity": "sha512-l+12IwTycHlijWMiRWBAssm0RSgkQiwMthIy/EcBAdSqtnsHnFjHq+aI2MBZ8/AYX0QBxNUv4+EN0SXZgNkWDg=="
11 },
12 "@mdi/react": {
13 "version": "1.1.0",
14 "resolved": "https://registry.npmjs.org/@mdi/react/-/react-1.1.0.tgz",
15 "integrity": "sha512-c0+avMYEZ6i7Pg1ULLFs+p7k8bDPiie9rrgGYs8VWQhw2tUUYz7r0lIPVzD3bzMghWfyhfkArj88K5Of0WTMNw=="
16 },
17 "@meetfranz/theme": {
18 "version": "file:../theme",
19 "requires": {
20 "color": "^3.1.0"
21 },
22 "dependencies": {
23 "color": {
24 "version": "3.1.0",
25 "bundled": true,
26 "requires": {
27 "color-convert": "^1.9.1",
28 "color-string": "^1.5.2"
29 }
30 },
31 "color-convert": {
32 "version": "1.9.3",
33 "bundled": true,
34 "requires": {
35 "color-name": "1.1.3"
36 }
37 },
38 "color-name": {
39 "version": "1.1.3",
40 "bundled": true
41 },
42 "color-string": {
43 "version": "1.5.3",
44 "bundled": true,
45 "requires": {
46 "color-name": "^1.0.0",
47 "simple-swizzle": "^0.2.2"
48 }
49 },
50 "is-arrayish": {
51 "version": "0.3.2",
52 "bundled": true
53 },
54 "simple-swizzle": {
55 "version": "0.2.2",
56 "bundled": true,
57 "requires": {
58 "is-arrayish": "^0.3.1"
59 }
60 }
61 }
62 },
63 "asap": {
64 "version": "2.0.6",
65 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
66 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
67 },
68 "core-js": {
69 "version": "1.2.7",
70 "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
71 "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
72 },
73 "create-react-class": {
74 "version": "15.6.3",
75 "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
76 "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==",
77 "requires": {
78 "fbjs": "^0.8.9",
79 "loose-envify": "^1.3.1",
80 "object-assign": "^4.1.1"
81 }
82 },
83 "encoding": {
84 "version": "0.1.12",
85 "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
86 "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
87 "requires": {
88 "iconv-lite": "~0.4.13"
89 }
90 },
91 "fbjs": {
92 "version": "0.8.17",
93 "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
94 "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
95 "requires": {
96 "core-js": "^1.0.0",
97 "isomorphic-fetch": "^2.1.1",
98 "loose-envify": "^1.0.0",
99 "object-assign": "^4.1.0",
100 "promise": "^7.1.1",
101 "setimmediate": "^1.0.5",
102 "ua-parser-js": "^0.7.18"
103 }
104 },
105 "iconv-lite": {
106 "version": "0.4.24",
107 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
108 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
109 "requires": {
110 "safer-buffer": ">= 2.1.2 < 3"
111 }
112 },
113 "is-stream": {
114 "version": "1.1.0",
115 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
116 "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
117 },
118 "isomorphic-fetch": {
119 "version": "2.2.1",
120 "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
121 "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
122 "requires": {
123 "node-fetch": "^1.0.1",
124 "whatwg-fetch": ">=0.10.0"
125 }
126 },
127 "js-tokens": {
128 "version": "4.0.0",
129 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
130 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
131 },
132 "loose-envify": {
133 "version": "1.4.0",
134 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
135 "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
136 "requires": {
137 "js-tokens": "^3.0.0 || ^4.0.0"
138 }
139 },
140 "node-fetch": {
141 "version": "1.7.3",
142 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
143 "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
144 "requires": {
145 "encoding": "^0.1.11",
146 "is-stream": "^1.0.1"
147 }
148 },
149 "object-assign": {
150 "version": "4.1.1",
151 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
152 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
153 },
154 "promise": {
155 "version": "7.3.1",
156 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
157 "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
158 "requires": {
159 "asap": "~2.0.3"
160 }
161 },
162 "prop-types": {
163 "version": "15.6.2",
164 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
165 "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
166 "requires": {
167 "loose-envify": "^1.3.1",
168 "object-assign": "^4.1.1"
169 }
170 },
171 "react-loader": {
172 "version": "2.4.5",
173 "resolved": "https://registry.npmjs.org/react-loader/-/react-loader-2.4.5.tgz",
174 "integrity": "sha1-zT5VHGzQc4wcDxPwc2VPk4KL5ak=",
175 "requires": {
176 "create-react-class": "^15.5.2",
177 "prop-types": "^15.5.8",
178 "spin.js": "2.x"
179 }
180 },
181 "safer-buffer": {
182 "version": "2.1.2",
183 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
184 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
185 },
186 "setimmediate": {
187 "version": "1.0.5",
188 "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
189 "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
190 },
191 "spin.js": {
192 "version": "2.3.2",
193 "resolved": "https://registry.npmjs.org/spin.js/-/spin.js-2.3.2.tgz",
194 "integrity": "sha1-bKpW1SBnNFD9XPvGlx5tB3LDeho="
195 },
196 "ua-parser-js": {
197 "version": "0.7.19",
198 "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz",
199 "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ=="
200 },
201 "whatwg-fetch": {
202 "version": "3.0.0",
203 "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
204 "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
205 }
206 }
207}
diff --git a/packages/ui/package.json b/packages/ui/package.json
new file mode 100644
index 000000000..514b2cc7c
--- /dev/null
+++ b/packages/ui/package.json
@@ -0,0 +1,38 @@
1{
2 "name": "@meetfranz/ui",
3 "version": "0.0.8",
4 "description": "React UI components for Franz",
5 "main": "lib/index.js",
6 "scripts": {
7 "dev": "tsc -w",
8 "prepare": "tsc"
9 },
10 "publishConfig": {
11 "access": "public"
12 },
13 "repository": {
14 "type": "git",
15 "url": "git+https://github.com/meetfranz/franz.git"
16 },
17 "keywords": [
18 "Franz",
19 "Forms",
20 "React",
21 "UI"
22 ],
23 "author": "Stefan Malzner <stefan@adlk.io>",
24 "license": "Apache-2.0",
25 "dependencies": {
26 "@mdi/js": "^3.3.92",
27 "@mdi/react": "^1.1.0",
28 "@meetfranz/theme": "^1.0.13",
29 "react-loader": "^2.4.5"
30 },
31 "peerDependencies": {
32 "classnames": "^2.2.6",
33 "react": "^16.7.0",
34 "react-dom": "16.7.0",
35 "react-jss": "^8.6.1"
36 },
37 "gitHead": "e9b9079dc921e85961954727a7b2a8eabe5b9798"
38}
diff --git a/packages/ui/src/badge/ProBadge.tsx b/packages/ui/src/badge/ProBadge.tsx
new file mode 100644
index 000000000..612e23210
--- /dev/null
+++ b/packages/ui/src/badge/ProBadge.tsx
@@ -0,0 +1,64 @@
1import { Theme } from '@meetfranz/theme';
2import classnames from 'classnames';
3import React, { Component } from 'react';
4import injectStyle from 'react-jss';
5
6import { Icon, Badge } from '../';
7import { IWithStyle } from '../typings/generic';
8
9interface IProps extends IWithStyle {
10 badgeClasses?: string;
11 iconClasses?: string;
12 inverted?: boolean;
13}
14
15const styles = (theme: Theme) => ({
16 badge: {
17 height: 'auto',
18 padding: [4, 6, 2, 7],
19 borderRadius: theme.borderRadiusSmall,
20 },
21 invertedBadge: {
22 background: theme.styleTypes.primary.contrast,
23 color: theme.styleTypes.primary.accent,
24 },
25 icon: {
26 fill: theme.styleTypes.primary.contrast,
27 },
28 invertedIcon: {
29 fill: theme.styleTypes.primary.accent,
30 },
31});
32
33class ProBadgeComponent extends Component<IProps> {
34 render() {
35 const {
36 classes,
37 badgeClasses,
38 iconClasses,
39 inverted,
40 } = this.props;
41
42 return (
43 <Badge
44 type="primary"
45 className={classnames([
46 classes.badge,
47 inverted && classes.invertedBadge,
48 badgeClasses,
49 ])}
50 >
51 <Icon
52 icon="mdiStar"
53 className={classnames([
54 classes.icon,
55 inverted && classes.invertedIcon,
56 iconClasses,
57 ])}
58 />
59 </Badge>
60 );
61 }
62}
63
64export const ProBadge = injectStyle(styles)(ProBadgeComponent);
diff --git a/packages/ui/src/badge/index.tsx b/packages/ui/src/badge/index.tsx
new file mode 100644
index 000000000..fc52ecc73
--- /dev/null
+++ b/packages/ui/src/badge/index.tsx
@@ -0,0 +1,76 @@
1import { Theme } from '@meetfranz/theme';
2import classnames from 'classnames';
3import React, { Component } from 'react';
4import injectStyle from 'react-jss';
5
6import { IWithStyle } from '../typings/generic';
7
8interface IProps extends IWithStyle {
9 type: string;
10 className?: string;
11 children: React.ReactNode;
12}
13
14const badgeStyles = (theme: Theme) => {
15 const styles = {};
16 Object.keys(theme.styleTypes).map((style) => {
17 Object.assign(styles, {
18 [style]: {
19 background: theme.styleTypes[style].accent,
20 color: theme.styleTypes[style].contrast,
21 border: theme.styleTypes[style].border,
22 },
23 });
24 });
25
26 return styles;
27};
28
29const styles = (theme: Theme) => ({
30 badge: {
31 display: 'inline-block',
32 padding: [3, 8, 4],
33 fontSize: theme.badgeFontSize,
34 borderRadius: theme.badgeBorderRadius,
35 margin: [0, 4],
36
37 '&:first-child': {
38 marginLeft: 0,
39 },
40
41 '&:last-child': {
42 marginRight: 0,
43 },
44 },
45 ...badgeStyles(theme),
46});
47
48class BadgeComponent extends Component<IProps> {
49 public static defaultProps = {
50 type: 'primary',
51 };
52
53 render() {
54 const {
55 classes,
56 children,
57 type,
58 className,
59 } = this.props;
60
61 return (
62 <div
63 className={classnames({
64 [classes.badge]: true,
65 [classes[type]]: true,
66 [`${className}`]: className,
67 })}
68 data-type="franz-badge"
69 >
70 {children}
71 </div>
72 );
73 }
74}
75
76export const Badge = injectStyle(styles)(BadgeComponent);
diff --git a/packages/ui/src/headline/index.tsx b/packages/ui/src/headline/index.tsx
new file mode 100644
index 000000000..7eabfcf80
--- /dev/null
+++ b/packages/ui/src/headline/index.tsx
@@ -0,0 +1,71 @@
1import { Theme } from '@meetfranz/theme';
2import classnames from 'classnames';
3import React, { Component } from 'react';
4import injectStyle from 'react-jss';
5
6import { IWithStyle, Omit } from '../typings/generic';
7
8interface IProps extends IWithStyle {
9 level?: number;
10 className?: string;
11 children: string | React.ReactNode;
12 id?: string;
13}
14
15const styles = (theme: Theme) => ({
16 headline: {
17 fontWeight: 'lighter',
18 color: theme.colorText,
19 marginTop: 0,
20 marginBottom: 10,
21 textAlign: 'left',
22 },
23 h1: {
24 fontSize: 30,
25 marginTop: 0,
26 },
27 h2: {
28 fontSize: 20,
29 },
30 h3: {
31 fontSize: 18,
32 },
33 h4: {
34 fontSize: theme.uiFontSize,
35 },
36});
37
38class HeadlineComponent extends Component<IProps> {
39 render() {
40 const {
41 classes,
42 level,
43 className,
44 children,
45 id,
46 } = this.props;
47
48 return React.createElement(
49 `h${level}`,
50 {
51 id,
52 className: classnames({
53 [classes.headline]: true,
54 [classes[level ? `h${level}` : 'h1']]: true,
55 [`${className}`]: className,
56 }),
57 'data-type': 'franz-headline',
58 },
59 children,
60 );
61 }
62}
63
64const Headline = injectStyle(styles)(HeadlineComponent);
65
66const createH = (level: number) => (props: Omit<IProps, 'classes' | 'theme'>) => <Headline level={level} {...props}>{props.children}</Headline>;
67
68export const H1 = createH(1);
69export const H2 = createH(2);
70export const H3 = createH(3);
71export const H4 = createH(4);
diff --git a/packages/ui/src/icon/index.tsx b/packages/ui/src/icon/index.tsx
new file mode 100644
index 000000000..e30d3396d
--- /dev/null
+++ b/packages/ui/src/icon/index.tsx
@@ -0,0 +1,55 @@
1import * as mdiIcons from '@mdi/js';
2import MdiIcon from '@mdi/react';
3import { Theme } from '@meetfranz/theme';
4import classnames from 'classnames';
5import React, { Component } from 'react';
6import injectStyle from 'react-jss';
7
8import { IWithStyle } from '../typings/generic';
9
10interface IProps extends IWithStyle {
11 icon: keyof typeof mdiIcons;
12 size?: number;
13 className?: string;
14}
15
16const styles = (theme: Theme) => ({
17 icon: {
18 fill: theme.colorText,
19 },
20});
21
22class IconComponent extends Component<IProps> {
23 public static defaultProps = {
24 size: 1,
25 };
26
27 render() {
28 const {
29 classes,
30 icon: iconName,
31 size,
32 className,
33 } = this.props;
34
35 let icon = '';
36 if (iconName && mdiIcons[iconName]) {
37 icon = mdiIcons[iconName];
38 } else if (iconName && !mdiIcons[iconName]) {
39 console.warn(`Icon '${iconName}' was not found`);
40 }
41
42 return (
43 <MdiIcon
44 path={icon}
45 size={size}
46 className={classnames({
47 [classes.icon]: true,
48 [`${className}`]: className,
49 })}
50 />
51 );
52 }
53}
54
55export const Icon = injectStyle(styles)(IconComponent);
diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts
new file mode 100644
index 000000000..666495ce9
--- /dev/null
+++ b/packages/ui/src/index.ts
@@ -0,0 +1,6 @@
1export { Icon } from './icon';
2export { Infobox } from './infobox';
3export * from './headline';
4export { Loader } from './loader';
5export { Badge } from './badge';
6export { ProBadge } from './badge/ProBadge';
diff --git a/packages/ui/src/infobox/index.tsx b/packages/ui/src/infobox/index.tsx
new file mode 100644
index 000000000..9066a623e
--- /dev/null
+++ b/packages/ui/src/infobox/index.tsx
@@ -0,0 +1,204 @@
1import { Theme } from '@meetfranz/theme';
2import classnames from 'classnames';
3import React, { Component } from 'react';
4import injectStyle from 'react-jss';
5
6import { Icon } from '../';
7import { IWithStyle } from '../typings/generic';
8
9interface IProps extends IWithStyle {
10 icon?: string;
11 type?: string;
12 dismissable?: boolean;
13 onDismiss?: () => void;
14 onUnmount?: () => void;
15 ctaOnClick?: () => void;
16 ctaLabel?: string;
17 ctaLoading?: boolean;
18 children: React.ReactNode;
19 className: string;
20}
21
22interface IState {
23 isDismissing: boolean;
24 dismissed: boolean;
25}
26
27const buttonStyles = (theme: Theme) => {
28 const styles = {};
29 Object.keys(theme.styleTypes).map((style) => {
30 Object.assign(styles, {
31 [style]: {
32 background: theme.styleTypes[style].accent,
33 color: theme.styleTypes[style].contrast,
34 border: theme.styleTypes[style].border,
35
36 '& svg': {
37 fill: theme.styleTypes[style].contrast,
38 },
39 },
40 });
41 });
42
43 return styles;
44};
45
46const styles = (theme: Theme) => ({
47 wrapper: {
48 position: 'relative',
49 overflow: 'hidden',
50 height: 'auto',
51 },
52 infobox: {
53 alignItems: 'center',
54 borderRadius: theme.borderRadiusSmall,
55 display: 'flex',
56 height: 'auto',
57 marginBottom: 30,
58 padding: '15px 20px',
59 top: 0,
60 transition: 'all 0.5s',
61 opacity: 1,
62 },
63 dismissing: {
64 // position: 'absolute',
65 marginTop: -100,
66 opacity: 0,
67 },
68 content: {
69 flex: 1,
70 },
71 icon: {
72 marginRight: 10,
73 },
74 close: {
75 color: (props: IProps) => theme.styleTypes[props.type ? props.type : 'primary'].contrast,
76 marginRight: -5,
77 border: 0,
78 background: 'none',
79 },
80 cta: {
81 borderColor: (props: IProps) => theme.styleTypes[props.type ? props.type : 'primary'].contrast,
82 borderRadius: theme.borderRadiusSmall,
83 borderStyle: 'solid',
84 borderWidth: 1,
85 background: 'none',
86 color: (props: IProps) => theme.styleTypes[props.type ? props.type : 'primary'].contrast,
87 marginLeft: 15,
88 padding: [4, 10],
89 fontSize: theme.uiFontSize,
90 transition: 'opacity 0.3s',
91
92 '&:hover': {
93 opacity: 0.6,
94 },
95 },
96 ...buttonStyles(theme),
97});
98
99class InfoboxComponent extends Component<IProps, IState> {
100 public static defaultProps = {
101 type: 'primary',
102 dismissable: false,
103 ctaOnClick: () => {},
104 onDismiss: () => {},
105 ctaLabel: '',
106 ctaLoading: false,
107 };
108
109 state = {
110 isDismissing: false,
111 dismissed: false,
112 };
113
114 dismiss() {
115 const {
116 onDismiss,
117 } = this.props;
118
119 this.setState({
120 isDismissing: true,
121 });
122
123 if (onDismiss) {
124 onDismiss();
125 }
126
127 setTimeout(() => {
128 this.setState({
129 dismissed: true,
130 });
131 }, 3000);
132 }
133
134 componentWillUnmount(): void {
135 const { onUnmount } = this.props;
136 if (onUnmount) onUnmount();
137 }
138
139 render() {
140 const {
141 classes,
142 children,
143 icon,
144 type,
145 ctaLabel,
146 ctaLoading,
147 ctaOnClick,
148 dismissable,
149 className,
150 } = this.props;
151
152 const {
153 isDismissing,
154 dismissed,
155 } = this.state;
156
157 if (dismissed) {
158 return null;
159 }
160
161 return (
162 <div className={classnames({
163 [classes.wrapper]: true,
164 [`${className}`]: className,
165 })}>
166 <div
167 className={classnames({
168 [classes.infobox]: true,
169 [classes[`${type}`]]: type,
170 [classes.dismissing]: isDismissing,
171 })}
172 data-type="franz-infobox"
173 >
174 {icon && (
175 <Icon icon={icon} className={classes.icon} />
176 )}
177 <div className={classes.content}>
178 {children}
179 </div>
180 {ctaLabel && (
181 <button
182 className={classes.cta}
183 onClick={ctaOnClick}
184 type="button"
185 >
186 {ctaLabel}
187 </button>
188 )}
189 {dismissable && (
190 <button
191 type="button"
192 onClick={this.dismiss.bind(this)}
193 className={classes.close}
194 >
195 <Icon icon="mdiClose" />
196 </button>
197 )}
198 </div>
199 </div>
200 );
201 }
202}
203
204export const Infobox = injectStyle(styles)(InfoboxComponent);
diff --git a/packages/ui/src/loader/index.tsx b/packages/ui/src/loader/index.tsx
new file mode 100644
index 000000000..4a3c8274f
--- /dev/null
+++ b/packages/ui/src/loader/index.tsx
@@ -0,0 +1,50 @@
1import { Theme } from '@meetfranz/theme';
2import classnames from 'classnames';
3import React, { Component } from 'react';
4import injectStyle, { withTheme } from 'react-jss';
5import ReactLoader from 'react-loader';
6
7import { IWithStyle } from '../typings/generic';
8
9interface IProps extends IWithStyle {
10 className?: string;
11 color?: string;
12}
13
14const styles = (theme: Theme) => ({
15 container: {
16 position: 'relative',
17 height: 60,
18 },
19});
20
21class LoaderComponent extends Component<IProps> {
22 render() {
23 const {
24 classes,
25 className,
26 color,
27 theme,
28 } = this.props;
29
30 return (
31 <div
32 className={classnames({
33 [classes.container]: true,
34 [`${className}`]: className,
35 })}
36 data-type="franz-loader"
37 >
38 <ReactLoader
39 loaded={false}
40 width={4}
41 scale={0.75}
42 color={color || theme.colorText}
43 parentClassName={classes.loader}
44 />
45 </div>
46 );
47 }
48}
49
50export const Loader = injectStyle(styles)(withTheme(LoaderComponent));
diff --git a/packages/ui/src/typings/generic.ts b/packages/ui/src/typings/generic.ts
new file mode 100644
index 000000000..d5f953b9f
--- /dev/null
+++ b/packages/ui/src/typings/generic.ts
@@ -0,0 +1,10 @@
1import { Theme } from '@meetfranz/theme/lib';
2import { Classes } from 'jss';
3
4export interface IWithStyle {
5 classes: Classes;
6 theme: Theme;
7}
8
9export type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
10export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json
new file mode 100644
index 000000000..8b9507eac
--- /dev/null
+++ b/packages/ui/tsconfig.json
@@ -0,0 +1,12 @@
1{
2 "extends": "../../tsconfig.settings.json",
3 "compilerOptions": {
4 "outDir": "lib",
5 "rootDir": "src"
6 },
7 "references": [
8 {
9 "path": "../theme"
10 }
11 ]
12}
diff --git a/packages/ui/tslint.json b/packages/ui/tslint.json
new file mode 100644
index 000000000..0946f2096
--- /dev/null
+++ b/packages/ui/tslint.json
@@ -0,0 +1,3 @@
1{
2 "extends": "../../tslint.json"
3}
diff --git a/src/actions/index.js b/src/actions/index.js
index 59acabb0b..fc525afeb 100644
--- a/src/actions/index.js
+++ b/src/actions/index.js
@@ -11,6 +11,8 @@ import payment from './payment';
11import news from './news'; 11import news from './news';
12import settings from './settings'; 12import settings from './settings';
13import requests from './requests'; 13import requests from './requests';
14import announcements from '../features/announcements/actions';
15import workspaces from '../features/workspaces/actions';
14 16
15const actions = Object.assign({}, { 17const actions = Object.assign({}, {
16 service, 18 service,
@@ -25,4 +27,8 @@ const actions = Object.assign({}, {
25 requests, 27 requests,
26}); 28});
27 29
28export default defineActions(actions, PropTypes.checkPropTypes); 30export default Object.assign(
31 defineActions(actions, PropTypes.checkPropTypes),
32 { announcements },
33 { workspaces },
34);
diff --git a/src/actions/lib/actions.js b/src/actions/lib/actions.js
index 499018d70..b38db9946 100644
--- a/src/actions/lib/actions.js
+++ b/src/actions/lib/actions.js
@@ -1,18 +1,27 @@
1export const createActionsFromDefinitions = (actionDefinitions, validate) => {
2 const actions = {};
3 Object.keys(actionDefinitions).forEach((actionName) => {
4 const action = (params = {}) => {
5 const schema = actionDefinitions[actionName];
6 validate(schema, params, actionName);
7 action.notify(params);
8 };
9 actions[actionName] = action;
10 action.listeners = [];
11 action.listen = listener => action.listeners.push(listener);
12 action.off = (listener) => {
13 const { listeners } = action;
14 listeners.splice(listeners.indexOf(listener), 1);
15 };
16 action.notify = params => action.listeners.forEach(listener => listener(params));
17 });
18 return actions;
19};
20
1export default (definitions, validate) => { 21export default (definitions, validate) => {
2 const newActions = {}; 22 const newActions = {};
3 Object.keys(definitions).forEach((scopeName) => { 23 Object.keys(definitions).forEach((scopeName) => {
4 newActions[scopeName] = {}; 24 newActions[scopeName] = createActionsFromDefinitions(definitions[scopeName], validate);
5 Object.keys(definitions[scopeName]).forEach((actionName) => {
6 const action = (params) => {
7 const schema = definitions[scopeName][actionName];
8 validate(schema, params, actionName);
9 action.notify(params);
10 };
11 newActions[scopeName][actionName] = action;
12 action.listeners = [];
13 action.listen = listener => action.listeners.push(listener);
14 action.notify = params => action.listeners.forEach(listener => listener(params));
15 });
16 }); 25 });
17 return newActions; 26 return newActions;
18}; 27};
diff --git a/src/actions/service.js b/src/actions/service.js
index 5d483b12a..ce62560a9 100644
--- a/src/actions/service.js
+++ b/src/actions/service.js
@@ -1,9 +1,11 @@
1import PropTypes from 'prop-types'; 1import PropTypes from 'prop-types';
2import ServiceModel from '../models/Service';
2 3
3export default { 4export default {
4 setActive: { 5 setActive: {
5 serviceId: PropTypes.string.isRequired, 6 serviceId: PropTypes.string.isRequired,
6 }, 7 },
8 blurActive: {},
7 setActiveNext: {}, 9 setActiveNext: {},
8 setActivePrev: {}, 10 setActivePrev: {},
9 showAddServiceInterface: { 11 showAddServiceInterface: {
@@ -36,6 +38,9 @@ export default {
36 serviceId: PropTypes.string.isRequired, 38 serviceId: PropTypes.string.isRequired,
37 webview: PropTypes.object.isRequired, 39 webview: PropTypes.object.isRequired,
38 }, 40 },
41 detachService: {
42 service: PropTypes.instanceOf(ServiceModel).isRequired,
43 },
39 focusService: { 44 focusService: {
40 serviceId: PropTypes.string.isRequired, 45 serviceId: PropTypes.string.isRequired,
41 }, 46 },
diff --git a/src/api/PaymentApi.js b/src/api/PaymentApi.js
index 3f6bb442e..7325151e9 100644
--- a/src/api/PaymentApi.js
+++ b/src/api/PaymentApi.js
@@ -11,12 +11,4 @@ export default class PaymentApi {
11 getHostedPage(planId) { 11 getHostedPage(planId) {
12 return this.server.getHostedPage(planId); 12 return this.server.getHostedPage(planId);
13 } 13 }
14
15 getDashboardUrl() {
16 return this.server.getPaymentDashboardUrl();
17 }
18
19 getOrders() {
20 return this.server.getSubscriptionOrders();
21 }
22} 14}
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index 2871769a9..a9ce202ff 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -3,7 +3,6 @@ import path from 'path';
3import tar from 'tar'; 3import tar from 'tar';
4import fs from 'fs-extra'; 4import fs from 'fs-extra';
5import { remote } from 'electron'; 5import { remote } from 'electron';
6import localStorage from 'mobx-localstorage';
7 6
8import ServiceModel from '../../models/Service'; 7import ServiceModel from '../../models/Service';
9import RecipePreviewModel from '../../models/RecipePreview'; 8import RecipePreviewModel from '../../models/RecipePreview';
@@ -16,6 +15,7 @@ import OrderModel from '../../models/Order';
16import { sleep } from '../../helpers/async-helpers'; 15import { sleep } from '../../helpers/async-helpers';
17 16
18import { API } from '../../environment'; 17import { API } from '../../environment';
18import { prepareAuthRequest, sendAuthRequest } from '../utils/auth';
19 19
20import { 20import {
21 getRecipeDirectory, 21 getRecipeDirectory,
@@ -39,6 +39,7 @@ const { default: fetch } = remote.require('electron-fetch');
39 39
40const SERVER_URL = API; 40const SERVER_URL = API;
41const API_VERSION = 'v1'; 41const API_VERSION = 'v1';
42const API_URL = `${SERVER_URL}/${API_VERSION}`;
42 43
43export default class ServerApi { 44export default class ServerApi {
44 recipePreviews = []; 45 recipePreviews = [];
@@ -47,12 +48,12 @@ export default class ServerApi {
47 48
48 // User 49 // User
49 async login(email, passwordHash) { 50 async login(email, passwordHash) {
50 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/auth/login`, this._prepareAuthRequest({ 51 const request = await sendAuthRequest(`${API_URL}/auth/login`, {
51 method: 'POST', 52 method: 'POST',
52 headers: { 53 headers: {
53 Authorization: `Basic ${window.btoa(`${email}:${passwordHash}`)}`, 54 Authorization: `Basic ${window.btoa(`${email}:${passwordHash}`)}`,
54 }, 55 },
55 }, false)); 56 }, false);
56 if (!request.ok) { 57 if (!request.ok) {
57 throw request; 58 throw request;
58 } 59 }
@@ -63,10 +64,10 @@ export default class ServerApi {
63 } 64 }
64 65
65 async signup(data) { 66 async signup(data) {
66 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/auth/signup`, this._prepareAuthRequest({ 67 const request = await sendAuthRequest(`${API_URL}/auth/signup`, {
67 method: 'POST', 68 method: 'POST',
68 body: JSON.stringify(data), 69 body: JSON.stringify(data),
69 }, false)); 70 }, false);
70 if (!request.ok) { 71 if (!request.ok) {
71 throw request; 72 throw request;
72 } 73 }
@@ -77,10 +78,10 @@ export default class ServerApi {
77 } 78 }
78 79
79 async inviteUser(data) { 80 async inviteUser(data) {
80 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/invite`, this._prepareAuthRequest({ 81 const request = await sendAuthRequest(`${API_URL}/invite`, {
81 method: 'POST', 82 method: 'POST',
82 body: JSON.stringify(data), 83 body: JSON.stringify(data),
83 })); 84 });
84 if (!request.ok) { 85 if (!request.ok) {
85 throw request; 86 throw request;
86 } 87 }
@@ -90,12 +91,12 @@ export default class ServerApi {
90 } 91 }
91 92
92 async retrievePassword(email) { 93 async retrievePassword(email) {
93 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/auth/password`, this._prepareAuthRequest({ 94 const request = await sendAuthRequest(`${API_URL}/auth/password`, {
94 method: 'POST', 95 method: 'POST',
95 body: JSON.stringify({ 96 body: JSON.stringify({
96 email, 97 email,
97 }), 98 }),
98 }, false)); 99 }, false);
99 if (!request.ok) { 100 if (!request.ok) {
100 throw request; 101 throw request;
101 } 102 }
@@ -106,9 +107,7 @@ export default class ServerApi {
106 } 107 }
107 108
108 async userInfo() { 109 async userInfo() {
109 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me`, this._prepareAuthRequest({ 110 const request = await sendAuthRequest(`${API_URL}/me`);
110 method: 'GET',
111 }));
112 if (!request.ok) { 111 if (!request.ok) {
113 throw request; 112 throw request;
114 } 113 }
@@ -121,10 +120,10 @@ export default class ServerApi {
121 } 120 }
122 121
123 async updateUserInfo(data) { 122 async updateUserInfo(data) {
124 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me`, this._prepareAuthRequest({ 123 const request = await sendAuthRequest(`${API_URL}/me`, {
125 method: 'PUT', 124 method: 'PUT',
126 body: JSON.stringify(data), 125 body: JSON.stringify(data),
127 })); 126 });
128 if (!request.ok) { 127 if (!request.ok) {
129 throw request; 128 throw request;
130 } 129 }
@@ -136,9 +135,9 @@ export default class ServerApi {
136 } 135 }
137 136
138 async deleteAccount() { 137 async deleteAccount() {
139 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me`, this._prepareAuthRequest({ 138 const request = await sendAuthRequest(`${API_URL}/me`, {
140 method: 'DELETE', 139 method: 'DELETE',
141 })); 140 });
142 if (!request.ok) { 141 if (!request.ok) {
143 throw request; 142 throw request;
144 } 143 }
@@ -150,9 +149,7 @@ export default class ServerApi {
150 149
151 // Services 150 // Services
152 async getServices() { 151 async getServices() {
153 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me/services`, this._prepareAuthRequest({ 152 const request = await sendAuthRequest(`${API_URL}/me/services`);
154 method: 'GET',
155 }));
156 if (!request.ok) { 153 if (!request.ok) {
157 throw request; 154 throw request;
158 } 155 }
@@ -165,12 +162,12 @@ export default class ServerApi {
165 } 162 }
166 163
167 async createService(recipeId, data) { 164 async createService(recipeId, data) {
168 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service`, this._prepareAuthRequest({ 165 const request = await sendAuthRequest(`${API_URL}/service`, {
169 method: 'POST', 166 method: 'POST',
170 body: JSON.stringify(Object.assign({ 167 body: JSON.stringify(Object.assign({
171 recipeId, 168 recipeId,
172 }, data)), 169 }, data)),
173 })); 170 });
174 if (!request.ok) { 171 if (!request.ok) {
175 throw request; 172 throw request;
176 } 173 }
@@ -195,10 +192,10 @@ export default class ServerApi {
195 await this.uploadServiceIcon(serviceId, data.iconFile); 192 await this.uploadServiceIcon(serviceId, data.iconFile);
196 } 193 }
197 194
198 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/${serviceId}`, this._prepareAuthRequest({ 195 const request = await sendAuthRequest(`${API_URL}/service/${serviceId}`, {
199 method: 'PUT', 196 method: 'PUT',
200 body: JSON.stringify(data), 197 body: JSON.stringify(data),
201 })); 198 });
202 199
203 if (!request.ok) { 200 if (!request.ok) {
204 throw request; 201 throw request;
@@ -216,14 +213,14 @@ export default class ServerApi {
216 const formData = new FormData(); 213 const formData = new FormData();
217 formData.append('icon', icon); 214 formData.append('icon', icon);
218 215
219 const requestData = this._prepareAuthRequest({ 216 const requestData = prepareAuthRequest({
220 method: 'PUT', 217 method: 'PUT',
221 body: formData, 218 body: formData,
222 }); 219 });
223 220
224 delete requestData.headers['Content-Type']; 221 delete requestData.headers['Content-Type'];
225 222
226 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/${serviceId}`, requestData); 223 const request = await window.fetch(`${API_URL}/service/${serviceId}`, requestData);
227 224
228 if (!request.ok) { 225 if (!request.ok) {
229 throw request; 226 throw request;
@@ -235,10 +232,10 @@ export default class ServerApi {
235 } 232 }
236 233
237 async reorderService(data) { 234 async reorderService(data) {
238 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/reorder`, this._prepareAuthRequest({ 235 const request = await sendAuthRequest(`${API_URL}/service/reorder`, {
239 method: 'PUT', 236 method: 'PUT',
240 body: JSON.stringify(data), 237 body: JSON.stringify(data),
241 })); 238 });
242 if (!request.ok) { 239 if (!request.ok) {
243 throw request; 240 throw request;
244 } 241 }
@@ -248,9 +245,9 @@ export default class ServerApi {
248 } 245 }
249 246
250 async deleteService(id) { 247 async deleteService(id) {
251 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/service/${id}`, this._prepareAuthRequest({ 248 const request = await sendAuthRequest(`${API_URL}/service/${id}`, {
252 method: 'DELETE', 249 method: 'DELETE',
253 })); 250 });
254 if (!request.ok) { 251 if (!request.ok) {
255 throw request; 252 throw request;
256 } 253 }
@@ -264,30 +261,26 @@ export default class ServerApi {
264 261
265 // Features 262 // Features
266 async getDefaultFeatures() { 263 async getDefaultFeatures() {
267 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/features/default`, this._prepareAuthRequest({ 264 const request = await sendAuthRequest(`${API_URL}/features/default`);
268 method: 'GET',
269 }));
270 if (!request.ok) { 265 if (!request.ok) {
271 throw request; 266 throw request;
272 } 267 }
273 const data = await request.json(); 268 const data = await request.json();
274 269
275 const features = data; 270 const features = data;
276 console.debug('ServerApi::getDefaultFeatures resolves', features); 271 debug('ServerApi::getDefaultFeatures resolves', features);
277 return features; 272 return features;
278 } 273 }
279 274
280 async getFeatures() { 275 async getFeatures() {
281 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/features`, this._prepareAuthRequest({ 276 const request = await sendAuthRequest(`${API_URL}/features`);
282 method: 'GET',
283 }));
284 if (!request.ok) { 277 if (!request.ok) {
285 throw request; 278 throw request;
286 } 279 }
287 const data = await request.json(); 280 const data = await request.json();
288 281
289 const features = data; 282 const features = data;
290 console.debug('ServerApi::getFeatures resolves', features); 283 debug('ServerApi::getFeatures resolves', features);
291 return features; 284 return features;
292 } 285 }
293 286
@@ -314,10 +307,10 @@ export default class ServerApi {
314 } 307 }
315 308
316 async getRecipeUpdates(recipeVersions) { 309 async getRecipeUpdates(recipeVersions) {
317 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/recipes/update`, this._prepareAuthRequest({ 310 const request = await sendAuthRequest(`${API_URL}/recipes/update`, {
318 method: 'POST', 311 method: 'POST',
319 body: JSON.stringify(recipeVersions), 312 body: JSON.stringify(recipeVersions),
320 })); 313 });
321 if (!request.ok) { 314 if (!request.ok) {
322 throw request; 315 throw request;
323 } 316 }
@@ -328,29 +321,19 @@ export default class ServerApi {
328 321
329 // Recipes Previews 322 // Recipes Previews
330 async getRecipePreviews() { 323 async getRecipePreviews() {
331 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/recipes`, this._prepareAuthRequest({ 324 const request = await sendAuthRequest(`${API_URL}/recipes`);
332 method: 'GET', 325 if (!request.ok) throw request;
333 }));
334 if (!request.ok) {
335 throw request;
336 }
337 const data = await request.json(); 326 const data = await request.json();
338
339 const recipePreviews = this._mapRecipePreviewModel(data); 327 const recipePreviews = this._mapRecipePreviewModel(data);
340 debug('ServerApi::getRecipes resolves', recipePreviews); 328 debug('ServerApi::getRecipes resolves', recipePreviews);
341
342 return recipePreviews; 329 return recipePreviews;
343 } 330 }
344 331
345 async getFeaturedRecipePreviews() { 332 async getFeaturedRecipePreviews() {
346 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/recipes/popular`, this._prepareAuthRequest({ 333 const request = await sendAuthRequest(`${API_URL}/recipes/popular`);
347 method: 'GET', 334 if (!request.ok) throw request;
348 }));
349 if (!request.ok) {
350 throw request;
351 }
352 const data = await request.json();
353 335
336 const data = await request.json();
354 // data = this._addLocalRecipesToPreviews(data); 337 // data = this._addLocalRecipesToPreviews(data);
355 338
356 const recipePreviews = this._mapRecipePreviewModel(data); 339 const recipePreviews = this._mapRecipePreviewModel(data);
@@ -359,14 +342,11 @@ export default class ServerApi {
359 } 342 }
360 343
361 async searchRecipePreviews(needle) { 344 async searchRecipePreviews(needle) {
362 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/recipes/search?needle=${needle}`, this._prepareAuthRequest({ 345 const url = `${API_URL}/recipes/search?needle=${needle}`;
363 method: 'GET', 346 const request = await sendAuthRequest(url);
364 })); 347 if (!request.ok) throw request;
365 if (!request.ok) {
366 throw request;
367 }
368 const data = await request.json();
369 348
349 const data = await request.json();
370 const recipePreviews = this._mapRecipePreviewModel(data); 350 const recipePreviews = this._mapRecipePreviewModel(data);
371 debug('ServerApi::searchRecipePreviews resolves', recipePreviews); 351 debug('ServerApi::searchRecipePreviews resolves', recipePreviews);
372 return recipePreviews; 352 return recipePreviews;
@@ -375,10 +355,9 @@ export default class ServerApi {
375 async getRecipePackage(recipeId) { 355 async getRecipePackage(recipeId) {
376 try { 356 try {
377 const recipesDirectory = path.join(app.getPath('userData'), 'recipes'); 357 const recipesDirectory = path.join(app.getPath('userData'), 'recipes');
378
379 const recipeTempDirectory = path.join(recipesDirectory, 'temp', recipeId); 358 const recipeTempDirectory = path.join(recipesDirectory, 'temp', recipeId);
380 const archivePath = path.join(recipeTempDirectory, 'recipe.tar.gz'); 359 const archivePath = path.join(recipeTempDirectory, 'recipe.tar.gz');
381 const packageUrl = `${SERVER_URL}/${API_VERSION}/recipes/download/${recipeId}`; 360 const packageUrl = `${API_URL}/recipes/download/${recipeId}`;
382 361
383 fs.ensureDirSync(recipeTempDirectory); 362 fs.ensureDirSync(recipeTempDirectory);
384 const res = await fetch(packageUrl); 363 const res = await fetch(packageUrl);
@@ -415,26 +394,21 @@ export default class ServerApi {
415 394
416 // Payment 395 // Payment
417 async getPlans() { 396 async getPlans() {
418 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/payment/plans`, this._prepareAuthRequest({ 397 const request = await sendAuthRequest(`${API_URL}/payment/plans`);
419 method: 'GET', 398 if (!request.ok) throw request;
420 }));
421 if (!request.ok) {
422 throw request;
423 }
424 const data = await request.json(); 399 const data = await request.json();
425
426 const plan = new PlanModel(data); 400 const plan = new PlanModel(data);
427 debug('ServerApi::getPlans resolves', plan); 401 debug('ServerApi::getPlans resolves', plan);
428 return plan; 402 return plan;
429 } 403 }
430 404
431 async getHostedPage(planId) { 405 async getHostedPage(planId) {
432 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/payment/init`, this._prepareAuthRequest({ 406 const request = await sendAuthRequest(`${API_URL}/payment/init`, {
433 method: 'POST', 407 method: 'POST',
434 body: JSON.stringify({ 408 body: JSON.stringify({
435 planId, 409 planId,
436 }), 410 }),
437 })); 411 });
438 if (!request.ok) { 412 if (!request.ok) {
439 throw request; 413 throw request;
440 } 414 }
@@ -444,43 +418,11 @@ export default class ServerApi {
444 return data; 418 return data;
445 } 419 }
446 420
447 async getPaymentDashboardUrl() {
448 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me/billing`, this._prepareAuthRequest({
449 method: 'GET',
450 }));
451 if (!request.ok) {
452 throw request;
453 }
454 const data = await request.json();
455
456 debug('ServerApi::getPaymentDashboardUrl resolves', data);
457 return data;
458 }
459
460 async getSubscriptionOrders() {
461 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/me/subscription`, this._prepareAuthRequest({
462 method: 'GET',
463 }));
464 if (!request.ok) {
465 throw request;
466 }
467 const data = await request.json();
468 const orders = this._mapOrderModels(data);
469 debug('ServerApi::getSubscriptionOrders resolves', orders);
470 return orders;
471 }
472
473 // News 421 // News
474 async getLatestNews() { 422 async getLatestNews() {
475 // eslint-disable-next-line 423 const url = `${API_URL}/news?platform=${os.platform()}&arch=${os.arch()}&version=${app.getVersion()}`;
476 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/news?platform=${os.platform()}&arch=${os.arch()}&version=${app.getVersion()}`, 424 const request = await sendAuthRequest(url);
477 this._prepareAuthRequest({ 425 if (!request.ok) throw request;
478 method: 'GET',
479 }));
480
481 if (!request.ok) {
482 throw request;
483 }
484 const data = await request.json(); 426 const data = await request.json();
485 const news = this._mapNewsModels(data); 427 const news = this._mapNewsModels(data);
486 debug('ServerApi::getLatestNews resolves', news); 428 debug('ServerApi::getLatestNews resolves', news);
@@ -488,23 +430,16 @@ export default class ServerApi {
488 } 430 }
489 431
490 async hideNews(id) { 432 async hideNews(id) {
491 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/news/${id}/read`, 433 const request = await sendAuthRequest(`${API_URL}/news/${id}/read`);
492 this._prepareAuthRequest({ 434 if (!request.ok) throw request;
493 method: 'GET',
494 }));
495
496 if (!request.ok) {
497 throw request;
498 }
499
500 debug('ServerApi::hideNews resolves', id); 435 debug('ServerApi::hideNews resolves', id);
501 } 436 }
502 437
503 // Health Check 438 // Health Check
504 async healthCheck() { 439 async healthCheck() {
505 const request = await window.fetch(`${SERVER_URL}/health`, this._prepareAuthRequest({ 440 const request = await sendAuthRequest(`${SERVER_URL}/health`, {
506 method: 'GET', 441 method: 'GET',
507 }, false)); 442 }, false);
508 if (!request.ok) { 443 if (!request.ok) {
509 throw request; 444 throw request;
510 } 445 }
@@ -520,10 +455,7 @@ export default class ServerApi {
520 if (Object.prototype.hasOwnProperty.call(config, 'services')) { 455 if (Object.prototype.hasOwnProperty.call(config, 'services')) {
521 const services = await Promise.all(config.services.map(async (s) => { 456 const services = await Promise.all(config.services.map(async (s) => {
522 const service = s; 457 const service = s;
523 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/recipes/${s.service}`, 458 const request = await sendAuthRequest(`${API_URL}/recipes/${s.service}`);
524 this._prepareAuthRequest({
525 method: 'GET',
526 }));
527 459
528 if (request.status === 200) { 460 if (request.status === 200) {
529 const data = await request.json(); 461 const data = await request.json();
@@ -546,9 +478,7 @@ export default class ServerApi {
546 // Helper 478 // Helper
547 async _mapServiceModels(services) { 479 async _mapServiceModels(services) {
548 const recipes = services.map(s => s.recipeId); 480 const recipes = services.map(s => s.recipeId);
549
550 await this._bulkRecipeCheck(recipes); 481 await this._bulkRecipeCheck(recipes);
551
552 /* eslint-disable no-return-await */ 482 /* eslint-disable no-return-await */
553 return Promise.all(services.map(async service => await this._prepareServiceModel(service))); 483 return Promise.all(services.map(async service => await this._prepareServiceModel(service)));
554 /* eslint-enable no-return-await */ 484 /* eslint-enable no-return-await */
@@ -632,26 +562,6 @@ export default class ServerApi {
632 }).filter(orderItem => orderItem !== null); 562 }).filter(orderItem => orderItem !== null);
633 } 563 }
634 564
635 _prepareAuthRequest(options, auth = true) {
636 const request = Object.assign(options, {
637 mode: 'cors',
638 headers: Object.assign({
639 'Content-Type': 'application/json',
640 'X-Franz-Source': 'desktop',
641 'X-Franz-Version': app.getVersion(),
642 'X-Franz-platform': process.platform,
643 'X-Franz-Timezone-Offset': new Date().getTimezoneOffset(),
644 'X-Franz-System-Locale': app.getLocale(),
645 }, options.headers),
646 });
647
648 if (auth) {
649 request.headers.Authorization = `Bearer ${localStorage.getItem('authToken')}`;
650 }
651
652 return request;
653 }
654
655 _getDevRecipes() { 565 _getDevRecipes() {
656 const recipesDirectory = getDevRecipeDirectory(); 566 const recipesDirectory = getDevRecipeDirectory();
657 try { 567 try {
diff --git a/src/api/utils/auth.js b/src/api/utils/auth.js
new file mode 100644
index 000000000..6dbdeaa7f
--- /dev/null
+++ b/src/api/utils/auth.js
@@ -0,0 +1,28 @@
1import { remote } from 'electron';
2import localStorage from 'mobx-localstorage';
3
4const { app } = remote;
5
6export const prepareAuthRequest = (options = { method: 'GET' }, auth = true) => {
7 const request = Object.assign(options, {
8 mode: 'cors',
9 headers: Object.assign({
10 'Content-Type': 'application/json',
11 'X-Franz-Source': 'desktop',
12 'X-Franz-Version': app.getVersion(),
13 'X-Franz-platform': process.platform,
14 'X-Franz-Timezone-Offset': new Date().getTimezoneOffset(),
15 'X-Franz-System-Locale': app.getLocale(),
16 }, options.headers),
17 });
18
19 if (auth) {
20 request.headers.Authorization = `Bearer ${localStorage.getItem('authToken')}`;
21 }
22
23 return request;
24};
25
26export const sendAuthRequest = (url, options, auth) => (
27 window.fetch(url, prepareAuthRequest(options, auth))
28);
diff --git a/src/app.js b/src/app.js
index 6660feb46..f6092bf60 100644
--- a/src/app.js
+++ b/src/app.js
@@ -27,6 +27,7 @@ import RecipesScreen from './containers/settings/RecipesScreen';
27import ServicesScreen from './containers/settings/ServicesScreen'; 27import ServicesScreen from './containers/settings/ServicesScreen';
28import EditServiceScreen from './containers/settings/EditServiceScreen'; 28import EditServiceScreen from './containers/settings/EditServiceScreen';
29import AccountScreen from './containers/settings/AccountScreen'; 29import AccountScreen from './containers/settings/AccountScreen';
30import TeamScreen from './containers/settings/TeamScreen';
30import EditUserScreen from './containers/settings/EditUserScreen'; 31import EditUserScreen from './containers/settings/EditUserScreen';
31import EditSettingsScreen from './containers/settings/EditSettingsScreen'; 32import EditSettingsScreen from './containers/settings/EditSettingsScreen';
32import InviteSettingsScreen from './containers/settings/InviteScreen'; 33import InviteSettingsScreen from './containers/settings/InviteScreen';
@@ -39,6 +40,9 @@ import PricingScreen from './containers/auth/PricingScreen';
39import InviteScreen from './containers/auth/InviteScreen'; 40import InviteScreen from './containers/auth/InviteScreen';
40import AuthLayoutContainer from './containers/auth/AuthLayoutContainer'; 41import AuthLayoutContainer from './containers/auth/AuthLayoutContainer';
41import SubscriptionPopupScreen from './containers/subscription/SubscriptionPopupScreen'; 42import SubscriptionPopupScreen from './containers/subscription/SubscriptionPopupScreen';
43import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen';
44import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen';
45import { WORKSPACES_ROUTES } from './features/workspaces';
42 46
43// Add Polyfills 47// Add Polyfills
44smoothScroll.polyfill(); 48smoothScroll.polyfill();
@@ -75,8 +79,11 @@ window.addEventListener('load', () => {
75 <Route path="/settings/recipes/:filter" component={RecipesScreen} /> 79 <Route path="/settings/recipes/:filter" component={RecipesScreen} />
76 <Route path="/settings/services" component={ServicesScreen} /> 80 <Route path="/settings/services" component={ServicesScreen} />
77 <Route path="/settings/services/:action/:id" component={EditServiceScreen} /> 81 <Route path="/settings/services/:action/:id" component={EditServiceScreen} />
82 <Route path={WORKSPACES_ROUTES.ROOT} component={WorkspacesScreen} />
83 <Route path={WORKSPACES_ROUTES.EDIT} component={EditWorkspaceScreen} />
78 <Route path="/settings/user" component={AccountScreen} /> 84 <Route path="/settings/user" component={AccountScreen} />
79 <Route path="/settings/user/edit" component={EditUserScreen} /> 85 <Route path="/settings/user/edit" component={EditUserScreen} />
86 <Route path="/settings/team" component={TeamScreen} />
80 <Route path="/settings/app" component={EditSettingsScreen} /> 87 <Route path="/settings/app" component={EditSettingsScreen} />
81 <Route path="/settings/invite" component={InviteSettingsScreen} /> 88 <Route path="/settings/invite" component={InviteSettingsScreen} />
82 </Route> 89 </Route>
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js
index a1641bc4a..d0476ef04 100644
--- a/src/components/layout/AppLayout.js
+++ b/src/components/layout/AppLayout.js
@@ -3,14 +3,20 @@ import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; 3import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5import { TitleBar } from 'electron-react-titlebar'; 5import { TitleBar } from 'electron-react-titlebar';
6import injectSheet from 'react-jss';
6 7
7import InfoBar from '../ui/InfoBar'; 8import InfoBar from '../ui/InfoBar';
8import { Component as BasicAuth } from '../../features/basicAuth'; 9import { Component as BasicAuth } from '../../features/basicAuth';
10import { Component as ShareFranz } from '../../features/shareFranz';
9import ErrorBoundary from '../util/ErrorBoundary'; 11import ErrorBoundary from '../util/ErrorBoundary';
10 12
11// import globalMessages from '../../i18n/globalMessages'; 13// import globalMessages from '../../i18n/globalMessages';
12 14
13import { isWindows } from '../../environment'; 15import { isWindows } from '../../environment';
16import AnnouncementScreen from '../../features/announcements/components/AnnouncementScreen';
17import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator';
18import { workspaceStore } from '../../features/workspaces';
19import { announcementActions } from '../../features/announcements/actions';
14 20
15function createMarkup(HTMLString) { 21function createMarkup(HTMLString) {
16 return { __html: HTMLString }; 22 return { __html: HTMLString };
@@ -43,18 +49,30 @@ const messages = defineMessages({
43 }, 49 },
44}); 50});
45 51
46export default 52const styles = theme => ({
47@observer 53 appContent: {
54 width: `calc(100% + ${theme.workspaces.drawer.width}px)`,
55 transition: 'transform 0.5s ease',
56 transform() {
57 return workspaceStore.isWorkspaceDrawerOpen ? 'translateX(0)' : `translateX(-${theme.workspaces.drawer.width}px)`;
58 },
59 },
60});
61
62@injectSheet(styles) @observer
48class AppLayout extends Component { 63class AppLayout extends Component {
49 static propTypes = { 64 static propTypes = {
65 classes: PropTypes.object.isRequired,
50 isFullScreen: PropTypes.bool.isRequired, 66 isFullScreen: PropTypes.bool.isRequired,
51 sidebar: PropTypes.element.isRequired, 67 sidebar: PropTypes.element.isRequired,
68 workspacesDrawer: PropTypes.element.isRequired,
52 services: PropTypes.element.isRequired, 69 services: PropTypes.element.isRequired,
53 children: PropTypes.element, 70 children: PropTypes.element,
54 news: MobxPropTypes.arrayOrObservableArray.isRequired, 71 news: MobxPropTypes.arrayOrObservableArray.isRequired,
55 // isOnline: PropTypes.bool.isRequired, 72 // isOnline: PropTypes.bool.isRequired,
56 showServicesUpdatedInfoBar: PropTypes.bool.isRequired, 73 showServicesUpdatedInfoBar: PropTypes.bool.isRequired,
57 appUpdateIsDownloaded: PropTypes.bool.isRequired, 74 appUpdateIsDownloaded: PropTypes.bool.isRequired,
75 nextAppReleaseVersion: PropTypes.string,
58 removeNewsItem: PropTypes.func.isRequired, 76 removeNewsItem: PropTypes.func.isRequired,
59 reloadServicesAfterUpdate: PropTypes.func.isRequired, 77 reloadServicesAfterUpdate: PropTypes.func.isRequired,
60 installAppUpdate: PropTypes.func.isRequired, 78 installAppUpdate: PropTypes.func.isRequired,
@@ -63,10 +81,13 @@ class AppLayout extends Component {
63 retryRequiredRequests: PropTypes.func.isRequired, 81 retryRequiredRequests: PropTypes.func.isRequired,
64 areRequiredRequestsLoading: PropTypes.bool.isRequired, 82 areRequiredRequestsLoading: PropTypes.bool.isRequired,
65 darkMode: PropTypes.bool.isRequired, 83 darkMode: PropTypes.bool.isRequired,
84 isDelayAppScreenVisible: PropTypes.bool.isRequired,
85 isAnnouncementVisible: PropTypes.bool.isRequired,
66 }; 86 };
67 87
68 static defaultProps = { 88 static defaultProps = {
69 children: [], 89 children: [],
90 nextAppReleaseVersion: null,
70 }; 91 };
71 92
72 static contextTypes = { 93 static contextTypes = {
@@ -75,7 +96,9 @@ class AppLayout extends Component {
75 96
76 render() { 97 render() {
77 const { 98 const {
99 classes,
78 isFullScreen, 100 isFullScreen,
101 workspacesDrawer,
79 sidebar, 102 sidebar,
80 services, 103 services,
81 children, 104 children,
@@ -83,6 +106,7 @@ class AppLayout extends Component {
83 news, 106 news,
84 showServicesUpdatedInfoBar, 107 showServicesUpdatedInfoBar,
85 appUpdateIsDownloaded, 108 appUpdateIsDownloaded,
109 nextAppReleaseVersion,
86 removeNewsItem, 110 removeNewsItem,
87 reloadServicesAfterUpdate, 111 reloadServicesAfterUpdate,
88 installAppUpdate, 112 installAppUpdate,
@@ -91,6 +115,8 @@ class AppLayout extends Component {
91 retryRequiredRequests, 115 retryRequiredRequests,
92 areRequiredRequestsLoading, 116 areRequiredRequestsLoading,
93 darkMode, 117 darkMode,
118 isDelayAppScreenVisible,
119 isAnnouncementVisible,
94 } = this.props; 120 } = this.props;
95 121
96 const { intl } = this.context; 122 const { intl } = this.context;
@@ -99,29 +125,23 @@ class AppLayout extends Component {
99 <ErrorBoundary> 125 <ErrorBoundary>
100 <div className={darkMode ? 'theme__dark' : ''}> 126 <div className={darkMode ? 'theme__dark' : ''}>
101 <div className="app"> 127 <div className="app">
102 {isWindows && !isFullScreen && ( 128 {isWindows && !isFullScreen && <TitleBar menu={window.franz.menu.template} icon="assets/images/logo.svg" />}
103 <TitleBar 129 <div className={`app__content ${classes.appContent}`}>
104 menu={window.franz.menu.template} 130 {workspacesDrawer}
105 icon="assets/images/logo.svg"
106 />
107 )}
108 <div className="app__content">
109 {sidebar} 131 {sidebar}
110 <div className="app__service"> 132 <div className="app__service">
111 {news.length > 0 133 <WorkspaceSwitchingIndicator />
112 && news.map(item => ( 134 {news.length > 0 && news.map(item => (
113 <InfoBar 135 <InfoBar
114 key={item.id} 136 key={item.id}
115 position="top" 137 position="top"
116 type={item.type} 138 type={item.type}
117 sticky={item.sticky} 139 sticky={item.sticky}
118 onHide={() => removeNewsItem({ newsId: item.id })} 140 onHide={() => removeNewsItem({ newsId: item.id })}
119 > 141 >
120 <span 142 <span dangerouslySetInnerHTML={createMarkup(item.message)} />
121 dangerouslySetInnerHTML={createMarkup(item.message)} 143 </InfoBar>
122 /> 144 ))}
123 </InfoBar>
124 ))}
125 {/* {!isOnline && ( 145 {/* {!isOnline && (
126 <InfoBar 146 <InfoBar
127 type="danger" 147 type="danger"
@@ -164,12 +184,18 @@ class AppLayout extends Component {
164 <span className="mdi mdi-information" /> 184 <span className="mdi mdi-information" />
165 {intl.formatMessage(messages.updateAvailable)} 185 {intl.formatMessage(messages.updateAvailable)}
166 {' '} 186 {' '}
167 <a href="https://meetfranz.com/changelog" target="_blank"> 187 <button
188 className="info-bar__inline-button"
189 type="button"
190 onClick={() => announcementActions.show({ targetVersion: nextAppReleaseVersion })}
191 >
168 <u>{intl.formatMessage(messages.changelog)}</u> 192 <u>{intl.formatMessage(messages.changelog)}</u>
169 </a> 193 </button>
170 </InfoBar> 194 </InfoBar>
171 )} 195 )}
172 <BasicAuth /> 196 <BasicAuth />
197 <ShareFranz />
198 {isAnnouncementVisible && (<AnnouncementScreen />)}
173 {services} 199 {services}
174 </div> 200 </div>
175 </div> 201 </div>
@@ -180,3 +206,5 @@ class AppLayout extends Component {
180 ); 206 );
181 } 207 }
182} 208}
209
210export default AppLayout;
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index 609a3b604..36c1f2e39 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -6,6 +6,8 @@ import { observer } from 'mobx-react';
6 6
7import Tabbar from '../services/tabs/Tabbar'; 7import Tabbar from '../services/tabs/Tabbar';
8import { ctrlKey } from '../../environment'; 8import { ctrlKey } from '../../environment';
9import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../../features/workspaces';
10import { gaEvent } from '../../lib/analytics';
9 11
10const messages = defineMessages({ 12const messages = defineMessages({
11 settings: { 13 settings: {
@@ -24,6 +26,14 @@ const messages = defineMessages({
24 id: 'sidebar.unmuteApp', 26 id: 'sidebar.unmuteApp',
25 defaultMessage: '!!!Enable notifications & audio', 27 defaultMessage: '!!!Enable notifications & audio',
26 }, 28 },
29 openWorkspaceDrawer: {
30 id: 'sidebar.openWorkspaceDrawer',
31 defaultMessage: '!!!Open workspace drawer',
32 },
33 closeWorkspaceDrawer: {
34 id: 'sidebar.closeWorkspaceDrawer',
35 defaultMessage: '!!!Close workspace drawer',
36 },
27}); 37});
28 38
29export default @observer class Sidebar extends Component { 39export default @observer class Sidebar extends Component {
@@ -31,7 +41,9 @@ export default @observer class Sidebar extends Component {
31 openSettings: PropTypes.func.isRequired, 41 openSettings: PropTypes.func.isRequired,
32 toggleMuteApp: PropTypes.func.isRequired, 42 toggleMuteApp: PropTypes.func.isRequired,
33 isAppMuted: PropTypes.bool.isRequired, 43 isAppMuted: PropTypes.bool.isRequired,
34 } 44 isWorkspaceDrawerOpen: PropTypes.bool.isRequired,
45 toggleWorkspaceDrawer: PropTypes.func.isRequired,
46 };
35 47
36 static contextTypes = { 48 static contextTypes = {
37 intl: intlShape, 49 intl: intlShape,
@@ -53,9 +65,23 @@ export default @observer class Sidebar extends Component {
53 this.setState({ tooltipEnabled: false }); 65 this.setState({ tooltipEnabled: false });
54 } 66 }
55 67
68 updateToolTip() {
69 this.disableToolTip();
70 setTimeout(this.enableToolTip.bind(this));
71 }
72
56 render() { 73 render() {
57 const { openSettings, toggleMuteApp, isAppMuted } = this.props; 74 const {
75 openSettings,
76 toggleMuteApp,
77 isAppMuted,
78 isWorkspaceDrawerOpen,
79 toggleWorkspaceDrawer,
80 } = this.props;
58 const { intl } = this.context; 81 const { intl } = this.context;
82 const workspaceToggleMessage = (
83 isWorkspaceDrawerOpen ? messages.closeWorkspaceDrawer : messages.openWorkspaceDrawer
84 );
59 85
60 return ( 86 return (
61 <div className="sidebar"> 87 <div className="sidebar">
@@ -64,9 +90,26 @@ export default @observer class Sidebar extends Component {
64 enableToolTip={() => this.enableToolTip()} 90 enableToolTip={() => this.enableToolTip()}
65 disableToolTip={() => this.disableToolTip()} 91 disableToolTip={() => this.disableToolTip()}
66 /> 92 />
93 {workspaceStore.isFeatureEnabled ? (
94 <button
95 type="button"
96 onClick={() => {
97 toggleWorkspaceDrawer();
98 this.updateToolTip();
99 gaEvent(GA_CATEGORY_WORKSPACES, 'toggleDrawer', 'sidebar');
100 }}
101 className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`}
102 data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${ctrlKey}+D)`}
103 >
104 <i className="mdi mdi-view-grid" />
105 </button>
106 ) : null}
67 <button 107 <button
68 type="button" 108 type="button"
69 onClick={toggleMuteApp} 109 onClick={() => {
110 toggleMuteApp();
111 this.updateToolTip();
112 }}
70 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`} 113 className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`}
71 data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+Shift+M)`} 114 data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+Shift+M)`}
72 > 115 >
diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js
new file mode 100644
index 000000000..13148b9b3
--- /dev/null
+++ b/src/components/services/content/ServiceView.js
@@ -0,0 +1,139 @@
1import React, { Component, Fragment } from 'react';
2import PropTypes from 'prop-types';
3import { autorun } from 'mobx';
4import { observer } from 'mobx-react';
5import classnames from 'classnames';
6
7import ServiceModel from '../../../models/Service';
8import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl';
9import WebviewLoader from '../../ui/WebviewLoader';
10import WebviewCrashHandler from './WebviewCrashHandler';
11import WebviewErrorHandler from './ErrorHandlers/WebviewErrorHandler';
12import ServiceDisabled from './ServiceDisabled';
13import ServiceWebview from './ServiceWebview';
14
15export default @observer class ServiceView extends Component {
16 static propTypes = {
17 service: PropTypes.instanceOf(ServiceModel).isRequired,
18 setWebviewReference: PropTypes.func.isRequired,
19 detachService: PropTypes.func.isRequired,
20 reload: PropTypes.func.isRequired,
21 edit: PropTypes.func.isRequired,
22 enable: PropTypes.func.isRequired,
23 isActive: PropTypes.bool,
24 };
25
26 static defaultProps = {
27 isActive: false,
28 };
29
30 state = {
31 forceRepaint: false,
32 targetUrl: '',
33 statusBarVisible: false,
34 };
35
36 autorunDisposer = null;
37
38 forceRepaintTimeout = null;
39
40 componentDidMount() {
41 this.autorunDisposer = autorun(() => {
42 if (this.props.service.isActive) {
43 this.setState({ forceRepaint: true });
44 this.forceRepaintTimeout = setTimeout(() => {
45 this.setState({ forceRepaint: false });
46 }, 100);
47 }
48 });
49 }
50
51 componentWillUnmount() {
52 this.autorunDisposer();
53 clearTimeout(this.forceRepaintTimeout);
54 }
55
56 updateTargetUrl = (event) => {
57 let visible = true;
58 if (event.url === '' || event.url === '#') {
59 visible = false;
60 }
61 this.setState({
62 targetUrl: event.url,
63 statusBarVisible: visible,
64 });
65 };
66
67 render() {
68 const {
69 detachService,
70 service,
71 setWebviewReference,
72 reload,
73 edit,
74 enable,
75 } = this.props;
76
77 const webviewClasses = classnames({
78 services__webview: true,
79 'services__webview-wrapper': true,
80 'is-active': service.isActive,
81 'services__webview--force-repaint': this.state.forceRepaint,
82 });
83
84 let statusBar = null;
85 if (this.state.statusBarVisible) {
86 statusBar = (
87 <StatusBarTargetUrl text={this.state.targetUrl} />
88 );
89 }
90
91 return (
92 <div className={webviewClasses}>
93 {service.isActive && service.isEnabled && (
94 <Fragment>
95 {service.hasCrashed && (
96 <WebviewCrashHandler
97 name={service.recipe.name}
98 webview={service.webview}
99 reload={reload}
100 />
101 )}
102 {service.isEnabled && service.isLoading && service.isFirstLoad && (
103 <WebviewLoader
104 loaded={false}
105 name={service.name}
106 />
107 )}
108 {service.isError && (
109 <WebviewErrorHandler
110 name={service.recipe.name}
111 errorMessage={service.errorMessage}
112 reload={reload}
113 edit={edit}
114 />
115 )}
116 </Fragment>
117 )}
118 {!service.isEnabled ? (
119 <Fragment>
120 {service.isActive && (
121 <ServiceDisabled
122 name={service.recipe.name}
123 webview={service.webview}
124 enable={enable}
125 />
126 )}
127 </Fragment>
128 ) : (
129 <ServiceWebview
130 service={service}
131 setWebviewReference={setWebviewReference}
132 detachService={detachService}
133 />
134 )}
135 {statusBar}
136 </div>
137 );
138 }
139}
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js
index bb577e4cc..7252c695f 100644
--- a/src/components/services/content/ServiceWebview.js
+++ b/src/components/services/content/ServiceWebview.js
@@ -1,145 +1,50 @@
1import React, { Component, Fragment } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { autorun } from 'mobx';
4import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
5import Webview from 'react-electron-web-view'; 4import ElectronWebView from 'react-electron-web-view';
6import classnames from 'classnames';
7 5
8import ServiceModel from '../../../models/Service'; 6import ServiceModel from '../../../models/Service';
9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl';
10import WebviewLoader from '../../ui/WebviewLoader';
11import WebviewCrashHandler from './WebviewCrashHandler';
12import WebviewErrorHandler from './ErrorHandlers/WebviewErrorHandler';
13import ServiceDisabled from './ServiceDisabled';
14 7
15export default @observer class ServiceWebview extends Component { 8@observer
9class ServiceWebview extends Component {
16 static propTypes = { 10 static propTypes = {
17 service: PropTypes.instanceOf(ServiceModel).isRequired, 11 service: PropTypes.instanceOf(ServiceModel).isRequired,
18 setWebviewReference: PropTypes.func.isRequired, 12 setWebviewReference: PropTypes.func.isRequired,
19 reload: PropTypes.func.isRequired, 13 detachService: PropTypes.func.isRequired,
20 edit: PropTypes.func.isRequired,
21 enable: PropTypes.func.isRequired,
22 isActive: PropTypes.bool,
23 }; 14 };
24 15
25 static defaultProps = {
26 isActive: false,
27 };
28
29 state = {
30 forceRepaint: false,
31 targetUrl: '',
32 statusBarVisible: false,
33 };
34
35 autorunDisposer = null;
36
37 webview = null; 16 webview = null;
38 17
39 componentDidMount() {
40 this.autorunDisposer = autorun(() => {
41 if (this.props.service.isActive) {
42 this.setState({ forceRepaint: true });
43 setTimeout(() => {
44 this.setState({ forceRepaint: false });
45 }, 100);
46 }
47 });
48 }
49
50 componentWillUnmount() { 18 componentWillUnmount() {
51 this.autorunDisposer(); 19 const { service, detachService } = this.props;
52 } 20 detachService({ service });
53
54 updateTargetUrl = (event) => {
55 let visible = true;
56 if (event.url === '' || event.url === '#') {
57 visible = false;
58 }
59 this.setState({
60 targetUrl: event.url,
61 statusBarVisible: visible,
62 });
63 } 21 }
64 22
65 render() { 23 render() {
66 const { 24 const {
67 service, 25 service,
68 setWebviewReference, 26 setWebviewReference,
69 reload,
70 edit,
71 enable,
72 } = this.props; 27 } = this.props;
73 28
74 const webviewClasses = classnames({
75 services__webview: true,
76 'services__webview-wrapper': true,
77 'is-active': service.isActive,
78 'services__webview--force-repaint': this.state.forceRepaint,
79 });
80
81 let statusBar = null;
82 if (this.state.statusBarVisible) {
83 statusBar = (
84 <StatusBarTargetUrl text={this.state.targetUrl} />
85 );
86 }
87
88 return ( 29 return (
89 <div className={webviewClasses}> 30 <ElectronWebView
90 {service.isActive && service.isEnabled && ( 31 ref={(webview) => { this.webview = webview; }}
91 <Fragment> 32 autosize
92 {service.hasCrashed && ( 33 src={service.url}
93 <WebviewCrashHandler 34 preload="./webview/recipe.js"
94 name={service.recipe.name} 35 partition={`persist:service-${service.id}`}
95 webview={service.webview} 36 onDidAttach={() => {
96 reload={reload} 37 setWebviewReference({
97 /> 38 serviceId: service.id,
98 )} 39 webview: this.webview.view,
99 {service.isEnabled && service.isLoading && service.isFirstLoad && ( 40 });
100 <WebviewLoader 41 }}
101 loaded={false} 42 onUpdateTargetUrl={this.updateTargetUrl}
102 name={service.name} 43 useragent={service.userAgent}
103 /> 44 allowpopups
104 )} 45 />
105 {service.isError && (
106 <WebviewErrorHandler
107 name={service.recipe.name}
108 errorMessage={service.errorMessage}
109 reload={reload}
110 edit={edit}
111 />
112 )}
113 </Fragment>
114 )}
115 {!service.isEnabled ? (
116 <Fragment>
117 {service.isActive && (
118 <ServiceDisabled
119 name={service.recipe.name}
120 webview={service.webview}
121 enable={enable}
122 />
123 )}
124 </Fragment>
125 ) : (
126 <Webview
127 ref={(element) => { this.webview = element; }}
128 autosize
129 src={service.url}
130 preload="./webview/recipe.js"
131 partition={`persist:service-${service.id}`}
132 onDidAttach={() => setWebviewReference({
133 serviceId: service.id,
134 webview: this.webview.view,
135 })}
136 onUpdateTargetUrl={this.updateTargetUrl}
137 useragent={service.userAgent}
138 allowpopups
139 />
140 )}
141 {statusBar}
142 </div>
143 ); 46 );
144 } 47 }
145} 48}
49
50export default ServiceWebview;
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js
index 54f16ba12..8f8c38a11 100644
--- a/src/components/services/content/Services.js
+++ b/src/components/services/content/Services.js
@@ -4,7 +4,7 @@ import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4import { Link } from 'react-router'; 4import { Link } from 'react-router';
5import { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, intlShape } from 'react-intl';
6 6
7import Webview from './ServiceWebview'; 7import ServiceView from './ServiceView';
8import Appear from '../../ui/effects/Appear'; 8import Appear from '../../ui/effects/Appear';
9 9
10const messages = defineMessages({ 10const messages = defineMessages({
@@ -22,6 +22,7 @@ export default @observer class Services extends Component {
22 static propTypes = { 22 static propTypes = {
23 services: MobxPropTypes.arrayOrObservableArray, 23 services: MobxPropTypes.arrayOrObservableArray,
24 setWebviewReference: PropTypes.func.isRequired, 24 setWebviewReference: PropTypes.func.isRequired,
25 detachService: PropTypes.func.isRequired,
25 handleIPCMessage: PropTypes.func.isRequired, 26 handleIPCMessage: PropTypes.func.isRequired,
26 openWindow: PropTypes.func.isRequired, 27 openWindow: PropTypes.func.isRequired,
27 reload: PropTypes.func.isRequired, 28 reload: PropTypes.func.isRequired,
@@ -42,6 +43,7 @@ export default @observer class Services extends Component {
42 services, 43 services,
43 handleIPCMessage, 44 handleIPCMessage,
44 setWebviewReference, 45 setWebviewReference,
46 detachService,
45 openWindow, 47 openWindow,
46 reload, 48 reload,
47 openSettings, 49 openSettings,
@@ -71,11 +73,12 @@ export default @observer class Services extends Component {
71 </Appear> 73 </Appear>
72 )} 74 )}
73 {services.map(service => ( 75 {services.map(service => (
74 <Webview 76 <ServiceView
75 key={service.id} 77 key={service.id}
76 service={service} 78 service={service}
77 handleIPCMessage={handleIPCMessage} 79 handleIPCMessage={handleIPCMessage}
78 setWebviewReference={setWebviewReference} 80 setWebviewReference={setWebviewReference}
81 detachService={detachService}
79 openWindow={openWindow} 82 openWindow={openWindow}
80 reload={() => reload({ serviceId: service.id })} 83 reload={() => reload({ serviceId: service.id })}
81 edit={() => openSettings({ path: `services/edit/${service.id}` })} 84 edit={() => openSettings({ path: `services/edit/${service.id}` })}
diff --git a/src/components/services/content/WebviewCrashHandler.js b/src/components/services/content/WebviewCrashHandler.js
index 42bc3c877..7a69dba87 100644
--- a/src/components/services/content/WebviewCrashHandler.js
+++ b/src/components/services/content/WebviewCrashHandler.js
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5import ms from 'ms';
5 6
6import Button from '../../ui/Button'; 7import Button from '../../ui/Button';
7 8
@@ -35,12 +36,12 @@ export default @observer class WebviewCrashHandler extends Component {
35 }; 36 };
36 37
37 state = { 38 state = {
38 countdown: 10000, 39 countdown: ms('10s'),
39 } 40 }
40 41
41 countdownInterval = null; 42 countdownInterval = null;
42 43
43 countdownIntervalTimeout = 1000; 44 countdownIntervalTimeout = ms('1s');
44 45
45 46
46 componentDidMount() { 47 componentDidMount() {
@@ -75,7 +76,7 @@ export default @observer class WebviewCrashHandler extends Component {
75 <p className="footnote"> 76 <p className="footnote">
76 {intl.formatMessage(messages.autoReload, { 77 {intl.formatMessage(messages.autoReload, {
77 name, 78 name,
78 seconds: this.state.countdown / 1000, 79 seconds: this.state.countdown / ms('1s'),
79 })} 80 })}
80 </p> 81 </p>
81 </div> 82 </div>
diff --git a/src/components/services/tabs/Tabbar.js b/src/components/services/tabs/Tabbar.js
index dd5c2140f..5e8260ad0 100644
--- a/src/components/services/tabs/Tabbar.js
+++ b/src/components/services/tabs/Tabbar.js
@@ -19,7 +19,7 @@ export default @observer class TabBar extends Component {
19 updateService: PropTypes.func.isRequired, 19 updateService: PropTypes.func.isRequired,
20 showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired, 20 showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired,
21 showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired, 21 showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired,
22 } 22 };
23 23
24 onSortEnd = ({ oldIndex, newIndex }) => { 24 onSortEnd = ({ oldIndex, newIndex }) => {
25 const { 25 const {
@@ -45,7 +45,7 @@ export default @observer class TabBar extends Component {
45 redirect: false, 45 redirect: false,
46 }); 46 });
47 } 47 }
48 } 48 };
49 49
50 disableService({ serviceId }) { 50 disableService({ serviceId }) {
51 this.toggleService({ serviceId, isEnabled: false }); 51 this.toggleService({ serviceId, isEnabled: false });
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index 9c9543749..3f6964b6b 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -3,12 +3,11 @@ import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; 3import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5import ReactTooltip from 'react-tooltip'; 5import ReactTooltip from 'react-tooltip';
6import moment from 'moment'; 6import { ProBadge } from '@meetfranz/ui';
7 7
8import Loader from '../../ui/Loader'; 8import Loader from '../../ui/Loader';
9import Button from '../../ui/Button'; 9import Button from '../../ui/Button';
10import Infobox from '../../ui/Infobox'; 10import Infobox from '../../ui/Infobox';
11import Link from '../../ui/Link';
12import SubscriptionForm from '../../../containers/subscription/SubscriptionFormScreen'; 11import SubscriptionForm from '../../../containers/subscription/SubscriptionFormScreen';
13 12
14const messages = defineMessages({ 13const messages = defineMessages({
@@ -24,10 +23,6 @@ const messages = defineMessages({
24 id: 'settings.account.headlineUpgrade', 23 id: 'settings.account.headlineUpgrade',
25 defaultMessage: '!!!Upgrade your Account', 24 defaultMessage: '!!!Upgrade your Account',
26 }, 25 },
27 headlineInvoices: {
28 id: 'settings.account.headlineInvoices',
29 defaultMessage: '!!Invoices',
30 },
31 headlineDangerZone: { 26 headlineDangerZone: {
32 id: 'settings.account.headlineDangerZone', 27 id: 'settings.account.headlineDangerZone',
33 defaultMessage: '!!Danger Zone', 28 defaultMessage: '!!Danger Zone',
@@ -44,14 +39,14 @@ const messages = defineMessages({
44 id: 'settings.account.accountType.premium', 39 id: 'settings.account.accountType.premium',
45 defaultMessage: '!!!Premium Supporter Account', 40 defaultMessage: '!!!Premium Supporter Account',
46 }, 41 },
47 accountTypeEnterprise: {
48 id: 'settings.account.accountType.enterprise',
49 defaultMessage: '!!!Enterprise Account',
50 },
51 accountEditButton: { 42 accountEditButton: {
52 id: 'settings.account.account.editButton', 43 id: 'settings.account.account.editButton',
53 defaultMessage: '!!!Edit Account', 44 defaultMessage: '!!!Edit Account',
54 }, 45 },
46 invoicesButton: {
47 id: 'settings.account.headlineInvoices',
48 defaultMessage: '!!Invoices',
49 },
55 invoiceDownload: { 50 invoiceDownload: {
56 id: 'settings.account.invoiceDownload', 51 id: 'settings.account.invoiceDownload',
57 defaultMessage: '!!!Download', 52 defaultMessage: '!!!Download',
@@ -81,19 +76,17 @@ const messages = defineMessages({
81export default @observer class AccountDashboard extends Component { 76export default @observer class AccountDashboard extends Component {
82 static propTypes = { 77 static propTypes = {
83 user: MobxPropTypes.observableObject.isRequired, 78 user: MobxPropTypes.observableObject.isRequired,
84 orders: MobxPropTypes.arrayOrObservableArray.isRequired,
85 isLoading: PropTypes.bool.isRequired, 79 isLoading: PropTypes.bool.isRequired,
86 isLoadingOrdersInfo: PropTypes.bool.isRequired,
87 isLoadingPlans: PropTypes.bool.isRequired, 80 isLoadingPlans: PropTypes.bool.isRequired,
88 isCreatingPaymentDashboardUrl: PropTypes.bool.isRequired,
89 userInfoRequestFailed: PropTypes.bool.isRequired, 81 userInfoRequestFailed: PropTypes.bool.isRequired,
90 retryUserInfoRequest: PropTypes.func.isRequired, 82 retryUserInfoRequest: PropTypes.func.isRequired,
91 openDashboard: PropTypes.func.isRequired,
92 openExternalUrl: PropTypes.func.isRequired,
93 onCloseSubscriptionWindow: PropTypes.func.isRequired, 83 onCloseSubscriptionWindow: PropTypes.func.isRequired,
94 deleteAccount: PropTypes.func.isRequired, 84 deleteAccount: PropTypes.func.isRequired,
95 isLoadingDeleteAccount: PropTypes.bool.isRequired, 85 isLoadingDeleteAccount: PropTypes.bool.isRequired,
96 isDeleteAccountSuccessful: PropTypes.bool.isRequired, 86 isDeleteAccountSuccessful: PropTypes.bool.isRequired,
87 openEditAccount: PropTypes.func.isRequired,
88 openBilling: PropTypes.func.isRequired,
89 openInvoices: PropTypes.func.isRequired,
97 }; 90 };
98 91
99 static contextTypes = { 92 static contextTypes = {
@@ -103,12 +96,7 @@ export default @observer class AccountDashboard extends Component {
103 render() { 96 render() {
104 const { 97 const {
105 user, 98 user,
106 orders,
107 isLoading, 99 isLoading,
108 isCreatingPaymentDashboardUrl,
109 openDashboard,
110 openExternalUrl,
111 isLoadingOrdersInfo,
112 isLoadingPlans, 100 isLoadingPlans,
113 userInfoRequestFailed, 101 userInfoRequestFailed,
114 retryUserInfoRequest, 102 retryUserInfoRequest,
@@ -116,6 +104,9 @@ export default @observer class AccountDashboard extends Component {
116 deleteAccount, 104 deleteAccount,
117 isLoadingDeleteAccount, 105 isLoadingDeleteAccount,
118 isDeleteAccountSuccessful, 106 isDeleteAccountSuccessful,
107 openEditAccount,
108 openBilling,
109 openInvoices,
119 } = this.props; 110 } = this.props;
120 const { intl } = this.context; 111 const { intl } = this.context;
121 112
@@ -153,116 +144,56 @@ export default @observer class AccountDashboard extends Component {
153 src="./assets/images/logo.svg" 144 src="./assets/images/logo.svg"
154 alt="" 145 alt=""
155 /> 146 />
156 {user.isPremium && (
157 <span
158 className="account__avatar-premium emoji"
159 data-tip="Premium Supporter Account"
160 >
161 <img src="./assets/images/emoji/star.png" alt="" />
162 </span>
163 )}
164 </div> 147 </div>
165 <div className="account__info"> 148 <div className="account__info">
166 <h2> 149 <h2>
167 {`${user.firstname} ${user.lastname}`} 150 <span className="username">{`${user.firstname} ${user.lastname}`}</span>
151 {user.isPremium && (
152 <>
153 {' '}
154 <ProBadge />
155 <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span>
156 </>
157 )}
168 </h2> 158 </h2>
169 {user.organization && `${user.organization}, `} 159 {user.organization && `${user.organization}, `}
170 {user.email} 160 {user.email}
171 <br />
172 {!user.isEnterprise && !user.isPremium && (
173 <span className="badge badge">{intl.formatMessage(messages.accountTypeBasic)}</span>
174 )}
175 {user.isPremium && ( 161 {user.isPremium && (
176 <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span> 162 <div className="manage-user-links">
177 )} 163 <Button
178 {user.isEnterprise && ( 164 label={intl.formatMessage(messages.accountEditButton)}
179 <span className="badge badge--success">{intl.formatMessage(messages.accountTypeEnterprise)}</span> 165 className="franz-form__button--inverted"
166 onClick={openEditAccount}
167 />
168 {user.isSubscriptionOwner && (
169 <>
170 <Button
171 label={intl.formatMessage(messages.manageSubscriptionButtonLabel)}
172 className="franz-form__button--inverted"
173 onClick={openBilling}
174 />
175 <Button
176 label={intl.formatMessage(messages.invoicesButton)}
177 className="franz-form__button--inverted"
178 onClick={openInvoices}
179 />
180 </>
181 )}
182 </div>
180 )} 183 )}
181 </div> 184 </div>
182 <Link to="/settings/user/edit" className="button"> 185 {!user.isPremium && (
183 {intl.formatMessage(messages.accountEditButton)} 186 <Button
184 </Link> 187 label={intl.formatMessage(messages.accountEditButton)}
185 {user.emailValidated} 188 className="franz-form__button--inverted"
186 </div> 189 onClick={openEditAccount}
187 </div> 190 />
188 )}
189
190 {user.isSubscriptionOwner && (
191 isLoadingOrdersInfo ? (
192 <Loader />
193 ) : (
194 <div className="account franz-form">
195 {orders.length > 0 && (
196 <Fragment>
197 <div className="account__box">
198 <h2>{intl.formatMessage(messages.headlineSubscription)}</h2>
199 <div className="account__subscription">
200 {orders[0].name}
201 <span className="badge">{orders[0].price}</span>
202 <Button
203 label={intl.formatMessage(messages.manageSubscriptionButtonLabel)}
204 className="account__subscription-button franz-form__button--inverted"
205 loaded={!isCreatingPaymentDashboardUrl}
206 onClick={() => openDashboard()}
207 />
208 </div>
209 </div>
210 <div className="account__box">
211 <h2>{intl.formatMessage(messages.headlineInvoices)}</h2>
212 <table className="invoices">
213 <tbody>
214 {orders.map(order => (
215 <tr key={order.id}>
216 <td className="invoices__date">
217 {moment(order.date).format('DD.MM.YYYY')}
218 </td>
219 <td className="invoices__action">
220 <button
221 type="button"
222 onClick={() => openExternalUrl(order.invoiceUrl)}
223 >
224 {intl.formatMessage(messages.invoiceDownload)}
225 </button>
226 </td>
227 </tr>
228 ))}
229 </tbody>
230 </table>
231 </div>
232 </Fragment>
233 )} 191 )}
234 </div> 192 </div>
235 )
236 )}
237
238 {user.isEnterprise && (
239 <div className="account">
240 <div className="account__box">
241 <h2>{user.company.name}</h2>
242 <p>
243 Technical contact:&nbsp;
244 <Link
245 className="link"
246 target="_blank"
247 to={`mailto:${user.company.contact.technical}?subject=Franz`}
248 >
249 {user.company.contact.technical}
250 </Link>
251 <br />
252 General contact:&nbsp;
253 <Link
254 className="link"
255 target="_blank"
256 to={`mailto:${user.company.contact.default}?subject=Franz`}
257 >
258 {user.company.contact.default}
259 </Link>
260 </p>
261 </div>
262 </div> 193 </div>
263 )} 194 )}
264 195
265 {!user.isEnterprise && !user.isPremium && ( 196 {!user.isPremium && (
266 isLoadingPlans ? ( 197 isLoadingPlans ? (
267 <Loader /> 198 <Loader />
268 ) : ( 199 ) : (
@@ -277,27 +208,25 @@ export default @observer class AccountDashboard extends Component {
277 ) 208 )
278 )} 209 )}
279 210
280 {!user.isEnterprise && ( 211 <div className="account franz-form">
281 <div className="account franz-form"> 212 <div className="account__box">
282 <div className="account__box"> 213 <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2>
283 <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2> 214 {!isDeleteAccountSuccessful && (
284 {!isDeleteAccountSuccessful && ( 215 <div className="account__subscription">
285 <div className="account__subscription"> 216 <p>{intl.formatMessage(messages.deleteInfo)}</p>
286 <p>{intl.formatMessage(messages.deleteInfo)}</p> 217 <Button
287 <Button 218 label={intl.formatMessage(messages.deleteAccount)}
288 label={intl.formatMessage(messages.deleteAccount)} 219 buttonType="danger"
289 buttonType="danger" 220 onClick={() => deleteAccount()}
290 onClick={() => deleteAccount()} 221 loaded={!isLoadingDeleteAccount}
291 loaded={!isLoadingDeleteAccount} 222 />
292 />
293 </div>
294 )}
295 {isDeleteAccountSuccessful && (
296 <p>{intl.formatMessage(messages.deleteEmailSent)}</p>
297 )}
298 </div> 223 </div>
224 )}
225 {isDeleteAccountSuccessful && (
226 <p>{intl.formatMessage(messages.deleteEmailSent)}</p>
227 )}
299 </div> 228 </div>
300 )} 229 </div>
301 </Fragment> 230 </Fragment>
302 )} 231 )}
303 </div> 232 </div>
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index 953f702f8..df4b3b3b2 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -2,8 +2,12 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { defineMessages, intlShape } from 'react-intl'; 3import { defineMessages, intlShape } from 'react-intl';
4import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
5import { ProBadge } from '@meetfranz/ui';
5 6
6import Link from '../../ui/Link'; 7import Link from '../../ui/Link';
8import { workspaceStore } from '../../../features/workspaces';
9import UIStore from '../../../stores/UIStore';
10import UserStore from '../../../stores/UserStore';
7 11
8const messages = defineMessages({ 12const messages = defineMessages({
9 availableServices: { 13 availableServices: {
@@ -14,10 +18,18 @@ const messages = defineMessages({
14 id: 'settings.navigation.yourServices', 18 id: 'settings.navigation.yourServices',
15 defaultMessage: '!!!Your services', 19 defaultMessage: '!!!Your services',
16 }, 20 },
21 yourWorkspaces: {
22 id: 'settings.navigation.yourWorkspaces',
23 defaultMessage: '!!!Your workspaces',
24 },
17 account: { 25 account: {
18 id: 'settings.navigation.account', 26 id: 'settings.navigation.account',
19 defaultMessage: '!!!Account', 27 defaultMessage: '!!!Account',
20 }, 28 },
29 team: {
30 id: 'settings.navigation.team',
31 defaultMessage: '!!!Manage Team',
32 },
21 settings: { 33 settings: {
22 id: 'settings.navigation.settings', 34 id: 'settings.navigation.settings',
23 defaultMessage: '!!!Settings', 35 defaultMessage: '!!!Settings',
@@ -34,7 +46,12 @@ const messages = defineMessages({
34 46
35export default @inject('stores') @observer class SettingsNavigation extends Component { 47export default @inject('stores') @observer class SettingsNavigation extends Component {
36 static propTypes = { 48 static propTypes = {
49 stores: PropTypes.shape({
50 ui: PropTypes.instanceOf(UIStore).isRequired,
51 user: PropTypes.instanceOf(UserStore).isRequired,
52 }).isRequired,
37 serviceCount: PropTypes.number.isRequired, 53 serviceCount: PropTypes.number.isRequired,
54 workspaceCount: PropTypes.number.isRequired,
38 }; 55 };
39 56
40 static contextTypes = { 57 static contextTypes = {
@@ -42,7 +59,9 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
42 }; 59 };
43 60
44 render() { 61 render() {
45 const { serviceCount } = this.props; 62 const { serviceCount, workspaceCount, stores } = this.props;
63 const { isDarkThemeActive } = stores.ui;
64 const { router, user } = stores;
46 const { intl } = this.context; 65 const { intl } = this.context;
47 66
48 return ( 67 return (
@@ -63,6 +82,21 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
63 {' '} 82 {' '}
64 <span className="badge">{serviceCount}</span> 83 <span className="badge">{serviceCount}</span>
65 </Link> 84 </Link>
85 {workspaceStore.isFeatureEnabled ? (
86 <Link
87 to="/settings/workspaces"
88 className="settings-navigation__link"
89 activeClassName="is-active"
90 >
91 {intl.formatMessage(messages.yourWorkspaces)}
92 {' '}
93 {workspaceStore.isPremiumUpgradeRequired ? (
94 <ProBadge inverted={!isDarkThemeActive && workspaceStore.isSettingsRouteActive} />
95 ) : (
96 <span className="badge">{workspaceCount}</span>
97 )}
98 </Link>
99 ) : null}
66 <Link 100 <Link
67 to="/settings/user" 101 to="/settings/user"
68 className="settings-navigation__link" 102 className="settings-navigation__link"
@@ -71,6 +105,16 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
71 {intl.formatMessage(messages.account)} 105 {intl.formatMessage(messages.account)}
72 </Link> 106 </Link>
73 <Link 107 <Link
108 to="/settings/team"
109 className="settings-navigation__link"
110 activeClassName="is-active"
111 >
112 {intl.formatMessage(messages.team)}
113 {!user.data.isPremium && (
114 <ProBadge inverted={!isDarkThemeActive && router.location.pathname === '/settings/team'} />
115 )}
116 </Link>
117 <Link
74 to="/settings/app" 118 to="/settings/app"
75 className="settings-navigation__link" 119 className="settings-navigation__link"
76 activeClassName="is-active" 120 activeClassName="is-active"
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 468d85c45..4ba2eb844 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -128,7 +128,8 @@ export default @observer class EditServiceForm extends Component {
128 isSaving: PropTypes.bool.isRequired, 128 isSaving: PropTypes.bool.isRequired,
129 isDeleting: PropTypes.bool.isRequired, 129 isDeleting: PropTypes.bool.isRequired,
130 isProxyFeatureEnabled: PropTypes.bool.isRequired, 130 isProxyFeatureEnabled: PropTypes.bool.isRequired,
131 isProxyFeaturePremiumFeature: PropTypes.bool.isRequired, 131 isProxyPremiumFeature: PropTypes.bool.isRequired,
132 isSpellcheckerPremiumFeature: PropTypes.bool.isRequired,
132 }; 133 };
133 134
134 static defaultProps = { 135 static defaultProps = {
@@ -191,7 +192,8 @@ export default @observer class EditServiceForm extends Component {
191 isDeleting, 192 isDeleting,
192 onDelete, 193 onDelete,
193 isProxyFeatureEnabled, 194 isProxyFeatureEnabled,
194 isProxyFeaturePremiumFeature, 195 isProxyPremiumFeature,
196 isSpellcheckerPremiumFeature,
195 } = this.props; 197 } = this.props;
196 const { intl } = this.context; 198 const { intl } = this.context;
197 199
@@ -339,14 +341,20 @@ export default @observer class EditServiceForm extends Component {
339 </div> 341 </div>
340 </div> 342 </div>
341 343
342 <PremiumFeatureContainer> 344 <PremiumFeatureContainer
345 condition={isSpellcheckerPremiumFeature}
346 gaEventInfo={{ category: 'User', event: 'upgrade', label: 'spellchecker' }}
347 >
343 <div className="settings__settings-group"> 348 <div className="settings__settings-group">
344 <Select field={form.$('spellcheckerLanguage')} /> 349 <Select field={form.$('spellcheckerLanguage')} />
345 </div> 350 </div>
346 </PremiumFeatureContainer> 351 </PremiumFeatureContainer>
347 352
348 {isProxyFeatureEnabled && ( 353 {isProxyFeatureEnabled && (
349 <PremiumFeatureContainer condition={isProxyFeaturePremiumFeature}> 354 <PremiumFeatureContainer
355 condition={isProxyPremiumFeature}
356 gaEventInfo={{ category: 'User', event: 'upgrade', label: 'proxy' }}
357 >
350 <div className="settings__settings-group"> 358 <div className="settings__settings-group">
351 <h3> 359 <h3>
352 {intl.formatMessage(messages.headlineProxy)} 360 {intl.formatMessage(messages.headlineProxy)}
diff --git a/src/components/settings/services/ServicesDashboard.js b/src/components/settings/services/ServicesDashboard.js
index a12df7372..53bae12df 100644
--- a/src/components/settings/services/ServicesDashboard.js
+++ b/src/components/settings/services/ServicesDashboard.js
@@ -65,7 +65,7 @@ export default @observer class ServicesDashboard extends Component {
65 65
66 static defaultProps = { 66 static defaultProps = {
67 searchNeedle: '', 67 searchNeedle: '',
68 } 68 };
69 69
70 static contextTypes = { 70 static contextTypes = {
71 intl: intlShape, 71 intl: intlShape,
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index a92e559f3..efd453356 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -81,6 +81,10 @@ const messages = defineMessages({
81 id: 'settings.app.restartRequired', 81 id: 'settings.app.restartRequired',
82 defaultMessage: '!!!Changes require restart', 82 defaultMessage: '!!!Changes require restart',
83 }, 83 },
84 languageDisclaimer: {
85 id: 'settings.app.languageDisclaimer',
86 defaultMessage: '!!!Official translations are English & German. All other languages are community based translations.',
87 },
84}); 88});
85 89
86export default @observer class EditSettingsForm extends Component { 90export default @observer class EditSettingsForm extends Component {
@@ -170,6 +174,7 @@ export default @observer class EditSettingsForm extends Component {
170 <Select field={form.$('locale')} showLabel={false} /> 174 <Select field={form.$('locale')} showLabel={false} />
171 <PremiumFeatureContainer 175 <PremiumFeatureContainer
172 condition={isSpellcheckerPremiumFeature} 176 condition={isSpellcheckerPremiumFeature}
177 gaEventInfo={{ category: 'User', event: 'upgrade', label: 'spellchecker' }}
173 > 178 >
174 <Fragment> 179 <Fragment>
175 <Toggle 180 <Toggle
@@ -238,6 +243,10 @@ export default @observer class EditSettingsForm extends Component {
238 {intl.formatMessage(messages.currentVersion)} 243 {intl.formatMessage(messages.currentVersion)}
239 {' '} 244 {' '}
240 {remote.app.getVersion()} 245 {remote.app.getVersion()}
246 <p className="settings__message">
247 <span className="mdi mdi-information" />
248 {intl.formatMessage(messages.languageDisclaimer)}
249 </p>
241 </form> 250 </form>
242 </div> 251 </div>
243 </div> 252 </div>
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js
new file mode 100644
index 000000000..82c517fcb
--- /dev/null
+++ b/src/components/settings/team/TeamDashboard.js
@@ -0,0 +1,152 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5import ReactTooltip from 'react-tooltip';
6import injectSheet from 'react-jss';
7
8import Loader from '../../ui/Loader';
9import Button from '../../ui/Button';
10import Infobox from '../../ui/Infobox';
11import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer';
12
13const messages = defineMessages({
14 headline: {
15 id: 'settings.team.headline',
16 defaultMessage: '!!!Team',
17 },
18 contentHeadline: {
19 id: 'settings.team.contentHeadline',
20 defaultMessage: '!!!Franz for Teams',
21 },
22 intro: {
23 id: 'settings.team.intro',
24 defaultMessage: '!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.',
25 },
26 copy: {
27 id: 'settings.team.copy',
28 defaultMessage: '!!!Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!',
29 },
30 manageButton: {
31 id: 'settings.team.manageAction',
32 defaultMessage: '!!!Manage your Team on meetfranz.com',
33 },
34 upgradeButton: {
35 id: 'settings.team.upgradeAction',
36 defaultMessage: '!!!Upgrade your Account',
37 },
38});
39
40const styles = {
41 cta: {
42 margin: [40, 'auto'],
43 },
44 container: {
45 display: 'flex',
46 flexDirection: 'column',
47 height: 'auto',
48
49 '@media(min-width: 800px)': {
50 flexDirection: 'row',
51 },
52 },
53 content: {
54 height: 'auto',
55 order: 1,
56
57 '@media(min-width: 800px)': {
58 order: 0,
59 },
60 },
61 image: {
62 display: 'block',
63 height: 150,
64 order: 0,
65 margin: [0, 'auto', 40, 'auto'],
66
67 '@media(min-width: 800px)': {
68 marginLeft: 40,
69 order: 1,
70 },
71 },
72};
73
74
75export default @injectSheet(styles) @observer class TeamDashboard extends Component {
76 static propTypes = {
77 isLoading: PropTypes.bool.isRequired,
78 userInfoRequestFailed: PropTypes.bool.isRequired,
79 retryUserInfoRequest: PropTypes.func.isRequired,
80 openTeamManagement: PropTypes.func.isRequired,
81 classes: PropTypes.object.isRequired,
82 };
83
84 static contextTypes = {
85 intl: intlShape,
86 };
87
88 render() {
89 const {
90 isLoading,
91 userInfoRequestFailed,
92 retryUserInfoRequest,
93 openTeamManagement,
94 classes,
95 } = this.props;
96 const { intl } = this.context;
97
98 return (
99 <div className="settings__main">
100 <div className="settings__header">
101 <span className="settings__header-item">
102 {intl.formatMessage(messages.headline)}
103 </span>
104 </div>
105 <div className="settings__body">
106 {isLoading && (
107 <Loader />
108 )}
109
110 {!isLoading && userInfoRequestFailed && (
111 <Infobox
112 icon="alert"
113 type="danger"
114 ctaLabel={intl.formatMessage(messages.tryReloadUserInfoRequest)}
115 ctaLoading={isLoading}
116 ctaOnClick={retryUserInfoRequest}
117 >
118 {intl.formatMessage(messages.userInfoRequestFailed)}
119 </Infobox>
120 )}
121
122 {!userInfoRequestFailed && (
123 <>
124 {!isLoading && (
125 <>
126 <PremiumFeatureContainer>
127 <>
128 <h1>{intl.formatMessage(messages.contentHeadline)}</h1>
129 <div className={classes.container}>
130 <div className={classes.content}>
131 <p>{intl.formatMessage(messages.intro)}</p>
132 <p>{intl.formatMessage(messages.copy)}</p>
133 </div>
134 <img className={classes.image} src="https://cdn.franzinfra.com/announcements/assets/teams.png" alt="Franz for Teams" />
135 </div>
136 <Button
137 label={intl.formatMessage(messages.manageButton)}
138 onClick={openTeamManagement}
139 className={classes.cta}
140 />
141 </>
142 </PremiumFeatureContainer>
143 </>
144 )}
145 </>
146 )}
147 </div>
148 <ReactTooltip place="right" type="dark" effect="solid" />
149 </div>
150 );
151 }
152}
diff --git a/src/components/settings/user/EditUserForm.js b/src/components/settings/user/EditUserForm.js
index 0e3ac6b10..a1a353e57 100644
--- a/src/components/settings/user/EditUserForm.js
+++ b/src/components/settings/user/EditUserForm.js
@@ -3,11 +3,10 @@ import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; 3import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5import { Link } from 'react-router'; 5import { Link } from 'react-router';
6 6import { Input } from '@meetfranz/forms';
7// import { Link } from 'react-router';
8 7
9import Form from '../../../lib/Form'; 8import Form from '../../../lib/Form';
10import Input from '../../ui/Input'; 9// import Input from '../../ui/Input';
11import Button from '../../ui/Button'; 10import Button from '../../ui/Button';
12import Radio from '../../ui/Radio'; 11import Radio from '../../ui/Radio';
13import Infobox from '../../ui/Infobox'; 12import Infobox from '../../ui/Infobox';
@@ -39,13 +38,12 @@ const messages = defineMessages({
39 }, 38 },
40}); 39});
41 40
42export default @observer class EditServiceForm extends Component { 41export default @observer class EditUserForm extends Component {
43 static propTypes = { 42 static propTypes = {
44 status: MobxPropTypes.observableArray.isRequired, 43 status: MobxPropTypes.observableArray.isRequired,
45 form: PropTypes.instanceOf(Form).isRequired, 44 form: PropTypes.instanceOf(Form).isRequired,
46 onSubmit: PropTypes.func.isRequired, 45 onSubmit: PropTypes.func.isRequired,
47 isSaving: PropTypes.bool.isRequired, 46 isSaving: PropTypes.bool.isRequired,
48 isEnterprise: PropTypes.bool.isRequired,
49 }; 47 };
50 48
51 static contextTypes = { 49 static contextTypes = {
@@ -68,7 +66,6 @@ export default @observer class EditServiceForm extends Component {
68 // user, 66 // user,
69 status, 67 status,
70 form, 68 form,
71 isEnterprise,
72 isSaving, 69 isSaving,
73 } = this.props; 70 } = this.props;
74 const { intl } = this.context; 71 const { intl } = this.context;
@@ -98,23 +95,21 @@ export default @observer class EditServiceForm extends Component {
98 )} 95 )}
99 <h2>{intl.formatMessage(messages.headlineAccount)}</h2> 96 <h2>{intl.formatMessage(messages.headlineAccount)}</h2>
100 <div className="grid__row"> 97 <div className="grid__row">
101 <Input field={form.$('firstname')} focus /> 98 <Input {...form.$('firstname').bind()} focus />
102 <Input field={form.$('lastname')} /> 99 <Input {...form.$('lastname').bind()} />
103 </div> 100 </div>
104 <Input field={form.$('email')} /> 101 <Input {...form.$('email').bind()} />
105 {!isEnterprise && ( 102 <Radio field={form.$('accountType')} />
106 <Radio field={form.$('accountType')} /> 103 {form.$('accountType').value === 'company' && (
107 )}
108 {!isEnterprise && form.$('accountType').value === 'company' && (
109 <Input field={form.$('organization')} /> 104 <Input field={form.$('organization')} />
110 )} 105 )}
111 <h2>{intl.formatMessage(messages.headlinePassword)}</h2> 106 <h2>{intl.formatMessage(messages.headlinePassword)}</h2>
112 <Input 107 <Input
113 field={form.$('oldPassword')} 108 {...form.$('oldPassword').bind()}
114 showPasswordToggle 109 showPasswordToggle
115 /> 110 />
116 <Input 111 <Input
117 field={form.$('newPassword')} 112 {...form.$('newPassword').bind()}
118 showPasswordToggle 113 showPasswordToggle
119 scorePassword 114 scorePassword
120 /> 115 />
diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js
index 90da8ddc3..50f1e0522 100644
--- a/src/components/subscription/SubscriptionForm.js
+++ b/src/components/subscription/SubscriptionForm.js
@@ -35,31 +35,33 @@ const messages = defineMessages({
35 id: 'subscription.includedFeatures', 35 id: 'subscription.includedFeatures',
36 defaultMessage: '!!!The Franz Premium Supporter Account includes', 36 defaultMessage: '!!!The Franz Premium Supporter Account includes',
37 }, 37 },
38 features: { 38 onpremise: {
39 onpremise: { 39 id: 'subscription.features.onpremise.mattermost',
40 id: 'subscription.features.onpremise.mattermost', 40 defaultMessage: '!!!Add on-premise/hosted services like Mattermost',
41 defaultMessage: '!!!Add on-premise/hosted services like Mattermost', 41 },
42 }, 42 noInterruptions: {
43 noInterruptions: { 43 id: 'subscription.features.noInterruptions',
44 id: 'subscription.features.noInterruptions', 44 defaultMessage: '!!!No app delays & nagging to upgrade license',
45 defaultMessage: '!!!No app delays & nagging to upgrade license', 45 },
46 }, 46 proxy: {
47 proxy: { 47 id: 'subscription.features.proxy',
48 id: 'subscription.features.proxy', 48 defaultMessage: '!!!Proxy support for services',
49 defaultMessage: '!!!Proxy support for services', 49 },
50 }, 50 spellchecker: {
51 spellchecker: { 51 id: 'subscription.features.spellchecker',
52 id: 'subscription.features.spellchecker', 52 defaultMessage: '!!!Support for Spellchecker',
53 defaultMessage: '!!!Support for Spellchecker', 53 },
54 }, 54 workspaces: {
55 ads: { 55 id: 'subscription.features.workspaces',
56 id: 'subscription.features.ads', 56 defaultMessage: '!!!Organize your services in workspaces',
57 defaultMessage: '!!!No ads, ever!', 57 },
58 }, 58 ads: {
59 comingSoon: { 59 id: 'subscription.features.ads',
60 id: 'subscription.features.comingSoon', 60 defaultMessage: '!!!No ads, ever!',
61 defaultMessage: '!!!coming soon', 61 },
62 }, 62 comingSoon: {
63 id: 'subscription.features.comingSoon',
64 defaultMessage: '!!!coming soon',
63 }, 65 },
64 euTaxInfo: { 66 euTaxInfo: {
65 id: 'subscription.euTaxInfo', 67 id: 'subscription.euTaxInfo',
@@ -85,7 +87,7 @@ export default @observer class SubscriptionForm extends Component {
85 showSkipOption: false, 87 showSkipOption: false,
86 skipAction: () => null, 88 skipAction: () => null,
87 skipButtonLabel: '', 89 skipButtonLabel: '',
88 } 90 };
89 91
90 static contextTypes = { 92 static contextTypes = {
91 intl: intlShape, 93 intl: intlShape,
@@ -162,18 +164,21 @@ export default @observer class SubscriptionForm extends Component {
162 </p> 164 </p>
163 <div className="subscription"> 165 <div className="subscription">
164 <ul className="subscription__premium-features"> 166 <ul className="subscription__premium-features">
165 <li>{intl.formatMessage(messages.features.onpremise)}</li> 167 <li>{intl.formatMessage(messages.onpremise)}</li>
168 <li>
169 {intl.formatMessage(messages.noInterruptions)}
170 </li>
166 <li> 171 <li>
167 {intl.formatMessage(messages.features.noInterruptions)} 172 {intl.formatMessage(messages.spellchecker)}
168 </li> 173 </li>
169 <li> 174 <li>
170 {intl.formatMessage(messages.features.spellchecker)} 175 {intl.formatMessage(messages.proxy)}
171 </li> 176 </li>
172 <li> 177 <li>
173 {intl.formatMessage(messages.features.proxy)} 178 {intl.formatMessage(messages.workspaces)}
174 </li> 179 </li>
175 <li> 180 <li>
176 {intl.formatMessage(messages.features.ads)} 181 {intl.formatMessage(messages.ads)}
177 </li> 182 </li>
178 </ul> 183 </ul>
179 </div> 184 </div>
diff --git a/src/components/subscription/SubscriptionPopup.js b/src/components/subscription/SubscriptionPopup.js
index b5d7c4b2d..0f6f0260f 100644
--- a/src/components/subscription/SubscriptionPopup.js
+++ b/src/components/subscription/SubscriptionPopup.js
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5import Webview from 'react-electron-web-view'; 5import Webview from 'react-electron-web-view';
6import ms from 'ms';
6 7
7import Button from '../ui/Button'; 8import Button from '../ui/Button';
8 9
@@ -42,7 +43,7 @@ export default @observer class SubscriptionPopup extends Component {
42 43
43 setTimeout(() => { 44 setTimeout(() => {
44 this.props.closeWindow(); 45 this.props.closeWindow();
45 }, 4000); 46 }, ms('4s'));
46 } 47 }
47 48
48 render() { 49 render() {
diff --git a/src/components/ui/AppLoader/index.js b/src/components/ui/AppLoader/index.js
index 61053f6d1..b0c7fed7b 100644
--- a/src/components/ui/AppLoader/index.js
+++ b/src/components/ui/AppLoader/index.js
@@ -23,11 +23,11 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component
23 static propTypes = { 23 static propTypes = {
24 classes: PropTypes.object.isRequired, 24 classes: PropTypes.object.isRequired,
25 theme: PropTypes.object.isRequired, 25 theme: PropTypes.object.isRequired,
26 } 26 };
27 27
28 state = { 28 state = {
29 step: 0, 29 step: 0,
30 } 30 };
31 31
32 interval = null; 32 interval = null;
33 33
diff --git a/src/components/ui/FullscreenLoader/index.js b/src/components/ui/FullscreenLoader/index.js
index 6ecf4d395..06dab1eb6 100644
--- a/src/components/ui/FullscreenLoader/index.js
+++ b/src/components/ui/FullscreenLoader/index.js
@@ -16,13 +16,13 @@ export default @observer @withTheme @injectSheet(styles) class FullscreenLoader
16 theme: PropTypes.object.isRequired, 16 theme: PropTypes.object.isRequired,
17 spinnerColor: PropTypes.string, 17 spinnerColor: PropTypes.string,
18 children: PropTypes.node, 18 children: PropTypes.node,
19 } 19 };
20 20
21 static defaultProps = { 21 static defaultProps = {
22 className: null, 22 className: null,
23 spinnerColor: null, 23 spinnerColor: null,
24 children: null, 24 children: null,
25 } 25 };
26 26
27 render() { 27 render() {
28 const { 28 const {
diff --git a/src/components/ui/Infobox.js b/src/components/ui/Infobox.js
index a33c6474a..0917ee9f0 100644
--- a/src/components/ui/Infobox.js
+++ b/src/components/ui/Infobox.js
@@ -13,6 +13,8 @@ export default @observer class Infobox extends Component {
13 ctaLabel: PropTypes.string, 13 ctaLabel: PropTypes.string,
14 ctaLoading: PropTypes.bool, 14 ctaLoading: PropTypes.bool,
15 dismissable: PropTypes.bool, 15 dismissable: PropTypes.bool,
16 onDismiss: PropTypes.func,
17 onSeen: PropTypes.func,
16 }; 18 };
17 19
18 static defaultProps = { 20 static defaultProps = {
@@ -22,12 +24,19 @@ export default @observer class Infobox extends Component {
22 ctaOnClick: () => null, 24 ctaOnClick: () => null,
23 ctaLabel: '', 25 ctaLabel: '',
24 ctaLoading: false, 26 ctaLoading: false,
27 onDismiss: () => null,
28 onSeen: () => null,
25 }; 29 };
26 30
27 state = { 31 state = {
28 dismissed: false, 32 dismissed: false,
29 }; 33 };
30 34
35 componentDidMount() {
36 const { onSeen } = this.props;
37 if (onSeen) onSeen();
38 }
39
31 render() { 40 render() {
32 const { 41 const {
33 children, 42 children,
@@ -37,6 +46,7 @@ export default @observer class Infobox extends Component {
37 ctaLoading, 46 ctaLoading,
38 ctaOnClick, 47 ctaOnClick,
39 dismissable, 48 dismissable,
49 onDismiss,
40 } = this.props; 50 } = this.props;
41 51
42 if (this.state.dismissed) { 52 if (this.state.dismissed) {
@@ -76,9 +86,10 @@ export default @observer class Infobox extends Component {
76 {dismissable && ( 86 {dismissable && (
77 <button 87 <button
78 type="button" 88 type="button"
79 onClick={() => this.setState({ 89 onClick={() => {
80 dismissed: true, 90 this.setState({ dismissed: true });
81 })} 91 if (onDismiss) onDismiss();
92 }}
82 className="infobox__delete mdi mdi-close" 93 className="infobox__delete mdi mdi-close"
83 /> 94 />
84 )} 95 )}
diff --git a/src/components/ui/Modal/index.js b/src/components/ui/Modal/index.js
index d84e4c713..0b7154760 100644
--- a/src/components/ui/Modal/index.js
+++ b/src/components/ui/Modal/index.js
@@ -3,9 +3,12 @@ import ReactModal from 'react-modal';
3import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
4import classnames from 'classnames'; 4import classnames from 'classnames';
5import injectCSS from 'react-jss'; 5import injectCSS from 'react-jss';
6import { Icon } from '@meetfranz/ui';
6 7
7import styles from './styles'; 8import styles from './styles';
8 9
10// ReactModal.setAppElement('#root');
11
9export default @injectCSS(styles) class Modal extends Component { 12export default @injectCSS(styles) class Modal extends Component {
10 static propTypes = { 13 static propTypes = {
11 children: PropTypes.node.isRequired, 14 children: PropTypes.node.isRequired,
@@ -14,11 +17,15 @@ export default @injectCSS(styles) class Modal extends Component {
14 isOpen: PropTypes.bool.isRequired, 17 isOpen: PropTypes.bool.isRequired,
15 portal: PropTypes.string, 18 portal: PropTypes.string,
16 close: PropTypes.func.isRequired, 19 close: PropTypes.func.isRequired,
20 shouldCloseOnOverlayClick: PropTypes.bool,
21 showClose: PropTypes.bool,
17 } 22 }
18 23
19 static defaultProps = { 24 static defaultProps = {
20 className: null, 25 className: null,
21 portal: 'modal-portal', 26 portal: 'modal-portal',
27 shouldCloseOnOverlayClick: false,
28 showClose: true,
22 } 29 }
23 30
24 render() { 31 render() {
@@ -29,6 +36,8 @@ export default @injectCSS(styles) class Modal extends Component {
29 isOpen, 36 isOpen,
30 portal, 37 portal,
31 close, 38 close,
39 shouldCloseOnOverlayClick,
40 showClose,
32 } = this.props; 41 } = this.props;
33 42
34 return ( 43 return (
@@ -42,14 +51,17 @@ export default @injectCSS(styles) class Modal extends Component {
42 overlayClassName={classes.overlay} 51 overlayClassName={classes.overlay}
43 portal={portal} 52 portal={portal}
44 onRequestClose={close} 53 onRequestClose={close}
54 shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}
45 > 55 >
46 {/* <button 56 {showClose && close && (
47 type="button" 57 <button
48 className={classnames({ 58 type="button"
49 [`${classes.close}`]: true, 59 className={classes.close}
50 'mdi mdi-close': true, 60 onClick={close}
51 })} 61 >
52 /> */} 62 <Icon icon="mdiClose" size={1.5} />
63 </button>
64 )}
53 <div className={classes.content}> 65 <div className={classes.content}>
54 {children} 66 {children}
55 </div> 67 </div>
diff --git a/src/components/ui/Modal/styles.js b/src/components/ui/Modal/styles.js
index 56fecbf55..49b970c97 100644
--- a/src/components/ui/Modal/styles.js
+++ b/src/components/ui/Modal/styles.js
@@ -28,5 +28,6 @@ export default theme => ({
28 position: 'absolute', 28 position: 'absolute',
29 top: 0, 29 top: 0,
30 right: 0, 30 right: 0,
31 padding: 20,
31 }, 32 },
32}); 33});
diff --git a/src/components/ui/PremiumFeatureContainer/index.js b/src/components/ui/PremiumFeatureContainer/index.js
index 67cd6af0b..3c1e0fac3 100644
--- a/src/components/ui/PremiumFeatureContainer/index.js
+++ b/src/components/ui/PremiumFeatureContainer/index.js
@@ -9,6 +9,7 @@ import { oneOrManyChildElements } from '../../../prop-types';
9import UserStore from '../../../stores/UserStore'; 9import UserStore from '../../../stores/UserStore';
10 10
11import styles from './styles'; 11import styles from './styles';
12import { gaEvent } from '../../../lib/analytics';
12 13
13const messages = defineMessages({ 14const messages = defineMessages({
14 action: { 15 action: {
@@ -17,14 +18,21 @@ const messages = defineMessages({
17 }, 18 },
18}); 19});
19 20
20export default @inject('stores', 'actions') @injectSheet(styles) @observer class PremiumFeatureContainer extends Component { 21@inject('stores', 'actions') @injectSheet(styles) @observer
22class PremiumFeatureContainer extends Component {
21 static propTypes = { 23 static propTypes = {
22 classes: PropTypes.object.isRequired, 24 classes: PropTypes.object.isRequired,
23 condition: PropTypes.bool, 25 condition: PropTypes.bool,
26 gaEventInfo: PropTypes.shape({
27 category: PropTypes.string.isRequired,
28 event: PropTypes.string.isRequired,
29 label: PropTypes.string,
30 }),
24 }; 31 };
25 32
26 static defaultProps = { 33 static defaultProps = {
27 condition: true, 34 condition: true,
35 gaEventInfo: null,
28 }; 36 };
29 37
30 static contextTypes = { 38 static contextTypes = {
@@ -38,6 +46,7 @@ export default @inject('stores', 'actions') @injectSheet(styles) @observer class
38 actions, 46 actions,
39 condition, 47 condition,
40 stores, 48 stores,
49 gaEventInfo,
41 } = this.props; 50 } = this.props;
42 51
43 const { intl } = this.context; 52 const { intl } = this.context;
@@ -49,7 +58,13 @@ export default @inject('stores', 'actions') @injectSheet(styles) @observer class
49 <button 58 <button
50 className={classes.actionButton} 59 className={classes.actionButton}
51 type="button" 60 type="button"
52 onClick={() => actions.ui.openSettings({ path: 'user' })} 61 onClick={() => {
62 actions.ui.openSettings({ path: 'user' });
63 if (gaEventInfo) {
64 const { category, event, label } = gaEventInfo;
65 gaEvent(category, event, label);
66 }
67 }}
53 > 68 >
54 {intl.formatMessage(messages.action)} 69 {intl.formatMessage(messages.action)}
55 </button> 70 </button>
@@ -73,3 +88,5 @@ PremiumFeatureContainer.wrappedComponent.propTypes = {
73 }).isRequired, 88 }).isRequired,
74 }).isRequired, 89 }).isRequired,
75}; 90};
91
92export default PremiumFeatureContainer;
diff --git a/src/components/ui/PremiumFeatureContainer/styles.js b/src/components/ui/PremiumFeatureContainer/styles.js
index 81d6666c6..41881e044 100644
--- a/src/components/ui/PremiumFeatureContainer/styles.js
+++ b/src/components/ui/PremiumFeatureContainer/styles.js
@@ -6,6 +6,7 @@ export default theme => ({
6 padding: 20, 6 padding: 20,
7 'border-radius': theme.borderRadius, 7 'border-radius': theme.borderRadius,
8 pointerEvents: 'none', 8 pointerEvents: 'none',
9 height: 'auto',
9 }, 10 },
10 titleContainer: { 11 titleContainer: {
11 display: 'flex', 12 display: 'flex',
@@ -19,14 +20,14 @@ export default theme => ({
19 color: theme.colorSubscriptionContainerActionButtonColor, 20 color: theme.colorSubscriptionContainerActionButtonColor,
20 'margin-left': 'auto', 21 'margin-left': 'auto',
21 'border-radius': theme.borderRadiusSmall, 22 'border-radius': theme.borderRadiusSmall,
22 padding: [2, 4], 23 padding: [4, 8],
23 'font-size': 12, 24 'font-size': 12,
24 pointerEvents: 'initial', 25 pointerEvents: 'initial',
25 }, 26 },
26 content: { 27 content: {
27 opacity: 0.5, 28 opacity: 0.5,
28 'margin-top': 20, 29 'margin-top': 20,
29 '& :last-child': { 30 '& > :last-child': {
30 'margin-bottom': 0, 31 'margin-bottom': 0,
31 }, 32 },
32 }, 33 },
diff --git a/src/components/ui/ServiceIcon.js b/src/components/ui/ServiceIcon.js
new file mode 100644
index 000000000..0b9155a4e
--- /dev/null
+++ b/src/components/ui/ServiceIcon.js
@@ -0,0 +1,67 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5import classnames from 'classnames';
6
7import ServiceModel from '../../models/Service';
8
9const styles = theme => ({
10 root: {
11 height: 'auto',
12 },
13 icon: {
14 width: theme.serviceIcon.width,
15 },
16 isCustomIcon: {
17 width: theme.serviceIcon.isCustom.width,
18 border: theme.serviceIcon.isCustom.border,
19 borderRadius: theme.serviceIcon.isCustom.borderRadius,
20 },
21 isDisabled: {
22 filter: 'grayscale(100%)',
23 opacity: '.5',
24 },
25});
26
27@injectSheet(styles) @observer
28class ServiceIcon extends Component {
29 static propTypes = {
30 classes: PropTypes.object.isRequired,
31 service: PropTypes.instanceOf(ServiceModel).isRequired,
32 className: PropTypes.string,
33 };
34
35 static defaultProps = {
36 className: '',
37 };
38
39 render() {
40 const {
41 classes,
42 className,
43 service,
44 } = this.props;
45
46 return (
47 <div
48 className={classnames([
49 classes.root,
50 className,
51 ])}
52 >
53 <img
54 src={service.icon}
55 className={classnames([
56 classes.icon,
57 service.isEnabled ? null : classes.isDisabled,
58 service.hasCustomIcon ? classes.isCustomIcon : null,
59 ])}
60 alt=""
61 />
62 </div>
63 );
64 }
65}
66
67export default ServiceIcon;
diff --git a/src/components/ui/WebviewLoader/index.js b/src/components/ui/WebviewLoader/index.js
index 3a3dbbe49..58b6b6f1b 100644
--- a/src/components/ui/WebviewLoader/index.js
+++ b/src/components/ui/WebviewLoader/index.js
@@ -2,23 +2,35 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss'; 4import injectSheet from 'react-jss';
5import { defineMessages, intlShape } from 'react-intl';
5 6
6import FullscreenLoader from '../FullscreenLoader'; 7import FullscreenLoader from '../FullscreenLoader';
7
8import styles from './styles'; 8import styles from './styles';
9 9
10const messages = defineMessages({
11 loading: {
12 id: 'service.webviewLoader.loading',
13 defaultMessage: '!!!Loading',
14 },
15});
16
10export default @observer @injectSheet(styles) class WebviewLoader extends Component { 17export default @observer @injectSheet(styles) class WebviewLoader extends Component {
11 static propTypes = { 18 static propTypes = {
12 name: PropTypes.string.isRequired, 19 name: PropTypes.string.isRequired,
13 classes: PropTypes.object.isRequired, 20 classes: PropTypes.object.isRequired,
14 } 21 };
22
23 static contextTypes = {
24 intl: intlShape,
25 };
15 26
16 render() { 27 render() {
17 const { classes, name } = this.props; 28 const { classes, name } = this.props;
29 const { intl } = this.context;
18 return ( 30 return (
19 <FullscreenLoader 31 <FullscreenLoader
20 className={classes.component} 32 className={classes.component}
21 title={`Loading ${name}`} 33 title={`${intl.formatMessage(messages.loading)} ${name}`}
22 /> 34 />
23 ); 35 );
24 } 36 }
diff --git a/src/config.js b/src/config.js
index 789ddd1a0..5bc318545 100644
--- a/src/config.js
+++ b/src/config.js
@@ -1,14 +1,30 @@
1import electron from 'electron'; 1import electron from 'electron';
2import path from 'path'; 2import path from 'path';
3import isDevMode from 'electron-is-dev';
4import ms from 'ms';
5
6import { asarPath } from './helpers/asar-helpers';
3 7
4const app = process.type === 'renderer' ? electron.remote.app : electron.app; 8const app = process.type === 'renderer' ? electron.remote.app : electron.app;
5const systemPreferences = process.type === 'renderer' ? electron.remote.systemPreferences : electron.systemPreferences; 9const systemPreferences = process.type === 'renderer' ? electron.remote.systemPreferences : electron.systemPreferences;
6 10
7export const CHECK_INTERVAL = 1000 * 3600; // How often should we perform checks 11export const CHECK_INTERVAL = ms('1h'); // How often should we perform checks
12
8export const LOCAL_API = 'http://localhost:3000'; 13export const LOCAL_API = 'http://localhost:3000';
9export const DEV_API = 'https://dev.franzinfra.com'; 14export const DEV_API = 'https://dev.franzinfra.com';
10export const LIVE_API = 'https://api.franzinfra.com'; 15export const LIVE_API = 'https://api.franzinfra.com';
11export const GA_ID = 'UA-74126766-10'; 16
17export const LOCAL_WS_API = 'ws://localhost:3000';
18export const DEV_WS_API = 'wss://dev.franzinfra.com';
19export const LIVE_WS_API = 'wss://api.franzinfra.com';
20
21export const LOCAL_API_WEBSITE = 'http://localhost:3333';
22export const DEV_API_WEBSITE = 'https://meetfranz.com';
23export const LIVE_API_WEBSITE = 'https://meetfranz.com';
24
25export const STATS_API = 'https://stats.franzinfra.com';
26
27export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12';
12 28
13export const DEFAULT_APP_SETTINGS = { 29export const DEFAULT_APP_SETTINGS = {
14 autoLaunchInBackground: false, 30 autoLaunchInBackground: false,
@@ -32,11 +48,14 @@ export const DEFAULT_FEATURES_CONFIG = {
32 isSpellcheckerPremiumFeature: false, 48 isSpellcheckerPremiumFeature: false,
33 needToWaitToProceed: false, 49 needToWaitToProceed: false,
34 needToWaitToProceedConfig: { 50 needToWaitToProceedConfig: {
35 delayOffset: 3600000, 51 delayOffset: ms('1h'),
36 wait: 10000, 52 wait: ms('10s'),
37 }, 53 },
38 isServiceProxyEnabled: false, 54 isServiceProxyEnabled: false,
39 isServiceProxyPremiumFeature: true, 55 isServiceProxyPremiumFeature: true,
56 isAnnouncementsEnabled: true,
57 isWorkspacePremiumFeature: true,
58 isWorkspaceEnabled: false,
40}; 59};
41 60
42export const DEFAULT_WINDOW_OPTIONS = { 61export const DEFAULT_WINDOW_OPTIONS = {
@@ -57,4 +76,10 @@ export const FILE_SYSTEM_SETTINGS_TYPES = [
57export const SETTINGS_PATH = path.join(app.getPath('userData'), 'config'); 76export const SETTINGS_PATH = path.join(app.getPath('userData'), 'config');
58 77
59// Replacing app.asar is not beautiful but unforunately necessary 78// Replacing app.asar is not beautiful but unforunately necessary
60export const DICTIONARY_PATH = path.join(__dirname, 'dictionaries').replace('app.asar', 'app.asar.unpacked'); 79export const DICTIONARY_PATH = asarPath(path.join(__dirname, 'dictionaries'));
80
81export const ALLOWED_PROTOCOLS = [
82 'https:',
83 'http:',
84 'ftp:',
85];
diff --git a/src/containers/auth/AuthLayoutContainer.js b/src/containers/auth/AuthLayoutContainer.js
index 762929dc6..e63f40c06 100644
--- a/src/containers/auth/AuthLayoutContainer.js
+++ b/src/containers/auth/AuthLayoutContainer.js
@@ -1,6 +1,8 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import { ThemeProvider } from 'react-jss';
5import { theme } from '@meetfranz/theme';
4 6
5import AuthLayout from '../../components/auth/AuthLayout'; 7import AuthLayout from '../../components/auth/AuthLayout';
6import AppStore from '../../stores/AppStore'; 8import AppStore from '../../stores/AppStore';
@@ -21,30 +23,38 @@ export default @inject('stores', 'actions') @observer class AuthLayoutContainer
21 const { 23 const {
22 stores, actions, children, location, 24 stores, actions, children, location,
23 } = this.props; 25 } = this.props;
24 const { app, features, globalError } = stores; 26 const {
27 app, features, globalError, settings,
28 } = stores;
25 29
26 const isLoadingBaseFeatures = features.defaultFeaturesRequest.isExecuting 30 const isLoadingBaseFeatures = features.defaultFeaturesRequest.isExecuting
27 && !features.defaultFeaturesRequest.wasExecuted; 31 && !features.defaultFeaturesRequest.wasExecuted;
28 32
33 const themeType = theme(settings.app.darkMode ? 'dark' : 'default');
34
29 if (isLoadingBaseFeatures) { 35 if (isLoadingBaseFeatures) {
30 return ( 36 return (
31 <AppLoader /> 37 <ThemeProvider theme={theme(themeType)}>
38 <AppLoader />
39 </ThemeProvider>
32 ); 40 );
33 } 41 }
34 42
35 return ( 43 return (
36 <AuthLayout 44 <ThemeProvider theme={theme(themeType)}>
37 error={globalError.response} 45 <AuthLayout
38 pathname={location.pathname} 46 error={globalError.response}
39 isOnline={app.isOnline} 47 pathname={location.pathname}
40 isAPIHealthy={!app.healthCheckRequest.isError} 48 isOnline={app.isOnline}
41 retryHealthCheck={actions.app.healthCheck} 49 isAPIHealthy={!app.healthCheckRequest.isError}
42 isHealthCheckLoading={app.healthCheckRequest.isExecuting} 50 retryHealthCheck={actions.app.healthCheck}
43 isFullScreen={app.isFullScreen} 51 isHealthCheckLoading={app.healthCheckRequest.isExecuting}
44 darkMode={app.isSystemDarkModeEnabled} 52 isFullScreen={app.isFullScreen}
45 > 53 darkMode={app.isSystemDarkModeEnabled}
46 {children} 54 >
47 </AuthLayout> 55 {children}
56 </AuthLayout>
57 </ThemeProvider>
48 ); 58 );
49 } 59 }
50} 60}
diff --git a/src/containers/auth/ImportScreen.js b/src/containers/auth/ImportScreen.js
index fc46f8b54..4a93891d6 100644
--- a/src/containers/auth/ImportScreen.js
+++ b/src/containers/auth/ImportScreen.js
@@ -3,13 +3,8 @@ import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import Import from '../../components/auth/Import'; 4import Import from '../../components/auth/Import';
5import UserStore from '../../stores/UserStore'; 5import UserStore from '../../stores/UserStore';
6import { gaPage } from '../../lib/analytics';
7 6
8export default @inject('stores', 'actions') @observer class ImportScreen extends Component { 7export default @inject('stores', 'actions') @observer class ImportScreen extends Component {
9 componentDidMount() {
10 gaPage('Auth/Import');
11 }
12
13 render() { 8 render() {
14 const { actions, stores } = this.props; 9 const { actions, stores } = this.props;
15 10
diff --git a/src/containers/auth/InviteScreen.js b/src/containers/auth/InviteScreen.js
index 26bf97038..66afaf7e1 100644
--- a/src/containers/auth/InviteScreen.js
+++ b/src/containers/auth/InviteScreen.js
@@ -2,13 +2,8 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import Invite from '../../components/auth/Invite'; 4import Invite from '../../components/auth/Invite';
5import { gaPage } from '../../lib/analytics';
6 5
7export default @inject('stores', 'actions') @observer class InviteScreen extends Component { 6export default @inject('stores', 'actions') @observer class InviteScreen extends Component {
8 componentDidMount() {
9 gaPage('Auth/Invite');
10 }
11
12 render() { 7 render() {
13 const { actions } = this.props; 8 const { actions } = this.props;
14 9
diff --git a/src/containers/auth/LoginScreen.js b/src/containers/auth/LoginScreen.js
index 865bd38f8..e5ee10785 100644
--- a/src/containers/auth/LoginScreen.js
+++ b/src/containers/auth/LoginScreen.js
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import Login from '../../components/auth/Login'; 4import Login from '../../components/auth/Login';
5import UserStore from '../../stores/UserStore'; 5import UserStore from '../../stores/UserStore';
6import { gaPage } from '../../lib/analytics';
7 6
8import { globalError as globalErrorPropType } from '../../prop-types'; 7import { globalError as globalErrorPropType } from '../../prop-types';
9 8
@@ -12,10 +11,6 @@ export default @inject('stores', 'actions') @observer class LoginScreen extends
12 error: globalErrorPropType.isRequired, 11 error: globalErrorPropType.isRequired,
13 }; 12 };
14 13
15 componentDidMount() {
16 gaPage('Auth/Login');
17 }
18
19 render() { 14 render() {
20 const { actions, stores, error } = this.props; 15 const { actions, stores, error } = this.props;
21 return ( 16 return (
diff --git a/src/containers/auth/PasswordScreen.js b/src/containers/auth/PasswordScreen.js
index 236fd2031..5b238860e 100644
--- a/src/containers/auth/PasswordScreen.js
+++ b/src/containers/auth/PasswordScreen.js
@@ -3,13 +3,8 @@ import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import Password from '../../components/auth/Password'; 4import Password from '../../components/auth/Password';
5import UserStore from '../../stores/UserStore'; 5import UserStore from '../../stores/UserStore';
6import { gaPage } from '../../lib/analytics';
7 6
8export default @inject('stores', 'actions') @observer class PasswordScreen extends Component { 7export default @inject('stores', 'actions') @observer class PasswordScreen extends Component {
9 componentDidMount() {
10 gaPage('Auth/Password Retrieve');
11 }
12
13 render() { 8 render() {
14 const { actions, stores } = this.props; 9 const { actions, stores } = this.props;
15 10
diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js
index 34b512e15..8d179a170 100644
--- a/src/containers/auth/PricingScreen.js
+++ b/src/containers/auth/PricingScreen.js
@@ -6,7 +6,6 @@ import { RouterStore } from 'mobx-react-router';
6import Pricing from '../../components/auth/Pricing'; 6import Pricing from '../../components/auth/Pricing';
7import UserStore from '../../stores/UserStore'; 7import UserStore from '../../stores/UserStore';
8import PaymentStore from '../../stores/PaymentStore'; 8import PaymentStore from '../../stores/PaymentStore';
9import { gaPage } from '../../lib/analytics';
10 9
11import { globalError as globalErrorPropType } from '../../prop-types'; 10import { globalError as globalErrorPropType } from '../../prop-types';
12 11
@@ -15,10 +14,6 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend
15 error: globalErrorPropType.isRequired, 14 error: globalErrorPropType.isRequired,
16 }; 15 };
17 16
18 componentDidMount() {
19 gaPage('Auth/Pricing');
20 }
21
22 render() { 17 render() {
23 const { actions, stores, error } = this.props; 18 const { actions, stores, error } = this.props;
24 19
diff --git a/src/containers/auth/SignupScreen.js b/src/containers/auth/SignupScreen.js
index caf75de90..efc7ea4c1 100644
--- a/src/containers/auth/SignupScreen.js
+++ b/src/containers/auth/SignupScreen.js
@@ -4,7 +4,6 @@ import { inject, observer } from 'mobx-react';
4 4
5import Signup from '../../components/auth/Signup'; 5import Signup from '../../components/auth/Signup';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7import { gaPage } from '../../lib/analytics';
8 7
9import { globalError as globalErrorPropType } from '../../prop-types'; 8import { globalError as globalErrorPropType } from '../../prop-types';
10 9
@@ -13,10 +12,6 @@ export default @inject('stores', 'actions') @observer class SignupScreen extends
13 error: globalErrorPropType.isRequired, 12 error: globalErrorPropType.isRequired,
14 }; 13 };
15 14
16 componentDidMount() {
17 gaPage('Auth/Signup');
18 }
19
20 render() { 15 render() {
21 const { actions, stores, error } = this.props; 16 const { actions, stores, error } = this.props;
22 return ( 17 return (
diff --git a/src/containers/auth/WelcomeScreen.js b/src/containers/auth/WelcomeScreen.js
index 2c120f81c..75182345a 100644
--- a/src/containers/auth/WelcomeScreen.js
+++ b/src/containers/auth/WelcomeScreen.js
@@ -5,13 +5,8 @@ import { inject, observer } from 'mobx-react';
5import Welcome from '../../components/auth/Welcome'; 5import Welcome from '../../components/auth/Welcome';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; 7import RecipePreviewsStore from '../../stores/RecipePreviewsStore';
8import { gaPage } from '../../lib/analytics';
9 8
10export default @inject('stores', 'actions') @observer class LoginScreen extends Component { 9export default @inject('stores', 'actions') @observer class LoginScreen extends Component {
11 componentDidMount() {
12 gaPage('Auth/Welcome');
13 }
14
15 render() { 10 render() {
16 const { user, recipePreviews } = this.props.stores; 11 const { user, recipePreviews } = this.props.stores;
17 12
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index 749912c59..d2891a6a4 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -20,6 +20,10 @@ import Services from '../../components/services/content/Services';
20import AppLoader from '../../components/ui/AppLoader'; 20import AppLoader from '../../components/ui/AppLoader';
21 21
22import { state as delayAppState } from '../../features/delayApp'; 22import { state as delayAppState } from '../../features/delayApp';
23import { workspaceActions } from '../../features/workspaces/actions';
24import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer';
25import { workspaceStore } from '../../features/workspaces';
26import { announcementsStore } from '../../features/announcements';
23 27
24export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { 28export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component {
25 static defaultProps = { 29 static defaultProps = {
@@ -42,6 +46,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
42 setActive, 46 setActive,
43 handleIPCMessage, 47 handleIPCMessage,
44 setWebviewReference, 48 setWebviewReference,
49 detachService,
45 openWindow, 50 openWindow,
46 reorder, 51 reorder,
47 reload, 52 reload,
@@ -81,6 +86,15 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
81 ); 86 );
82 } 87 }
83 88
89 const workspacesDrawer = (
90 <WorkspaceDrawer
91 getServicesForWorkspace={workspace => (
92 workspace ? workspaceStore.getWorkspaceServices(workspace).map(s => s.name) : services.all.map(s => s.name)
93 )}
94 onUpgradeAccountClick={() => openSettings({ path: 'user' })}
95 />
96 );
97
84 const sidebar = ( 98 const sidebar = (
85 <Sidebar 99 <Sidebar
86 services={services.allDisplayed} 100 services={services.allDisplayed}
@@ -95,6 +109,8 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
95 deleteService={deleteService} 109 deleteService={deleteService}
96 updateService={updateService} 110 updateService={updateService}
97 toggleMuteApp={toggleMuteApp} 111 toggleMuteApp={toggleMuteApp}
112 toggleWorkspaceDrawer={workspaceActions.toggleWorkspaceDrawer}
113 isWorkspaceDrawerOpen={workspaceStore.isWorkspaceDrawerOpen}
98 showMessageBadgeWhenMutedSetting={settings.all.app.showMessageBadgeWhenMuted} 114 showMessageBadgeWhenMutedSetting={settings.all.app.showMessageBadgeWhenMuted}
99 showMessageBadgesEvenWhenMuted={ui.showMessageBadgesEvenWhenMuted} 115 showMessageBadgesEvenWhenMuted={ui.showMessageBadgesEvenWhenMuted}
100 /> 116 />
@@ -105,6 +121,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
105 services={services.allDisplayedUnordered} 121 services={services.allDisplayedUnordered}
106 handleIPCMessage={handleIPCMessage} 122 handleIPCMessage={handleIPCMessage}
107 setWebviewReference={setWebviewReference} 123 setWebviewReference={setWebviewReference}
124 detachService={detachService}
108 openWindow={openWindow} 125 openWindow={openWindow}
109 reload={reload} 126 reload={reload}
110 openSettings={openSettings} 127 openSettings={openSettings}
@@ -119,7 +136,9 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
119 isOnline={app.isOnline} 136 isOnline={app.isOnline}
120 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar} 137 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar}
121 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED} 138 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED}
139 nextAppReleaseVersion={app.nextAppReleaseVersion}
122 sidebar={sidebar} 140 sidebar={sidebar}
141 workspacesDrawer={workspacesDrawer}
123 services={servicesContainer} 142 services={servicesContainer}
124 news={news.latest} 143 news={news.latest}
125 removeNewsItem={hide} 144 removeNewsItem={hide}
@@ -132,6 +151,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
132 areRequiredRequestsLoading={requests.areRequiredRequestsLoading} 151 areRequiredRequestsLoading={requests.areRequiredRequestsLoading}
133 darkMode={settings.all.app.darkMode} 152 darkMode={settings.all.app.darkMode}
134 isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible} 153 isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible}
154 isAnnouncementVisible={announcementsStore.isAnnouncementVisible}
135 > 155 >
136 {React.Children.count(children) > 0 ? children : null} 156 {React.Children.count(children) > 0 ? children : null}
137 </AppLayout> 157 </AppLayout>
@@ -160,6 +180,7 @@ AppLayoutContainer.wrappedComponent.propTypes = {
160 toggleAudio: PropTypes.func.isRequired, 180 toggleAudio: PropTypes.func.isRequired,
161 handleIPCMessage: PropTypes.func.isRequired, 181 handleIPCMessage: PropTypes.func.isRequired,
162 setWebviewReference: PropTypes.func.isRequired, 182 setWebviewReference: PropTypes.func.isRequired,
183 detachService: PropTypes.func.isRequired,
163 openWindow: PropTypes.func.isRequired, 184 openWindow: PropTypes.func.isRequired,
164 reloadUpdatedServices: PropTypes.func.isRequired, 185 reloadUpdatedServices: PropTypes.func.isRequired,
165 updateService: PropTypes.func.isRequired, 186 updateService: PropTypes.func.isRequired,
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js
index d681d5226..b3f967353 100644
--- a/src/containers/settings/AccountScreen.js
+++ b/src/containers/settings/AccountScreen.js
@@ -1,4 +1,3 @@
1import { remote } from 'electron';
2import React, { Component } from 'react'; 1import React, { Component } from 'react';
3import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
4import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
@@ -6,92 +5,55 @@ import { inject, observer } from 'mobx-react';
6import PaymentStore from '../../stores/PaymentStore'; 5import PaymentStore from '../../stores/PaymentStore';
7import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
8import AppStore from '../../stores/AppStore'; 7import AppStore from '../../stores/AppStore';
9import { gaPage } from '../../lib/analytics';
10 8
11import AccountDashboard from '../../components/settings/account/AccountDashboard'; 9import AccountDashboard from '../../components/settings/account/AccountDashboard';
12import ErrorBoundary from '../../components/util/ErrorBoundary'; 10import ErrorBoundary from '../../components/util/ErrorBoundary';
13 11import { WEBSITE } from '../../environment';
14const { BrowserWindow } = remote;
15 12
16export default @inject('stores', 'actions') @observer class AccountScreen extends Component { 13export default @inject('stores', 'actions') @observer class AccountScreen extends Component {
17 componentWillMount() {
18 const {
19 user,
20 } = this.props.stores;
21
22 user.getUserInfoRequest.invalidate({ immediately: true });
23 }
24
25 componentDidMount() {
26 gaPage('Settings/Account Dashboard');
27 }
28
29 onCloseWindow() { 14 onCloseWindow() {
30 const { user, payment } = this.props.stores; 15 const { user } = this.props.stores;
31 user.getUserInfoRequest.invalidate({ immediately: true }); 16 user.getUserInfoRequest.invalidate({ immediately: true });
32 payment.ordersDataRequest.invalidate({ immediately: true });
33 } 17 }
34 18
35 reloadData() { 19 reloadData() {
36 const { user, payment } = this.props.stores; 20 const { user, payment } = this.props.stores;
37 21
38 user.getUserInfoRequest.reload(); 22 user.getUserInfoRequest.reload();
39 payment.ordersDataRequest.reload();
40 payment.plansRequest.reload(); 23 payment.plansRequest.reload();
41 } 24 }
42 25
43 async handlePaymentDashboard() { 26 handleWebsiteLink(route) {
44 const { actions, stores } = this.props; 27 const { actions, stores } = this.props;
45 28
46 actions.payment.createDashboardUrl(); 29 const url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`;
47 30 console.log(url);
48 const dashboard = await stores.payment.createDashboardUrlRequest;
49
50 if (dashboard.url) {
51 const paymentWindow = new BrowserWindow({
52 title: 'đŸ”’ Franz Subscription Dashboard',
53 parent: remote.getCurrentWindow(),
54 modal: false,
55 width: 900,
56 minWidth: 600,
57 webPreferences: {
58 nodeIntegration: false,
59 },
60 });
61 paymentWindow.loadURL(dashboard.url);
62 31
63 paymentWindow.on('closed', () => { 32 actions.app.openExternalUrl({ url });
64 this.onCloseWindow();
65 });
66 }
67 } 33 }
68 34
69 render() { 35 render() {
70 const { user, payment } = this.props.stores; 36 const { user, payment } = this.props.stores;
71 const { openExternalUrl } = this.props.actions.app;
72 const { user: userActions } = this.props.actions; 37 const { user: userActions } = this.props.actions;
73 38
74 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting; 39 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting;
75 const isLoadingOrdersInfo = payment.ordersDataRequest.isExecuting;
76 const isLoadingPlans = payment.plansRequest.isExecuting; 40 const isLoadingPlans = payment.plansRequest.isExecuting;
77 41
78 return ( 42 return (
79 <ErrorBoundary> 43 <ErrorBoundary>
80 <AccountDashboard 44 <AccountDashboard
81 user={user.data} 45 user={user.data}
82 orders={payment.orders}
83 isLoading={isLoadingUserInfo} 46 isLoading={isLoadingUserInfo}
84 isLoadingOrdersInfo={isLoadingOrdersInfo}
85 isLoadingPlans={isLoadingPlans} 47 isLoadingPlans={isLoadingPlans}
86 userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} 48 userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError}
87 retryUserInfoRequest={() => this.reloadData()} 49 retryUserInfoRequest={() => this.reloadData()}
88 isCreatingPaymentDashboardUrl={payment.createDashboardUrlRequest.isExecuting}
89 openDashboard={price => this.handlePaymentDashboard(price)}
90 openExternalUrl={url => openExternalUrl({ url })}
91 onCloseSubscriptionWindow={() => this.onCloseWindow()} 50 onCloseSubscriptionWindow={() => this.onCloseWindow()}
92 deleteAccount={userActions.delete} 51 deleteAccount={userActions.delete}
93 isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting} 52 isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting}
94 isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError} 53 isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError}
54 openEditAccount={() => this.handleWebsiteLink('/user/profile')}
55 openBilling={() => this.handleWebsiteLink('/user/billing')}
56 openInvoices={() => this.handleWebsiteLink('/user/invoices')}
95 /> 57 />
96 </ErrorBoundary> 58 </ErrorBoundary>
97 ); 59 );
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js
index b46908344..870ca4ecd 100644
--- a/src/containers/settings/EditServiceScreen.js
+++ b/src/containers/settings/EditServiceScreen.js
@@ -9,7 +9,6 @@ import ServicesStore from '../../stores/ServicesStore';
9import SettingsStore from '../../stores/SettingsStore'; 9import SettingsStore from '../../stores/SettingsStore';
10import FeaturesStore from '../../stores/FeaturesStore'; 10import FeaturesStore from '../../stores/FeaturesStore';
11import Form from '../../lib/Form'; 11import Form from '../../lib/Form';
12import { gaPage } from '../../lib/analytics';
13 12
14import ServiceError from '../../components/settings/services/ServiceError'; 13import ServiceError from '../../components/settings/services/ServiceError';
15import EditServiceForm from '../../components/settings/services/EditServiceForm'; 14import EditServiceForm from '../../components/settings/services/EditServiceForm';
@@ -19,9 +18,12 @@ import { required, url, oneRequired } from '../../helpers/validation-helpers';
19import { getSelectOptions } from '../../helpers/i18n-helpers'; 18import { getSelectOptions } from '../../helpers/i18n-helpers';
20 19
21import { config as proxyFeature } from '../../features/serviceProxy'; 20import { config as proxyFeature } from '../../features/serviceProxy';
21import { config as spellcheckerFeature } from '../../features/spellchecker';
22 22
23import { SPELLCHECKER_LOCALES } from '../../i18n/languages'; 23import { SPELLCHECKER_LOCALES } from '../../i18n/languages';
24 24
25import globalMessages from '../../i18n/globalMessages';
26
25const messages = defineMessages({ 27const messages = defineMessages({
26 name: { 28 name: {
27 id: 'settings.service.form.name', 29 id: 'settings.service.form.name',
@@ -83,14 +85,6 @@ const messages = defineMessages({
83 id: 'settings.service.form.proxy.password', 85 id: 'settings.service.form.proxy.password',
84 defaultMessage: '!!!Password', 86 defaultMessage: '!!!Password',
85 }, 87 },
86 spellcheckerLanguage: {
87 id: 'settings.service.form.spellcheckerLanguage',
88 defaultMessage: '!!!Spell checking Language',
89 },
90 spellcheckerSystemDefault: {
91 id: 'settings.service.form.spellcheckerLanguage.default',
92 defaultMessage: '!!!Use System Default ({default})',
93 },
94}); 88});
95 89
96export default @inject('stores', 'actions') @observer class EditServiceScreen extends Component { 90export default @inject('stores', 'actions') @observer class EditServiceScreen extends Component {
@@ -98,10 +92,6 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex
98 intl: intlShape, 92 intl: intlShape,
99 }; 93 };
100 94
101 componentDidMount() {
102 gaPage('Settings/Service/Edit');
103 }
104
105 onSubmit(data) { 95 onSubmit(data) {
106 const { action } = this.props.router.params; 96 const { action } = this.props.router.params;
107 const { recipes, services } = this.props.stores; 97 const { recipes, services } = this.props.stores;
@@ -118,12 +108,26 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex
118 } 108 }
119 109
120 prepareForm(recipe, service, proxy) { 110 prepareForm(recipe, service, proxy) {
111 const {
112 intl,
113 } = this.context;
114
115 const {
116 stores,
117 } = this.props;
118
119 let defaultSpellcheckerLanguage = SPELLCHECKER_LOCALES[stores.settings.app.spellcheckerLanguage];
120
121 if (stores.settings.app.spellcheckerLanguage === 'automatic') {
122 defaultSpellcheckerLanguage = intl.formatMessage(globalMessages.spellcheckerAutomaticDetectionShort);
123 }
124
121 const spellcheckerLanguage = getSelectOptions({ 125 const spellcheckerLanguage = getSelectOptions({
122 locales: SPELLCHECKER_LOCALES, 126 locales: SPELLCHECKER_LOCALES,
123 resetToDefaultText: this.context.intl.formatMessage(messages.spellcheckerSystemDefault, { default: SPELLCHECKER_LOCALES[this.props.stores.settings.app.spellcheckerLanguage] }), 127 resetToDefaultText: intl.formatMessage(globalMessages.spellcheckerSystemDefault, { default: defaultSpellcheckerLanguage }),
128 automaticDetectionText: stores.settings.app.spellcheckerLanguage !== 'automatic' ? intl.formatMessage(globalMessages.spellcheckerAutomaticDetection) : '',
124 }); 129 });
125 130
126 const { intl } = this.context;
127 const config = { 131 const config = {
128 fields: { 132 fields: {
129 name: { 133 name: {
@@ -160,13 +164,13 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex
160 isDarkModeEnabled: { 164 isDarkModeEnabled: {
161 label: intl.formatMessage(messages.enableDarkMode), 165 label: intl.formatMessage(messages.enableDarkMode),
162 value: service.isDarkModeEnabled, 166 value: service.isDarkModeEnabled,
163 default: this.props.stores.settings.app.darkMode, 167 default: stores.settings.app.darkMode,
164 }, 168 },
165 spellcheckerLanguage: { 169 spellcheckerLanguage: {
166 label: intl.formatMessage(messages.spellcheckerLanguage), 170 label: intl.formatMessage(globalMessages.spellcheckerLanguage),
167 value: service.spellcheckerLanguage, 171 value: service.spellcheckerLanguage,
168 options: spellcheckerLanguage, 172 options: spellcheckerLanguage,
169 disabled: !this.props.stores.settings.app.enableSpellchecking, 173 disabled: !stores.settings.app.enableSpellchecking,
170 }, 174 },
171 }, 175 },
172 }; 176 };
@@ -220,7 +224,7 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex
220 } 224 }
221 225
222 if (proxy.isEnabled) { 226 if (proxy.isEnabled) {
223 const serviceProxyConfig = this.props.stores.settings.proxy[service.id] || {}; 227 const serviceProxyConfig = stores.settings.proxy[service.id] || {};
224 228
225 Object.assign(config.fields, { 229 Object.assign(config.fields, {
226 proxy: { 230 proxy: {
@@ -326,7 +330,8 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex
326 onSubmit={d => this.onSubmit(d)} 330 onSubmit={d => this.onSubmit(d)}
327 onDelete={() => this.deleteService()} 331 onDelete={() => this.deleteService()}
328 isProxyFeatureEnabled={proxyFeature.isEnabled} 332 isProxyFeatureEnabled={proxyFeature.isEnabled}
329 isProxyFeaturePremiumFeature={proxyFeature.isPremium} 333 isProxyPremiumFeature={proxyFeature.isPremium}
334 isSpellcheckerPremiumFeature={spellcheckerFeature.isPremium}
330 /> 335 />
331 </ErrorBoundary> 336 </ErrorBoundary>
332 ); 337 );
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index f1706a721..97c1fa3b1 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -8,16 +8,16 @@ import SettingsStore from '../../stores/SettingsStore';
8import UserStore from '../../stores/UserStore'; 8import UserStore from '../../stores/UserStore';
9import Form from '../../lib/Form'; 9import Form from '../../lib/Form';
10import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; 10import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages';
11import { gaPage } from '../../lib/analytics';
12import { DEFAULT_APP_SETTINGS } from '../../config'; 11import { DEFAULT_APP_SETTINGS } from '../../config';
13import { config as spellcheckerConfig } from '../../features/spellchecker'; 12import { config as spellcheckerConfig } from '../../features/spellchecker';
14 13
15import { getSelectOptions } from '../../helpers/i18n-helpers'; 14import { getSelectOptions } from '../../helpers/i18n-helpers';
16 15
17
18import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; 16import EditSettingsForm from '../../components/settings/settings/EditSettingsForm';
19import ErrorBoundary from '../../components/util/ErrorBoundary'; 17import ErrorBoundary from '../../components/util/ErrorBoundary';
20 18
19import globalMessages from '../../i18n/globalMessages';
20
21const messages = defineMessages({ 21const messages = defineMessages({
22 autoLaunchOnStart: { 22 autoLaunchOnStart: {
23 id: 'settings.app.form.autoLaunchOnStart', 23 id: 'settings.app.form.autoLaunchOnStart',
@@ -63,10 +63,6 @@ const messages = defineMessages({
63 id: 'settings.app.form.enableGPUAcceleration', 63 id: 'settings.app.form.enableGPUAcceleration',
64 defaultMessage: '!!!Enable GPU Acceleration', 64 defaultMessage: '!!!Enable GPU Acceleration',
65 }, 65 },
66 spellcheckerLanguage: {
67 id: 'settings.app.form.spellcheckerLanguage',
68 defaultMessage: '!!!Language for spell checking',
69 },
70 beta: { 66 beta: {
71 id: 'settings.app.form.beta', 67 id: 'settings.app.form.beta',
72 defaultMessage: '!!!Include beta versions', 68 defaultMessage: '!!!Include beta versions',
@@ -78,10 +74,6 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
78 intl: intlShape, 74 intl: intlShape,
79 }; 75 };
80 76
81 componentDidMount() {
82 gaPage('Settings/App');
83 }
84
85 onSubmit(settingsData) { 77 onSubmit(settingsData) {
86 const { app, settings, user } = this.props.actions; 78 const { app, settings, user } = this.props.actions;
87 79
@@ -125,6 +117,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
125 117
126 const spellcheckingLanguages = getSelectOptions({ 118 const spellcheckingLanguages = getSelectOptions({
127 locales: SPELLCHECKER_LOCALES, 119 locales: SPELLCHECKER_LOCALES,
120 automaticDetectionText: this.context.intl.formatMessage(globalMessages.spellcheckerAutomaticDetection),
128 }); 121 });
129 122
130 const config = { 123 const config = {
@@ -166,11 +159,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
166 }, 159 },
167 enableSpellchecking: { 160 enableSpellchecking: {
168 label: intl.formatMessage(messages.enableSpellchecking), 161 label: intl.formatMessage(messages.enableSpellchecking),
169 value: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : settings.all.app.enableSpellchecking, 162 value: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremium ? false : settings.all.app.enableSpellchecking,
170 default: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : DEFAULT_APP_SETTINGS.enableSpellchecking, 163 default: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremium ? false : DEFAULT_APP_SETTINGS.enableSpellchecking,
171 }, 164 },
172 spellcheckerLanguage: { 165 spellcheckerLanguage: {
173 label: intl.formatMessage(messages.spellcheckerLanguage), 166 label: intl.formatMessage(globalMessages.spellcheckerLanguage),
174 value: settings.all.app.spellcheckerLanguage, 167 value: settings.all.app.spellcheckerLanguage,
175 options: spellcheckingLanguages, 168 options: spellcheckingLanguages,
176 default: DEFAULT_APP_SETTINGS.spellcheckerLanguage, 169 default: DEFAULT_APP_SETTINGS.spellcheckerLanguage,
@@ -230,7 +223,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
230 cacheSize={cacheSize} 223 cacheSize={cacheSize}
231 isClearingAllCache={isClearingAllCache} 224 isClearingAllCache={isClearingAllCache}
232 onClearAllCache={clearAllCache} 225 onClearAllCache={clearAllCache}
233 isSpellcheckerPremiumFeature={spellcheckerConfig.isPremiumFeature} 226 isSpellcheckerPremiumFeature={spellcheckerConfig.isPremium}
234 /> 227 />
235 </ErrorBoundary> 228 </ErrorBoundary>
236 ); 229 );
diff --git a/src/containers/settings/EditUserScreen.js b/src/containers/settings/EditUserScreen.js
index 3d35effc5..81f689400 100644
--- a/src/containers/settings/EditUserScreen.js
+++ b/src/containers/settings/EditUserScreen.js
@@ -9,7 +9,6 @@ import EditUserForm from '../../components/settings/user/EditUserForm';
9import ErrorBoundary from '../../components/util/ErrorBoundary'; 9import ErrorBoundary from '../../components/util/ErrorBoundary';
10 10
11import { required, email, minLength } from '../../helpers/validation-helpers'; 11import { required, email, minLength } from '../../helpers/validation-helpers';
12import { gaPage } from '../../lib/analytics';
13 12
14const messages = defineMessages({ 13const messages = defineMessages({
15 firstname: { 14 firstname: {
@@ -24,23 +23,21 @@ const messages = defineMessages({
24 id: 'settings.user.form.email', 23 id: 'settings.user.form.email',
25 defaultMessage: '!!!Email', 24 defaultMessage: '!!!Email',
26 }, 25 },
27 accountType: { 26 accountTypeLabel: {
28 label: { 27 id: 'settings.user.form.accountType.label',
29 id: 'settings.user.form.accountType.label', 28 defaultMessage: '!!!Account type',
30 defaultMessage: '!!!Account type', 29 },
31 }, 30 accountTypeIndividual: {
32 individual: { 31 id: 'settings.user.form.accountType.individual',
33 id: 'settings.user.form.accountType.individual', 32 defaultMessage: '!!!Individual',
34 defaultMessage: '!!!Individual', 33 },
35 }, 34 accountTypeNonProfit: {
36 nonProfit: { 35 id: 'settings.user.form.accountType.non-profit',
37 id: 'settings.user.form.accountType.non-profit', 36 defaultMessage: '!!!Non-Profit',
38 defaultMessage: '!!!Non-Profit', 37 },
39 }, 38 accountTypeCompany: {
40 company: { 39 id: 'settings.user.form.accountType.company',
41 id: 'settings.user.form.accountType.company', 40 defaultMessage: '!!!Company',
42 defaultMessage: '!!!Company',
43 },
44 }, 41 },
45 currentPassword: { 42 currentPassword: {
46 id: 'settings.user.form.currentPassword', 43 id: 'settings.user.form.currentPassword',
@@ -57,10 +54,6 @@ export default @inject('stores', 'actions') @observer class EditUserScreen exten
57 intl: intlShape, 54 intl: intlShape,
58 }; 55 };
59 56
60 componentDidMount() {
61 gaPage('Settings/Account/Edit');
62 }
63
64 componentWillUnmount() { 57 componentWillUnmount() {
65 this.props.actions.user.resetStatus(); 58 this.props.actions.user.resetStatus();
66 } 59 }
@@ -99,21 +92,21 @@ export default @inject('stores', 'actions') @observer class EditUserScreen exten
99 accountType: { 92 accountType: {
100 value: user.accountType, 93 value: user.accountType,
101 validators: [required], 94 validators: [required],
102 label: intl.formatMessage(messages.accountType.label), 95 label: intl.formatMessage(messages.accountTypeLabel),
103 options: [{ 96 options: [{
104 value: 'individual', 97 value: 'individual',
105 label: intl.formatMessage(messages.accountType.individual), 98 label: intl.formatMessage(messages.accountTypeIndividual),
106 }, { 99 }, {
107 value: 'non-profit', 100 value: 'non-profit',
108 label: intl.formatMessage(messages.accountType.nonProfit), 101 label: intl.formatMessage(messages.accountTypeNonProfit),
109 }, { 102 }, {
110 value: 'company', 103 value: 'company',
111 label: intl.formatMessage(messages.accountType.company), 104 label: intl.formatMessage(messages.accountTypeCompany),
112 }], 105 }],
113 }, 106 },
114 organization: { 107 organization: {
115 label: intl.formatMessage(messages.accountType.company), 108 label: intl.formatMessage(messages.accountTypeCompany),
116 placeholder: intl.formatMessage(messages.accountType.company), 109 placeholder: intl.formatMessage(messages.accountTypeCompany),
117 value: user.organization, 110 value: user.organization,
118 }, 111 },
119 oldPassword: { 112 oldPassword: {
diff --git a/src/containers/settings/InviteScreen.js b/src/containers/settings/InviteScreen.js
index cd36610e4..cc36849e8 100644
--- a/src/containers/settings/InviteScreen.js
+++ b/src/containers/settings/InviteScreen.js
@@ -5,13 +5,7 @@ import { inject, observer } from 'mobx-react';
5import Invite from '../../components/auth/Invite'; 5import Invite from '../../components/auth/Invite';
6import ErrorBoundary from '../../components/util/ErrorBoundary'; 6import ErrorBoundary from '../../components/util/ErrorBoundary';
7 7
8import { gaPage } from '../../lib/analytics';
9
10export default @inject('stores', 'actions') @observer class InviteScreen extends Component { 8export default @inject('stores', 'actions') @observer class InviteScreen extends Component {
11 componentDidMount() {
12 gaPage('Settings/Invite');
13 }
14
15 componentWillUnmount() { 9 componentWillUnmount() {
16 this.props.stores.user.inviteRequest.reset(); 10 this.props.stores.user.inviteRequest.reset();
17 } 11 }
diff --git a/src/containers/settings/RecipesScreen.js b/src/containers/settings/RecipesScreen.js
index b3d758c87..eda5ae54c 100644
--- a/src/containers/settings/RecipesScreen.js
+++ b/src/containers/settings/RecipesScreen.js
@@ -7,7 +7,6 @@ import RecipePreviewsStore from '../../stores/RecipePreviewsStore';
7import RecipeStore from '../../stores/RecipesStore'; 7import RecipeStore from '../../stores/RecipesStore';
8import ServiceStore from '../../stores/ServicesStore'; 8import ServiceStore from '../../stores/ServicesStore';
9import UserStore from '../../stores/UserStore'; 9import UserStore from '../../stores/UserStore';
10import { gaPage } from '../../lib/analytics';
11 10
12import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; 11import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard';
13import ErrorBoundary from '../../components/util/ErrorBoundary'; 12import ErrorBoundary from '../../components/util/ErrorBoundary';
@@ -33,20 +32,15 @@ export default @inject('stores', 'actions') @observer class RecipesScreen extend
33 autorunDisposer = null; 32 autorunDisposer = null;
34 33
35 componentDidMount() { 34 componentDidMount() {
36 gaPage('Settings/Recipe Dashboard/Featured');
37
38 this.autorunDisposer = autorun(() => { 35 this.autorunDisposer = autorun(() => {
39 const { filter } = this.props.params; 36 const { filter } = this.props.params;
40 const { currentFilter } = this.state; 37 const { currentFilter } = this.state;
41 38
42 if (filter === 'all' && currentFilter !== 'all') { 39 if (filter === 'all' && currentFilter !== 'all') {
43 gaPage('Settings/Recipe Dashboard/All');
44 this.setState({ currentFilter: 'all' }); 40 this.setState({ currentFilter: 'all' });
45 } else if (filter === 'featured' && currentFilter !== 'featured') { 41 } else if (filter === 'featured' && currentFilter !== 'featured') {
46 gaPage('Settings/Recipe Dashboard/Featured');
47 this.setState({ currentFilter: 'featured' }); 42 this.setState({ currentFilter: 'featured' });
48 } else if (filter === 'dev' && currentFilter !== 'dev') { 43 } else if (filter === 'dev' && currentFilter !== 'dev') {
49 gaPage('Settings/Recipe Dashboard/Dev');
50 this.setState({ currentFilter: 'dev' }); 44 this.setState({ currentFilter: 'dev' });
51 } 45 }
52 }); 46 });
diff --git a/src/containers/settings/ServicesScreen.js b/src/containers/settings/ServicesScreen.js
index b70a5506e..a501bf530 100644
--- a/src/containers/settings/ServicesScreen.js
+++ b/src/containers/settings/ServicesScreen.js
@@ -6,16 +6,11 @@ import { RouterStore } from 'mobx-react-router';
6// import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; 6// import RecipePreviewsStore from '../../stores/RecipePreviewsStore';
7import UserStore from '../../stores/UserStore'; 7import UserStore from '../../stores/UserStore';
8import ServiceStore from '../../stores/ServicesStore'; 8import ServiceStore from '../../stores/ServicesStore';
9import { gaPage } from '../../lib/analytics';
10 9
11import ServicesDashboard from '../../components/settings/services/ServicesDashboard'; 10import ServicesDashboard from '../../components/settings/services/ServicesDashboard';
12import ErrorBoundary from '../../components/util/ErrorBoundary'; 11import ErrorBoundary from '../../components/util/ErrorBoundary';
13 12
14export default @inject('stores', 'actions') @observer class ServicesScreen extends Component { 13export default @inject('stores', 'actions') @observer class ServicesScreen extends Component {
15 componentDidMount() {
16 gaPage('Settings/Service Dashboard');
17 }
18
19 componentWillUnmount() { 14 componentWillUnmount() {
20 this.props.actions.service.resetFilter(); 15 this.props.actions.service.resetFilter();
21 this.props.actions.service.resetStatus(); 16 this.props.actions.service.resetStatus();
diff --git a/src/containers/settings/SettingsWindow.js b/src/containers/settings/SettingsWindow.js
index 6d9e0ee77..663b9e2e4 100644
--- a/src/containers/settings/SettingsWindow.js
+++ b/src/containers/settings/SettingsWindow.js
@@ -7,6 +7,7 @@ import ServicesStore from '../../stores/ServicesStore';
7import Layout from '../../components/settings/SettingsLayout'; 7import Layout from '../../components/settings/SettingsLayout';
8import Navigation from '../../components/settings/navigation/SettingsNavigation'; 8import Navigation from '../../components/settings/navigation/SettingsNavigation';
9import ErrorBoundary from '../../components/util/ErrorBoundary'; 9import ErrorBoundary from '../../components/util/ErrorBoundary';
10import { workspaceStore } from '../../features/workspaces';
10 11
11export default @inject('stores', 'actions') @observer class SettingsContainer extends Component { 12export default @inject('stores', 'actions') @observer class SettingsContainer extends Component {
12 render() { 13 render() {
@@ -16,6 +17,7 @@ export default @inject('stores', 'actions') @observer class SettingsContainer ex
16 const navigation = ( 17 const navigation = (
17 <Navigation 18 <Navigation
18 serviceCount={stores.services.all.length} 19 serviceCount={stores.services.all.length}
20 workspaceCount={workspaceStore.workspaces.length}
19 /> 21 />
20 ); 22 );
21 23
diff --git a/src/containers/settings/TeamScreen.js b/src/containers/settings/TeamScreen.js
new file mode 100644
index 000000000..c69d5ad08
--- /dev/null
+++ b/src/containers/settings/TeamScreen.js
@@ -0,0 +1,57 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react';
4
5import UserStore from '../../stores/UserStore';
6import AppStore from '../../stores/AppStore';
7
8import TeamDashboard from '../../components/settings/team/TeamDashboard';
9import ErrorBoundary from '../../components/util/ErrorBoundary';
10import { WEBSITE } from '../../environment';
11
12export default @inject('stores', 'actions') @observer class TeamScreen extends Component {
13 handleWebsiteLink(route) {
14 const { actions, stores } = this.props;
15
16 const url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`;
17 console.log(url);
18
19 actions.app.openExternalUrl({ url });
20 }
21
22 render() {
23 const { user } = this.props.stores;
24
25 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting;
26
27 return (
28 <ErrorBoundary>
29 <TeamDashboard
30 isLoading={isLoadingUserInfo}
31 userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError}
32 retryUserInfoRequest={() => this.reloadData()}
33 openTeamManagement={() => this.handleWebsiteLink('/user/team')}
34 />
35 </ErrorBoundary>
36 );
37 }
38}
39
40TeamScreen.wrappedComponent.propTypes = {
41 stores: PropTypes.shape({
42 user: PropTypes.instanceOf(UserStore).isRequired,
43 app: PropTypes.instanceOf(AppStore).isRequired,
44 }).isRequired,
45 actions: PropTypes.shape({
46 payment: PropTypes.shape({
47 createDashboardUrl: PropTypes.func.isRequired,
48 }).isRequired,
49 app: PropTypes.shape({
50 openExternalUrl: PropTypes.func.isRequired,
51 }).isRequired,
52 user: PropTypes.shape({
53 update: PropTypes.func.isRequired,
54 delete: PropTypes.func.isRequired,
55 }).isRequired,
56 }).isRequired,
57};
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js
index 3eb7b6255..cb67ee7f2 100644
--- a/src/containers/subscription/SubscriptionFormScreen.js
+++ b/src/containers/subscription/SubscriptionFormScreen.js
@@ -43,26 +43,31 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre
43 }); 43 });
44 44
45 const hostedPage = await stores.payment.createHostedPageRequest; 45 const hostedPage = await stores.payment.createHostedPageRequest;
46 const url = `file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`;
47 46
48 if (hostedPage.url) { 47 if (hostedPage.url) {
49 const paymentWindow = new BrowserWindow({ 48 if (hostedPage.legacyCheckoutFlow) {
50 parent: remote.getCurrentWindow(), 49 const paymentWindow = new BrowserWindow({
51 modal: true, 50 parent: remote.getCurrentWindow(),
52 title: 'đŸ”’ Franz Supporter License', 51 modal: true,
53 width: 600, 52 title: 'đŸ”’ Franz Supporter License',
54 height: window.innerHeight - 100, 53 width: 600,
55 maxWidth: 600, 54 height: window.innerHeight - 100,
56 minWidth: 600, 55 maxWidth: 600,
57 webPreferences: { 56 minWidth: 600,
58 nodeIntegration: true, 57 webPreferences: {
59 }, 58 nodeIntegration: true,
60 }); 59 },
61 paymentWindow.loadURL(url); 60 });
61 paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`);
62 62
63 paymentWindow.on('closed', () => { 63 paymentWindow.on('closed', () => {
64 onCloseWindow(); 64 onCloseWindow();
65 }); 65 });
66 } else {
67 actions.app.openExternalUrl({
68 url: hostedPage.url,
69 });
70 }
66 } 71 }
67 } 72 }
68 73
diff --git a/src/electron/ipc-api/autoUpdate.js b/src/electron/ipc-api/autoUpdate.js
index 83dd83712..9a04c1958 100644
--- a/src/electron/ipc-api/autoUpdate.js
+++ b/src/electron/ipc-api/autoUpdate.js
@@ -4,7 +4,7 @@ import { autoUpdater } from 'electron-updater';
4const debug = require('debug')('Franz:ipcApi:autoUpdate'); 4const debug = require('debug')('Franz:ipcApi:autoUpdate');
5 5
6export default (params) => { 6export default (params) => {
7 if (process.platform === 'darwin' || process.platform === 'win32') { 7 if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) {
8 ipcMain.on('autoUpdate', (event, args) => { 8 ipcMain.on('autoUpdate', (event, args) => {
9 try { 9 try {
10 autoUpdater.autoInstallOnAppQuit = false; 10 autoUpdater.autoInstallOnAppQuit = false;
@@ -30,9 +30,12 @@ export default (params) => {
30 params.mainWindow.webContents.send('autoUpdate', { available: false }); 30 params.mainWindow.webContents.send('autoUpdate', { available: false });
31 }); 31 });
32 32
33 autoUpdater.on('update-available', () => { 33 autoUpdater.on('update-available', (event) => {
34 debug('update-available'); 34 debug('update-available');
35 params.mainWindow.webContents.send('autoUpdate', { available: true }); 35 params.mainWindow.webContents.send('autoUpdate', {
36 version: event.version,
37 available: true,
38 });
36 }); 39 });
37 40
38 autoUpdater.on('download-progress', (progressObj) => { 41 autoUpdater.on('download-progress', (progressObj) => {
diff --git a/src/environment.js b/src/environment.js
index e1762129b..ae7a67e4d 100644
--- a/src/environment.js
+++ b/src/environment.js
@@ -1,10 +1,22 @@
1import { LIVE_API, DEV_API, LOCAL_API } from './config'; 1import isDev from 'electron-is-dev';
2 2
3export const isDevMode = Boolean(process.execPath.match(/[\\/]electron/)); 3import {
4 LIVE_API,
5 DEV_API,
6 LOCAL_API,
7 LOCAL_API_WEBSITE,
8 DEV_API_WEBSITE,
9 LIVE_API_WEBSITE,
10 LIVE_WS_API,
11 LOCAL_WS_API,
12 DEV_WS_API,
13} from './config';
14
15export const isDevMode = isDev;
4export const useLiveAPI = process.env.LIVE_API; 16export const useLiveAPI = process.env.LIVE_API;
5export const useLocalAPI = process.env.LOCAL_API; 17export const useLocalAPI = process.env.LOCAL_API;
6 18
7let platform = process.platform; 19let { platform } = process;
8if (process.env.OS_PLATFORM) { 20if (process.env.OS_PLATFORM) {
9 platform = process.env.OS_PLATFORM; 21 platform = process.env.OS_PLATFORM;
10} 22}
@@ -17,12 +29,23 @@ export const ctrlKey = isMac ? '⌘' : 'Ctrl';
17export const cmdKey = isMac ? 'Cmd' : 'Ctrl'; 29export const cmdKey = isMac ? 'Cmd' : 'Ctrl';
18 30
19let api; 31let api;
32let wsApi;
33let web;
20if (!isDevMode || (isDevMode && useLiveAPI)) { 34if (!isDevMode || (isDevMode && useLiveAPI)) {
21 api = LIVE_API; 35 api = LIVE_API;
36 wsApi = LIVE_WS_API;
37 web = LIVE_API_WEBSITE;
22} else if (isDevMode && useLocalAPI) { 38} else if (isDevMode && useLocalAPI) {
23 api = LOCAL_API; 39 api = LOCAL_API;
40 wsApi = LOCAL_WS_API;
41 web = LOCAL_API_WEBSITE;
24} else { 42} else {
25 api = DEV_API; 43 api = DEV_API;
44 wsApi = DEV_WS_API;
45 web = DEV_API_WEBSITE;
26} 46}
27 47
28export const API = api; 48export const API = api;
49export const API_VERSION = 'v1';
50export const WS_API = wsApi;
51export const WEBSITE = web;
diff --git a/src/features/announcements/actions.js b/src/features/announcements/actions.js
new file mode 100644
index 000000000..bab496314
--- /dev/null
+++ b/src/features/announcements/actions.js
@@ -0,0 +1,10 @@
1import PropTypes from 'prop-types';
2import { createActionsFromDefinitions } from '../../actions/lib/actions';
3
4export const announcementActions = createActionsFromDefinitions({
5 show: {
6 targetVersion: PropTypes.string,
7 },
8}, PropTypes.checkPropTypes);
9
10export default announcementActions;
diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js
new file mode 100644
index 000000000..a581bd8de
--- /dev/null
+++ b/src/features/announcements/api.js
@@ -0,0 +1,33 @@
1import { remote } from 'electron';
2import Request from '../../stores/lib/Request';
3import { API, API_VERSION } from '../../environment';
4
5const debug = require('debug')('Franz:feature:announcements:api');
6
7export const announcementsApi = {
8 async getCurrentVersion() {
9 debug('getting current version of electron app');
10 return Promise.resolve(remote.app.getVersion());
11 },
12
13 async getChangelog(version) {
14 debug('fetching release changelog from Github');
15 const url = `https://api.github.com/repos/meetfranz/franz/releases/tags/v${version}`;
16 const request = await window.fetch(url, { method: 'GET' });
17 if (!request.ok) return null;
18 const data = await request.json();
19 return data.body;
20 },
21
22 async getAnnouncement(version) {
23 debug('fetching release announcement from api');
24 const url = `${API}/${API_VERSION}/announcements/${version}`;
25 const response = await window.fetch(url, { method: 'GET' });
26 if (!response.ok) return null;
27 return response.json();
28 },
29};
30
31export const getCurrentVersionRequest = new Request(announcementsApi, 'getCurrentVersion');
32export const getChangelogRequest = new Request(announcementsApi, 'getChangelog');
33export const getAnnouncementRequest = new Request(announcementsApi, 'getAnnouncement');
diff --git a/src/features/announcements/components/AnnouncementScreen.js b/src/features/announcements/components/AnnouncementScreen.js
new file mode 100644
index 000000000..dfce6cdd5
--- /dev/null
+++ b/src/features/announcements/components/AnnouncementScreen.js
@@ -0,0 +1,286 @@
1import React, { Component } from 'react';
2import marked from 'marked';
3import PropTypes from 'prop-types';
4import { inject, observer } from 'mobx-react';
5import { defineMessages, intlShape } from 'react-intl';
6import injectSheet from 'react-jss';
7import { Button } from '@meetfranz/forms';
8
9import { announcementsStore } from '../index';
10import UIStore from '../../../stores/UIStore';
11import { gaEvent } from '../../../lib/analytics';
12
13const renderer = new marked.Renderer();
14
15renderer.link = (href, title, text) => `<a target="_blank" href="${href}" title="${title}">${text}</a>`;
16
17const markedOptions = { sanitize: true, renderer };
18
19const messages = defineMessages({
20 headline: {
21 id: 'feature.announcements.changelog.headline',
22 defaultMessage: '!!!Changes in Franz {version}',
23 },
24});
25
26const smallScreen = '1000px';
27
28const styles = theme => ({
29 container: {
30 background: theme.colorBackground,
31 position: 'absolute',
32 top: 0,
33 zIndex: 140,
34 width: '100%',
35 height: '100%',
36 overflowY: 'auto',
37 },
38 headline: {
39 color: theme.colorHeadline,
40 margin: [25, 0, 40],
41 // 'max-width': 500,
42 'text-align': 'center',
43 'line-height': '1.3em',
44 },
45 announcement: {
46 height: 'auto',
47
48 [`@media(min-width: ${smallScreen})`]: {
49 display: 'flex',
50 flexDirection: 'column',
51 justifyContent: 'center',
52 height: '100vh',
53 },
54 },
55 main: {
56 display: 'flex',
57 flexDirection: 'column',
58 flexGrow: 1,
59 justifyContent: 'center',
60
61 '& h1': {
62 margin: [40, 0, 15],
63 fontSize: 70,
64 color: theme.styleTypes.primary.accent,
65 textAlign: 'center',
66
67 [`@media(min-width: ${smallScreen})`]: {
68 marginTop: 0,
69 },
70 },
71 '& h2': {
72 fontSize: 30,
73 fontWeight: 300,
74 color: theme.colorText,
75 textAlign: 'center',
76 marginBottom: 60,
77 },
78 },
79 mainBody: {
80 display: 'flex',
81 flexDirection: 'column',
82 alignItems: 'center',
83 width: 'calc(100% - 80px)',
84 height: 'auto',
85 margin: '0 auto',
86 [`@media(min-width: ${smallScreen})`]: {
87 flexDirection: 'row',
88 justifyContent: 'center',
89 },
90 },
91 mainImage: {
92 minWidth: 250,
93 maxWidth: 400,
94 margin: '0 auto',
95 marginBottom: 40,
96 '& img': {
97 width: '100%',
98 },
99 [`@media(min-width: ${smallScreen})`]: {
100 margin: 0,
101 },
102 },
103 mainText: {
104 height: 'auto',
105 maxWidth: 600,
106 textAlign: 'center',
107 '& p': {
108 lineHeight: '1.5em',
109 },
110 [`@media(min-width: ${smallScreen})`]: {
111 textAlign: 'left',
112 },
113 },
114 mainCtaButton: {
115 textAlign: 'center',
116 marginTop: 40,
117 [`@media(min-width: ${smallScreen})`]: {
118 textAlign: 'left',
119 },
120 },
121 spotlight: {
122 height: 'auto',
123 background: theme.announcements.spotlight.background,
124 padding: [40, 0],
125 marginTop: 80,
126 [`@media(min-width: ${smallScreen})`]: {
127 marginTop: 0,
128 justifyContent: 'center',
129 alignItems: 'flex-start',
130 display: 'flex',
131 flexDirection: 'row',
132 },
133 },
134 spotlightTopicContainer: {
135 textAlign: 'center',
136 marginBottom: 20,
137
138 [`@media(min-width: ${smallScreen})`]: {
139 marginBottom: 0,
140 minWidth: 250,
141 maxWidth: 330,
142 width: '100%',
143 textAlign: 'right',
144 marginRight: 60,
145 },
146 },
147 spotlightContentContainer: {
148 textAlign: 'center',
149 [`@media(min-width: ${smallScreen})`]: {
150 height: 'auto',
151 maxWidth: 600,
152 paddingRight: 40,
153 textAlign: 'left',
154 },
155 '& p': {
156 lineHeight: '1.5em',
157 },
158 },
159 spotlightTopic: {
160 fontSize: 20,
161 marginBottom: 5,
162 letterSpacing: 0,
163 fontWeight: 100,
164 },
165 spotlightSubject: {
166 fontSize: 20,
167 },
168 changelog: {
169 padding: [0, 60],
170 maxWidth: 700,
171 margin: [100, 'auto'],
172 height: 'auto',
173
174 '& h3': {
175 fontSize: '24px',
176 margin: '1.5em 0 1em 0',
177 },
178 '& li': {
179 marginBottom: '1em',
180 lineHeight: '1.4em',
181 },
182 '& div': {
183 height: 'auto',
184 },
185 },
186});
187
188
189@inject('stores', 'actions') @injectSheet(styles) @observer
190class AnnouncementScreen extends Component {
191 static propTypes = {
192 classes: PropTypes.object.isRequired,
193 stores: PropTypes.shape({
194 ui: PropTypes.instanceOf(UIStore).isRequired,
195 }).isRequired,
196 };
197
198 static contextTypes = {
199 intl: intlShape,
200 };
201
202 render() {
203 const { classes, stores } = this.props;
204 const { intl } = this.context;
205 const { changelog, announcement } = announcementsStore;
206 const themeImage = stores.ui.isDarkThemeActive ? 'dark' : 'light';
207 return (
208 <div className={classes.container}>
209 {announcement && (
210 <div className={classes.announcement}>
211 <div className={classes.main}>
212 <h1>{announcement.main.headline}</h1>
213 <h2>{announcement.main.subHeadline}</h2>
214 <div className={classes.mainBody}>
215 <div className={classes.mainImage}>
216 <img
217 src={announcement.main.image[themeImage]}
218 alt=""
219 />
220 </div>
221 <div className={classes.mainText}>
222 <div
223 dangerouslySetInnerHTML={{
224 __html: marked(announcement.main.text, markedOptions),
225 }}
226 />
227 <div className={classes.mainCtaButton}>
228 <Button
229 label={announcement.main.cta.label}
230 onClick={() => {
231 const { analytics } = announcement.main.cta;
232 window.location.href = `#${announcement.main.cta.href}`;
233 gaEvent(analytics.category, analytics.action, announcement.main.cta.label);
234 }}
235 />
236 </div>
237 </div>
238 </div>
239 </div>
240 {announcement.spotlight && (
241 <div className={classes.spotlight}>
242 <div className={classes.spotlightTopicContainer}>
243 <h2 className={classes.spotlightTopic}>{announcement.spotlight.title}</h2>
244 <h3 className={classes.spotlightSubject}>{announcement.spotlight.subject}</h3>
245 </div>
246 <div className={classes.spotlightContentContainer}>
247 <div
248 dangerouslySetInnerHTML={{
249 __html: marked(announcement.spotlight.text, markedOptions),
250 }}
251 />
252 <div className={classes.mainCtaButton}>
253 <Button
254 label={announcement.spotlight.cta.label}
255 onClick={() => {
256 const { analytics } = announcement.spotlight.cta;
257 window.location.href = `#${announcement.spotlight.cta.href}`;
258 gaEvent(analytics.category, analytics.action, announcement.spotlight.cta.label);
259 }}
260 />
261 </div>
262 </div>
263 </div>
264 )}
265 </div>
266 )}
267 {changelog && (
268 <div className={classes.changelog}>
269 <h1 className={classes.headline}>
270 {intl.formatMessage(messages.headline, {
271 version: announcementsStore.currentVersion,
272 })}
273 </h1>
274 <div
275 dangerouslySetInnerHTML={{
276 __html: marked(changelog, markedOptions),
277 }}
278 />
279 </div>
280 )}
281 </div>
282 );
283 }
284}
285
286export default AnnouncementScreen;
diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js
new file mode 100644
index 000000000..4658b976f
--- /dev/null
+++ b/src/features/announcements/index.js
@@ -0,0 +1,32 @@
1import { reaction } from 'mobx';
2import { AnnouncementsStore } from './store';
3
4const debug = require('debug')('Franz:feature:announcements');
5
6export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements';
7
8export const announcementsStore = new AnnouncementsStore();
9
10export default function initAnnouncements(stores, actions) {
11 // const { features } = stores;
12
13 // Toggle workspace feature
14 reaction(
15 () => (
16 true
17 // features.features.isAnnouncementsEnabled
18 ),
19 (isEnabled) => {
20 if (isEnabled) {
21 debug('Initializing `announcements` feature');
22 announcementsStore.start(stores, actions);
23 } else if (announcementsStore.isFeatureActive) {
24 debug('Disabling `announcements` feature');
25 announcementsStore.stop();
26 }
27 },
28 {
29 fireImmediately: true,
30 },
31 );
32}
diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js
new file mode 100644
index 000000000..7ecc0e346
--- /dev/null
+++ b/src/features/announcements/store.js
@@ -0,0 +1,144 @@
1import {
2 action,
3 computed,
4 observable,
5 reaction,
6} from 'mobx';
7import semver from 'semver';
8import localStorage from 'mobx-localstorage';
9
10import { FeatureStore } from '../utils/FeatureStore';
11import { GA_CATEGORY_ANNOUNCEMENTS } from '.';
12import { getAnnouncementRequest, getChangelogRequest, getCurrentVersionRequest } from './api';
13import { announcementActions } from './actions';
14import { createActionBindings } from '../utils/ActionBinding';
15import { createReactions } from '../../stores/lib/Reaction';
16import { gaEvent } from '../../lib/analytics';
17
18const LOCAL_STORAGE_KEY = 'announcements';
19
20const debug = require('debug')('Franz:feature:announcements:store');
21
22export class AnnouncementsStore extends FeatureStore {
23 @observable targetVersion = null;
24
25 @observable isAnnouncementVisible = false;
26
27 @observable isFeatureActive = false;
28
29 @computed get changelog() {
30 return getChangelogRequest.result;
31 }
32
33 @computed get announcement() {
34 return getAnnouncementRequest.result;
35 }
36
37 @computed get areNewsAvailable() {
38 const isChangelogAvailable = getChangelogRequest.wasExecuted && !!this.changelog;
39 const isAnnouncementAvailable = getAnnouncementRequest.wasExecuted && !!this.announcement;
40 return isChangelogAvailable || isAnnouncementAvailable;
41 }
42
43 @computed get settings() {
44 return localStorage.getItem(LOCAL_STORAGE_KEY) || {};
45 }
46
47 @computed get lastSeenAnnouncementVersion() {
48 return this.settings.lastSeenAnnouncementVersion || null;
49 }
50
51 @computed get currentVersion() {
52 return getCurrentVersionRequest.result;
53 }
54
55 @computed get isNewUser() {
56 return this.stores.settings.stats.appStarts <= 1;
57 }
58
59 async start(stores, actions) {
60 debug('AnnouncementsStore::start');
61 this.stores = stores;
62 this.actions = actions;
63 getCurrentVersionRequest.execute();
64
65 this._registerActions(createActionBindings([
66 [announcementActions.show, this._showAnnouncement],
67 ]));
68
69 this._reactions = createReactions([
70 this._fetchAnnouncements,
71 this._showAnnouncementToUsersWhoUpdatedApp,
72 ]);
73 this._registerReactions(this._reactions);
74 this.isFeatureActive = true;
75 }
76
77 stop() {
78 super.stop();
79 debug('AnnouncementsStore::stop');
80 this.isFeatureActive = false;
81 this.isAnnouncementVisible = false;
82 }
83
84 // ======= HELPERS ======= //
85
86 _updateSettings = (changes) => {
87 localStorage.setItem(LOCAL_STORAGE_KEY, {
88 ...this.settings,
89 ...changes,
90 });
91 };
92
93 // ======= ACTIONS ======= //
94
95 @action _showAnnouncement = ({ targetVersion } = {}) => {
96 if (!this.areNewsAvailable) return;
97 this.targetVersion = targetVersion || this.currentVersion;
98 this.isAnnouncementVisible = true;
99 this.actions.service.blurActive();
100 this._updateSettings({
101 lastSeenAnnouncementVersion: this.currentVersion,
102 });
103 const dispose = reaction(
104 () => this.stores.services.active,
105 () => {
106 this._hideAnnouncement();
107 dispose();
108 },
109 );
110
111 gaEvent(GA_CATEGORY_ANNOUNCEMENTS, 'show');
112 };
113
114 @action _hideAnnouncement() {
115 this.isAnnouncementVisible = false;
116 }
117
118 // ======= REACTIONS ========
119
120 _showAnnouncementToUsersWhoUpdatedApp = () => {
121 const { announcement, isNewUser } = this;
122 // Check if there is an announcement and on't show announcements to new users
123 if (!announcement || isNewUser) return;
124
125 // Check if the user has already used current version (= has seen the announcement)
126 const { currentVersion, lastSeenAnnouncementVersion } = this;
127 if (semver.gt(currentVersion, lastSeenAnnouncementVersion || '0.0.0')) {
128 debug(`${currentVersion} < ${lastSeenAnnouncementVersion}: announcement is shown`);
129 this._showAnnouncement();
130 }
131 };
132
133 _fetchAnnouncements = () => {
134 const targetVersion = this.targetVersion || this.currentVersion;
135 if (!targetVersion) return;
136 getChangelogRequest.execute(targetVersion);
137 // We only fetch announcements for current / older versions
138 if (targetVersion <= this.currentVersion) {
139 getAnnouncementRequest.execute(targetVersion);
140 } else {
141 getAnnouncementRequest.reset();
142 }
143 }
144}
diff --git a/src/features/basicAuth/Component.js b/src/features/basicAuth/Component.js
index 13395fb40..a8252acb7 100644
--- a/src/features/basicAuth/Component.js
+++ b/src/features/basicAuth/Component.js
@@ -62,6 +62,7 @@ export default @injectSheet(styles) @observer class BasicAuthModal extends Compo
62 isOpen={isModalVisible} 62 isOpen={isModalVisible}
63 className={classes.modal} 63 className={classes.modal}
64 close={this.cancel.bind(this)} 64 close={this.cancel.bind(this)}
65 showClose={false}
65 > 66 >
66 <h1>Sign in</h1> 67 <h1>Sign in</h1>
67 <p> 68 <p>
diff --git a/src/features/basicAuth/index.js b/src/features/basicAuth/index.js
index 03269582c..89607824b 100644
--- a/src/features/basicAuth/index.js
+++ b/src/features/basicAuth/index.js
@@ -6,7 +6,7 @@ import BasicAuthComponent from './Component';
6const debug = require('debug')('Franz:feature:basicAuth'); 6const debug = require('debug')('Franz:feature:basicAuth');
7 7
8const defaultState = { 8const defaultState = {
9 isModalVisible: false, 9 isModalVisible: true,
10 service: null, 10 service: null,
11 authInfo: null, 11 authInfo: null,
12}; 12};
@@ -15,7 +15,6 @@ export const state = observable(defaultState);
15 15
16export function resetState() { 16export function resetState() {
17 Object.assign(state, defaultState); 17 Object.assign(state, defaultState);
18 console.log('reset state', state);
19} 18}
20 19
21export default function initialize() { 20export default function initialize() {
@@ -31,15 +30,6 @@ export default function initialize() {
31 state.authInfo = data.authInfo; 30 state.authInfo = data.authInfo;
32 state.isModalVisible = true; 31 state.isModalVisible = true;
33 }); 32 });
34
35 // autorun(() => {
36 // // if (state.serviceId) {
37 // // const service = stores.services.one(state.serviceId);
38 // // if (service) {
39 // // state.service = service;
40 // // }
41 // // }
42 // });
43} 33}
44 34
45export function mainIpcHandler(mainWindow, authInfo) { 35export function mainIpcHandler(mainWindow, authInfo) {
diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js
index ff84510e8..ff0f1f2f8 100644
--- a/src/features/delayApp/Component.js
+++ b/src/features/delayApp/Component.js
@@ -38,7 +38,7 @@ export default @inject('actions') @injectSheet(styles) @observer class DelayApp
38 38
39 state = { 39 state = {
40 countdown: config.delayDuration, 40 countdown: config.delayDuration,
41 } 41 };
42 42
43 countdownInterval = null; 43 countdownInterval = null;
44 44
diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js
index 28aa50eb2..67f0fc5e6 100644
--- a/src/features/delayApp/index.js
+++ b/src/features/delayApp/index.js
@@ -3,7 +3,7 @@ import moment from 'moment';
3import DelayAppComponent from './Component'; 3import DelayAppComponent from './Component';
4 4
5import { DEFAULT_FEATURES_CONFIG } from '../../config'; 5import { DEFAULT_FEATURES_CONFIG } from '../../config';
6import { gaEvent } from '../../lib/analytics'; 6import { gaEvent, gaPage } from '../../lib/analytics';
7 7
8const debug = require('debug')('Franz:feature:delayApp'); 8const debug = require('debug')('Franz:feature:delayApp');
9 9
@@ -28,8 +28,12 @@ export default function init(stores) {
28 let shownAfterLaunch = false; 28 let shownAfterLaunch = false;
29 let timeLastDelay = moment(); 29 let timeLastDelay = moment();
30 30
31 window.franz.features.delayApp = {
32 state,
33 };
34
31 reaction( 35 reaction(
32 () => stores.features.features.needToWaitToProceed && !stores.user.data.isPremium, 36 () => stores.user.isLoggedIn && stores.features.features.needToWaitToProceed && !stores.user.data.isPremium,
33 (isEnabled) => { 37 (isEnabled) => {
34 if (isEnabled) { 38 if (isEnabled) {
35 debug('Enabling `delayApp` feature'); 39 debug('Enabling `delayApp` feature');
@@ -50,7 +54,8 @@ export default function init(stores) {
50 debug(`App will be delayed for ${config.delayDuration / 1000}s`); 54 debug(`App will be delayed for ${config.delayDuration / 1000}s`);
51 55
52 setVisibility(true); 56 setVisibility(true);
53 gaEvent('delayApp', 'show', 'Delay App Feature'); 57 gaPage('/delayApp');
58 gaEvent('DelayApp', 'show', 'Delay App Feature');
54 59
55 timeLastDelay = moment(); 60 timeLastDelay = moment();
56 shownAfterLaunch = true; 61 shownAfterLaunch = true;
diff --git a/src/features/settingsWS/actions.js b/src/features/settingsWS/actions.js
new file mode 100755
index 000000000..631670c8a
--- /dev/null
+++ b/src/features/settingsWS/actions.js
@@ -0,0 +1,10 @@
1import PropTypes from 'prop-types';
2import { createActionsFromDefinitions } from '../../actions/lib/actions';
3
4export const settingsWSActions = createActionsFromDefinitions({
5 greet: {
6 name: PropTypes.string.isRequired,
7 },
8}, PropTypes.checkPropTypes);
9
10export default settingsWSActions;
diff --git a/src/features/settingsWS/index.js b/src/features/settingsWS/index.js
new file mode 100755
index 000000000..2064d2973
--- /dev/null
+++ b/src/features/settingsWS/index.js
@@ -0,0 +1,29 @@
1import { reaction } from 'mobx';
2import { SettingsWSStore } from './store';
3
4const debug = require('debug')('Franz:feature:settingsWS');
5
6export const settingsStore = new SettingsWSStore();
7
8export default function initSettingsWebSocket(stores, actions) {
9 const { features } = stores;
10
11 // Toggle SettingsWebSocket feature
12 reaction(
13 () => (
14 features.features.isSettingsWSEnabled
15 ),
16 (isEnabled) => {
17 if (isEnabled) {
18 debug('Initializing `settingsWS` feature');
19 settingsStore.start(stores, actions);
20 } else if (settingsStore) {
21 debug('Disabling `settingsWS` feature');
22 settingsStore.stop();
23 }
24 },
25 {
26 fireImmediately: true,
27 },
28 );
29}
diff --git a/src/features/settingsWS/state.js b/src/features/settingsWS/state.js
new file mode 100755
index 000000000..7b16b2b6e
--- /dev/null
+++ b/src/features/settingsWS/state.js
@@ -0,0 +1,13 @@
1import { observable } from 'mobx';
2
3const defaultState = {
4 isFeatureActive: false,
5};
6
7export const settingsWSState = observable(defaultState);
8
9export function resetState() {
10 Object.assign(settingsWSState, defaultState);
11}
12
13export default settingsWSState;
diff --git a/src/features/settingsWS/store.js b/src/features/settingsWS/store.js
new file mode 100755
index 000000000..167a70d10
--- /dev/null
+++ b/src/features/settingsWS/store.js
@@ -0,0 +1,130 @@
1import { observable } from 'mobx';
2import WebSocket from 'ws';
3import ms from 'ms';
4
5import { FeatureStore } from '../utils/FeatureStore';
6import { createReactions } from '../../stores/lib/Reaction';
7import { WS_API } from '../../environment';
8
9const debug = require('debug')('Franz:feature:settingsWS:store');
10
11export class SettingsWSStore extends FeatureStore {
12 stores = null;
13
14 actions = null;
15
16 ws = null;
17
18 pingTimeout = null;
19
20 reconnectTimeout = null;
21
22 @observable connected = false;
23
24 start(stores, actions) {
25 this.stores = stores;
26 this.actions = actions;
27
28 this._registerReactions(createReactions([
29 this._initialize.bind(this),
30 this._reconnect.bind(this),
31 this._close.bind(this),
32 ]));
33 }
34
35 connect() {
36 try {
37 const wsURL = `${WS_API}/ws/${this.stores.user.data.id}`;
38 debug('Setting up WebSocket to', wsURL);
39
40 this.ws = new WebSocket(wsURL);
41
42 this.ws.on('open', () => {
43 debug('Opened WebSocket');
44 this.send({
45 action: 'authorize',
46 token: this.stores.user.authToken,
47 });
48
49 this.connected = true;
50
51 this.heartbeat();
52 });
53
54 this.ws.on('message', (data) => {
55 const resp = JSON.parse(data);
56 debug('Received message', resp);
57
58 if (resp.id) {
59 this.stores.user.getUserInfoRequest.patch((result) => {
60 if (!result) return;
61
62 debug('Patching user object with new values');
63 Object.assign(result, resp);
64 });
65 }
66 });
67
68 this.ws.on('ping', this.heartbeat.bind(this));
69 } catch (err) {
70 console.err(err);
71 }
72 }
73
74 heartbeat() {
75 debug('Heartbeat');
76 clearTimeout(this.pingTimeout);
77
78 this.pingTimeout = setTimeout(() => {
79 debug('Terminating connection, reconnecting in 35');
80 this.ws.terminate();
81
82 this.connected = false;
83 }, ms('35s'));
84 }
85
86 send(data) {
87 if (this.ws && this.ws.readyState === 1) {
88 this.ws.send(JSON.stringify(data));
89 debug('Sending data', data);
90 } else {
91 debug('WebSocket is not initialized');
92 }
93 }
94
95 // Reactions
96
97 _initialize() {
98 if (this.stores.user.data.id && !this.ws) {
99 this.connect();
100 }
101 }
102
103 _reconnect() {
104 if (!this.connected) {
105 debug('Trying to reconnect in 30s');
106 this.reconnectTimeout = setInterval(() => {
107 debug('Trying to reconnect');
108 this.connect();
109 }, ms('30s'));
110 } else {
111 debug('Clearing reconnect interval');
112 clearInterval(this.reconnectTimeout);
113 }
114 }
115
116 _close() {
117 if (!this.stores.user.isLoggedIn) {
118 debug('Stopping reactions');
119 this._stopReactions();
120
121 if (this.ws) {
122 debug('Terminating connection');
123 this.ws.terminate();
124 this.ws = null;
125 }
126 }
127 }
128}
129
130export default SettingsWSStore;
diff --git a/src/features/shareFranz/Component.js b/src/features/shareFranz/Component.js
new file mode 100644
index 000000000..8d1d595c5
--- /dev/null
+++ b/src/features/shareFranz/Component.js
@@ -0,0 +1,166 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer, inject } from 'mobx-react';
4import injectSheet from 'react-jss';
5import { defineMessages, intlShape } from 'react-intl';
6import { Button } from '@meetfranz/forms';
7import { H1, Icon } from '@meetfranz/ui';
8
9import Modal from '../../components/ui/Modal';
10import { state } from '.';
11import { gaEvent } from '../../lib/analytics';
12import ServicesStore from '../../stores/ServicesStore';
13
14const messages = defineMessages({
15 headline: {
16 id: 'feature.shareFranz.headline',
17 defaultMessage: '!!!Franz is better together!',
18 },
19 text: {
20 id: 'feature.shareFranz.text',
21 defaultMessage: '!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.',
22 },
23 actionsEmail: {
24 id: 'feature.shareFranz.action.email',
25 defaultMessage: '!!!Share as email',
26 },
27 actionsFacebook: {
28 id: 'feature.shareFranz.action.facebook',
29 defaultMessage: '!!!Share on Facebook',
30 },
31 actionsTwitter: {
32 id: 'feature.shareFranz.action.twitter',
33 defaultMessage: '!!!Share on Twitter',
34 },
35 shareTextEmail: {
36 id: 'feature.shareFranz.shareText.email',
37 defaultMessage: '!!! I\'ve added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com',
38 },
39 shareTextTwitter: {
40 id: 'feature.shareFranz.shareText.twitter',
41 defaultMessage: '!!! I\'ve added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger',
42 },
43});
44
45const styles = theme => ({
46 modal: {
47 width: '80%',
48 maxWidth: 600,
49 background: theme.styleTypes.primary.accent,
50 textAlign: 'center',
51 color: theme.styleTypes.primary.contrast,
52 },
53 heartContainer: {
54 display: 'flex',
55 justifyContent: 'center',
56 borderRadius: '100%',
57 background: theme.brandDanger,
58 padding: 20,
59 width: 100,
60 height: 100,
61 margin: [-70, 'auto', 30],
62 },
63 heart: {
64 fill: theme.styleTypes.primary.contrast,
65 },
66 headline: {
67 textAlign: 'center',
68 fontSize: 40,
69 marginBottom: 20,
70 },
71 actions: {
72 display: 'flex',
73 justifyContent: 'space-between',
74 marginTop: 30,
75 },
76 cta: {
77 background: theme.styleTypes.primary.contrast,
78 color: theme.styleTypes.primary.accent,
79
80 '& svg': {
81 fill: theme.styleTypes.primary.accent,
82 },
83 },
84});
85
86export default @injectSheet(styles) @inject('stores') @observer class ShareFranzModal extends Component {
87 static propTypes = {
88 classes: PropTypes.object.isRequired,
89 };
90
91 static contextTypes = {
92 intl: intlShape,
93 };
94
95 close() {
96 state.isModalVisible = false;
97 }
98
99 render() {
100 const { isModalVisible } = state;
101
102 const {
103 classes,
104 stores,
105 } = this.props;
106
107 const serviceCount = stores.services.all.length;
108
109 const { intl } = this.context;
110
111 return (
112 <Modal
113 isOpen={isModalVisible}
114 className={classes.modal}
115 shouldCloseOnOverlayClick
116 close={this.close.bind(this)}
117 >
118 <div className={classes.heartContainer}>
119 <Icon icon="mdiHeart" className={classes.heart} size={4} />
120 </div>
121 <H1 className={classes.headline}>
122 {intl.formatMessage(messages.headline)}
123 </H1>
124 <p>{intl.formatMessage(messages.text)}</p>
125 <div className={classes.actions}>
126 <Button
127 label={intl.formatMessage(messages.actionsEmail)}
128 className={classes.cta}
129 icon="mdiEmail"
130 href={`mailto:?subject=Meet the cool app Franz&body=${intl.formatMessage(messages.shareTextEmail, { count: serviceCount })}}`}
131 target="_blank"
132 onClick={() => {
133 gaEvent('Share Franz', 'share', 'Share via email');
134 }}
135 />
136 <Button
137 label={intl.formatMessage(messages.actionsFacebook)}
138 className={classes.cta}
139 icon="mdiFacebookBox"
140 href="https://www.facebook.com/sharer/sharer.php?u=https://www.meetfranz.com?utm_source=facebook&utm_medium=referral&utm_campaign=share-button"
141 target="_blank"
142 onClick={() => {
143 gaEvent('Share Franz', 'share', 'Share via Facebook');
144 }}
145 />
146 <Button
147 label={intl.formatMessage(messages.actionsTwitter)}
148 className={classes.cta}
149 icon="mdiTwitter"
150 href={`http://twitter.com/intent/tweet?status=${intl.formatMessage(messages.shareTextTwitter, { count: serviceCount })}`}
151 target="_blank"
152 onClick={() => {
153 gaEvent('Share Franz', 'share', 'Share via Twitter');
154 }}
155 />
156 </div>
157 </Modal>
158 );
159 }
160}
161
162ShareFranzModal.wrappedComponent.propTypes = {
163 stores: PropTypes.shape({
164 services: PropTypes.instanceOf(ServicesStore).isRequired,
165 }).isRequired,
166};
diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js
new file mode 100644
index 000000000..87deacef4
--- /dev/null
+++ b/src/features/shareFranz/index.js
@@ -0,0 +1,52 @@
1import { observable, reaction } from 'mobx';
2import ms from 'ms';
3
4import { state as delayAppState } from '../delayApp';
5import { gaEvent, gaPage } from '../../lib/analytics';
6
7export { default as Component } from './Component';
8
9const debug = require('debug')('Franz:feature:shareFranz');
10
11const defaultState = {
12 isModalVisible: false,
13 lastShown: null,
14};
15
16export const state = observable(defaultState);
17
18export default function initialize(stores) {
19 debug('Initialize shareFranz feature');
20
21 window.franz.features.shareFranz = {
22 state,
23 };
24
25 function showModal() {
26 debug('Showing share window');
27
28 state.isModalVisible = true;
29
30 gaEvent('Share Franz', 'show');
31 gaPage('/share-modal');
32 }
33
34 reaction(
35 () => stores.user.isLoggedIn,
36 () => {
37 setTimeout(() => {
38 if (stores.settings.stats.appStarts % 50 === 0) {
39 if (delayAppState.isDelayAppScreenVisible) {
40 debug('Delaying share modal by 5 minutes');
41 setTimeout(() => showModal(), ms('5m'));
42 } else {
43 showModal();
44 }
45 }
46 }, ms('2s'));
47 },
48 {
49 fireImmediately: true,
50 },
51 );
52}
diff --git a/src/features/spellchecker/index.js b/src/features/spellchecker/index.js
index 63506103c..79a2172b4 100644
--- a/src/features/spellchecker/index.js
+++ b/src/features/spellchecker/index.js
@@ -5,7 +5,7 @@ import { DEFAULT_FEATURES_CONFIG } from '../../config';
5const debug = require('debug')('Franz:feature:spellchecker'); 5const debug = require('debug')('Franz:feature:spellchecker');
6 6
7export const config = observable({ 7export const config = observable({
8 isPremiumFeature: DEFAULT_FEATURES_CONFIG.isSpellcheckerPremiumFeature, 8 isPremium: DEFAULT_FEATURES_CONFIG.isSpellcheckerPremiumFeature,
9}); 9});
10 10
11export default function init(stores) { 11export default function init(stores) {
@@ -14,9 +14,9 @@ export default function init(stores) {
14 autorun(() => { 14 autorun(() => {
15 const { isSpellcheckerPremiumFeature } = stores.features.features; 15 const { isSpellcheckerPremiumFeature } = stores.features.features;
16 16
17 config.isPremiumFeature = isSpellcheckerPremiumFeature !== undefined ? isSpellcheckerPremiumFeature : DEFAULT_FEATURES_CONFIG.isSpellcheckerPremiumFeature; 17 config.isPremium = isSpellcheckerPremiumFeature !== undefined ? isSpellcheckerPremiumFeature : DEFAULT_FEATURES_CONFIG.isSpellcheckerPremiumFeature;
18 18
19 if (!stores.user.data.isPremium && config.isPremiumFeature && stores.settings.app.enableSpellchecking) { 19 if (!stores.user.data.isPremium && config.isPremium && stores.settings.app.enableSpellchecking) {
20 debug('Override settings.spellcheckerEnabled flag to false'); 20 debug('Override settings.spellcheckerEnabled flag to false');
21 21
22 Object.assign(stores.settings.app, { 22 Object.assign(stores.settings.app, {
diff --git a/src/features/utils/ActionBinding.js b/src/features/utils/ActionBinding.js
new file mode 100644
index 000000000..497aa071b
--- /dev/null
+++ b/src/features/utils/ActionBinding.js
@@ -0,0 +1,29 @@
1export default class ActionBinding {
2 action;
3
4 isActive = false;
5
6 constructor(action) {
7 this.action = action;
8 }
9
10 start() {
11 if (!this.isActive) {
12 const { action } = this;
13 action[0].listen(action[1]);
14 this.isActive = true;
15 }
16 }
17
18 stop() {
19 if (this.isActive) {
20 const { action } = this;
21 action[0].off(action[1]);
22 this.isActive = false;
23 }
24 }
25}
26
27export const createActionBindings = actions => (
28 actions.map(a => new ActionBinding(a))
29);
diff --git a/src/features/utils/FeatureStore.js b/src/features/utils/FeatureStore.js
new file mode 100644
index 000000000..0bc10e176
--- /dev/null
+++ b/src/features/utils/FeatureStore.js
@@ -0,0 +1,40 @@
1export class FeatureStore {
2 _actions = [];
3
4 _reactions = [];
5
6 stop() {
7 this._stopActions();
8 this._stopReactions();
9 }
10
11 // ACTIONS
12
13 _registerActions(actions) {
14 this._actions = actions;
15 this._startActions();
16 }
17
18 _startActions(actions = this._actions) {
19 actions.forEach(a => a.start());
20 }
21
22 _stopActions(actions = this._actions) {
23 actions.forEach(a => a.stop());
24 }
25
26 // REACTIONS
27
28 _registerReactions(reactions) {
29 this._reactions = reactions;
30 this._startReactions();
31 }
32
33 _startReactions(reactions = this._reactions) {
34 reactions.forEach(r => r.start());
35 }
36
37 _stopReactions(reactions = this._reactions) {
38 reactions.forEach(r => r.stop());
39 }
40}
diff --git a/src/features/utils/FeatureStore.test.js b/src/features/utils/FeatureStore.test.js
new file mode 100644
index 000000000..92308bf52
--- /dev/null
+++ b/src/features/utils/FeatureStore.test.js
@@ -0,0 +1,92 @@
1import PropTypes from 'prop-types';
2import { observable } from 'mobx';
3import { FeatureStore } from './FeatureStore';
4import { createActionsFromDefinitions } from '../../actions/lib/actions';
5import { createActionBindings } from './ActionBinding';
6import { createReactions } from '../../stores/lib/Reaction';
7
8const actions = createActionsFromDefinitions({
9 countUp: {},
10}, PropTypes.checkPropTypes);
11
12class TestFeatureStore extends FeatureStore {
13 @observable count = 0;
14
15 reactionInvokedCount = 0;
16
17 start() {
18 this._registerActions(createActionBindings([
19 [actions.countUp, this._countUp],
20 ]));
21 this._registerReactions(createReactions([
22 this._countReaction,
23 ]));
24 }
25
26 _countUp = () => {
27 this.count += 1;
28 };
29
30 _countReaction = () => {
31 this.reactionInvokedCount += 1;
32 }
33}
34
35describe('FeatureStore', () => {
36 let store = null;
37
38 beforeEach(() => {
39 store = new TestFeatureStore();
40 });
41
42 describe('registering actions', () => {
43 it('starts the actions', () => {
44 store.start();
45 actions.countUp();
46 expect(store.count).toBe(1);
47 });
48 it('starts the reactions', () => {
49 store.start();
50 actions.countUp();
51 expect(store.reactionInvokedCount).toBe(1);
52 });
53 });
54
55 describe('stopping the store', () => {
56 it('stops the actions', () => {
57 store.start();
58 actions.countUp();
59 store.stop();
60 actions.countUp();
61 expect(store.count).toBe(1);
62 });
63 it('stops the reactions', () => {
64 store.start();
65 actions.countUp();
66 store.stop();
67 store.count += 1;
68 expect(store.reactionInvokedCount).toBe(1);
69 });
70 });
71
72 describe('toggling the store', () => {
73 it('restarts the actions correctly', () => {
74 store.start();
75 actions.countUp();
76 store.stop();
77 actions.countUp();
78 store.start();
79 actions.countUp();
80 expect(store.count).toBe(2);
81 });
82 it('restarts the reactions correctly', () => {
83 store.start();
84 actions.countUp();
85 store.stop();
86 actions.countUp();
87 store.start();
88 actions.countUp();
89 expect(store.count).toBe(2);
90 });
91 });
92});
diff --git a/src/features/workspaces/actions.js b/src/features/workspaces/actions.js
new file mode 100644
index 000000000..a85f8f57f
--- /dev/null
+++ b/src/features/workspaces/actions.js
@@ -0,0 +1,26 @@
1import PropTypes from 'prop-types';
2import Workspace from './models/Workspace';
3import { createActionsFromDefinitions } from '../../actions/lib/actions';
4
5export const workspaceActions = createActionsFromDefinitions({
6 edit: {
7 workspace: PropTypes.instanceOf(Workspace).isRequired,
8 },
9 create: {
10 name: PropTypes.string.isRequired,
11 },
12 delete: {
13 workspace: PropTypes.instanceOf(Workspace).isRequired,
14 },
15 update: {
16 workspace: PropTypes.instanceOf(Workspace).isRequired,
17 },
18 activate: {
19 workspace: PropTypes.instanceOf(Workspace).isRequired,
20 },
21 deactivate: {},
22 toggleWorkspaceDrawer: {},
23 openWorkspaceSettings: {},
24}, PropTypes.checkPropTypes);
25
26export default workspaceActions;
diff --git a/src/features/workspaces/api.js b/src/features/workspaces/api.js
new file mode 100644
index 000000000..0ec20c9ea
--- /dev/null
+++ b/src/features/workspaces/api.js
@@ -0,0 +1,66 @@
1import { pick } from 'lodash';
2import { sendAuthRequest } from '../../api/utils/auth';
3import { API, API_VERSION } from '../../environment';
4import Request from '../../stores/lib/Request';
5import Workspace from './models/Workspace';
6
7const debug = require('debug')('Franz:feature:workspaces:api');
8
9export const workspaceApi = {
10 getUserWorkspaces: async () => {
11 const url = `${API}/${API_VERSION}/workspace`;
12 debug('getUserWorkspaces GET', url);
13 const result = await sendAuthRequest(url, { method: 'GET' });
14 debug('getUserWorkspaces RESULT', result);
15 if (!result.ok) throw result;
16 const workspaces = await result.json();
17 return workspaces.map(data => new Workspace(data));
18 },
19
20 createWorkspace: async (name) => {
21 const url = `${API}/${API_VERSION}/workspace`;
22 const options = {
23 method: 'POST',
24 body: JSON.stringify({ name }),
25 };
26 debug('createWorkspace POST', url, options);
27 const result = await sendAuthRequest(url, options);
28 debug('createWorkspace RESULT', result);
29 if (!result.ok) throw result;
30 return new Workspace(await result.json());
31 },
32
33 deleteWorkspace: async (workspace) => {
34 const url = `${API}/${API_VERSION}/workspace/${workspace.id}`;
35 debug('deleteWorkspace DELETE', url);
36 const result = await sendAuthRequest(url, { method: 'DELETE' });
37 debug('deleteWorkspace RESULT', result);
38 if (!result.ok) throw result;
39 return true;
40 },
41
42 updateWorkspace: async (workspace) => {
43 const url = `${API}/${API_VERSION}/workspace/${workspace.id}`;
44 const options = {
45 method: 'PUT',
46 body: JSON.stringify(pick(workspace, ['name', 'services'])),
47 };
48 debug('updateWorkspace UPDATE', url, options);
49 const result = await sendAuthRequest(url, options);
50 debug('updateWorkspace RESULT', result);
51 if (!result.ok) throw result;
52 return new Workspace(await result.json());
53 },
54};
55
56export const getUserWorkspacesRequest = new Request(workspaceApi, 'getUserWorkspaces');
57export const createWorkspaceRequest = new Request(workspaceApi, 'createWorkspace');
58export const deleteWorkspaceRequest = new Request(workspaceApi, 'deleteWorkspace');
59export const updateWorkspaceRequest = new Request(workspaceApi, 'updateWorkspace');
60
61export const resetApiRequests = () => {
62 getUserWorkspacesRequest.reset();
63 createWorkspaceRequest.reset();
64 deleteWorkspaceRequest.reset();
65 updateWorkspaceRequest.reset();
66};
diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js
new file mode 100644
index 000000000..cddbb2b04
--- /dev/null
+++ b/src/features/workspaces/components/CreateWorkspaceForm.js
@@ -0,0 +1,100 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5import { Input, Button } from '@meetfranz/forms';
6import injectSheet from 'react-jss';
7import Form from '../../../lib/Form';
8import { required } from '../../../helpers/validation-helpers';
9import { gaEvent } from '../../../lib/analytics';
10import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../index';
11
12const messages = defineMessages({
13 submitButton: {
14 id: 'settings.workspace.add.form.submitButton',
15 defaultMessage: '!!!Create workspace',
16 },
17 name: {
18 id: 'settings.workspace.add.form.name',
19 defaultMessage: '!!!Name',
20 },
21});
22
23const styles = () => ({
24 form: {
25 display: 'flex',
26 },
27 input: {
28 flexGrow: 1,
29 marginRight: '10px',
30 },
31 submitButton: {
32 height: 'inherit',
33 },
34});
35
36@injectSheet(styles) @observer
37class CreateWorkspaceForm extends Component {
38 static contextTypes = {
39 intl: intlShape,
40 };
41
42 static propTypes = {
43 classes: PropTypes.object.isRequired,
44 isSubmitting: PropTypes.bool.isRequired,
45 onSubmit: PropTypes.func.isRequired,
46 };
47
48 form = (() => {
49 const { intl } = this.context;
50 return new Form({
51 fields: {
52 name: {
53 label: intl.formatMessage(messages.name),
54 placeholder: intl.formatMessage(messages.name),
55 value: '',
56 validators: [required],
57 },
58 },
59 });
60 })();
61
62 submitForm() {
63 const { form } = this;
64 form.submit({
65 onSuccess: async (f) => {
66 const { onSubmit } = this.props;
67 const values = f.values();
68 onSubmit(values);
69 gaEvent(GA_CATEGORY_WORKSPACES, 'create', values.name);
70 },
71 });
72 }
73
74 render() {
75 const { intl } = this.context;
76 const { classes, isSubmitting } = this.props;
77 const { form } = this;
78 return (
79 <div className={classes.form}>
80 <Input
81 className={classes.input}
82 {...form.$('name').bind()}
83 showLabel={false}
84 onEnterKey={this.submitForm.bind(this, form)}
85 focus={workspaceStore.isUserAllowedToUseFeature}
86 />
87 <Button
88 className={classes.submitButton}
89 type="submit"
90 label={intl.formatMessage(messages.submitButton)}
91 onClick={this.submitForm.bind(this, form)}
92 busy={isSubmitting}
93 buttonType={isSubmitting ? 'secondary' : 'primary'}
94 />
95 </div>
96 );
97 }
98}
99
100export default CreateWorkspaceForm;
diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js
new file mode 100644
index 000000000..e602ebd5a
--- /dev/null
+++ b/src/features/workspaces/components/EditWorkspaceForm.js
@@ -0,0 +1,212 @@
1import React, { Component, Fragment } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5import { Link } from 'react-router';
6import { Input, Button } from '@meetfranz/forms';
7import injectSheet from 'react-jss';
8
9import Workspace from '../models/Workspace';
10import Service from '../../../models/Service';
11import Form from '../../../lib/Form';
12import { required } from '../../../helpers/validation-helpers';
13import WorkspaceServiceListItem from './WorkspaceServiceListItem';
14import Request from '../../../stores/lib/Request';
15import { gaEvent } from '../../../lib/analytics';
16import { GA_CATEGORY_WORKSPACES } from '../index';
17
18const messages = defineMessages({
19 buttonDelete: {
20 id: 'settings.workspace.form.buttonDelete',
21 defaultMessage: '!!!Delete workspace',
22 },
23 buttonSave: {
24 id: 'settings.workspace.form.buttonSave',
25 defaultMessage: '!!!Save workspace',
26 },
27 name: {
28 id: 'settings.workspace.form.name',
29 defaultMessage: '!!!Name',
30 },
31 yourWorkspaces: {
32 id: 'settings.workspace.form.yourWorkspaces',
33 defaultMessage: '!!!Your workspaces',
34 },
35 servicesInWorkspaceHeadline: {
36 id: 'settings.workspace.form.servicesInWorkspaceHeadline',
37 defaultMessage: '!!!Services in this Workspace',
38 },
39 noServicesAdded: {
40 id: 'settings.services.noServicesAdded',
41 defaultMessage: '!!!You haven\'t added any services yet.',
42 },
43 discoverServices: {
44 id: 'settings.services.discoverServices',
45 defaultMessage: '!!!Discover services',
46 },
47});
48
49const styles = () => ({
50 nameInput: {
51 height: 'auto',
52 },
53 serviceList: {
54 height: 'auto',
55 },
56});
57
58@injectSheet(styles) @observer
59class EditWorkspaceForm extends Component {
60 static contextTypes = {
61 intl: intlShape,
62 };
63
64 static propTypes = {
65 classes: PropTypes.object.isRequired,
66 onDelete: PropTypes.func.isRequired,
67 onSave: PropTypes.func.isRequired,
68 services: PropTypes.arrayOf(PropTypes.instanceOf(Service)).isRequired,
69 workspace: PropTypes.instanceOf(Workspace).isRequired,
70 updateWorkspaceRequest: PropTypes.instanceOf(Request).isRequired,
71 deleteWorkspaceRequest: PropTypes.instanceOf(Request).isRequired,
72 };
73
74 form = this.prepareWorkspaceForm(this.props.workspace);
75
76 componentWillReceiveProps(nextProps) {
77 const { workspace } = this.props;
78 if (workspace.id !== nextProps.workspace.id) {
79 this.form = this.prepareWorkspaceForm(nextProps.workspace);
80 }
81 }
82
83 prepareWorkspaceForm(workspace) {
84 const { intl } = this.context;
85 return new Form({
86 fields: {
87 name: {
88 label: intl.formatMessage(messages.name),
89 placeholder: intl.formatMessage(messages.name),
90 value: workspace.name,
91 validators: [required],
92 },
93 services: {
94 value: workspace.services.slice(),
95 },
96 },
97 });
98 }
99
100 save(form) {
101 form.submit({
102 onSuccess: async (f) => {
103 const { onSave } = this.props;
104 const values = f.values();
105 onSave(values);
106 gaEvent(GA_CATEGORY_WORKSPACES, 'save');
107 },
108 onError: async () => {},
109 });
110 }
111
112 delete() {
113 const { onDelete } = this.props;
114 onDelete();
115 gaEvent(GA_CATEGORY_WORKSPACES, 'delete');
116 }
117
118 toggleService(service) {
119 const servicesField = this.form.$('services');
120 const serviceIds = servicesField.value;
121 if (serviceIds.includes(service.id)) {
122 serviceIds.splice(serviceIds.indexOf(service.id), 1);
123 } else {
124 serviceIds.push(service.id);
125 }
126 servicesField.set(serviceIds);
127 }
128
129 render() {
130 const { intl } = this.context;
131 const {
132 classes,
133 workspace,
134 services,
135 deleteWorkspaceRequest,
136 updateWorkspaceRequest,
137 } = this.props;
138 const { form } = this;
139 const workspaceServices = form.$('services').value;
140 const isDeleting = deleteWorkspaceRequest.isExecuting;
141 const isSaving = updateWorkspaceRequest.isExecuting;
142 return (
143 <div className="settings__main">
144 <div className="settings__header">
145 <span className="settings__header-item">
146 <Link to="/settings/workspaces">
147 {intl.formatMessage(messages.yourWorkspaces)}
148 </Link>
149 </span>
150 <span className="separator" />
151 <span className="settings__header-item">
152 {workspace.name}
153 </span>
154 </div>
155 <div className="settings__body">
156 <div className={classes.nameInput}>
157 <Input {...form.$('name').bind()} />
158 </div>
159 <h2>{intl.formatMessage(messages.servicesInWorkspaceHeadline)}</h2>
160 <div className={classes.serviceList}>
161 {services.length === 0 ? (
162 <div className="align-middle settings__empty-state">
163 {/* ===== Empty state ===== */}
164 <p className="settings__empty-text">
165 <span className="emoji">
166 <img src="./assets/images/emoji/sad.png" alt="" />
167 </span>
168 {intl.formatMessage(messages.noServicesAdded)}
169 </p>
170 <Link to="/settings/recipes" className="button">{intl.formatMessage(messages.discoverServices)}</Link>
171 </div>
172 ) : (
173 <Fragment>
174 {services.map(s => (
175 <WorkspaceServiceListItem
176 key={s.id}
177 service={s}
178 isInWorkspace={workspaceServices.includes(s.id)}
179 onToggle={() => this.toggleService(s)}
180 />
181 ))}
182 </Fragment>
183 )}
184 </div>
185 </div>
186 <div className="settings__controls">
187 {/* ===== Delete Button ===== */}
188 <Button
189 label={intl.formatMessage(messages.buttonDelete)}
190 loaded={false}
191 busy={isDeleting}
192 buttonType={isDeleting ? 'secondary' : 'danger'}
193 className="settings__delete-button"
194 disabled={isDeleting}
195 onClick={this.delete.bind(this)}
196 />
197 {/* ===== Save Button ===== */}
198 <Button
199 type="submit"
200 label={intl.formatMessage(messages.buttonSave)}
201 busy={isSaving}
202 buttonType={isSaving ? 'secondary' : 'primary'}
203 onClick={this.save.bind(this, form)}
204 disabled={isSaving}
205 />
206 </div>
207 </div>
208 );
209 }
210}
211
212export default EditWorkspaceForm;
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js
new file mode 100644
index 000000000..684e50dd0
--- /dev/null
+++ b/src/features/workspaces/components/WorkspaceDrawer.js
@@ -0,0 +1,246 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5import { defineMessages, FormattedHTMLMessage, intlShape } from 'react-intl';
6import { H1, Icon, ProBadge } from '@meetfranz/ui';
7import { Button } from '@meetfranz/forms/lib';
8import ReactTooltip from 'react-tooltip';
9
10import WorkspaceDrawerItem from './WorkspaceDrawerItem';
11import { workspaceActions } from '../actions';
12import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../index';
13import { gaEvent } from '../../../lib/analytics';
14
15const messages = defineMessages({
16 headline: {
17 id: 'workspaceDrawer.headline',
18 defaultMessage: '!!!Workspaces',
19 },
20 allServices: {
21 id: 'workspaceDrawer.allServices',
22 defaultMessage: '!!!All services',
23 },
24 workspacesSettingsTooltip: {
25 id: 'workspaceDrawer.workspacesSettingsTooltip',
26 defaultMessage: '!!!Workspaces settings',
27 },
28 workspaceFeatureInfo: {
29 id: 'workspaceDrawer.workspaceFeatureInfo',
30 defaultMessage: '!!!Info about workspace feature',
31 },
32 premiumCtaButtonLabel: {
33 id: 'workspaceDrawer.premiumCtaButtonLabel',
34 defaultMessage: '!!!Create your first workspace',
35 },
36 reactivatePremiumAccount: {
37 id: 'workspaceDrawer.reactivatePremiumAccountLabel',
38 defaultMessage: '!!!Reactivate premium account',
39 },
40 addNewWorkspaceLabel: {
41 id: 'workspaceDrawer.addNewWorkspaceLabel',
42 defaultMessage: '!!!add new workspace',
43 },
44 premiumFeatureBadge: {
45 id: 'workspaceDrawer.proFeatureBadge',
46 defaultMessage: '!!!Premium feature',
47 },
48});
49
50const styles = theme => ({
51 drawer: {
52 background: theme.workspaces.drawer.background,
53 width: `${theme.workspaces.drawer.width}px`,
54 },
55 headline: {
56 fontSize: '24px',
57 marginTop: '38px',
58 marginBottom: '25px',
59 marginLeft: theme.workspaces.drawer.padding,
60 },
61 headlineProBadge: {
62 marginRight: 15,
63 },
64 workspacesSettingsButton: {
65 float: 'right',
66 marginRight: theme.workspaces.drawer.padding,
67 marginTop: '2px',
68 },
69 workspacesSettingsButtonIcon: {
70 fill: theme.workspaces.drawer.buttons.color,
71 '&:hover': {
72 fill: theme.workspaces.drawer.buttons.hoverColor,
73 },
74 },
75 workspaces: {
76 height: 'auto',
77 },
78 premiumAnnouncement: {
79 padding: '20px',
80 paddingTop: '0',
81 height: 'auto',
82 },
83 premiumCtaButton: {
84 marginTop: '20px',
85 width: '100%',
86 color: 'white !important',
87 },
88 addNewWorkspaceLabel: {
89 height: 'auto',
90 color: theme.workspaces.drawer.buttons.color,
91 marginTop: 40,
92 textAlign: 'center',
93 '& > svg': {
94 fill: theme.workspaces.drawer.buttons.color,
95 },
96 '& > span': {
97 fontSize: '13px',
98 marginLeft: 10,
99 position: 'relative',
100 top: -3,
101 },
102 '&:hover': {
103 color: theme.workspaces.drawer.buttons.hoverColor,
104 '& > svg': {
105 fill: theme.workspaces.drawer.buttons.hoverColor,
106 },
107 },
108 },
109});
110
111@injectSheet(styles) @observer
112class WorkspaceDrawer extends Component {
113 static propTypes = {
114 classes: PropTypes.object.isRequired,
115 getServicesForWorkspace: PropTypes.func.isRequired,
116 onUpgradeAccountClick: PropTypes.func.isRequired,
117 };
118
119 static contextTypes = {
120 intl: intlShape,
121 };
122
123 componentDidMount() {
124 ReactTooltip.rebuild();
125 }
126
127 render() {
128 const {
129 classes,
130 getServicesForWorkspace,
131 onUpgradeAccountClick,
132 } = this.props;
133 const { intl } = this.context;
134 const {
135 activeWorkspace,
136 isSwitchingWorkspace,
137 nextWorkspace,
138 workspaces,
139 } = workspaceStore;
140 const actualWorkspace = isSwitchingWorkspace ? nextWorkspace : activeWorkspace;
141 return (
142 <div className={classes.drawer}>
143 <H1 className={classes.headline}>
144 {workspaceStore.isPremiumUpgradeRequired && (
145 <span
146 className={classes.headlineProBadge}
147 data-tip={`${intl.formatMessage(messages.premiumFeatureBadge)}`}
148 >
149 <ProBadge />
150 </span>
151 )}
152 {intl.formatMessage(messages.headline)}
153 <span
154 className={classes.workspacesSettingsButton}
155 onClick={() => {
156 workspaceActions.openWorkspaceSettings();
157 gaEvent(GA_CATEGORY_WORKSPACES, 'settings', 'drawerHeadline');
158 }}
159 data-tip={`${intl.formatMessage(messages.workspacesSettingsTooltip)}`}
160 >
161 <Icon
162 icon="mdiSettings"
163 size={1.5}
164 className={classes.workspacesSettingsButtonIcon}
165 />
166 </span>
167 </H1>
168 {workspaceStore.isPremiumUpgradeRequired ? (
169 <div className={classes.premiumAnnouncement}>
170 <FormattedHTMLMessage {...messages.workspaceFeatureInfo} />
171 {workspaceStore.userHasWorkspaces ? (
172 <Button
173 className={classes.premiumCtaButton}
174 buttonType="primary"
175 label={intl.formatMessage(messages.reactivatePremiumAccount)}
176 icon="mdiStar"
177 onClick={() => {
178 onUpgradeAccountClick();
179 gaEvent('User', 'upgrade', 'workspaceDrawer');
180 }}
181 />
182 ) : (
183 <Button
184 className={classes.premiumCtaButton}
185 buttonType="primary"
186 label={intl.formatMessage(messages.premiumCtaButtonLabel)}
187 icon="mdiPlusBox"
188 onClick={() => {
189 workspaceActions.openWorkspaceSettings();
190 gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerPremiumCta');
191 }}
192 />
193 )}
194 </div>
195 ) : (
196 <div className={classes.workspaces}>
197 <WorkspaceDrawerItem
198 name={intl.formatMessage(messages.allServices)}
199 onClick={() => {
200 workspaceActions.deactivate();
201 workspaceActions.toggleWorkspaceDrawer();
202 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer');
203 }}
204 services={getServicesForWorkspace(null)}
205 isActive={actualWorkspace == null}
206 />
207 {workspaces.map(workspace => (
208 <WorkspaceDrawerItem
209 key={workspace.id}
210 name={workspace.name}
211 isActive={actualWorkspace === workspace}
212 onClick={() => {
213 if (actualWorkspace === workspace) return;
214 workspaceActions.activate({ workspace });
215 workspaceActions.toggleWorkspaceDrawer();
216 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer');
217 }}
218 onContextMenuEditClick={() => workspaceActions.edit({ workspace })}
219 services={getServicesForWorkspace(workspace)}
220 />
221 ))}
222 <div
223 className={classes.addNewWorkspaceLabel}
224 onClick={() => {
225 workspaceActions.openWorkspaceSettings();
226 gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerAddLabel');
227 }}
228 >
229 <Icon
230 icon="mdiPlusBox"
231 size={1}
232 className={classes.workspacesSettingsButtonIcon}
233 />
234 <span>
235 {intl.formatMessage(messages.addNewWorkspaceLabel)}
236 </span>
237 </div>
238 </div>
239 )}
240 <ReactTooltip place="right" type="dark" effect="solid" />
241 </div>
242 );
243 }
244}
245
246export default WorkspaceDrawer;
diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.js b/src/features/workspaces/components/WorkspaceDrawerItem.js
new file mode 100644
index 000000000..59a2144d3
--- /dev/null
+++ b/src/features/workspaces/components/WorkspaceDrawerItem.js
@@ -0,0 +1,137 @@
1import { remote } from 'electron';
2import React, { Component } from 'react';
3import PropTypes from 'prop-types';
4import { observer } from 'mobx-react';
5import injectSheet from 'react-jss';
6import classnames from 'classnames';
7import { defineMessages, intlShape } from 'react-intl';
8
9const { Menu } = remote;
10
11const messages = defineMessages({
12 noServicesAddedYet: {
13 id: 'workspaceDrawer.item.noServicesAddedYet',
14 defaultMessage: '!!!No services added yet',
15 },
16 contextMenuEdit: {
17 id: 'workspaceDrawer.item.contextMenuEdit',
18 defaultMessage: '!!!edit',
19 },
20});
21
22const styles = theme => ({
23 item: {
24 height: '67px',
25 padding: `15px ${theme.workspaces.drawer.padding}px`,
26 borderBottom: `1px solid ${theme.workspaces.drawer.listItem.border}`,
27 transition: 'background-color 300ms ease-out',
28 '&:first-child': {
29 borderTop: `1px solid ${theme.workspaces.drawer.listItem.border}`,
30 },
31 '&:hover': {
32 backgroundColor: theme.workspaces.drawer.listItem.hoverBackground,
33 },
34 },
35 isActiveItem: {
36 backgroundColor: theme.workspaces.drawer.listItem.activeBackground,
37 '&:hover': {
38 backgroundColor: theme.workspaces.drawer.listItem.activeBackground,
39 },
40 },
41 name: {
42 marginTop: '4px',
43 color: theme.workspaces.drawer.listItem.name.color,
44 },
45 activeName: {
46 color: theme.workspaces.drawer.listItem.name.activeColor,
47 },
48 services: {
49 display: 'block',
50 fontSize: '11px',
51 marginTop: '5px',
52 color: theme.workspaces.drawer.listItem.services.color,
53 whiteSpace: 'nowrap',
54 textOverflow: 'ellipsis',
55 overflow: 'hidden',
56 lineHeight: '15px',
57 },
58 activeServices: {
59 color: theme.workspaces.drawer.listItem.services.active,
60 },
61});
62
63@injectSheet(styles) @observer
64class WorkspaceDrawerItem extends Component {
65 static propTypes = {
66 classes: PropTypes.object.isRequired,
67 isActive: PropTypes.bool.isRequired,
68 name: PropTypes.string.isRequired,
69 onClick: PropTypes.func.isRequired,
70 services: PropTypes.arrayOf(PropTypes.string).isRequired,
71 onContextMenuEditClick: PropTypes.func,
72 };
73
74 static defaultProps = {
75 onContextMenuEditClick: null,
76 };
77
78 static contextTypes = {
79 intl: intlShape,
80 };
81
82 render() {
83 const {
84 classes,
85 isActive,
86 name,
87 onClick,
88 onContextMenuEditClick,
89 services,
90 } = this.props;
91 const { intl } = this.context;
92
93 const contextMenuTemplate = [{
94 label: name,
95 enabled: false,
96 }, {
97 type: 'separator',
98 }, {
99 label: intl.formatMessage(messages.contextMenuEdit),
100 click: onContextMenuEditClick,
101 }];
102
103 const contextMenu = Menu.buildFromTemplate(contextMenuTemplate);
104
105 return (
106 <div
107 className={classnames([
108 classes.item,
109 isActive ? classes.isActiveItem : null,
110 ])}
111 onClick={onClick}
112 onContextMenu={() => (
113 onContextMenuEditClick && contextMenu.popup(remote.getCurrentWindow())
114 )}
115 >
116 <span
117 className={classnames([
118 classes.name,
119 isActive ? classes.activeName : null,
120 ])}
121 >
122 {name}
123 </span>
124 <span
125 className={classnames([
126 classes.services,
127 isActive ? classes.activeServices : null,
128 ])}
129 >
130 {services.length ? services.join(', ') : intl.formatMessage(messages.noServicesAddedYet)}
131 </span>
132 </div>
133 );
134 }
135}
136
137export default WorkspaceDrawerItem;
diff --git a/src/features/workspaces/components/WorkspaceItem.js b/src/features/workspaces/components/WorkspaceItem.js
new file mode 100644
index 000000000..cc4b1a3ba
--- /dev/null
+++ b/src/features/workspaces/components/WorkspaceItem.js
@@ -0,0 +1,45 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { intlShape } from 'react-intl';
4import { observer } from 'mobx-react';
5import injectSheet from 'react-jss';
6
7import Workspace from '../models/Workspace';
8
9const styles = theme => ({
10 row: {
11 height: theme.workspaces.settings.listItems.height,
12 borderBottom: `1px solid ${theme.workspaces.settings.listItems.borderColor}`,
13 '&:hover': {
14 background: theme.workspaces.settings.listItems.hoverBgColor,
15 },
16 },
17 columnName: {},
18});
19
20@injectSheet(styles) @observer
21class WorkspaceItem extends Component {
22 static propTypes = {
23 classes: PropTypes.object.isRequired,
24 workspace: PropTypes.instanceOf(Workspace).isRequired,
25 onItemClick: PropTypes.func.isRequired,
26 };
27
28 static contextTypes = {
29 intl: intlShape,
30 };
31
32 render() {
33 const { classes, workspace, onItemClick } = this.props;
34
35 return (
36 <tr className={classes.row}>
37 <td onClick={() => onItemClick(workspace)}>
38 {workspace.name}
39 </td>
40 </tr>
41 );
42 }
43}
44
45export default WorkspaceItem;
diff --git a/src/features/workspaces/components/WorkspaceServiceListItem.js b/src/features/workspaces/components/WorkspaceServiceListItem.js
new file mode 100644
index 000000000..e05b21440
--- /dev/null
+++ b/src/features/workspaces/components/WorkspaceServiceListItem.js
@@ -0,0 +1,75 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5import classnames from 'classnames';
6import { Toggle } from '@meetfranz/forms';
7
8import Service from '../../../models/Service';
9import ServiceIcon from '../../../components/ui/ServiceIcon';
10
11const styles = theme => ({
12 listItem: {
13 height: theme.workspaces.settings.listItems.height,
14 borderBottom: `1px solid ${theme.workspaces.settings.listItems.borderColor}`,
15 display: 'flex',
16 alignItems: 'center',
17 },
18 serviceIcon: {
19 padding: theme.workspaces.settings.listItems.padding,
20 },
21 toggle: {
22 height: 'auto',
23 margin: 0,
24 },
25 label: {
26 padding: theme.workspaces.settings.listItems.padding,
27 flexGrow: 1,
28 },
29 disabledLabel: {
30 color: theme.workspaces.settings.listItems.disabled.color,
31 },
32});
33
34@injectSheet(styles) @observer
35class WorkspaceServiceListItem extends Component {
36 static propTypes = {
37 classes: PropTypes.object.isRequired,
38 isInWorkspace: PropTypes.bool.isRequired,
39 onToggle: PropTypes.func.isRequired,
40 service: PropTypes.instanceOf(Service).isRequired,
41 };
42
43 render() {
44 const {
45 classes,
46 isInWorkspace,
47 onToggle,
48 service,
49 } = this.props;
50
51 return (
52 <div className={classes.listItem}>
53 <ServiceIcon
54 className={classes.serviceIcon}
55 service={service}
56 />
57 <span
58 className={classnames([
59 classes.label,
60 service.isEnabled ? null : classes.disabledLabel,
61 ])}
62 >
63 {service.name}
64 </span>
65 <Toggle
66 className={classes.toggle}
67 checked={isInWorkspace}
68 onChange={onToggle}
69 />
70 </div>
71 );
72 }
73}
74
75export default WorkspaceServiceListItem;
diff --git a/src/features/workspaces/components/WorkspaceSwitchingIndicator.js b/src/features/workspaces/components/WorkspaceSwitchingIndicator.js
new file mode 100644
index 000000000..c4a800a7b
--- /dev/null
+++ b/src/features/workspaces/components/WorkspaceSwitchingIndicator.js
@@ -0,0 +1,91 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss';
5import classnames from 'classnames';
6import { Loader } from '@meetfranz/ui';
7import { defineMessages, intlShape } from 'react-intl';
8
9import { workspaceStore } from '../index';
10
11const messages = defineMessages({
12 switchingTo: {
13 id: 'workspaces.switchingIndicator.switchingTo',
14 defaultMessage: '!!!Switching to',
15 },
16});
17
18const styles = theme => ({
19 wrapper: {
20 display: 'flex',
21 alignItems: 'flex-start',
22 position: 'absolute',
23 transition: 'width 0.5s ease',
24 width: '100%',
25 marginTop: '20px',
26 },
27 wrapperWhenDrawerIsOpen: {
28 width: `calc(100% - ${theme.workspaces.drawer.width}px)`,
29 },
30 component: {
31 background: 'rgba(20, 20, 20, 0.4)',
32 padding: '10px 20px',
33 display: 'flex',
34 width: 'auto',
35 height: 'auto',
36 margin: [0, 'auto'],
37 borderRadius: 6,
38 alignItems: 'center',
39 zIndex: 200,
40 },
41 spinner: {
42 width: 40,
43 height: 40,
44 marginRight: 10,
45 },
46 message: {
47 fontSize: 16,
48 whiteSpace: 'nowrap',
49 color: theme.colorAppLoaderSpinner,
50 },
51});
52
53@injectSheet(styles) @observer
54class WorkspaceSwitchingIndicator extends Component {
55 static propTypes = {
56 classes: PropTypes.object.isRequired,
57 theme: PropTypes.object.isRequired,
58 };
59
60 static contextTypes = {
61 intl: intlShape,
62 };
63
64 render() {
65 const { classes, theme } = this.props;
66 const { intl } = this.context;
67 const { isSwitchingWorkspace, isWorkspaceDrawerOpen, nextWorkspace } = workspaceStore;
68 if (!isSwitchingWorkspace) return null;
69 const nextWorkspaceName = nextWorkspace ? nextWorkspace.name : 'All services';
70 return (
71 <div
72 className={classnames([
73 classes.wrapper,
74 isWorkspaceDrawerOpen ? classes.wrapperWhenDrawerIsOpen : null,
75 ])}
76 >
77 <div className={classes.component}>
78 <Loader
79 className={classes.spinner}
80 color={theme.workspaces.switchingIndicator.spinnerColor}
81 />
82 <p className={classes.message}>
83 {`${intl.formatMessage(messages.switchingTo)} ${nextWorkspaceName}`}
84 </p>
85 </div>
86 </div>
87 );
88 }
89}
90
91export default WorkspaceSwitchingIndicator;
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js
new file mode 100644
index 000000000..09c98ab8c
--- /dev/null
+++ b/src/features/workspaces/components/WorkspacesDashboard.js
@@ -0,0 +1,209 @@
1import React, { Component, Fragment } from 'react';
2import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5import injectSheet from 'react-jss';
6import { Infobox } from '@meetfranz/ui';
7
8import Loader from '../../../components/ui/Loader';
9import WorkspaceItem from './WorkspaceItem';
10import CreateWorkspaceForm from './CreateWorkspaceForm';
11import Request from '../../../stores/lib/Request';
12import Appear from '../../../components/ui/effects/Appear';
13import { workspaceStore } from '../index';
14import PremiumFeatureContainer from '../../../components/ui/PremiumFeatureContainer';
15
16const messages = defineMessages({
17 headline: {
18 id: 'settings.workspaces.headline',
19 defaultMessage: '!!!Your workspaces',
20 },
21 noServicesAdded: {
22 id: 'settings.workspaces.noWorkspacesAdded',
23 defaultMessage: '!!!You haven\'t added any workspaces yet.',
24 },
25 workspacesRequestFailed: {
26 id: 'settings.workspaces.workspacesRequestFailed',
27 defaultMessage: '!!!Could not load your workspaces',
28 },
29 tryReloadWorkspaces: {
30 id: 'settings.workspaces.tryReloadWorkspaces',
31 defaultMessage: '!!!Try again',
32 },
33 updatedInfo: {
34 id: 'settings.workspaces.updatedInfo',
35 defaultMessage: '!!!Your changes have been saved',
36 },
37 deletedInfo: {
38 id: 'settings.workspaces.deletedInfo',
39 defaultMessage: '!!!Workspace has been deleted',
40 },
41 workspaceFeatureInfo: {
42 id: 'settings.workspaces.workspaceFeatureInfo',
43 defaultMessage: '!!!Info about workspace feature',
44 },
45 workspaceFeatureHeadline: {
46 id: 'settings.workspaces.workspaceFeatureHeadline',
47 defaultMessage: '!!!Less is More: Introducing Franz Workspaces',
48 },
49});
50
51const styles = theme => ({
52 table: {
53 width: '100%',
54 '& td': {
55 padding: '10px',
56 },
57 },
58 createForm: {
59 height: 'auto',
60 },
61 appear: {
62 height: 'auto',
63 },
64 premiumAnnouncement: {
65 padding: '20px',
66 backgroundColor: '#3498db',
67 marginLeft: '-20px',
68 marginBottom: '20px',
69 height: 'auto',
70 color: 'white',
71 borderRadius: theme.borderRadius,
72 },
73});
74
75@injectSheet(styles) @observer
76class WorkspacesDashboard extends Component {
77 static propTypes = {
78 classes: PropTypes.object.isRequired,
79 getUserWorkspacesRequest: PropTypes.instanceOf(Request).isRequired,
80 createWorkspaceRequest: PropTypes.instanceOf(Request).isRequired,
81 deleteWorkspaceRequest: PropTypes.instanceOf(Request).isRequired,
82 updateWorkspaceRequest: PropTypes.instanceOf(Request).isRequired,
83 onCreateWorkspaceSubmit: PropTypes.func.isRequired,
84 onWorkspaceClick: PropTypes.func.isRequired,
85 workspaces: MobxPropTypes.arrayOrObservableArray.isRequired,
86 };
87
88 static contextTypes = {
89 intl: intlShape,
90 };
91
92 render() {
93 const {
94 classes,
95 getUserWorkspacesRequest,
96 createWorkspaceRequest,
97 deleteWorkspaceRequest,
98 updateWorkspaceRequest,
99 onCreateWorkspaceSubmit,
100 onWorkspaceClick,
101 workspaces,
102 } = this.props;
103 const { intl } = this.context;
104 return (
105 <div className="settings__main">
106 <div className="settings__header">
107 <h1>{intl.formatMessage(messages.headline)}</h1>
108 </div>
109 <div className="settings__body">
110
111 {/* ===== Workspace updated info ===== */}
112 {updateWorkspaceRequest.wasExecuted && updateWorkspaceRequest.result && (
113 <Appear className={classes.appear}>
114 <Infobox
115 type="success"
116 icon="mdiCheckboxMarkedCircleOutline"
117 dismissable
118 onUnmount={updateWorkspaceRequest.reset}
119 >
120 {intl.formatMessage(messages.updatedInfo)}
121 </Infobox>
122 </Appear>
123 )}
124
125 {/* ===== Workspace deleted info ===== */}
126 {deleteWorkspaceRequest.wasExecuted && deleteWorkspaceRequest.result && (
127 <Appear className={classes.appear}>
128 <Infobox
129 type="success"
130 icon="mdiCheckboxMarkedCircleOutline"
131 dismissable
132 onUnmount={deleteWorkspaceRequest.reset}
133 >
134 {intl.formatMessage(messages.deletedInfo)}
135 </Infobox>
136 </Appear>
137 )}
138
139 {workspaceStore.isPremiumUpgradeRequired && (
140 <div className={classes.premiumAnnouncement}>
141 <h2>{intl.formatMessage(messages.workspaceFeatureHeadline)}</h2>
142 <p>{intl.formatMessage(messages.workspaceFeatureInfo)}</p>
143 </div>
144 )}
145
146 <PremiumFeatureContainer
147 condition={workspaceStore.isPremiumFeature}
148 gaEventInfo={{ category: 'User', event: 'upgrade', label: 'workspaces' }}
149 >
150 {/* ===== Create workspace form ===== */}
151 <div className={classes.createForm}>
152 <CreateWorkspaceForm
153 isSubmitting={createWorkspaceRequest.isExecuting}
154 onSubmit={onCreateWorkspaceSubmit}
155 />
156 </div>
157 {getUserWorkspacesRequest.isExecuting ? (
158 <Loader />
159 ) : (
160 <Fragment>
161 {/* ===== Workspace could not be loaded error ===== */}
162 {getUserWorkspacesRequest.error ? (
163 <Infobox
164 icon="alert"
165 type="danger"
166 ctaLabel={intl.formatMessage(messages.tryReloadWorkspaces)}
167 ctaLoading={getUserWorkspacesRequest.isExecuting}
168 ctaOnClick={getUserWorkspacesRequest.retry}
169 >
170 {intl.formatMessage(messages.workspacesRequestFailed)}
171 </Infobox>
172 ) : (
173 <Fragment>
174 {workspaces.length === 0 ? (
175 <div className="align-middle settings__empty-state">
176 {/* ===== Workspaces empty state ===== */}
177 <p className="settings__empty-text">
178 <span className="emoji">
179 <img src="./assets/images/emoji/sad.png" alt="" />
180 </span>
181 {intl.formatMessage(messages.noServicesAdded)}
182 </p>
183 </div>
184 ) : (
185 <table className={classes.table}>
186 {/* ===== Workspaces list ===== */}
187 <tbody>
188 {workspaces.map(workspace => (
189 <WorkspaceItem
190 key={workspace.id}
191 workspace={workspace}
192 onItemClick={w => onWorkspaceClick(w)}
193 />
194 ))}
195 </tbody>
196 </table>
197 )}
198 </Fragment>
199 )}
200 </Fragment>
201 )}
202 </PremiumFeatureContainer>
203 </div>
204 </div>
205 );
206 }
207}
208
209export default WorkspacesDashboard;
diff --git a/src/features/workspaces/containers/EditWorkspaceScreen.js b/src/features/workspaces/containers/EditWorkspaceScreen.js
new file mode 100644
index 000000000..248b40131
--- /dev/null
+++ b/src/features/workspaces/containers/EditWorkspaceScreen.js
@@ -0,0 +1,60 @@
1import React, { Component } from 'react';
2import { inject, observer } from 'mobx-react';
3import PropTypes from 'prop-types';
4
5import ErrorBoundary from '../../../components/util/ErrorBoundary';
6import EditWorkspaceForm from '../components/EditWorkspaceForm';
7import ServicesStore from '../../../stores/ServicesStore';
8import Workspace from '../models/Workspace';
9import { workspaceStore } from '../index';
10import { deleteWorkspaceRequest, updateWorkspaceRequest } from '../api';
11
12@inject('stores', 'actions') @observer
13class EditWorkspaceScreen extends Component {
14 static propTypes = {
15 actions: PropTypes.shape({
16 workspace: PropTypes.shape({
17 delete: PropTypes.func.isRequired,
18 }),
19 }).isRequired,
20 stores: PropTypes.shape({
21 services: PropTypes.instanceOf(ServicesStore).isRequired,
22 }).isRequired,
23 };
24
25 onDelete = () => {
26 const { workspaceBeingEdited } = workspaceStore;
27 const { actions } = this.props;
28 if (!workspaceBeingEdited) return null;
29 actions.workspaces.delete({ workspace: workspaceBeingEdited });
30 };
31
32 onSave = (values) => {
33 const { workspaceBeingEdited } = workspaceStore;
34 const { actions } = this.props;
35 const workspace = new Workspace(
36 Object.assign({}, workspaceBeingEdited, values),
37 );
38 actions.workspaces.update({ workspace });
39 };
40
41 render() {
42 const { workspaceBeingEdited } = workspaceStore;
43 const { stores } = this.props;
44 if (!workspaceBeingEdited) return null;
45 return (
46 <ErrorBoundary>
47 <EditWorkspaceForm
48 workspace={workspaceBeingEdited}
49 services={stores.services.all}
50 onDelete={this.onDelete}
51 onSave={this.onSave}
52 updateWorkspaceRequest={updateWorkspaceRequest}
53 deleteWorkspaceRequest={deleteWorkspaceRequest}
54 />
55 </ErrorBoundary>
56 );
57 }
58}
59
60export default EditWorkspaceScreen;
diff --git a/src/features/workspaces/containers/WorkspacesScreen.js b/src/features/workspaces/containers/WorkspacesScreen.js
new file mode 100644
index 000000000..2ab565fa1
--- /dev/null
+++ b/src/features/workspaces/containers/WorkspacesScreen.js
@@ -0,0 +1,42 @@
1import React, { Component } from 'react';
2import { inject, observer } from 'mobx-react';
3import PropTypes from 'prop-types';
4import WorkspacesDashboard from '../components/WorkspacesDashboard';
5import ErrorBoundary from '../../../components/util/ErrorBoundary';
6import { workspaceStore } from '../index';
7import {
8 createWorkspaceRequest,
9 deleteWorkspaceRequest,
10 getUserWorkspacesRequest,
11 updateWorkspaceRequest,
12} from '../api';
13
14@inject('actions') @observer
15class WorkspacesScreen extends Component {
16 static propTypes = {
17 actions: PropTypes.shape({
18 workspace: PropTypes.shape({
19 edit: PropTypes.func.isRequired,
20 }),
21 }).isRequired,
22 };
23
24 render() {
25 const { actions } = this.props;
26 return (
27 <ErrorBoundary>
28 <WorkspacesDashboard
29 workspaces={workspaceStore.workspaces}
30 getUserWorkspacesRequest={getUserWorkspacesRequest}
31 createWorkspaceRequest={createWorkspaceRequest}
32 deleteWorkspaceRequest={deleteWorkspaceRequest}
33 updateWorkspaceRequest={updateWorkspaceRequest}
34 onCreateWorkspaceSubmit={data => actions.workspaces.create(data)}
35 onWorkspaceClick={w => actions.workspaces.edit({ workspace: w })}
36 />
37 </ErrorBoundary>
38 );
39 }
40}
41
42export default WorkspacesScreen;
diff --git a/src/features/workspaces/index.js b/src/features/workspaces/index.js
new file mode 100644
index 000000000..ad9023b8b
--- /dev/null
+++ b/src/features/workspaces/index.js
@@ -0,0 +1,37 @@
1import { reaction } from 'mobx';
2import WorkspacesStore from './store';
3import { resetApiRequests } from './api';
4
5const debug = require('debug')('Franz:feature:workspaces');
6
7export const GA_CATEGORY_WORKSPACES = 'Workspaces';
8
9export const workspaceStore = new WorkspacesStore();
10
11export default function initWorkspaces(stores, actions) {
12 stores.workspaces = workspaceStore;
13 const { features } = stores;
14
15 // Toggle workspace feature
16 reaction(
17 () => features.features.isWorkspaceEnabled,
18 (isEnabled) => {
19 if (isEnabled && !workspaceStore.isFeatureActive) {
20 debug('Initializing `workspaces` feature');
21 workspaceStore.start(stores, actions);
22 } else if (workspaceStore.isFeatureActive) {
23 debug('Disabling `workspaces` feature');
24 workspaceStore.stop();
25 resetApiRequests();
26 }
27 },
28 {
29 fireImmediately: true,
30 },
31 );
32}
33
34export const WORKSPACES_ROUTES = {
35 ROOT: '/settings/workspaces',
36 EDIT: '/settings/workspaces/:action/:id',
37};
diff --git a/src/features/workspaces/models/Workspace.js b/src/features/workspaces/models/Workspace.js
new file mode 100644
index 000000000..6c73d7095
--- /dev/null
+++ b/src/features/workspaces/models/Workspace.js
@@ -0,0 +1,25 @@
1import { observable } from 'mobx';
2
3export default class Workspace {
4 id = null;
5
6 @observable name = null;
7
8 @observable order = null;
9
10 @observable services = [];
11
12 @observable userId = null;
13
14 constructor(data) {
15 if (!data.id) {
16 throw Error('Workspace requires Id');
17 }
18
19 this.id = data.id;
20 this.name = data.name;
21 this.order = data.order;
22 this.services.replace(data.services);
23 this.userId = data.userId;
24 }
25}
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js
new file mode 100644
index 000000000..e11513d1f
--- /dev/null
+++ b/src/features/workspaces/store.js
@@ -0,0 +1,323 @@
1import {
2 computed,
3 observable,
4 action,
5} from 'mobx';
6import localStorage from 'mobx-localstorage';
7import { matchRoute } from '../../helpers/routing-helpers';
8import { workspaceActions } from './actions';
9import { FeatureStore } from '../utils/FeatureStore';
10import {
11 createWorkspaceRequest,
12 deleteWorkspaceRequest,
13 getUserWorkspacesRequest,
14 updateWorkspaceRequest,
15} from './api';
16import { WORKSPACES_ROUTES } from './index';
17import { createReactions } from '../../stores/lib/Reaction';
18import { createActionBindings } from '../utils/ActionBinding';
19
20const debug = require('debug')('Franz:feature:workspaces:store');
21
22export default class WorkspacesStore extends FeatureStore {
23 @observable isFeatureEnabled = false;
24
25 @observable isFeatureActive = false;
26
27 @observable isPremiumFeature = true;
28
29 @observable isPremiumUpgradeRequired = true;
30
31 @observable activeWorkspace = null;
32
33 @observable nextWorkspace = null;
34
35 @observable workspaceBeingEdited = null;
36
37 @observable isSwitchingWorkspace = false;
38
39 @observable isWorkspaceDrawerOpen = false;
40
41 @observable isSettingsRouteActive = null;
42
43 @computed get workspaces() {
44 if (!this.isFeatureActive) return [];
45 return getUserWorkspacesRequest.result || [];
46 }
47
48 @computed get settings() {
49 return localStorage.getItem('workspaces') || {};
50 }
51
52 @computed get userHasWorkspaces() {
53 return getUserWorkspacesRequest.wasExecuted && this.workspaces.length > 0;
54 }
55
56 @computed get isUserAllowedToUseFeature() {
57 return !this.isPremiumUpgradeRequired;
58 }
59
60 // ========== PRIVATE PROPERTIES ========= //
61
62 _wasDrawerOpenBeforeSettingsRoute = null;
63
64 _freeUserActions = [];
65
66 _premiumUserActions = [];
67
68 _allActions = [];
69
70 _freeUserReactions = [];
71
72 _premiumUserReactions = [];
73
74 _allReactions = [];
75
76 // ========== PUBLIC API ========= //
77
78 start(stores, actions) {
79 debug('WorkspacesStore::start');
80 this.stores = stores;
81 this.actions = actions;
82
83 // ACTIONS
84
85 this._freeUserActions = createActionBindings([
86 [workspaceActions.toggleWorkspaceDrawer, this._toggleWorkspaceDrawer],
87 [workspaceActions.openWorkspaceSettings, this._openWorkspaceSettings],
88 ]);
89 this._premiumUserActions = createActionBindings([
90 [workspaceActions.edit, this._edit],
91 [workspaceActions.create, this._create],
92 [workspaceActions.delete, this._delete],
93 [workspaceActions.update, this._update],
94 [workspaceActions.activate, this._setActiveWorkspace],
95 [workspaceActions.deactivate, this._deactivateActiveWorkspace],
96 ]);
97 this._allActions = this._freeUserActions.concat(this._premiumUserActions);
98 this._registerActions(this._allActions);
99
100 // REACTIONS
101
102 this._freeUserReactions = createReactions([
103 this._stopPremiumActionsAndReactions,
104 this._openDrawerWithSettingsReaction,
105 this._setFeatureEnabledReaction,
106 this._setIsPremiumFeatureReaction,
107 this._cleanupInvalidServiceReferences,
108 ]);
109 this._premiumUserReactions = createReactions([
110 this._setActiveServiceOnWorkspaceSwitchReaction,
111 this._activateLastUsedWorkspaceReaction,
112 this._setWorkspaceBeingEditedReaction,
113 ]);
114 this._allReactions = this._freeUserReactions.concat(this._premiumUserReactions);
115
116 this._registerReactions(this._allReactions);
117
118 getUserWorkspacesRequest.execute();
119 this.isFeatureActive = true;
120 }
121
122 stop() {
123 super.stop();
124 debug('WorkspacesStore::stop');
125 this.isFeatureActive = false;
126 this.activeWorkspace = null;
127 this.nextWorkspace = null;
128 this.workspaceBeingEdited = null;
129 this.isSwitchingWorkspace = false;
130 this.isWorkspaceDrawerOpen = false;
131 }
132
133 filterServicesByActiveWorkspace = (services) => {
134 const { activeWorkspace, isFeatureActive } = this;
135 if (isFeatureActive && activeWorkspace) {
136 return this.getWorkspaceServices(activeWorkspace);
137 }
138 return services;
139 };
140
141 getWorkspaceServices(workspace) {
142 const { services } = this.stores;
143 return workspace.services.map(id => services.one(id)).filter(s => !!s);
144 }
145
146 // ========== PRIVATE METHODS ========= //
147
148 _getWorkspaceById = id => this.workspaces.find(w => w.id === id);
149
150 _updateSettings = (changes) => {
151 localStorage.setItem('workspaces', {
152 ...this.settings,
153 ...changes,
154 });
155 };
156
157 // Actions
158
159 @action _edit = ({ workspace }) => {
160 this.stores.router.push(`/settings/workspaces/edit/${workspace.id}`);
161 };
162
163 @action _create = async ({ name }) => {
164 try {
165 const workspace = await createWorkspaceRequest.execute(name);
166 await getUserWorkspacesRequest.result.push(workspace);
167 this._edit({ workspace });
168 } catch (error) {
169 throw error;
170 }
171 };
172
173 @action _delete = async ({ workspace }) => {
174 try {
175 await deleteWorkspaceRequest.execute(workspace);
176 await getUserWorkspacesRequest.result.remove(workspace);
177 this.stores.router.push('/settings/workspaces');
178 } catch (error) {
179 throw error;
180 }
181 };
182
183 @action _update = async ({ workspace }) => {
184 try {
185 await updateWorkspaceRequest.execute(workspace);
186 // Path local result optimistically
187 const localWorkspace = this._getWorkspaceById(workspace.id);
188 Object.assign(localWorkspace, workspace);
189 this.stores.router.push('/settings/workspaces');
190 } catch (error) {
191 throw error;
192 }
193 };
194
195 @action _setActiveWorkspace = ({ workspace }) => {
196 // Indicate that we are switching to another workspace
197 this.isSwitchingWorkspace = true;
198 this.nextWorkspace = workspace;
199 // Delay switching to next workspace so that the services loading does not drag down UI
200 setTimeout(() => {
201 this.activeWorkspace = workspace;
202 this._updateSettings({ lastActiveWorkspace: workspace.id });
203 }, 100);
204 // Indicate that we are done switching to the next workspace
205 setTimeout(() => {
206 this.isSwitchingWorkspace = false;
207 this.nextWorkspace = null;
208 }, 1000);
209 };
210
211 @action _deactivateActiveWorkspace = () => {
212 // Indicate that we are switching to default workspace
213 this.isSwitchingWorkspace = true;
214 this.nextWorkspace = null;
215 this._updateSettings({ lastActiveWorkspace: null });
216 // Delay switching to next workspace so that the services loading does not drag down UI
217 setTimeout(() => {
218 this.activeWorkspace = null;
219 }, 100);
220 // Indicate that we are done switching to the default workspace
221 setTimeout(() => { this.isSwitchingWorkspace = false; }, 1000);
222 };
223
224 @action _toggleWorkspaceDrawer = () => {
225 this.isWorkspaceDrawerOpen = !this.isWorkspaceDrawerOpen;
226 };
227
228 @action _openWorkspaceSettings = () => {
229 this.actions.ui.openSettings({ path: 'workspaces' });
230 };
231
232 // Reactions
233
234 _setFeatureEnabledReaction = () => {
235 const { isWorkspaceEnabled } = this.stores.features.features;
236 this.isFeatureEnabled = isWorkspaceEnabled;
237 };
238
239 _setIsPremiumFeatureReaction = () => {
240 const { features, user } = this.stores;
241 const { isPremium } = user.data;
242 const { isWorkspacePremiumFeature } = features.features;
243 this.isPremiumFeature = isWorkspacePremiumFeature;
244 this.isPremiumUpgradeRequired = isWorkspacePremiumFeature && !isPremium;
245 };
246
247 _setWorkspaceBeingEditedReaction = () => {
248 const { pathname } = this.stores.router.location;
249 const match = matchRoute('/settings/workspaces/edit/:id', pathname);
250 if (match) {
251 this.workspaceBeingEdited = this._getWorkspaceById(match.id);
252 }
253 };
254
255 _setActiveServiceOnWorkspaceSwitchReaction = () => {
256 if (!this.isFeatureActive) return;
257 if (this.activeWorkspace) {
258 const services = this.stores.services.allDisplayed;
259 const activeService = services.find(s => s.isActive);
260 const workspaceServices = this.getWorkspaceServices(this.activeWorkspace);
261 if (workspaceServices.length <= 0) return;
262 const isActiveServiceInWorkspace = workspaceServices.includes(activeService);
263 if (!isActiveServiceInWorkspace) {
264 this.actions.service.setActive({ serviceId: workspaceServices[0].id });
265 }
266 }
267 };
268
269 _activateLastUsedWorkspaceReaction = () => {
270 if (!this.activeWorkspace && this.userHasWorkspaces) {
271 const { lastActiveWorkspace } = this.settings;
272 if (lastActiveWorkspace) {
273 const workspace = this._getWorkspaceById(lastActiveWorkspace);
274 if (workspace) this._setActiveWorkspace({ workspace });
275 }
276 }
277 };
278
279 _openDrawerWithSettingsReaction = () => {
280 const { router } = this.stores;
281 const isWorkspaceSettingsRoute = router.location.pathname.includes(WORKSPACES_ROUTES.ROOT);
282 const isSwitchingToSettingsRoute = !this.isSettingsRouteActive && isWorkspaceSettingsRoute;
283 const isLeavingSettingsRoute = !isWorkspaceSettingsRoute && this.isSettingsRouteActive;
284
285 if (isSwitchingToSettingsRoute) {
286 this.isSettingsRouteActive = true;
287 this._wasDrawerOpenBeforeSettingsRoute = this.isWorkspaceDrawerOpen;
288 if (!this._wasDrawerOpenBeforeSettingsRoute) {
289 workspaceActions.toggleWorkspaceDrawer();
290 }
291 } else if (isLeavingSettingsRoute) {
292 this.isSettingsRouteActive = false;
293 if (!this._wasDrawerOpenBeforeSettingsRoute && this.isWorkspaceDrawerOpen) {
294 workspaceActions.toggleWorkspaceDrawer();
295 }
296 }
297 };
298
299 _cleanupInvalidServiceReferences = () => {
300 const { services } = this.stores;
301 let invalidServiceReferencesExist = false;
302 this.workspaces.forEach((workspace) => {
303 workspace.services.forEach((serviceId) => {
304 if (!services.one(serviceId)) {
305 invalidServiceReferencesExist = true;
306 }
307 });
308 });
309 if (invalidServiceReferencesExist) {
310 getUserWorkspacesRequest.execute();
311 }
312 };
313
314 _stopPremiumActionsAndReactions = () => {
315 if (!this.isUserAllowedToUseFeature) {
316 this._stopActions(this._premiumUserActions);
317 this._stopReactions(this._premiumUserReactions);
318 } else {
319 this._startActions(this._premiumUserActions);
320 this._startReactions(this._premiumUserReactions);
321 }
322 }
323}
diff --git a/src/helpers/asar-helpers.js b/src/helpers/asar-helpers.js
new file mode 100644
index 000000000..9e4380c06
--- /dev/null
+++ b/src/helpers/asar-helpers.js
@@ -0,0 +1,3 @@
1export function asarPath(dir = '') {
2 return dir.replace('app.asar', 'app.asar.unpacked');
3}
diff --git a/src/helpers/i18n-helpers.js b/src/helpers/i18n-helpers.js
index 091b86b06..84146dd8c 100644
--- a/src/helpers/i18n-helpers.js
+++ b/src/helpers/i18n-helpers.js
@@ -28,22 +28,33 @@ export function getLocale({
28 return localeStr; 28 return localeStr;
29} 29}
30 30
31export function getSelectOptions({ locales, resetToDefaultText = '' }) { 31export function getSelectOptions({ locales, resetToDefaultText = '', automaticDetectionText = '' }) {
32 let options = []; 32 const options = [];
33 33
34 if (resetToDefaultText) { 34 if (resetToDefaultText) {
35 options = [ 35 options.push(
36 { 36 {
37 value: '', 37 value: '',
38 label: resetToDefaultText, 38 label: resetToDefaultText,
39 }, {
40 value: '───',
41 label: '───',
42 disabled: true,
43 }, 39 },
44 ]; 40 );
45 } 41 }
46 42
43 if (automaticDetectionText) {
44 options.push(
45 {
46 value: 'automatic',
47 label: automaticDetectionText,
48 },
49 );
50 }
51
52 options.push({
53 value: '───',
54 label: '───',
55 disabled: true,
56 });
57
47 Object.keys(locales).sort(Intl.Collator().compare).forEach((key) => { 58 Object.keys(locales).sort(Intl.Collator().compare).forEach((key) => {
48 options.push({ 59 options.push({
49 value: key, 60 value: key,
diff --git a/src/helpers/url-helpers.js b/src/helpers/url-helpers.js
new file mode 100644
index 000000000..750d1f00c
--- /dev/null
+++ b/src/helpers/url-helpers.js
@@ -0,0 +1,15 @@
1import { URL } from 'url';
2
3import { ALLOWED_PROTOCOLS } from '../config';
4
5const debug = require('debug')('Franz:Helpers:url');
6
7export function isValidExternalURL(url) {
8 const parsedUrl = new URL(url);
9
10 const isAllowed = ALLOWED_PROTOCOLS.includes(parsedUrl.protocol);
11
12 debug('protocol check is', isAllowed, 'for:', url);
13
14 return isAllowed;
15}
diff --git a/src/i18n/globalMessages.js b/src/i18n/globalMessages.js
index 2c724ff6f..1b5ece223 100644
--- a/src/i18n/globalMessages.js
+++ b/src/i18n/globalMessages.js
@@ -1,10 +1,6 @@
1import { defineMessages } from 'react-intl'; 1import { defineMessages } from 'react-intl';
2 2
3export default defineMessages({ 3export default defineMessages({
4 upgradeAccount: {
5 id: 'global.premium.upgradeAccount',
6 defaultMessage: '!!!Please upgrade your account to add a new service.',
7 },
8 APIUnhealthy: { 4 APIUnhealthy: {
9 id: 'global.api.unhealthy', 5 id: 'global.api.unhealthy',
10 defaultMessage: '!!!Can\'t connect to Franz Online Services', 6 defaultMessage: '!!!Can\'t connect to Franz Online Services',
@@ -13,4 +9,20 @@ export default defineMessages({
13 id: 'global.notConnectedToTheInternet', 9 id: 'global.notConnectedToTheInternet',
14 defaultMessage: '!!!You are not connected to the internet.', 10 defaultMessage: '!!!You are not connected to the internet.',
15 }, 11 },
12 spellcheckerLanguage: {
13 id: 'global.spellchecking.language',
14 defaultMessage: '!!!Spell checking language',
15 },
16 spellcheckerSystemDefault: {
17 id: 'global.spellchecker.useDefault',
18 defaultMessage: '!!!Use System Default ({default})',
19 },
20 spellcheckerAutomaticDetection: {
21 id: 'global.spellchecking.autodetect',
22 defaultMessage: '!!!Detect language automatically',
23 },
24 spellcheckerAutomaticDetectionShort: {
25 id: 'global.spellchecking.autodetect.short',
26 defaultMessage: '!!!Automatic',
27 },
16}); 28});
diff --git a/src/i18n/languages.js b/src/i18n/languages.js
index aa3f2316a..9ddcc3519 100644
--- a/src/i18n/languages.js
+++ b/src/i18n/languages.js
@@ -35,7 +35,8 @@ export const SPELLCHECKER_LOCALES = {
35 'da-dk': 'Dansk', 35 'da-dk': 'Dansk',
36 'de-de': 'Deutsch', 36 'de-de': 'Deutsch',
37 'el-gr': 'ελληνικά (Greek)', 37 'el-gr': 'ελληνικά (Greek)',
38 'en-us': 'English', 38 'en-gb': 'English (GB)',
39 'en-us': 'English (US)',
39 'es-es': 'Español', 40 'es-es': 'Español',
40 'et-ee': 'Estonian', 41 'et-ee': 'Estonian',
41 'fa-ir': 'Ùارسی (Persian)', 42 'fa-ir': 'Ùارسی (Persian)',
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
index ed6f7bacd..b2aaaa070 100644
--- a/src/i18n/locales/ca.json
+++ b/src/i18n/locales/ca.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Recarrega", 2 "app.errorHandler.action" : "Recarrega",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Quelcom ha anat malament",
4 "feature.announcements.changelog.headline" : "Canvis en Franz {version}",
4 "feature.delayApp.action" : "Aconsegueix una llicència de suport per a Franz", 5 "feature.delayApp.action" : "Aconsegueix una llicència de suport per a Franz",
5 "feature.delayApp.headline" : "Si us plau, compra una llicència de suport per a Franz per saltar l'espera", 6 "feature.delayApp.headline" : "Si us plau, compra una llicència de suport per a Franz per saltar l'espera",
6 "feature.delayApp.text" : "Franz continuarĂ  en {seconds} segons", 7 "feature.delayApp.text" : "Franz continuarĂ  en {seconds} segons",
8 "feature.shareFranz.action.email" : "Envia com a correu",
9 "feature.shareFranz.action.facebook" : "Compartir en Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "No es pot connectar amb els serveis en lĂ­nia de Franz", 15 "global.api.unhealthy" : "No es pot connectar amb els serveis en lĂ­nia de Franz",
8 "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", 16 "global.notConnectedToTheInternet" : "No esteu connectat a Internet.",
17 "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Corrector ortogrĂ fic",
9 "import.headline" : "Importa els teus serveis Franz 4", 21 "import.headline" : "Importa els teus serveis Franz 4",
10 "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5", 22 "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5",
11 "import.skip.label" : "Vull afegir serveis manualment", 23 "import.skip.label" : "Vull afegir serveis manualment",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Accedir", 44 "login.submit.label" : "Accedir",
33 "login.tokenExpired" : "La teva sessiĂ³ ha caducat, torna a iniciar la sessiĂ³.", 45 "login.tokenExpired" : "La teva sessiĂ³ ha caducat, torna a iniciar la sessiĂ³.",
34 "menu.app.about" : "Sobre Franz", 46 "menu.app.about" : "Sobre Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Amaga", 48 "menu.app.hide" : "Amaga",
36 "menu.app.hideOthers" : "Amaga altres", 49 "menu.app.hideOthers" : "Amaga altres",
37 "menu.app.quit" : "Surt", 50 "menu.app.quit" : "Surt",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Suport", 72 "menu.help.support" : "Suport",
60 "menu.help.tos" : "Condicions del Servei", 73 "menu.help.tos" : "Condicions del Servei",
61 "menu.services" : "Serveis", 74 "menu.services" : "Serveis",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Afegeix un servei...", 76 "menu.services.addNewService" : "Afegeix un servei...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "Visualitza", 78 "menu.view" : "Visualitza",
64 "menu.view.enterFullScreen" : "Inicia la pantalla completa", 79 "menu.view.enterFullScreen" : "Inicia la pantalla completa",
65 "menu.view.exitFullScreen" : "Surt de pantalla completa", 80 "menu.view.exitFullScreen" : "Surt de pantalla completa",
@@ -74,6 +89,11 @@
74 "menu.window" : "Finestra", 89 "menu.window" : "Finestra",
75 "menu.window.close" : "Tanca", 90 "menu.window.close" : "Tanca",
76 "menu.window.minimize" : "Minimitza", 91 "menu.window.minimize" : "Minimitza",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Tots els serveis",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Correu electrĂ²nic", 97 "password.email.label" : "Correu electrĂ²nic",
78 "password.headline" : "Restablir contrasenya", 98 "password.headline" : "Restablir contrasenya",
79 "password.link.login" : "Inicia la sessiĂ³ al teu compte", 99 "password.link.login" : "Inicia la sessiĂ³ al teu compte",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Edita {name}", 116 "service.errorHandler.editAction" : "Edita {name}",
97 "service.errorHandler.headline" : "Oh no!", 117 "service.errorHandler.headline" : "Oh no!",
98 "service.errorHandler.message" : "Error", 118 "service.errorHandler.message" : "Error",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} ha fallat al carregar",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "IntroducciĂ³", 121 "services.getStarted" : "IntroducciĂ³",
101 "services.welcome" : "Benvingut a Franz", 122 "services.welcome" : "Benvingut a Franz",
102 "settings.account.account.editButton" : "Editar Compte", 123 "settings.account.account.editButton" : "Editar Compte",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Descarregar", 138 "settings.account.invoiceDownload" : "Descarregar",
118 "settings.account.manageSubscription.label" : "Gestioneu la vostra subscripciĂ³", 139 "settings.account.manageSubscription.label" : "Gestioneu la vostra subscripciĂ³",
119 "settings.account.successInfo" : "S'han desat els canvis", 140 "settings.account.successInfo" : "S'han desat els canvis",
141 "settings.account.tryReloadServices" : "Torna a provar-ho",
120 "settings.account.tryReloadUserInfoRequest" : "Torna a provar-ho", 142 "settings.account.tryReloadUserInfoRequest" : "Torna a provar-ho",
121 "settings.account.userInfoRequestFailed" : "No s'ha pogut carregar la informaciĂ³ de l'usuari", 143 "settings.account.userInfoRequestFailed" : "No s'ha pogut carregar la informaciĂ³ de l'usuari",
122 "settings.app.buttonClearAllCache" : "Buida la memĂ²ria cau", 144 "settings.app.buttonClearAllCache" : "Buida la memĂ²ria cau",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Inclou versions beta", 151 "settings.app.form.beta" : "Inclou versions beta",
130 "settings.app.form.darkMode" : "Uneix-te al CantĂ³ Fosc", 152 "settings.app.form.darkMode" : "Uneix-te al CantĂ³ Fosc",
131 "settings.app.form.enableGPUAcceleration" : "Activar acceleraciĂ³ GPU", 153 "settings.app.form.enableGPUAcceleration" : "Activar acceleraciĂ³ GPU",
132 "settings.app.form.enableMenuBar" : "Mostra Franz a la barra de menĂº",
133 "settings.app.form.enableSpellchecking" : "Habilita la comprobaciĂ³ ortogrĂ fica", 154 "settings.app.form.enableSpellchecking" : "Habilita la comprobaciĂ³ ortogrĂ fica",
134 "settings.app.form.enableSystemTray" : "Mostra Franz a la safata del sistema", 155 "settings.app.form.enableSystemTray" : "Mostra Franz a la safata del sistema",
135 "settings.app.form.hideDockIcon" : "Oculta la icona de Franz al Dock",
136 "settings.app.form.language" : "Idioma", 156 "settings.app.form.language" : "Idioma",
137 "settings.app.form.minimizeToSystemTray" : "Minimitza Franz a la safata del sistema", 157 "settings.app.form.minimizeToSystemTray" : "Minimitza Franz a la safata del sistema",
138 "settings.app.form.runInBackground" : "Mantén a Franz en segon pla en tancar la finestra", 158 "settings.app.form.runInBackground" : "Mantén a Franz en segon pla en tancar la finestra",
139 "settings.app.form.showDisabledServices" : "Mostra les pestanyes dels serveis desactivats", 159 "settings.app.form.showDisabledServices" : "Mostra les pestanyes dels serveis desactivats",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra la insĂ­gnia de missatges no llegits quan les notificacions estiguin desactivades", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra la insĂ­gnia de missatges no llegits quan les notificacions estiguin desactivades",
141 "settings.app.form.spellcheckerLanguage" : "Corrector ortogrĂ fic",
142 "settings.app.headline" : "ConfiguraciĂ³", 161 "settings.app.headline" : "ConfiguraciĂ³",
143 "settings.app.headlineAdvanced" : "Avançat", 162 "settings.app.headlineAdvanced" : "Avançat",
144 "settings.app.headlineAppearance" : "Aparença", 163 "settings.app.headlineAppearance" : "Aparença",
145 "settings.app.headlineGeneral" : "General", 164 "settings.app.headlineGeneral" : "General",
146 "settings.app.headlineLanguage" : "Idioma", 165 "settings.app.headlineLanguage" : "Idioma",
147 "settings.app.headlineUpdates" : "Actualitzacions", 166 "settings.app.headlineUpdates" : "Actualitzacions",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Els canvis requereixen reiniciar", 168 "settings.app.restartRequired" : "Els canvis requereixen reiniciar",
149 "settings.app.subheadlineCache" : "MemĂ²ria cau", 169 "settings.app.subheadlineCache" : "MemĂ²ria cau",
150 "settings.app.translationHelp" : "Ajuda'ns a traduir Franz en la teva llengua.", 170 "settings.app.translationHelp" : "Ajuda'ns a traduir Franz en la teva llengua.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Convidar amics", 177 "settings.navigation.inviteFriends" : "Convidar amics",
158 "settings.navigation.logout" : "Sortir", 178 "settings.navigation.logout" : "Sortir",
159 "settings.navigation.settings" : "ConfiguraciĂ³", 179 "settings.navigation.settings" : "ConfiguraciĂ³",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Els vostres serveis", 181 "settings.navigation.yourServices" : "Els vostres serveis",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Tots els serveis", 183 "settings.recipes.all" : "Tots els serveis",
162 "settings.recipes.dev" : "Desenvolupament", 184 "settings.recipes.dev" : "Desenvolupament",
163 "settings.recipes.headline" : "Serveis disponibles", 185 "settings.recipes.headline" : "Serveis disponibles",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Mostra la insĂ­gnia de missatge per a tots els missatges nous", 214 "settings.service.form.indirectMessages" : "Mostra la insĂ­gnia de missatge per a tots els missatges nous",
193 "settings.service.form.isMutedInfo" : "Quan es desactiva, tots els sons de notificaciĂ³ i reproducciĂ³ d'Ă udio es silenciaran", 215 "settings.service.form.isMutedInfo" : "Quan es desactiva, tots els sons de notificaciĂ³ i reproducciĂ³ d'Ă udio es silenciaran",
194 "settings.service.form.name" : "Nom", 216 "settings.service.form.name" : "Nom",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "Ajustaments Proxy HTTP\/HTTPS",
196 "settings.service.form.proxy.host" : "Host Proxy \/ IP", 218 "settings.service.form.proxy.host" : "Host Proxy \/ IP",
197 "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Franz", 219 "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Franz",
198 "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy", 220 "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy",
199 "settings.service.form.proxy.password" : "Contrasenya (opcional)", 221 "settings.service.form.proxy.password" : "Contrasenya (opcional)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Port",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Siusplau, reinicieu el Franz després de canviar els ajustaments de proxy",
202 "settings.service.form.proxy.user" : "Usuari (opcional)", 224 "settings.service.form.proxy.user" : "Usuari (opcional)",
203 "settings.service.form.saveButton" : "Desa el servei", 225 "settings.service.form.saveButton" : "Desa el servei",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Allotjat", 226 "settings.service.form.tabHosted" : "Allotjat",
207 "settings.service.form.tabOnPremise" : "Allotjat per si mateix â­ï¸", 227 "settings.service.form.tabOnPremise" : "Allotjat per si mateix â­ï¸",
208 "settings.service.form.team" : "Equip", 228 "settings.service.form.team" : "Equip",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Descobrir serveis", 232 "settings.services.discoverServices" : "Descobrir serveis",
213 "settings.services.headline" : "Els vostres serveis", 233 "settings.services.headline" : "Els vostres serveis",
214 "settings.services.noServicesAdded" : "Encara no heu afegit cap servei.", 234 "settings.services.noServicesAdded" : "Encara no heu afegit cap servei.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "El servei estĂ  desactivat", 236 "settings.services.tooltip.isDisabled" : "El servei estĂ  desactivat",
216 "settings.services.tooltip.isMuted" : "Tots els sons estan desactivats", 237 "settings.services.tooltip.isMuted" : "Tots els sons estan desactivats",
217 "settings.services.tooltip.notificationsDisabled" : "Les notificacions estan desactivades", 238 "settings.services.tooltip.notificationsDisabled" : "Les notificacions estan desactivades",
218 "settings.services.updatedInfo" : "S'han desat els canvis", 239 "settings.services.updatedInfo" : "S'han desat els canvis",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Equip",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Empresa", 246 "settings.user.form.accountType.company" : "Empresa",
220 "settings.user.form.accountType.individual" : "Individual", 247 "settings.user.form.accountType.individual" : "Individual",
221 "settings.user.form.accountType.label" : "Tipus de compte", 248 "settings.user.form.accountType.label" : "Tipus de compte",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Nom", 252 "settings.user.form.firstname" : "Nom",
226 "settings.user.form.lastname" : "Cognoms", 253 "settings.user.form.lastname" : "Cognoms",
227 "settings.user.form.newPassword" : "Nova contrasenya", 254 "settings.user.form.newPassword" : "Nova contrasenya",
255 "settings.workspace.add.form.name" : "Nom",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Nom",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Torna a provar-ho",
266 "settings.workspaces.updatedInfo" : "S'han desat els canvis",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Afegeix nou servei", 270 "sidebar.addNewService" : "Afegeix nou servei",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Desactivar notificacions i Ă udio", 272 "sidebar.muteApp" : "Desactivar notificacions i Ă udio",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "ConfiguraciĂ³", 274 "sidebar.settings" : "ConfiguraciĂ³",
231 "sidebar.unmuteApp" : "Activar notificacions i Ă udio", 275 "sidebar.unmuteApp" : "Activar notificacions i Ă udio",
232 "signup.company.label" : "Empresa", 276 "signup.company.label" : "Empresa",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Residents d'EU: es poden aplicar impostos locals", 288 "subscription.euTaxInfo" : "Residents d'EU: es poden aplicar impostos locals",
245 "subscription.features.ads" : "Sense anuncis, mai!", 289 "subscription.features.ads" : "Sense anuncis, mai!",
246 "subscription.features.comingSoon" : "properament", 290 "subscription.features.comingSoon" : "properament",
247 "subscription.features.encryptedSync" : "SincronitzaciĂ³ de sessiĂ³ xifrada",
248 "subscription.features.noInterruptions" : "Sense retards ni molestes actualitzacions de llicències ", 291 "subscription.features.noInterruptions" : "Sense retards ni molestes actualitzacions de llicències ",
249 "subscription.features.onpremise" : "Afegiu serveis en premissa\/allotjats com HipChat",
250 "subscription.features.onpremise.mattermost" : "Afegir serveis allotjats com Mattermost", 292 "subscription.features.onpremise.mattermost" : "Afegir serveis allotjats com Mattermost",
251 "subscription.features.proxy" : "Suport de Proxy per a serveis", 293 "subscription.features.proxy" : "Suport de Proxy per a serveis",
252 "subscription.features.spellchecker" : "Suport per corrector ortogrĂ fic", 294 "subscription.features.spellchecker" : "Suport per corrector ortogrĂ fic",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "El compte de pagament Franz Premium Supporter inclou", 296 "subscription.includedFeatures" : "El compte de pagament Franz Premium Supporter inclou",
254 "subscription.paymentSessionError" : "No s'ha pogut inicialitzar el formulari de pagament", 297 "subscription.paymentSessionError" : "No s'ha pogut inicialitzar el formulari de pagament",
255 "subscription.submit.label" : "Vull donar suport al desenvolupament de Franz", 298 "subscription.submit.label" : "Vull donar suport al desenvolupament de Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Recarrega", 312 "tabs.item.reload" : "Recarrega",
270 "validation.email" : "{field} no es vĂ lid", 313 "validation.email" : "{field} no es vĂ lid",
271 "validation.minLength" : "{field} ha de ser al menys {length} carĂ cters de llargada", 314 "validation.minLength" : "{field} ha de ser al menys {length} carĂ cters de llargada",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} es requerit", 316 "validation.required" : "{field} es requerit",
273 "validation.url" : "{field} es una URL no vĂ lida", 317 "validation.url" : "{field} es una URL no vĂ lida",
274 "welcome.loginButton" : "Inicia sessiĂ³ al teu compte", 318 "welcome.loginButton" : "Inicia sessiĂ³ al teu compte",
275 "welcome.signupButton" : "Crea un compte gratuĂ¯t", 319 "welcome.signupButton" : "Crea un compte gratuĂ¯t",
276 "welcome.slogan" : "Crea un compte gratuĂ¯t" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Tots els serveis",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json
index b8bfd2526..aadfeffbc 100644
--- a/src/i18n/locales/cs.json
+++ b/src/i18n/locales/cs.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Obnovit", 2 "app.errorHandler.action" : "Obnovit",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Něco se pokazilo",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.action" : "PodpoÅ™ Franz a zĂ­skej Supporter licenci",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.headline" : "Kup si Franz Supporter licenci a nebudeÅ¡ už muset Äekat",
7 "feature.delayApp.text" : "Franz bude pokraÄovat v {seconds} sekundĂ¡ch.",
8 "feature.shareFranz.action.email" : "Poslat jako e-mail",
9 "feature.shareFranz.action.facebook" : "SdĂ­let na Facebooku",
10 "feature.shareFranz.action.twitter" : "SdĂ­let na Twitteru",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Nemůžeme pÅ™ipojit Franz k online službĂ¡m", 15 "global.api.unhealthy" : "Nemůžeme pÅ™ipojit Franz k online službĂ¡m",
8 "global.notConnectedToTheInternet" : "PÅ™ipojenĂ­ k internetu nenĂ­ k dispozici.", 16 "global.notConnectedToTheInternet" : "PÅ™ipojenĂ­ k internetu nenĂ­ k dispozici.",
17 "global.spellchecker.useDefault" : "Use System Default ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Oprava překlepů jazyka",
9 "import.headline" : "Importovat služby z Franz 4", 21 "import.headline" : "Importovat služby z Franz 4",
10 "import.notSupportedHeadline" : "Služby nejsou podporovĂ¡ny ve verzi Franz 5", 22 "import.notSupportedHeadline" : "Služby nejsou podporovĂ¡ny ve verzi Franz 5",
11 "import.skip.label" : "Chci pÅ™idat službu ruÄnÄ›", 23 "import.skip.label" : "Chci pÅ™idat službu ruÄnÄ›",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "PÅ™ihlĂ¡sit se", 44 "login.submit.label" : "PÅ™ihlĂ¡sit se",
33 "login.tokenExpired" : "SezenĂ­ vyprÅ¡elo, prosĂ­m pÅ™ihlaste se znovu", 45 "login.tokenExpired" : "SezenĂ­ vyprÅ¡elo, prosĂ­m pÅ™ihlaste se znovu",
34 "menu.app.about" : "O aplikaci", 46 "menu.app.about" : "O aplikaci",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "SkrĂ½t", 48 "menu.app.hide" : "SkrĂ½t",
36 "menu.app.hideOthers" : "Skryt ostatnĂ­", 49 "menu.app.hideOthers" : "Skryt ostatnĂ­",
37 "menu.app.quit" : "UkonÄit", 50 "menu.app.quit" : "UkonÄit",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Podpora", 72 "menu.help.support" : "Podpora",
60 "menu.help.tos" : "PodmĂ­nky použitĂ­", 73 "menu.help.tos" : "PodmĂ­nky použitĂ­",
61 "menu.services" : "Služby", 74 "menu.services" : "Služby",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Přidat novou službu...", 76 "menu.services.addNewService" : "Přidat novou službu...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "ZobrazenĂ­", 78 "menu.view" : "ZobrazenĂ­",
64 "menu.view.enterFullScreen" : "Spustit režim celĂ© obrazovky", 79 "menu.view.enterFullScreen" : "Spustit režim celĂ© obrazovky",
65 "menu.view.exitFullScreen" : "UkonÄit celoobrazovkovĂ½ režim", 80 "menu.view.exitFullScreen" : "UkonÄit celoobrazovkovĂ½ režim",
@@ -74,6 +89,11 @@
74 "menu.window" : "Okno", 89 "menu.window" : "Okno",
75 "menu.window.close" : "ZavÅ™Ă­t", 90 "menu.window.close" : "ZavÅ™Ă­t",
76 "menu.window.minimize" : "Minimalizovat", 91 "menu.window.minimize" : "Minimalizovat",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Všechny služby",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "E-mailovĂ¡ adresa", 97 "password.email.label" : "E-mailovĂ¡ adresa",
78 "password.headline" : "Obnovit heslo", 98 "password.headline" : "Obnovit heslo",
79 "password.link.login" : "PÅ™ihlĂ¡sit se k ĂºÄtu", 99 "password.link.login" : "PÅ™ihlĂ¡sit se k ĂºÄtu",
@@ -81,7 +101,7 @@
81 "password.noUser" : "Pro emailovou adresu nebyl nalezenĂ½ Å¾Ă¡dnĂ½ uživatel", 101 "password.noUser" : "Pro emailovou adresu nebyl nalezenĂ½ Å¾Ă¡dnĂ½ uživatel",
82 "password.submit.label" : "Odeslat", 102 "password.submit.label" : "Odeslat",
83 "password.successInfo" : "ProsĂ­m, zkontrolujte svůj e-mail", 103 "password.successInfo" : "ProsĂ­m, zkontrolujte svůj e-mail",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "VylepÅ¡i si svůj ĂºÄet",
85 "pricing.headline" : "Podpořit Franz", 105 "pricing.headline" : "Podpořit Franz",
86 "pricing.link.skipPayment" : "Nechci podporovat vĂ½voj aplikace Franz.", 106 "pricing.link.skipPayment" : "Nechci podporovat vĂ½voj aplikace Franz.",
87 "pricing.submit.label" : "Chci podpoÅ™it vĂ½voj aplikace Franz", 107 "pricing.submit.label" : "Chci podpoÅ™it vĂ½voj aplikace Franz",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Upravit {name}", 116 "service.errorHandler.editAction" : "Upravit {name}",
97 "service.errorHandler.headline" : "Ale ne!", 117 "service.errorHandler.headline" : "Ale ne!",
98 "service.errorHandler.message" : "Chyba", 118 "service.errorHandler.message" : "Chyba",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} se nepodaÅ™ilo naÄĂ­st.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "ZaÄnÄ›me", 121 "services.getStarted" : "ZaÄnÄ›me",
101 "services.welcome" : "VĂ­tejte v programu Franz", 122 "services.welcome" : "VĂ­tejte v programu Franz",
102 "settings.account.account.editButton" : "Upravit ĂºÄet", 123 "settings.account.account.editButton" : "Upravit ĂºÄet",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "StĂ¡hnout", 138 "settings.account.invoiceDownload" : "StĂ¡hnout",
118 "settings.account.manageSubscription.label" : "Spravovat vaÅ¡e pÅ™edplatnĂ©", 139 "settings.account.manageSubscription.label" : "Spravovat vaÅ¡e pÅ™edplatnĂ©",
119 "settings.account.successInfo" : "Vaše změny byly uloženy", 140 "settings.account.successInfo" : "Vaše změny byly uloženy",
141 "settings.account.tryReloadServices" : "Zkusit opět",
120 "settings.account.tryReloadUserInfoRequest" : "Zkusit opět", 142 "settings.account.tryReloadUserInfoRequest" : "Zkusit opět",
121 "settings.account.userInfoRequestFailed" : "Nelze naÄĂ­st informace o uživateli.", 143 "settings.account.userInfoRequestFailed" : "Nelze naÄĂ­st informace o uživateli.",
122 "settings.app.buttonClearAllCache" : "VyprĂ¡zdnit mezipamÄ›ti", 144 "settings.app.buttonClearAllCache" : "VyprĂ¡zdnit mezipamÄ›ti",
@@ -127,24 +149,22 @@
127 "settings.app.form.autoLaunchInBackground" : "Spustit na pozadĂ­", 149 "settings.app.form.autoLaunchInBackground" : "Spustit na pozadĂ­",
128 "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu", 150 "settings.app.form.autoLaunchOnStart" : "Spustit Franz při startu",
129 "settings.app.form.beta" : "Zahrnout beta verze", 151 "settings.app.form.beta" : "Zahrnout beta verze",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "PÅ™ipoj se k TemnĂ© stranÄ›",
131 "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlenĂ­", 153 "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlenĂ­",
132 "settings.app.form.enableMenuBar" : "Zobraz Franz v Menu nabĂ­dce",
133 "settings.app.form.enableSpellchecking" : "Zapnout kontrolu pravopisu", 154 "settings.app.form.enableSpellchecking" : "Zapnout kontrolu pravopisu",
134 "settings.app.form.enableSystemTray" : "Zobrazit Franz v systĂ©movĂ© liÅ¡tÄ›", 155 "settings.app.form.enableSystemTray" : "Zobrazit Franz v systĂ©movĂ© liÅ¡tÄ›",
135 "settings.app.form.hideDockIcon" : "Schovej ikonu Franz v Docku",
136 "settings.app.form.language" : "Jazyk", 156 "settings.app.form.language" : "Jazyk",
137 "settings.app.form.minimizeToSystemTray" : "Minimalizovat Franz do systĂ©movĂ© liÅ¡ty", 157 "settings.app.form.minimizeToSystemTray" : "Minimalizovat Franz do systĂ©movĂ© liÅ¡ty",
138 "settings.app.form.runInBackground" : "Ponechat Franze v pozadĂ­ pÅ™i zavĂ­rĂ¡nĂ­ okna", 158 "settings.app.form.runInBackground" : "Ponechat Franze v pozadĂ­ pÅ™i zavĂ­rĂ¡nĂ­ okna",
139 "settings.app.form.showDisabledServices" : "Zobrazit zĂ¡ložky vypnutĂ½ch služeb", 159 "settings.app.form.showDisabledServices" : "Zobrazit zĂ¡ložky vypnutĂ½ch služeb",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Zobrazit odznak pro nepÅ™eÄtenĂ© zprĂ¡vy když jsou upozornÄ›nĂ­ vypnutĂ¡", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Zobrazit odznak pro nepÅ™eÄtenĂ© zprĂ¡vy když jsou upozornÄ›nĂ­ vypnutĂ¡",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "NastavenĂ­", 161 "settings.app.headline" : "NastavenĂ­",
143 "settings.app.headlineAdvanced" : "PokroÄilĂ©", 162 "settings.app.headlineAdvanced" : "PokroÄilĂ©",
144 "settings.app.headlineAppearance" : "Vzhled", 163 "settings.app.headlineAppearance" : "Vzhled",
145 "settings.app.headlineGeneral" : "Obecné", 164 "settings.app.headlineGeneral" : "Obecné",
146 "settings.app.headlineLanguage" : "Jazyk", 165 "settings.app.headlineLanguage" : "Jazyk",
147 "settings.app.headlineUpdates" : "Aktualizace", 166 "settings.app.headlineUpdates" : "Aktualizace",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "ZmÄ›ny vyžadujĂ­ restart", 168 "settings.app.restartRequired" : "ZmÄ›ny vyžadujĂ­ restart",
149 "settings.app.subheadlineCache" : "Mezipaměť", 169 "settings.app.subheadlineCache" : "Mezipaměť",
150 "settings.app.translationHelp" : "Pomozte nĂ¡m pÅ™eložit Franz do svĂ©ho jazyka.", 170 "settings.app.translationHelp" : "Pomozte nĂ¡m pÅ™eložit Franz do svĂ©ho jazyka.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Pozvi pÅ™Ă¡tele", 177 "settings.navigation.inviteFriends" : "Pozvi pÅ™Ă¡tele",
158 "settings.navigation.logout" : "OdhlĂ¡sit", 178 "settings.navigation.logout" : "OdhlĂ¡sit",
159 "settings.navigation.settings" : "NastavenĂ­", 179 "settings.navigation.settings" : "NastavenĂ­",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Vaše služby", 181 "settings.navigation.yourServices" : "Vaše služby",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Všechny služby", 183 "settings.recipes.all" : "Všechny služby",
162 "settings.recipes.dev" : "VĂ½voj", 184 "settings.recipes.dev" : "VĂ½voj",
163 "settings.recipes.headline" : "DostupnĂ© služby", 185 "settings.recipes.headline" : "DostupnĂ© služby",
@@ -179,7 +201,7 @@
179 "settings.service.form.editServiceHeadline" : "Upravit {name}", 201 "settings.service.form.editServiceHeadline" : "Upravit {name}",
180 "settings.service.form.enableAudio" : "Zapnout zvuk", 202 "settings.service.form.enableAudio" : "Zapnout zvuk",
181 "settings.service.form.enableBadge" : "UkĂ¡zat odznaky nepÅ™eÄtenĂ½ch zprĂ¡v", 203 "settings.service.form.enableBadge" : "UkĂ¡zat odznaky nepÅ™eÄtenĂ½ch zprĂ¡v",
182 "settings.service.form.enableDarkMode" : "Enable Dark Mode", 204 "settings.service.form.enableDarkMode" : "Povolit TmavĂ½ vzhled",
183 "settings.service.form.enableNotification" : "Povolit upozornění", 205 "settings.service.form.enableNotification" : "Povolit upozornění",
184 "settings.service.form.enableService" : "Povolit službu", 206 "settings.service.form.enableService" : "Povolit službu",
185 "settings.service.form.headlineBadges" : "Odznaky nepÅ™eÄtenĂ½ch zprĂ¡v", 207 "settings.service.form.headlineBadges" : "Odznaky nepÅ™eÄtenĂ½ch zprĂ¡v",
@@ -192,7 +214,7 @@
192 "settings.service.form.indirectMessages" : "Zobrazovat znak zprĂ¡vy pro vÅ¡echny novĂ© zprĂ¡vy", 214 "settings.service.form.indirectMessages" : "Zobrazovat znak zprĂ¡vy pro vÅ¡echny novĂ© zprĂ¡vy",
193 "settings.service.form.isMutedInfo" : "Pokud je vypnuto, vÅ¡echny zvuky notifikacĂ­ a jinĂ©ho audia budou ztiÅ¡eny", 215 "settings.service.form.isMutedInfo" : "Pokud je vypnuto, vÅ¡echny zvuky notifikacĂ­ a jinĂ©ho audia budou ztiÅ¡eny",
194 "settings.service.form.name" : "Jméno", 216 "settings.service.form.name" : "Jméno",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "NastavenĂ­ HTTP\/HTTPS Proxy",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Use Proxy",
@@ -201,8 +223,6 @@
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "User (optional)",
203 "settings.service.form.saveButton" : "Uložit službu", 225 "settings.service.form.saveButton" : "Uložit službu",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "HostovĂ¡no", 226 "settings.service.form.tabHosted" : "HostovĂ¡no",
207 "settings.service.form.tabOnPremise" : "SamostatnÄ› hostovanĂ© â­ï¸", 227 "settings.service.form.tabOnPremise" : "SamostatnÄ› hostovanĂ© â­ï¸",
208 "settings.service.form.team" : "TĂ½m", 228 "settings.service.form.team" : "TĂ½m",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Objevte služby", 232 "settings.services.discoverServices" : "Objevte služby",
213 "settings.services.headline" : "Vaše služby", 233 "settings.services.headline" : "Vaše služby",
214 "settings.services.noServicesAdded" : "Doposud jste nepÅ™idali Å¾Ă¡dnĂ© služby.", 234 "settings.services.noServicesAdded" : "Doposud jste nepÅ™idali Å¾Ă¡dnĂ© služby.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Služba je zakĂ¡zĂ¡na", 236 "settings.services.tooltip.isDisabled" : "Služba je zakĂ¡zĂ¡na",
216 "settings.services.tooltip.isMuted" : "Všechny zvuky jsou ztišeny", 237 "settings.services.tooltip.isMuted" : "Všechny zvuky jsou ztišeny",
217 "settings.services.tooltip.notificationsDisabled" : "OznĂ¡menĂ­ jsou zakĂ¡zĂ¡na", 238 "settings.services.tooltip.notificationsDisabled" : "OznĂ¡menĂ­ jsou zakĂ¡zĂ¡na",
218 "settings.services.updatedInfo" : "Vaše změny byly uloženy", 239 "settings.services.updatedInfo" : "Vaše změny byly uloženy",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "TĂ½m",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "SpoleÄnost", 246 "settings.user.form.accountType.company" : "SpoleÄnost",
220 "settings.user.form.accountType.individual" : "Jednotlivec", 247 "settings.user.form.accountType.individual" : "Jednotlivec",
221 "settings.user.form.accountType.label" : "Druh ĂºÄtu", 248 "settings.user.form.accountType.label" : "Druh ĂºÄtu",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Jméno", 252 "settings.user.form.firstname" : "Jméno",
226 "settings.user.form.lastname" : "PÅ™Ă­jmenĂ­", 253 "settings.user.form.lastname" : "PÅ™Ă­jmenĂ­",
227 "settings.user.form.newPassword" : "Nové heslo", 254 "settings.user.form.newPassword" : "Nové heslo",
255 "settings.workspace.add.form.name" : "Jméno",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Jméno",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Zkusit opět",
266 "settings.workspaces.updatedInfo" : "Vaše změny byly uloženy",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Přidat novou službu", 270 "sidebar.addNewService" : "Přidat novou službu",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Vypnout upozornění a zvuky", 272 "sidebar.muteApp" : "Vypnout upozornění a zvuky",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "NastavenĂ­", 274 "sidebar.settings" : "NastavenĂ­",
231 "sidebar.unmuteApp" : "Zapnout upozornění a zvuky", 275 "sidebar.unmuteApp" : "Zapnout upozornění a zvuky",
232 "signup.company.label" : "SpoleÄnost", 276 "signup.company.label" : "SpoleÄnost",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Pro obyvatelĂ© EU: mohou bĂ½t aplikovĂ¡ny lokĂ¡lnĂ­ danÄ›", 288 "subscription.euTaxInfo" : "Pro obyvatelĂ© EU: mohou bĂ½t aplikovĂ¡ny lokĂ¡lnĂ­ danÄ›",
245 "subscription.features.ads" : "Å½Ă¡dnĂ© reklamy, nikdy!", 289 "subscription.features.ads" : "Å½Ă¡dnĂ© reklamy, nikdy!",
246 "subscription.features.comingSoon" : "již brzy", 290 "subscription.features.comingSoon" : "již brzy",
247 "subscription.features.encryptedSync" : "Å ifrovanĂ¡ synchronizace relacĂ­",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 291 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
249 "subscription.features.onpremise" : "PÅ™idat hostovanĂ© služby jako HipChat",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services", 293 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Support for spellchecker",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "PlacenĂ½ ĂºÄet Premium Supporter Franz zahrnuje", 296 "subscription.includedFeatures" : "PlacenĂ½ ĂºÄet Premium Supporter Franz zahrnuje",
254 "subscription.paymentSessionError" : "Nebylo možnĂ© inicializovat platbu od", 297 "subscription.paymentSessionError" : "Nebylo možnĂ© inicializovat platbu od",
255 "subscription.submit.label" : "Chci podpoÅ™it vĂ½voj aplikace Franz", 298 "subscription.submit.label" : "Chci podpoÅ™it vĂ½voj aplikace Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Obnovit", 312 "tabs.item.reload" : "Obnovit",
270 "validation.email" : "{field} nenĂ­ validnĂ­", 313 "validation.email" : "{field} nenĂ­ validnĂ­",
271 "validation.minLength" : "{field} musĂ­ bĂ½t alespoň {length} znaků dlouhĂ©", 314 "validation.minLength" : "{field} musĂ­ bĂ½t alespoň {length} znaků dlouhĂ©",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} je povinné", 316 "validation.required" : "{field} je povinné",
273 "validation.url" : "{field} nenĂ­ validnĂ­ URL", 317 "validation.url" : "{field} nenĂ­ validnĂ­ URL",
274 "welcome.loginButton" : "PÅ™ihlĂ¡Å¡enĂ­ do vaÅ¡eho ĂºÄtu", 318 "welcome.loginButton" : "PÅ™ihlĂ¡Å¡enĂ­ do vaÅ¡eho ĂºÄtu",
275 "welcome.signupButton" : "VytvoÅ™it ĂºÄet zdarma", 319 "welcome.signupButton" : "VytvoÅ™it ĂºÄet zdarma",
276 "welcome.slogan" : "ZprĂ¡vy, kterĂ© pracujĂ­ pro vĂ¡s" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Všechny služby",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index b5abb56d4..bd5193177 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -1,30 +1,42 @@
1{ 1{
2 "app.errorHandler.action" : "Neuladen", 2 "app.errorHandler.action" : "Neu laden",
3 "app.errorHandler.headline" : "Es trat ein Fehler auf", 3 "app.errorHandler.headline" : "Es ist ein Fehler aufgetreten",
4 "feature.delayApp.action" : "Upgrade deinen Account", 4 "feature.announcements.changelog.headline" : "Was ist neu in Franz {version}",
5 "feature.delayApp.headline" : "Erspare dir das Warten mit einer Franz Supporter Lizenz", 5 "feature.delayApp.action" : "Hol dir Franz Premium!",
6 "feature.delayApp.text" : "Es geht in {seconds} Sekunden weiter.", 6 "feature.delayApp.headline" : "Erspare dir das Warten mit Franz Premium!",
7 "global.api.unhealthy" : "Verbindung mit dem Franz Online Service fehlgeschlagen", 7 "feature.delayApp.text" : "In {seconds} Sekunden geht's weiter!",
8 "feature.shareFranz.action.email" : "Als E-Mail senden",
9 "feature.shareFranz.action.facebook" : "Auf Facebook teilen",
10 "feature.shareFranz.action.twitter" : "Auf Twitter teilen",
11 "feature.shareFranz.headline" : "Gemeinsam ist Franz noch besser!",
12 "feature.shareFranz.shareText.email" : "Ich verwende Franz! Hol dir jetzt die kostenlose App fĂ¼r WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "Ich habe {count} Services zu Franz hinzugefĂ¼gt! Hol dir die kostenlose App fĂ¼r WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Bitte erzähle deinen Freunden und Kolleginnen, warum du Franz toll findest.",
15 "global.api.unhealthy" : "Verbindung zum Franz Online Service fehlgeschlagen",
8 "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", 16 "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.",
9 "import.headline" : "Deine Franz 4 Dienste importieren", 17 "global.spellchecker.useDefault" : "Standard benutzen ({default})",
18 "global.spellchecking.autodetect" : "Sprache automatisch erkennen",
19 "global.spellchecking.autodetect.short" : "Automatisch",
20 "global.spellchecking.language" : "Sprache fĂ¼r RechtschreibprĂ¼fung",
21 "import.headline" : "Deine Franz-4-Dienste importieren",
10 "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstĂ¼tzt werden", 22 "import.notSupportedHeadline" : "Dienste, die noch nicht von Franz 5 unterstĂ¼tzt werden",
11 "import.skip.label" : "Ich möchte Dienste selbst hinzufĂ¼gen", 23 "import.skip.label" : "Ich möchte Dienste selbst hinzufĂ¼gen",
12 "import.submit.label" : "Dienste importieren", 24 "import.submit.label" : "Dienste importieren",
13 "infobar.buttonChangelog" : "Was ist neu?", 25 "infobar.buttonChangelog" : "Was gibt es Neues?",
14 "infobar.buttonInstallUpdate" : "Neu starten & Update installieren", 26 "infobar.buttonInstallUpdate" : "Neu starten & Update installieren",
15 "infobar.buttonReloadServices" : "Dienste neuladen", 27 "infobar.buttonReloadServices" : "Dienste neu laden",
16 "infobar.requiredRequestsFailed" : "Dienste und Benutzerinformationen konnten nicht geladen werden", 28 "infobar.requiredRequestsFailed" : "Dienste und Benutzerinformationen konnten nicht geladen werden",
17 "infobar.servicesUpdated" : "Deine Dienste wurden aktualisiert.", 29 "infobar.servicesUpdated" : "Deine Dienste wurden aktualisiert.",
18 "infobar.updateAvailable" : "Eine neue Version von Franz ist verfĂ¼gbar.", 30 "infobar.updateAvailable" : "Eine neue Version von Franz ist verfĂ¼gbar!",
19 "invite.email.label" : "E-Mail-Adresse", 31 "invite.email.label" : "E-Mail-Adresse",
20 "invite.headline.friends" : "Lade 3 Freunde oder Kollegen ein", 32 "invite.headline.friends" : "Lade drei Freunde oder Kolleginnen ein!",
21 "invite.name.label" : "Name", 33 "invite.name.label" : "Name",
22 "invite.skip.label" : "Ich möchte das später tun", 34 "invite.skip.label" : "Jetzt nicht! Ich möchte das später tun.",
23 "invite.submit.label" : "Einladungen schicken", 35 "invite.submit.label" : "Einladungen schicken",
24 "invite.successInfo" : "Die Einladungen wurden erfolgreich gesendet.", 36 "invite.successInfo" : "Die Einladungen wurden erfolgreich versendet.",
25 "login.email.label" : "E-Mail-Adresse", 37 "login.email.label" : "E-Mail-Adresse",
26 "login.headline" : "Anmelden", 38 "login.headline" : "Anmelden",
27 "login.invalidCredentials" : "E-Mail Adresse oder Passwort ungĂ¼ltig", 39 "login.invalidCredentials" : "E-Mail-Adresse oder Passwort ungĂ¼ltig",
28 "login.link.password" : "Passwort zurĂ¼cksetzen", 40 "login.link.password" : "Passwort zurĂ¼cksetzen",
29 "login.link.signup" : "Kostenloses Konto erstellen", 41 "login.link.signup" : "Kostenloses Konto erstellen",
30 "login.password.label" : "Passwort", 42 "login.password.label" : "Passwort",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Anmelden", 44 "login.submit.label" : "Anmelden",
33 "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", 45 "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.",
34 "menu.app.about" : "Ăœber Franz", 46 "menu.app.about" : "Ăœber Franz",
47 "menu.app.announcement" : "Was ist neu?",
35 "menu.app.hide" : "Ausblenden", 48 "menu.app.hide" : "Ausblenden",
36 "menu.app.hideOthers" : "Andere ausblenden", 49 "menu.app.hideOthers" : "Andere ausblenden",
37 "menu.app.quit" : "Beenden", 50 "menu.app.quit" : "Beenden",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Hilfe", 72 "menu.help.support" : "Hilfe",
60 "menu.help.tos" : "Nutzungsbedingungen", 73 "menu.help.tos" : "Nutzungsbedingungen",
61 "menu.services" : "Dienste", 74 "menu.services" : "Dienste",
75 "menu.services.activatePreviousService" : "Vorheriger Dienst",
62 "menu.services.addNewService" : "Dienst hinzufĂ¼gen", 76 "menu.services.addNewService" : "Dienst hinzufĂ¼gen",
77 "menu.services.setNextServiceActive" : "Nächster Dienst",
63 "menu.view" : "Darstellung", 78 "menu.view" : "Darstellung",
64 "menu.view.enterFullScreen" : "Vollbildmodus", 79 "menu.view.enterFullScreen" : "Vollbildmodus",
65 "menu.view.exitFullScreen" : "Vollbildmodus aus", 80 "menu.view.exitFullScreen" : "Vollbildmodus aus",
@@ -74,9 +89,14 @@
74 "menu.window" : "Fenster", 89 "menu.window" : "Fenster",
75 "menu.window.close" : "SchlieĂŸen", 90 "menu.window.close" : "SchlieĂŸen",
76 "menu.window.minimize" : "Minimieren", 91 "menu.window.minimize" : "Minimieren",
77 "password.email.label" : "E-Mail Adresse", 92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Neuen Workspace hinzufĂ¼gen",
94 "menu.workspaces.closeWorkspaceDrawer" : "Workspaces öffnen",
95 "menu.workspaces.defaultWorkspace" : "Alle Dienste",
96 "menu.workspaces.openWorkspaceDrawer" : "Workspaces schlieĂŸen",
97 "password.email.label" : "E-Mail-Adresse",
78 "password.headline" : "Passwort zurĂ¼cksetzen", 98 "password.headline" : "Passwort zurĂ¼cksetzen",
79 "password.link.login" : "An Deinem Konto anmelden", 99 "password.link.login" : "Mit deinem Konto anmelden",
80 "password.link.signup" : "Kostenloses Konto erstellen", 100 "password.link.signup" : "Kostenloses Konto erstellen",
81 "password.noUser" : "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.", 101 "password.noUser" : "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.",
82 "password.submit.label" : "Absenden", 102 "password.submit.label" : "Absenden",
@@ -86,28 +106,29 @@
86 "pricing.link.skipPayment" : "Ich möchte die Entwicklung von Franz nicht unterstĂ¼tzen.", 106 "pricing.link.skipPayment" : "Ich möchte die Entwicklung von Franz nicht unterstĂ¼tzen.",
87 "pricing.submit.label" : "Ich möchte die Entwicklung von Franz unterstĂ¼tzen.", 107 "pricing.submit.label" : "Ich möchte die Entwicklung von Franz unterstĂ¼tzen.",
88 "pricing.support.label" : "Wie möchtest Du Franz unterstĂ¼tzen?", 108 "pricing.support.label" : "Wie möchtest Du Franz unterstĂ¼tzen?",
89 "service.crashHandler.action" : "{name} neuladen", 109 "service.crashHandler.action" : "{name} neu laden",
90 "service.crashHandler.autoReload" : "{name} wird in {seconds} Sekunden automatisch wiederhergestellt", 110 "service.crashHandler.autoReload" : "{name} wird in {seconds} Sekunden automatisch wiederhergestellt",
91 "service.crashHandler.headline" : "Oh nein!", 111 "service.crashHandler.headline" : "Oh nein!",
92 "service.crashHandler.text" : "{name} hat einen Fehler verursacht.", 112 "service.crashHandler.text" : "{name} hat einen Fehler verursacht.",
93 "service.disabledHandler.action" : "{name} aktivieren", 113 "service.disabledHandler.action" : "{name} aktivieren",
94 "service.disabledHandler.headline" : "{name} ist deaktiviert", 114 "service.disabledHandler.headline" : "{name} ist deaktiviert",
95 "service.errorHandler.action" : "{name} neuladen", 115 "service.errorHandler.action" : "{name} neu laden",
96 "service.errorHandler.editAction" : "{name} bearbeiten", 116 "service.errorHandler.editAction" : "{name} bearbeiten",
97 "service.errorHandler.headline" : "Oh nein!", 117 "service.errorHandler.headline" : "Oh nein!",
98 "service.errorHandler.message" : "Fehler", 118 "service.errorHandler.message" : "Fehler",
99 "service.errorHandler.text" : "{name} konnte nicht geladen werden.", 119 "service.errorHandler.text" : "{name} konnte nicht geladen werden.",
100 "services.getStarted" : "Loslegen", 120 "service.webviewLoader.loading" : "Lade",
101 "services.welcome" : "Willkommen bei Franz.", 121 "services.getStarted" : "Los geht's!",
122 "services.welcome" : "Willkommen bei Franz!",
102 "settings.account.account.editButton" : "Konto bearbeiten", 123 "settings.account.account.editButton" : "Konto bearbeiten",
103 "settings.account.accountType.basic" : "Basis Konto", 124 "settings.account.accountType.basic" : "Basis-Konto",
104 "settings.account.accountType.premium" : "Premium-Supporter Konto", 125 "settings.account.accountType.premium" : "Premium Lizenz",
105 "settings.account.buttonSave" : "Profil aktualisieren", 126 "settings.account.buttonSave" : "Profil aktualisieren",
106 "settings.account.deleteAccount" : "Benutzerkonto löschen", 127 "settings.account.deleteAccount" : "Benutzerkonto löschen",
107 "settings.account.deleteEmailSent" : "Du hast eine Email zur Bestätigung der Löschung Deines Benutzerkontos erhalten. Dein Benutzerkonto und Deine Daten können nach der Löschung nicht wiederhergestellt werden!", 128 "settings.account.deleteEmailSent" : "Du hast eine E-Mail zur Bestätigung der Löschung Deines Benutzerkontos erhalten. Dein Benutzerkonto und Deine Daten können nach der Löschung nicht wiederhergestellt werden!",
108 "settings.account.deleteInfo" : "Wenn du dein Franz Benutzerkonto nicht mehr länger benötigst, kannst du hier deinen Account und alle dazugehörigen Daten löschen.", 129 "settings.account.deleteInfo" : "Wenn du dein Franz-Benutzerkonto nicht mehr länger benötigst, kannst du es hier mit allen dazugehörigen Daten löschen.",
109 "settings.account.headline" : "Konto", 130 "settings.account.headline" : "Konto",
110 "settings.account.headlineAccount" : "Konto Informationen", 131 "settings.account.headlineAccount" : "Konto-Informationen",
111 "settings.account.headlineDangerZone" : "Benutzerkonto löschen", 132 "settings.account.headlineDangerZone" : "Benutzerkonto löschen",
112 "settings.account.headlineInvoices" : "Rechnungen", 133 "settings.account.headlineInvoices" : "Rechnungen",
113 "settings.account.headlinePassword" : "Passwort ändern", 134 "settings.account.headlinePassword" : "Passwort ändern",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Herunterladen", 138 "settings.account.invoiceDownload" : "Herunterladen",
118 "settings.account.manageSubscription.label" : "Dein Abonnement verwalten", 139 "settings.account.manageSubscription.label" : "Dein Abonnement verwalten",
119 "settings.account.successInfo" : "Deine Ă„nderungen wurden gespeichert", 140 "settings.account.successInfo" : "Deine Ă„nderungen wurden gespeichert",
141 "settings.account.tryReloadServices" : "Erneut versuchen",
120 "settings.account.tryReloadUserInfoRequest" : "Erneut versuchen", 142 "settings.account.tryReloadUserInfoRequest" : "Erneut versuchen",
121 "settings.account.userInfoRequestFailed" : "Benutzerinformationen konnten nicht geladen werden", 143 "settings.account.userInfoRequestFailed" : "Benutzerinformationen konnten nicht geladen werden",
122 "settings.app.buttonClearAllCache" : "Cache leeren", 144 "settings.app.buttonClearAllCache" : "Cache leeren",
@@ -127,43 +149,43 @@
127 "settings.app.form.autoLaunchInBackground" : "Im Hintergrund öffnen", 149 "settings.app.form.autoLaunchInBackground" : "Im Hintergrund öffnen",
128 "settings.app.form.autoLaunchOnStart" : "Franz beim Systemstart ausfĂ¼hren", 150 "settings.app.form.autoLaunchOnStart" : "Franz beim Systemstart ausfĂ¼hren",
129 "settings.app.form.beta" : "Beta-Versionen einbeziehen", 151 "settings.app.form.beta" : "Beta-Versionen einbeziehen",
130 "settings.app.form.darkMode" : "Die dunkle Seite erwartet dich (Dark Mode)", 152 "settings.app.form.darkMode" : "Die dunkle Seite erwartet dich! (Dark Mode)",
131 "settings.app.form.enableGPUAcceleration" : "Hardwarebeschleunigung aktivieren", 153 "settings.app.form.enableGPUAcceleration" : "Hardwarebeschleunigung aktivieren",
132 "settings.app.form.enableMenuBar" : "Franz in MenĂ¼leiste anzeigen",
133 "settings.app.form.enableSpellchecking" : "RechtschreibprĂ¼fung aktivieren", 154 "settings.app.form.enableSpellchecking" : "RechtschreibprĂ¼fung aktivieren",
134 "settings.app.form.enableSystemTray" : "Franz im Infobereich anzeigen", 155 "settings.app.form.enableSystemTray" : "Franz im Infobereich anzeigen",
135 "settings.app.form.hideDockIcon" : "Franz Icon im Dock ausblenden",
136 "settings.app.form.language" : "Sprache", 156 "settings.app.form.language" : "Sprache",
137 "settings.app.form.minimizeToSystemTray" : "Franz in den Infobereich minimieren", 157 "settings.app.form.minimizeToSystemTray" : "Franz in den Infobereich minimieren",
138 "settings.app.form.runInBackground" : "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird", 158 "settings.app.form.runInBackground" : "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird",
139 "settings.app.form.showDisabledServices" : "Deaktivierte Services-Tabs anzeigen", 159 "settings.app.form.showDisabledServices" : "Deaktivierte Services-Tabs anzeigen",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Ungelesene Nachrichten zeigen, wenn die Benachrichtigungen deaktiviert sind", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Ungelesene Nachrichten zeigen, wenn die Benachrichtigungen deaktiviert sind",
141 "settings.app.form.spellcheckerLanguage" : "Sprache fĂ¼r RechtschreibprĂ¼fung",
142 "settings.app.headline" : "Einstellungen", 161 "settings.app.headline" : "Einstellungen",
143 "settings.app.headlineAdvanced" : "Erweitert", 162 "settings.app.headlineAdvanced" : "Erweitert",
144 "settings.app.headlineAppearance" : "Darstellung", 163 "settings.app.headlineAppearance" : "Darstellung",
145 "settings.app.headlineGeneral" : "Allgemeines", 164 "settings.app.headlineGeneral" : "Allgemeines",
146 "settings.app.headlineLanguage" : "Sprache", 165 "settings.app.headlineLanguage" : "Sprache",
147 "settings.app.headlineUpdates" : "Updates", 166 "settings.app.headlineUpdates" : "Updates",
167 "settings.app.languageDisclaimer" : "Offizielle Ăœbersetzungen: Englisch & Deutsch. Alle anderen Sprachen sind Ăœbersetzungen der Franz Community.",
148 "settings.app.restartRequired" : "Ă„nderungen werden erst nach einem Neustart wirksam.", 168 "settings.app.restartRequired" : "Ă„nderungen werden erst nach einem Neustart wirksam.",
149 "settings.app.subheadlineCache" : "Cache", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Hilf uns, Franz in Deine Sprache zu Ă¼bersetzen.", 170 "settings.app.translationHelp" : "Hilf uns, Franz in Deine Sprache zu Ă¼bersetzen.",
151 "settings.app.updateStatusAvailable" : "Update verfĂ¼gbar, lädt herunter...", 171 "settings.app.updateStatusAvailable" : "Update verfĂ¼gbar, lädt herunter ...",
152 "settings.app.updateStatusSearching" : "Suche nach Updates", 172 "settings.app.updateStatusSearching" : "Suche nach Updates",
153 "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Franz", 173 "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Franz",
154 "settings.invite.headline" : "Lade 3 Deiner Freunde ein", 174 "settings.invite.headline" : "Lade drei Deiner Freunde ein",
155 "settings.navigation.account" : "Konto", 175 "settings.navigation.account" : "Konto",
156 "settings.navigation.availableServices" : "VerfĂ¼gbare Dienste", 176 "settings.navigation.availableServices" : "VerfĂ¼gbare Dienste",
157 "settings.navigation.inviteFriends" : "Freunde einladen", 177 "settings.navigation.inviteFriends" : "Freunde einladen",
158 "settings.navigation.logout" : "Abmelden", 178 "settings.navigation.logout" : "Abmelden",
159 "settings.navigation.settings" : "Einstellungen", 179 "settings.navigation.settings" : "Einstellungen",
180 "settings.navigation.team" : "Team verwalten",
160 "settings.navigation.yourServices" : "Deine Dienste", 181 "settings.navigation.yourServices" : "Deine Dienste",
182 "settings.navigation.yourWorkspaces" : "Deine Workspaces",
161 "settings.recipes.all" : "Alle Dienste", 183 "settings.recipes.all" : "Alle Dienste",
162 "settings.recipes.dev" : "Entwicklung", 184 "settings.recipes.dev" : "Entwicklung",
163 "settings.recipes.headline" : "VerfĂ¼gbare Dienste", 185 "settings.recipes.headline" : "VerfĂ¼gbare Dienste",
164 "settings.recipes.missingService" : "Fehlt ein Dienst?", 186 "settings.recipes.missingService" : "Fehlt ein Dienst?",
165 "settings.recipes.mostPopular" : "Am beliebtesten", 187 "settings.recipes.mostPopular" : "Am beliebtesten",
166 "settings.recipes.nothingFound" : "Entschuldigung, aber der von Dir gesuchte Dienst konnte nicht gefunden werden.", 188 "settings.recipes.nothingFound" : "Entschuldigung, der gesuchte Dienst konnte nicht gefunden werden.",
167 "settings.recipes.servicesSuccessfulAddedInfo" : "Dienst erfolgreich hinzugefĂ¼gt", 189 "settings.recipes.servicesSuccessfulAddedInfo" : "Dienst erfolgreich hinzugefĂ¼gt",
168 "settings.searchService" : "Dienst suchen", 190 "settings.searchService" : "Dienst suchen",
169 "settings.service.error.goBack" : "ZurĂ¼ck zu den Diensten", 191 "settings.service.error.goBack" : "ZurĂ¼ck zu den Diensten",
@@ -172,7 +194,7 @@
172 "settings.service.form.addServiceHeadline" : "{name} hinzufĂ¼gen", 194 "settings.service.form.addServiceHeadline" : "{name} hinzufĂ¼gen",
173 "settings.service.form.availableServices" : "VerfĂ¼gbare Dienste", 195 "settings.service.form.availableServices" : "VerfĂ¼gbare Dienste",
174 "settings.service.form.customUrl" : "Eigener Server", 196 "settings.service.form.customUrl" : "Eigener Server",
175 "settings.service.form.customUrlPremiumInfo" : "Um einen selbst gehosteten Dienst hinzuzufĂ¼gen, brauchst Du ein Franz Premium-Supporter Konto.", 197 "settings.service.form.customUrlPremiumInfo" : "Um einen selbst gehosteten Dienst hinzuzufĂ¼gen, brauchst Du ein Franz Premium Konto.",
176 "settings.service.form.customUrlUpgradeAccount" : "Dein Konto upgraden", 198 "settings.service.form.customUrlUpgradeAccount" : "Dein Konto upgraden",
177 "settings.service.form.customUrlValidationError" : "Dein {name}-Server konnte nicht verifiziert werden.", 199 "settings.service.form.customUrlValidationError" : "Dein {name}-Server konnte nicht verifiziert werden.",
178 "settings.service.form.deleteButton" : "Dienst löschen", 200 "settings.service.form.deleteButton" : "Dienst löschen",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Nachrichten-Badge fĂ¼r alle neuen Nachrichten anzeigen", 214 "settings.service.form.indirectMessages" : "Nachrichten-Badge fĂ¼r alle neuen Nachrichten anzeigen",
193 "settings.service.form.isMutedInfo" : "Sämtliche Wiedergabe von Tönen wird deaktiviert", 215 "settings.service.form.isMutedInfo" : "Sämtliche Wiedergabe von Tönen wird deaktiviert",
194 "settings.service.form.name" : "Name", 216 "settings.service.form.name" : "Name",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Einstellungen", 217 "settings.service.form.proxy.headline" : "HTTP-\/HTTPS-Proxy-Einstellungen",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy Einstellungen werden nicht mit den Franz Servern synchronisiert.", 219 "settings.service.form.proxy.info" : "Proxy-Einstellungen werden nicht mit den Franz Servern synchronisiert.",
198 "settings.service.form.proxy.isEnabled" : "Proxy Server verwenden", 220 "settings.service.form.proxy.isEnabled" : "Proxy-Server verwenden",
199 "settings.service.form.proxy.password" : "Passwort (optional)", 221 "settings.service.form.proxy.password" : "Passwort (optional)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Port",
201 "settings.service.form.proxy.restartInfo" : "Bitte starte Franz nach dem Ă„ndern der Proxy Einstellungen neu.", 223 "settings.service.form.proxy.restartInfo" : "Bitte starte Franz nach dem Ă„ndern der Proxy-Einstellungen neu.",
202 "settings.service.form.proxy.user" : "Benutzer (optional)", 224 "settings.service.form.proxy.user" : "Benutzer (optional)",
203 "settings.service.form.saveButton" : "Dienst speichern", 225 "settings.service.form.saveButton" : "Dienst speichern",
204 "settings.service.form.spellcheckerLanguage" : "Sprache fĂ¼r RechtschreibprĂ¼fung",
205 "settings.service.form.spellcheckerLanguage.default" : "Standard benutzen ({default})",
206 "settings.service.form.tabHosted" : "Gehostet", 226 "settings.service.form.tabHosted" : "Gehostet",
207 "settings.service.form.tabOnPremise" : "Selbst gehostet â­ï¸", 227 "settings.service.form.tabOnPremise" : "Selbst gehostet â­ï¸",
208 "settings.service.form.team" : "Team", 228 "settings.service.form.team" : "Team",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Dienste entdecken", 232 "settings.services.discoverServices" : "Dienste entdecken",
213 "settings.services.headline" : "Deine Dienste", 233 "settings.services.headline" : "Deine Dienste",
214 "settings.services.noServicesAdded" : "Du hast noch keine Dienste hinzugefĂ¼gt.", 234 "settings.services.noServicesAdded" : "Du hast noch keine Dienste hinzugefĂ¼gt.",
235 "settings.services.servicesRequestFailed" : "Dienste konnten nicht geladen werden",
215 "settings.services.tooltip.isDisabled" : "Dienst ist deaktiviert", 236 "settings.services.tooltip.isDisabled" : "Dienst ist deaktiviert",
216 "settings.services.tooltip.isMuted" : "Alle Töne sind deaktiviert", 237 "settings.services.tooltip.isMuted" : "Alle Töne sind deaktiviert",
217 "settings.services.tooltip.notificationsDisabled" : "Benachrichtigungen deaktiviert", 238 "settings.services.tooltip.notificationsDisabled" : "Benachrichtigungen deaktiviert",
218 "settings.services.updatedInfo" : "Deine Ă„nderungen wurden gespeichert", 239 "settings.services.updatedInfo" : "Deine Ă„nderungen wurden gespeichert",
240 "settings.team.contentHeadline" : "Franz fĂ¼r Teams",
241 "settings.team.copy" : "Mit Franz fĂ¼r Teams kannst du Kolleginnen und Kollegen per Email-Invite in dein Team einladen und ihre Abonnments in den Einstellungen deines Accounts verwalten. Verschwende keine Zeit mehr damit, Lizenzen fĂ¼r jedes Teammitglied einzeln einzurichten, vergiss mehrfache Rechnungen und unterschiedliche Abrechnungszeiträume - alles unter einem Dach.",
242 "settings.team.headline" : "Team",
243 "settings.team.intro" : "Mit Franz fĂ¼r Teams kannst du Premium Lizenzen fĂ¼r Kolleginnen und Kollegen oder Freunde und Familienmitglieder kaufen und verwalten - so viele du willst.",
244 "settings.team.manageAction" : "Verwalte dein Team auf meetfranz.com",
245 "settings.team.upgradeAction" : "Account Upgrade durchfĂ¼hren",
219 "settings.user.form.accountType.company" : "Firma", 246 "settings.user.form.accountType.company" : "Firma",
220 "settings.user.form.accountType.individual" : "Einzelperson", 247 "settings.user.form.accountType.individual" : "Einzelperson",
221 "settings.user.form.accountType.label" : "Konto-Typ", 248 "settings.user.form.accountType.label" : "Konto-Typ",
@@ -225,32 +252,48 @@
225 "settings.user.form.firstname" : "Vorname", 252 "settings.user.form.firstname" : "Vorname",
226 "settings.user.form.lastname" : "Nachname", 253 "settings.user.form.lastname" : "Nachname",
227 "settings.user.form.newPassword" : "Neues Passwort", 254 "settings.user.form.newPassword" : "Neues Passwort",
255 "settings.workspace.add.form.name" : "Name",
256 "settings.workspace.add.form.submitButton" : "Workspace erstellen",
257 "settings.workspace.form.buttonDelete" : "Workspace löschen",
258 "settings.workspace.form.buttonSave" : "Workspace speichern",
259 "settings.workspace.form.name" : "Name",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in diesem Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Deine Workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace wurde gelöscht",
263 "settings.workspaces.headline" : "Deine Workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "Du hast noch keine Workspaces hinzugefĂ¼gt",
265 "settings.workspaces.tryReloadWorkspaces" : "Erneut versuchen",
266 "settings.workspaces.updatedInfo" : "Deine Ă„nderungen wurden gespeichert",
267 "settings.workspaces.workspaceFeatureHeadline" : "Weniger ist mehr: Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Mit Franz Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.",
269 "settings.workspaces.workspacesRequestFailed" : "Workspaces konnte nicht geladen werden",
228 "sidebar.addNewService" : "Neuen Dienst hinzufĂ¼gen", 270 "sidebar.addNewService" : "Neuen Dienst hinzufĂ¼gen",
271 "sidebar.closeWorkspaceDrawer" : "Workspaces schlieĂŸen",
229 "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren", 272 "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren",
273 "sidebar.openWorkspaceDrawer" : "Workspaces öffnen",
230 "sidebar.settings" : "Einstellungen", 274 "sidebar.settings" : "Einstellungen",
231 "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren", 275 "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren",
232 "signup.company.label" : "Firma", 276 "signup.company.label" : "Firma",
233 "signup.email.label" : "E-Mail Adresse", 277 "signup.email.label" : "E-Mail-Adresse",
234 "signup.emailDuplicate" : "Es existiert bereits ein Benutzer mit dieser E-Mail Adresse.", 278 "signup.emailDuplicate" : "Es existiert bereits ein Benutzer mit dieser E-Mail Adresse.",
235 "signup.firstname.label" : "Vorname", 279 "signup.firstname.label" : "Vorname",
236 "signup.headline" : "Anmelden", 280 "signup.headline" : "Anmelden",
237 "signup.lastname.label" : "Nachname", 281 "signup.lastname.label" : "Nachname",
238 "signup.legal.info" : "Mit der Erstellung eines Franz Kontos akzeptierst Du die", 282 "signup.legal.info" : "Mit der Erstellung eines Franz-Kontos akzeptierst Du die",
239 "signup.legal.privacy" : "Datenschutzerklärung", 283 "signup.legal.privacy" : "Datenschutzerklärung",
240 "signup.legal.terms" : "Nutzungsbedingungen", 284 "signup.legal.terms" : "Nutzungsbedingungen",
241 "signup.link.login" : "Du hast bereits ein Konto? Melde Dich an.", 285 "signup.link.login" : "Du hast bereits ein Konto? Melde Dich an.",
242 "signup.password.label" : "Passwort", 286 "signup.password.label" : "Passwort",
243 "signup.submit.label" : "Konto erstellen", 287 "signup.submit.label" : "Konto erstellen",
244 "subscription.euTaxInfo" : "Preise sind exklusive Steuern.", 288 "subscription.euTaxInfo" : "Preise zuzĂ¼glich allfälliger Steuern",
245 "subscription.features.ads" : "Werbefrei auf Lebenszeit!", 289 "subscription.features.ads" : "Werbefrei auf Lebenszeit!",
246 "subscription.features.comingSoon" : "folgt bald", 290 "subscription.features.comingSoon" : "folgt bald",
247 "subscription.features.encryptedSync" : "VerschlĂ¼sselte Sitzungs-Synchronisation", 291 "subscription.features.noInterruptions" : "Verwende Franz ohne Wartezeiten",
248 "subscription.features.noInterruptions" : "Keine Wartezeiten um Franz zu verwenden", 292 "subscription.features.onpremise.mattermost" : "Integration von gehosteten Diensten wie Mattermost",
249 "subscription.features.onpremise" : "Integration von gehosteten Diensten, wie HipChat",
250 "subscription.features.onpremise.mattermost" : "Integration von gehosteten Diensten, wie Mattermost",
251 "subscription.features.proxy" : "Proxy Support fĂ¼r Dienste", 293 "subscription.features.proxy" : "Proxy Support fĂ¼r Dienste",
252 "subscription.features.spellchecker" : "UnterstĂ¼tzung fĂ¼r RechtschreibprĂ¼fung", 294 "subscription.features.spellchecker" : "UnterstĂ¼tzung fĂ¼r RechtschreibprĂ¼fung",
253 "subscription.includedFeatures" : "Bezahlte Franz Premium Support Konten beinhalten", 295 "subscription.features.workspaces" : "Organisiere deine Services in Workspaces",
296 "subscription.includedFeatures" : "Bezahlte Franz Premium Lizenzen beinhalten",
254 "subscription.paymentSessionError" : "Das Zahlungs-Formular konnte nicht geladen werden.", 297 "subscription.paymentSessionError" : "Das Zahlungs-Formular konnte nicht geladen werden.",
255 "subscription.submit.label" : "Ich möchte die Entwicklung von Franz unterstĂ¼tzen", 298 "subscription.submit.label" : "Ich möchte die Entwicklung von Franz unterstĂ¼tzen",
256 "subscription.type.free" : "kostenlos", 299 "subscription.type.free" : "kostenlos",
@@ -266,12 +309,23 @@
266 "tabs.item.enableAudio" : "Audio aktivieren", 309 "tabs.item.enableAudio" : "Audio aktivieren",
267 "tabs.item.enableNotification" : "Benachrichtigungen aktivieren", 310 "tabs.item.enableNotification" : "Benachrichtigungen aktivieren",
268 "tabs.item.enableService" : "Dienst aktivieren", 311 "tabs.item.enableService" : "Dienst aktivieren",
269 "tabs.item.reload" : "Neuladen", 312 "tabs.item.reload" : "Neu laden",
270 "validation.email" : "{field} ist ungĂ¼ltig", 313 "validation.email" : "{field} ist ungĂ¼ltig",
271 "validation.minLength" : "{field} muss mindestens {length} Zeichen enthalten", 314 "validation.minLength" : "{field} muss mindestens {length} Zeichen enthalten",
315 "validation.oneRequired" : "Mindestens ein Wert wird benötigt",
272 "validation.required" : "{field} wird benötigt", 316 "validation.required" : "{field} wird benötigt",
273 "validation.url" : "{field} ist keine gĂ¼ltige URL", 317 "validation.url" : "{field} ist keine gĂ¼ltige URL",
274 "welcome.loginButton" : "Bei Franz einloggen", 318 "welcome.loginButton" : "Bei Franz einloggen",
275 "welcome.signupButton" : "Kostenloses Konto erstellen", 319 "welcome.signupButton" : "Kostenloses Konto erstellen",
276 "welcome.slogan" : "Kommunikation, die fĂ¼r Dich funktioniert" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Neuen Workspace hinzufĂ¼gen",
321 "workspaceDrawer.allServices" : "Alle Dienste",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "Bearbeiten",
324 "workspaceDrawer.item.noServicesAddedYet" : "Noch keine Services hinzugefĂ¼gt",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Erstelle deinen ersten Workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium Feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Premium Account aktivieren",
328 "workspaceDrawer.workspaceFeatureInfo" : "Mit Franz Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Workspaces bearbeiten",
330 "workspaces.switchingIndicator.switchingTo" : "Wechsle zu"
277} 331}
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
new file mode 100644
index 000000000..632eb38fd
--- /dev/null
+++ b/src/i18n/locales/defaultMessages.json
@@ -0,0 +1,4603 @@
1[
2 {
3 "descriptors": [
4 {
5 "defaultMessage": "!!!Import your Franz 4 services",
6 "end": {
7 "column": 3,
8 "line": 16
9 },
10 "file": "src/components/auth/Import.js",
11 "id": "import.headline",
12 "start": {
13 "column": 12,
14 "line": 13
15 }
16 },
17 {
18 "defaultMessage": "!!!Services not yet supported in Franz 5",
19 "end": {
20 "column": 3,
21 "line": 20
22 },
23 "file": "src/components/auth/Import.js",
24 "id": "import.notSupportedHeadline",
25 "start": {
26 "column": 24,
27 "line": 17
28 }
29 },
30 {
31 "defaultMessage": "!!!Import {count} services",
32 "end": {
33 "column": 3,
34 "line": 24
35 },
36 "file": "src/components/auth/Import.js",
37 "id": "import.submit.label",
38 "start": {
39 "column": 21,
40 "line": 21
41 }
42 },
43 {
44 "defaultMessage": "!!!I want to add services manually",
45 "end": {
46 "column": 3,
47 "line": 28
48 },
49 "file": "src/components/auth/Import.js",
50 "id": "import.skip.label",
51 "start": {
52 "column": 19,
53 "line": 25
54 }
55 }
56 ],
57 "path": "src/components/auth/Import.json"
58 },
59 {
60 "descriptors": [
61 {
62 "defaultMessage": "!!!Invite Friends",
63 "end": {
64 "column": 3,
65 "line": 19
66 },
67 "file": "src/components/auth/Invite.js",
68 "id": "settings.invite.headline",
69 "start": {
70 "column": 20,
71 "line": 16
72 }
73 },
74 {
75 "defaultMessage": "!!!Invite 3 of your friends or colleagues",
76 "end": {
77 "column": 3,
78 "line": 23
79 },
80 "file": "src/components/auth/Invite.js",
81 "id": "invite.headline.friends",
82 "start": {
83 "column": 12,
84 "line": 20
85 }
86 },
87 {
88 "defaultMessage": "!!!Name",
89 "end": {
90 "column": 3,
91 "line": 27
92 },
93 "file": "src/components/auth/Invite.js",
94 "id": "invite.name.label",
95 "start": {
96 "column": 13,
97 "line": 24
98 }
99 },
100 {
101 "defaultMessage": "!!!Email address",
102 "end": {
103 "column": 3,
104 "line": 31
105 },
106 "file": "src/components/auth/Invite.js",
107 "id": "invite.email.label",
108 "start": {
109 "column": 14,
110 "line": 28
111 }
112 },
113 {
114 "defaultMessage": "!!!Send invites",
115 "end": {
116 "column": 3,
117 "line": 35
118 },
119 "file": "src/components/auth/Invite.js",
120 "id": "invite.submit.label",
121 "start": {
122 "column": 21,
123 "line": 32
124 }
125 },
126 {
127 "defaultMessage": "!!!I want to do this later",
128 "end": {
129 "column": 3,
130 "line": 39
131 },
132 "file": "src/components/auth/Invite.js",
133 "id": "invite.skip.label",
134 "start": {
135 "column": 19,
136 "line": 36
137 }
138 },
139 {
140 "defaultMessage": "!!!Invitations sent successfully",
141 "end": {
142 "column": 3,
143 "line": 43
144 },
145 "file": "src/components/auth/Invite.js",
146 "id": "invite.successInfo",
147 "start": {
148 "column": 21,
149 "line": 40
150 }
151 }
152 ],
153 "path": "src/components/auth/Invite.json"
154 },
155 {
156 "descriptors": [
157 {
158 "defaultMessage": "!!!Sign in",
159 "end": {
160 "column": 3,
161 "line": 20
162 },
163 "file": "src/components/auth/Login.js",
164 "id": "login.headline",
165 "start": {
166 "column": 12,
167 "line": 17
168 }
169 },
170 {
171 "defaultMessage": "!!!Email address",
172 "end": {
173 "column": 3,
174 "line": 24
175 },
176 "file": "src/components/auth/Login.js",
177 "id": "login.email.label",
178 "start": {
179 "column": 14,
180 "line": 21
181 }
182 },
183 {
184 "defaultMessage": "!!!Password",
185 "end": {
186 "column": 3,
187 "line": 28
188 },
189 "file": "src/components/auth/Login.js",
190 "id": "login.password.label",
191 "start": {
192 "column": 17,
193 "line": 25
194 }
195 },
196 {
197 "defaultMessage": "!!!Sign in",
198 "end": {
199 "column": 3,
200 "line": 32
201 },
202 "file": "src/components/auth/Login.js",
203 "id": "login.submit.label",
204 "start": {
205 "column": 21,
206 "line": 29
207 }
208 },
209 {
210 "defaultMessage": "!!!Email or password not valid",
211 "end": {
212 "column": 3,
213 "line": 36
214 },
215 "file": "src/components/auth/Login.js",
216 "id": "login.invalidCredentials",
217 "start": {
218 "column": 22,
219 "line": 33
220 }
221 },
222 {
223 "defaultMessage": "!!!Your session expired, please login again.",
224 "end": {
225 "column": 3,
226 "line": 40
227 },
228 "file": "src/components/auth/Login.js",
229 "id": "login.tokenExpired",
230 "start": {
231 "column": 16,
232 "line": 37
233 }
234 },
235 {
236 "defaultMessage": "!!!Your session expired, please login again.",
237 "end": {
238 "column": 3,
239 "line": 44
240 },
241 "file": "src/components/auth/Login.js",
242 "id": "login.serverLogout",
243 "start": {
244 "column": 16,
245 "line": 41
246 }
247 },
248 {
249 "defaultMessage": "!!!Create a free account",
250 "end": {
251 "column": 3,
252 "line": 48
253 },
254 "file": "src/components/auth/Login.js",
255 "id": "login.link.signup",
256 "start": {
257 "column": 14,
258 "line": 45
259 }
260 },
261 {
262 "defaultMessage": "!!!Forgot password",
263 "end": {
264 "column": 3,
265 "line": 52
266 },
267 "file": "src/components/auth/Login.js",
268 "id": "login.link.password",
269 "start": {
270 "column": 16,
271 "line": 49
272 }
273 }
274 ],
275 "path": "src/components/auth/Login.json"
276 },
277 {
278 "descriptors": [
279 {
280 "defaultMessage": "!!!Forgot password",
281 "end": {
282 "column": 3,
283 "line": 17
284 },
285 "file": "src/components/auth/Password.js",
286 "id": "password.headline",
287 "start": {
288 "column": 12,
289 "line": 14
290 }
291 },
292 {
293 "defaultMessage": "!!!Email address",
294 "end": {
295 "column": 3,
296 "line": 21
297 },
298 "file": "src/components/auth/Password.js",
299 "id": "password.email.label",
300 "start": {
301 "column": 14,
302 "line": 18
303 }
304 },
305 {
306 "defaultMessage": "!!!Submit",
307 "end": {
308 "column": 3,
309 "line": 25
310 },
311 "file": "src/components/auth/Password.js",
312 "id": "password.submit.label",
313 "start": {
314 "column": 21,
315 "line": 22
316 }
317 },
318 {
319 "defaultMessage": "!!!Your new password was sent to your email address",
320 "end": {
321 "column": 3,
322 "line": 29
323 },
324 "file": "src/components/auth/Password.js",
325 "id": "password.successInfo",
326 "start": {
327 "column": 15,
328 "line": 26
329 }
330 },
331 {
332 "defaultMessage": "!!!No user affiliated with that email address",
333 "end": {
334 "column": 3,
335 "line": 33
336 },
337 "file": "src/components/auth/Password.js",
338 "id": "password.noUser",
339 "start": {
340 "column": 10,
341 "line": 30
342 }
343 },
344 {
345 "defaultMessage": "!!!Create a free account",
346 "end": {
347 "column": 3,
348 "line": 37
349 },
350 "file": "src/components/auth/Password.js",
351 "id": "password.link.signup",
352 "start": {
353 "column": 14,
354 "line": 34
355 }
356 },
357 {
358 "defaultMessage": "!!!Sign in to your account",
359 "end": {
360 "column": 3,
361 "line": 41
362 },
363 "file": "src/components/auth/Password.js",
364 "id": "password.link.login",
365 "start": {
366 "column": 13,
367 "line": 38
368 }
369 }
370 ],
371 "path": "src/components/auth/Password.json"
372 },
373 {
374 "descriptors": [
375 {
376 "defaultMessage": "!!!Support Franz",
377 "end": {
378 "column": 3,
379 "line": 16
380 },
381 "file": "src/components/auth/Pricing.js",
382 "id": "pricing.headline",
383 "start": {
384 "column": 12,
385 "line": 13
386 }
387 },
388 {
389 "defaultMessage": "!!!Select your support plan",
390 "end": {
391 "column": 3,
392 "line": 20
393 },
394 "file": "src/components/auth/Pricing.js",
395 "id": "pricing.support.label",
396 "start": {
397 "column": 23,
398 "line": 17
399 }
400 },
401 {
402 "defaultMessage": "!!!Support the development of Franz",
403 "end": {
404 "column": 3,
405 "line": 24
406 },
407 "file": "src/components/auth/Pricing.js",
408 "id": "pricing.submit.label",
409 "start": {
410 "column": 21,
411 "line": 21
412 }
413 },
414 {
415 "defaultMessage": "!!!I don't want to support the development of Franz.",
416 "end": {
417 "column": 3,
418 "line": 28
419 },
420 "file": "src/components/auth/Pricing.js",
421 "id": "pricing.link.skipPayment",
422 "start": {
423 "column": 15,
424 "line": 25
425 }
426 }
427 ],
428 "path": "src/components/auth/Pricing.json"
429 },
430 {
431 "descriptors": [
432 {
433 "defaultMessage": "!!!Sign up",
434 "end": {
435 "column": 3,
436 "line": 21
437 },
438 "file": "src/components/auth/Signup.js",
439 "id": "signup.headline",
440 "start": {
441 "column": 12,
442 "line": 18
443 }
444 },
445 {
446 "defaultMessage": "!!!Firstname",
447 "end": {
448 "column": 3,
449 "line": 25
450 },
451 "file": "src/components/auth/Signup.js",
452 "id": "signup.firstname.label",
453 "start": {
454 "column": 18,
455 "line": 22
456 }
457 },
458 {
459 "defaultMessage": "!!!Lastname",
460 "end": {
461 "column": 3,
462 "line": 29
463 },
464 "file": "src/components/auth/Signup.js",
465 "id": "signup.lastname.label",
466 "start": {
467 "column": 17,
468 "line": 26
469 }
470 },
471 {
472 "defaultMessage": "!!!Email address",
473 "end": {
474 "column": 3,
475 "line": 33
476 },
477 "file": "src/components/auth/Signup.js",
478 "id": "signup.email.label",
479 "start": {
480 "column": 14,
481 "line": 30
482 }
483 },
484 {
485 "defaultMessage": "!!!Company",
486 "end": {
487 "column": 3,
488 "line": 37
489 },
490 "file": "src/components/auth/Signup.js",
491 "id": "signup.company.label",
492 "start": {
493 "column": 16,
494 "line": 34
495 }
496 },
497 {
498 "defaultMessage": "!!!Password",
499 "end": {
500 "column": 3,
501 "line": 41
502 },
503 "file": "src/components/auth/Signup.js",
504 "id": "signup.password.label",
505 "start": {
506 "column": 17,
507 "line": 38
508 }
509 },
510 {
511 "defaultMessage": "!!!By creating a Franz account you accept the",
512 "end": {
513 "column": 3,
514 "line": 45
515 },
516 "file": "src/components/auth/Signup.js",
517 "id": "signup.legal.info",
518 "start": {
519 "column": 13,
520 "line": 42
521 }
522 },
523 {
524 "defaultMessage": "!!!Terms of service",
525 "end": {
526 "column": 3,
527 "line": 49
528 },
529 "file": "src/components/auth/Signup.js",
530 "id": "signup.legal.terms",
531 "start": {
532 "column": 9,
533 "line": 46
534 }
535 },
536 {
537 "defaultMessage": "!!!Privacy Statement",
538 "end": {
539 "column": 3,
540 "line": 53
541 },
542 "file": "src/components/auth/Signup.js",
543 "id": "signup.legal.privacy",
544 "start": {
545 "column": 11,
546 "line": 50
547 }
548 },
549 {
550 "defaultMessage": "!!!Create account",
551 "end": {
552 "column": 3,
553 "line": 57
554 },
555 "file": "src/components/auth/Signup.js",
556 "id": "signup.submit.label",
557 "start": {
558 "column": 21,
559 "line": 54
560 }
561 },
562 {
563 "defaultMessage": "!!!Already have an account, sign in?",
564 "end": {
565 "column": 3,
566 "line": 61
567 },
568 "file": "src/components/auth/Signup.js",
569 "id": "signup.link.login",
570 "start": {
571 "column": 13,
572 "line": 58
573 }
574 },
575 {
576 "defaultMessage": "!!!A user with that email address already exists",
577 "end": {
578 "column": 3,
579 "line": 65
580 },
581 "file": "src/components/auth/Signup.js",
582 "id": "signup.emailDuplicate",
583 "start": {
584 "column": 18,
585 "line": 62
586 }
587 }
588 ],
589 "path": "src/components/auth/Signup.json"
590 },
591 {
592 "descriptors": [
593 {
594 "defaultMessage": "!!!Create a free account",
595 "end": {
596 "column": 3,
597 "line": 12
598 },
599 "file": "src/components/auth/Welcome.js",
600 "id": "welcome.signupButton",
601 "start": {
602 "column": 16,
603 "line": 9
604 }
605 },
606 {
607 "defaultMessage": "!!!Login to your account",
608 "end": {
609 "column": 3,
610 "line": 16
611 },
612 "file": "src/components/auth/Welcome.js",
613 "id": "welcome.loginButton",
614 "start": {
615 "column": 15,
616 "line": 13
617 }
618 }
619 ],
620 "path": "src/components/auth/Welcome.json"
621 },
622 {
623 "descriptors": [
624 {
625 "defaultMessage": "!!!Your services have been updated.",
626 "end": {
627 "column": 3,
628 "line": 30
629 },
630 "file": "src/components/layout/AppLayout.js",
631 "id": "infobar.servicesUpdated",
632 "start": {
633 "column": 19,
634 "line": 27
635 }
636 },
637 {
638 "defaultMessage": "!!!A new update for Franz is available.",
639 "end": {
640 "column": 3,
641 "line": 34
642 },
643 "file": "src/components/layout/AppLayout.js",
644 "id": "infobar.updateAvailable",
645 "start": {
646 "column": 19,
647 "line": 31
648 }
649 },
650 {
651 "defaultMessage": "!!!Reload services",
652 "end": {
653 "column": 3,
654 "line": 38
655 },
656 "file": "src/components/layout/AppLayout.js",
657 "id": "infobar.buttonReloadServices",
658 "start": {
659 "column": 24,
660 "line": 35
661 }
662 },
663 {
664 "defaultMessage": "!!!Changelog",
665 "end": {
666 "column": 3,
667 "line": 42
668 },
669 "file": "src/components/layout/AppLayout.js",
670 "id": "infobar.buttonChangelog",
671 "start": {
672 "column": 13,
673 "line": 39
674 }
675 },
676 {
677 "defaultMessage": "!!!Restart & install update",
678 "end": {
679 "column": 3,
680 "line": 46
681 },
682 "file": "src/components/layout/AppLayout.js",
683 "id": "infobar.buttonInstallUpdate",
684 "start": {
685 "column": 23,
686 "line": 43
687 }
688 },
689 {
690 "defaultMessage": "!!!Could not load services and user information",
691 "end": {
692 "column": 3,
693 "line": 50
694 },
695 "file": "src/components/layout/AppLayout.js",
696 "id": "infobar.requiredRequestsFailed",
697 "start": {
698 "column": 26,
699 "line": 47
700 }
701 }
702 ],
703 "path": "src/components/layout/AppLayout.json"
704 },
705 {
706 "descriptors": [
707 {
708 "defaultMessage": "!!!Settings",
709 "end": {
710 "column": 3,
711 "line": 16
712 },
713 "file": "src/components/layout/Sidebar.js",
714 "id": "sidebar.settings",
715 "start": {
716 "column": 12,
717 "line": 13
718 }
719 },
720 {
721 "defaultMessage": "!!!Add new service",
722 "end": {
723 "column": 3,
724 "line": 20
725 },
726 "file": "src/components/layout/Sidebar.js",
727 "id": "sidebar.addNewService",
728 "start": {
729 "column": 17,
730 "line": 17
731 }
732 },
733 {
734 "defaultMessage": "!!!Disable notifications & audio",
735 "end": {
736 "column": 3,
737 "line": 24
738 },
739 "file": "src/components/layout/Sidebar.js",
740 "id": "sidebar.muteApp",
741 "start": {
742 "column": 8,
743 "line": 21
744 }
745 },
746 {
747 "defaultMessage": "!!!Enable notifications & audio",
748 "end": {
749 "column": 3,
750 "line": 28
751 },
752 "file": "src/components/layout/Sidebar.js",
753 "id": "sidebar.unmuteApp",
754 "start": {
755 "column": 10,
756 "line": 25
757 }
758 },
759 {
760 "defaultMessage": "!!!Open workspace drawer",
761 "end": {
762 "column": 3,
763 "line": 32
764 },
765 "file": "src/components/layout/Sidebar.js",
766 "id": "sidebar.openWorkspaceDrawer",
767 "start": {
768 "column": 23,
769 "line": 29
770 }
771 },
772 {
773 "defaultMessage": "!!!Close workspace drawer",
774 "end": {
775 "column": 3,
776 "line": 36
777 },
778 "file": "src/components/layout/Sidebar.js",
779 "id": "sidebar.closeWorkspaceDrawer",
780 "start": {
781 "column": 24,
782 "line": 33
783 }
784 }
785 ],
786 "path": "src/components/layout/Sidebar.json"
787 },
788 {
789 "descriptors": [
790 {
791 "defaultMessage": "!!!Oh no!",
792 "end": {
793 "column": 3,
794 "line": 15
795 },
796 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
797 "id": "service.errorHandler.headline",
798 "start": {
799 "column": 12,
800 "line": 12
801 }
802 },
803 {
804 "defaultMessage": "!!!{name} has failed to load.",
805 "end": {
806 "column": 3,
807 "line": 19
808 },
809 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
810 "id": "service.errorHandler.text",
811 "start": {
812 "column": 8,
813 "line": 16
814 }
815 },
816 {
817 "defaultMessage": "!!!Reload {name}",
818 "end": {
819 "column": 3,
820 "line": 23
821 },
822 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
823 "id": "service.errorHandler.action",
824 "start": {
825 "column": 10,
826 "line": 20
827 }
828 },
829 {
830 "defaultMessage": "!!!Edit {name}",
831 "end": {
832 "column": 3,
833 "line": 27
834 },
835 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
836 "id": "service.errorHandler.editAction",
837 "start": {
838 "column": 14,
839 "line": 24
840 }
841 },
842 {
843 "defaultMessage": "!!!Error:",
844 "end": {
845 "column": 3,
846 "line": 31
847 },
848 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
849 "id": "service.errorHandler.message",
850 "start": {
851 "column": 16,
852 "line": 28
853 }
854 }
855 ],
856 "path": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.json"
857 },
858 {
859 "descriptors": [
860 {
861 "defaultMessage": "!!!{name} is disabled",
862 "end": {
863 "column": 3,
864 "line": 12
865 },
866 "file": "src/components/services/content/ServiceDisabled.js",
867 "id": "service.disabledHandler.headline",
868 "start": {
869 "column": 12,
870 "line": 9
871 }
872 },
873 {
874 "defaultMessage": "!!!Enable {name}",
875 "end": {
876 "column": 3,
877 "line": 16
878 },
879 "file": "src/components/services/content/ServiceDisabled.js",
880 "id": "service.disabledHandler.action",
881 "start": {
882 "column": 10,
883 "line": 13
884 }
885 }
886 ],
887 "path": "src/components/services/content/ServiceDisabled.json"
888 },
889 {
890 "descriptors": [
891 {
892 "defaultMessage": "!!!Welcome to Franz",
893 "end": {
894 "column": 3,
895 "line": 14
896 },
897 "file": "src/components/services/content/Services.js",
898 "id": "services.welcome",
899 "start": {
900 "column": 11,
901 "line": 11
902 }
903 },
904 {
905 "defaultMessage": "!!!Get started",
906 "end": {
907 "column": 3,
908 "line": 18
909 },
910 "file": "src/components/services/content/Services.js",
911 "id": "services.getStarted",
912 "start": {
913 "column": 14,
914 "line": 15
915 }
916 }
917 ],
918 "path": "src/components/services/content/Services.json"
919 },
920 {
921 "descriptors": [
922 {
923 "defaultMessage": "!!!Oh no!",
924 "end": {
925 "column": 3,
926 "line": 13
927 },
928 "file": "src/components/services/content/WebviewCrashHandler.js",
929 "id": "service.crashHandler.headline",
930 "start": {
931 "column": 12,
932 "line": 10
933 }
934 },
935 {
936 "defaultMessage": "!!!{name} has caused an error.",
937 "end": {
938 "column": 3,
939 "line": 17
940 },
941 "file": "src/components/services/content/WebviewCrashHandler.js",
942 "id": "service.crashHandler.text",
943 "start": {
944 "column": 8,
945 "line": 14
946 }
947 },
948 {
949 "defaultMessage": "!!!Reload {name}",
950 "end": {
951 "column": 3,
952 "line": 21
953 },
954 "file": "src/components/services/content/WebviewCrashHandler.js",
955 "id": "service.crashHandler.action",
956 "start": {
957 "column": 10,
958 "line": 18
959 }
960 },
961 {
962 "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds",
963 "end": {
964 "column": 3,
965 "line": 25
966 },
967 "file": "src/components/services/content/WebviewCrashHandler.js",
968 "id": "service.crashHandler.autoReload",
969 "start": {
970 "column": 14,
971 "line": 22
972 }
973 }
974 ],
975 "path": "src/components/services/content/WebviewCrashHandler.json"
976 },
977 {
978 "descriptors": [
979 {
980 "defaultMessage": "!!!Reload",
981 "end": {
982 "column": 3,
983 "line": 18
984 },
985 "file": "src/components/services/tabs/TabItem.js",
986 "id": "tabs.item.reload",
987 "start": {
988 "column": 10,
989 "line": 15
990 }
991 },
992 {
993 "defaultMessage": "!!!Edit",
994 "end": {
995 "column": 3,
996 "line": 22
997 },
998 "file": "src/components/services/tabs/TabItem.js",
999 "id": "tabs.item.edit",
1000 "start": {
1001 "column": 8,
1002 "line": 19
1003 }
1004 },
1005 {
1006 "defaultMessage": "!!!Disable notifications",
1007 "end": {
1008 "column": 3,
1009 "line": 26
1010 },
1011 "file": "src/components/services/tabs/TabItem.js",
1012 "id": "tabs.item.disableNotifications",
1013 "start": {
1014 "column": 24,
1015 "line": 23
1016 }
1017 },
1018 {
1019 "defaultMessage": "!!!Enable notifications",
1020 "end": {
1021 "column": 3,
1022 "line": 30
1023 },
1024 "file": "src/components/services/tabs/TabItem.js",
1025 "id": "tabs.item.enableNotification",
1026 "start": {
1027 "column": 23,
1028 "line": 27
1029 }
1030 },
1031 {
1032 "defaultMessage": "!!!Disable audio",
1033 "end": {
1034 "column": 3,
1035 "line": 34
1036 },
1037 "file": "src/components/services/tabs/TabItem.js",
1038 "id": "tabs.item.disableAudio",
1039 "start": {
1040 "column": 16,
1041 "line": 31
1042 }
1043 },
1044 {
1045 "defaultMessage": "!!!Enable audio",
1046 "end": {
1047 "column": 3,
1048 "line": 38
1049 },
1050 "file": "src/components/services/tabs/TabItem.js",
1051 "id": "tabs.item.enableAudio",
1052 "start": {
1053 "column": 15,
1054 "line": 35
1055 }
1056 },
1057 {
1058 "defaultMessage": "!!!Disable Service",
1059 "end": {
1060 "column": 3,
1061 "line": 42
1062 },
1063 "file": "src/components/services/tabs/TabItem.js",
1064 "id": "tabs.item.disableService",
1065 "start": {
1066 "column": 18,
1067 "line": 39
1068 }
1069 },
1070 {
1071 "defaultMessage": "!!!Enable Service",
1072 "end": {
1073 "column": 3,
1074 "line": 46
1075 },
1076 "file": "src/components/services/tabs/TabItem.js",
1077 "id": "tabs.item.enableService",
1078 "start": {
1079 "column": 17,
1080 "line": 43
1081 }
1082 },
1083 {
1084 "defaultMessage": "!!!Delete Service",
1085 "end": {
1086 "column": 3,
1087 "line": 50
1088 },
1089 "file": "src/components/services/tabs/TabItem.js",
1090 "id": "tabs.item.deleteService",
1091 "start": {
1092 "column": 17,
1093 "line": 47
1094 }
1095 }
1096 ],
1097 "path": "src/components/services/tabs/TabItem.json"
1098 },
1099 {
1100 "descriptors": [
1101 {
1102 "defaultMessage": "!!!Account",
1103 "end": {
1104 "column": 3,
1105 "line": 17
1106 },
1107 "file": "src/components/settings/account/AccountDashboard.js",
1108 "id": "settings.account.headline",
1109 "start": {
1110 "column": 12,
1111 "line": 14
1112 }
1113 },
1114 {
1115 "defaultMessage": "!!!Your Subscription",
1116 "end": {
1117 "column": 3,
1118 "line": 21
1119 },
1120 "file": "src/components/settings/account/AccountDashboard.js",
1121 "id": "settings.account.headlineSubscription",
1122 "start": {
1123 "column": 24,
1124 "line": 18
1125 }
1126 },
1127 {
1128 "defaultMessage": "!!!Upgrade your Account",
1129 "end": {
1130 "column": 3,
1131 "line": 25
1132 },
1133 "file": "src/components/settings/account/AccountDashboard.js",
1134 "id": "settings.account.headlineUpgrade",
1135 "start": {
1136 "column": 19,
1137 "line": 22
1138 }
1139 },
1140 {
1141 "defaultMessage": "!!Danger Zone",
1142 "end": {
1143 "column": 3,
1144 "line": 29
1145 },
1146 "file": "src/components/settings/account/AccountDashboard.js",
1147 "id": "settings.account.headlineDangerZone",
1148 "start": {
1149 "column": 22,
1150 "line": 26
1151 }
1152 },
1153 {
1154 "defaultMessage": "!!!Manage your subscription",
1155 "end": {
1156 "column": 3,
1157 "line": 33
1158 },
1159 "file": "src/components/settings/account/AccountDashboard.js",
1160 "id": "settings.account.manageSubscription.label",
1161 "start": {
1162 "column": 33,
1163 "line": 30
1164 }
1165 },
1166 {
1167 "defaultMessage": "!!!Basic Account",
1168 "end": {
1169 "column": 3,
1170 "line": 37
1171 },
1172 "file": "src/components/settings/account/AccountDashboard.js",
1173 "id": "settings.account.accountType.basic",
1174 "start": {
1175 "column": 20,
1176 "line": 34
1177 }
1178 },
1179 {
1180 "defaultMessage": "!!!Premium Supporter Account",
1181 "end": {
1182 "column": 3,
1183 "line": 41
1184 },
1185 "file": "src/components/settings/account/AccountDashboard.js",
1186 "id": "settings.account.accountType.premium",
1187 "start": {
1188 "column": 22,
1189 "line": 38
1190 }
1191 },
1192 {
1193 "defaultMessage": "!!!Edit Account",
1194 "end": {
1195 "column": 3,
1196 "line": 45
1197 },
1198 "file": "src/components/settings/account/AccountDashboard.js",
1199 "id": "settings.account.account.editButton",
1200 "start": {
1201 "column": 21,
1202 "line": 42
1203 }
1204 },
1205 {
1206 "defaultMessage": "!!Invoices",
1207 "end": {
1208 "column": 3,
1209 "line": 49
1210 },
1211 "file": "src/components/settings/account/AccountDashboard.js",
1212 "id": "settings.account.headlineInvoices",
1213 "start": {
1214 "column": 18,
1215 "line": 46
1216 }
1217 },
1218 {
1219 "defaultMessage": "!!!Download",
1220 "end": {
1221 "column": 3,
1222 "line": 53
1223 },
1224 "file": "src/components/settings/account/AccountDashboard.js",
1225 "id": "settings.account.invoiceDownload",
1226 "start": {
1227 "column": 19,
1228 "line": 50
1229 }
1230 },
1231 {
1232 "defaultMessage": "!!!Could not load user information",
1233 "end": {
1234 "column": 3,
1235 "line": 57
1236 },
1237 "file": "src/components/settings/account/AccountDashboard.js",
1238 "id": "settings.account.userInfoRequestFailed",
1239 "start": {
1240 "column": 25,
1241 "line": 54
1242 }
1243 },
1244 {
1245 "defaultMessage": "!!!Try again",
1246 "end": {
1247 "column": 3,
1248 "line": 61
1249 },
1250 "file": "src/components/settings/account/AccountDashboard.js",
1251 "id": "settings.account.tryReloadUserInfoRequest",
1252 "start": {
1253 "column": 28,
1254 "line": 58
1255 }
1256 },
1257 {
1258 "defaultMessage": "!!!Delete account",
1259 "end": {
1260 "column": 3,
1261 "line": 65
1262 },
1263 "file": "src/components/settings/account/AccountDashboard.js",
1264 "id": "settings.account.deleteAccount",
1265 "start": {
1266 "column": 17,
1267 "line": 62
1268 }
1269 },
1270 {
1271 "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.",
1272 "end": {
1273 "column": 3,
1274 "line": 69
1275 },
1276 "file": "src/components/settings/account/AccountDashboard.js",
1277 "id": "settings.account.deleteInfo",
1278 "start": {
1279 "column": 14,
1280 "line": 66
1281 }
1282 },
1283 {
1284 "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
1285 "end": {
1286 "column": 3,
1287 "line": 73
1288 },
1289 "file": "src/components/settings/account/AccountDashboard.js",
1290 "id": "settings.account.deleteEmailSent",
1291 "start": {
1292 "column": 19,
1293 "line": 70
1294 }
1295 }
1296 ],
1297 "path": "src/components/settings/account/AccountDashboard.json"
1298 },
1299 {
1300 "descriptors": [
1301 {
1302 "defaultMessage": "!!!Available services",
1303 "end": {
1304 "column": 3,
1305 "line": 16
1306 },
1307 "file": "src/components/settings/navigation/SettingsNavigation.js",
1308 "id": "settings.navigation.availableServices",
1309 "start": {
1310 "column": 21,
1311 "line": 13
1312 }
1313 },
1314 {
1315 "defaultMessage": "!!!Your services",
1316 "end": {
1317 "column": 3,
1318 "line": 20
1319 },
1320 "file": "src/components/settings/navigation/SettingsNavigation.js",
1321 "id": "settings.navigation.yourServices",
1322 "start": {
1323 "column": 16,
1324 "line": 17
1325 }
1326 },
1327 {
1328 "defaultMessage": "!!!Your workspaces",
1329 "end": {
1330 "column": 3,
1331 "line": 24
1332 },
1333 "file": "src/components/settings/navigation/SettingsNavigation.js",
1334 "id": "settings.navigation.yourWorkspaces",
1335 "start": {
1336 "column": 18,
1337 "line": 21
1338 }
1339 },
1340 {
1341 "defaultMessage": "!!!Account",
1342 "end": {
1343 "column": 3,
1344 "line": 28
1345 },
1346 "file": "src/components/settings/navigation/SettingsNavigation.js",
1347 "id": "settings.navigation.account",
1348 "start": {
1349 "column": 11,
1350 "line": 25
1351 }
1352 },
1353 {
1354 "defaultMessage": "!!!Manage Team",
1355 "end": {
1356 "column": 3,
1357 "line": 32
1358 },
1359 "file": "src/components/settings/navigation/SettingsNavigation.js",
1360 "id": "settings.navigation.team",
1361 "start": {
1362 "column": 8,
1363 "line": 29
1364 }
1365 },
1366 {
1367 "defaultMessage": "!!!Settings",
1368 "end": {
1369 "column": 3,
1370 "line": 36
1371 },
1372 "file": "src/components/settings/navigation/SettingsNavigation.js",
1373 "id": "settings.navigation.settings",
1374 "start": {
1375 "column": 12,
1376 "line": 33
1377 }
1378 },
1379 {
1380 "defaultMessage": "!!!Invite Friends",
1381 "end": {
1382 "column": 3,
1383 "line": 40
1384 },
1385 "file": "src/components/settings/navigation/SettingsNavigation.js",
1386 "id": "settings.navigation.inviteFriends",
1387 "start": {
1388 "column": 17,
1389 "line": 37
1390 }
1391 },
1392 {
1393 "defaultMessage": "!!!Logout",
1394 "end": {
1395 "column": 3,
1396 "line": 44
1397 },
1398 "file": "src/components/settings/navigation/SettingsNavigation.js",
1399 "id": "settings.navigation.logout",
1400 "start": {
1401 "column": 10,
1402 "line": 41
1403 }
1404 }
1405 ],
1406 "path": "src/components/settings/navigation/SettingsNavigation.json"
1407 },
1408 {
1409 "descriptors": [
1410 {
1411 "defaultMessage": "!!!Available Services",
1412 "end": {
1413 "column": 3,
1414 "line": 18
1415 },
1416 "file": "src/components/settings/recipes/RecipesDashboard.js",
1417 "id": "settings.recipes.headline",
1418 "start": {
1419 "column": 12,
1420 "line": 15
1421 }
1422 },
1423 {
1424 "defaultMessage": "!!!Search service",
1425 "end": {
1426 "column": 3,
1427 "line": 22
1428 },
1429 "file": "src/components/settings/recipes/RecipesDashboard.js",
1430 "id": "settings.searchService",
1431 "start": {
1432 "column": 17,
1433 "line": 19
1434 }
1435 },
1436 {
1437 "defaultMessage": "!!!Most popular",
1438 "end": {
1439 "column": 3,
1440 "line": 26
1441 },
1442 "file": "src/components/settings/recipes/RecipesDashboard.js",
1443 "id": "settings.recipes.mostPopular",
1444 "start": {
1445 "column": 22,
1446 "line": 23
1447 }
1448 },
1449 {
1450 "defaultMessage": "!!!All services",
1451 "end": {
1452 "column": 3,
1453 "line": 30
1454 },
1455 "file": "src/components/settings/recipes/RecipesDashboard.js",
1456 "id": "settings.recipes.all",
1457 "start": {
1458 "column": 14,
1459 "line": 27
1460 }
1461 },
1462 {
1463 "defaultMessage": "!!!Development",
1464 "end": {
1465 "column": 3,
1466 "line": 34
1467 },
1468 "file": "src/components/settings/recipes/RecipesDashboard.js",
1469 "id": "settings.recipes.dev",
1470 "start": {
1471 "column": 14,
1472 "line": 31
1473 }
1474 },
1475 {
1476 "defaultMessage": "!!!Sorry, but no service matched your search term.",
1477 "end": {
1478 "column": 3,
1479 "line": 38
1480 },
1481 "file": "src/components/settings/recipes/RecipesDashboard.js",
1482 "id": "settings.recipes.nothingFound",
1483 "start": {
1484 "column": 16,
1485 "line": 35
1486 }
1487 },
1488 {
1489 "defaultMessage": "!!!Service successfully added",
1490 "end": {
1491 "column": 3,
1492 "line": 42
1493 },
1494 "file": "src/components/settings/recipes/RecipesDashboard.js",
1495 "id": "settings.recipes.servicesSuccessfulAddedInfo",
1496 "start": {
1497 "column": 31,
1498 "line": 39
1499 }
1500 },
1501 {
1502 "defaultMessage": "!!!Missing a service?",
1503 "end": {
1504 "column": 3,
1505 "line": 46
1506 },
1507 "file": "src/components/settings/recipes/RecipesDashboard.js",
1508 "id": "settings.recipes.missingService",
1509 "start": {
1510 "column": 18,
1511 "line": 43
1512 }
1513 }
1514 ],
1515 "path": "src/components/settings/recipes/RecipesDashboard.json"
1516 },
1517 {
1518 "descriptors": [
1519 {
1520 "defaultMessage": "!!!Save service",
1521 "end": {
1522 "column": 3,
1523 "line": 25
1524 },
1525 "file": "src/components/settings/services/EditServiceForm.js",
1526 "id": "settings.service.form.saveButton",
1527 "start": {
1528 "column": 15,
1529 "line": 22
1530 }
1531 },
1532 {
1533 "defaultMessage": "!!!Delete Service",
1534 "end": {
1535 "column": 3,
1536 "line": 29
1537 },
1538 "file": "src/components/settings/services/EditServiceForm.js",
1539 "id": "settings.service.form.deleteButton",
1540 "start": {
1541 "column": 17,
1542 "line": 26
1543 }
1544 },
1545 {
1546 "defaultMessage": "!!!Available services",
1547 "end": {
1548 "column": 3,
1549 "line": 33
1550 },
1551 "file": "src/components/settings/services/EditServiceForm.js",
1552 "id": "settings.service.form.availableServices",
1553 "start": {
1554 "column": 21,
1555 "line": 30
1556 }
1557 },
1558 {
1559 "defaultMessage": "!!!Your services",
1560 "end": {
1561 "column": 3,
1562 "line": 37
1563 },
1564 "file": "src/components/settings/services/EditServiceForm.js",
1565 "id": "settings.service.form.yourServices",
1566 "start": {
1567 "column": 16,
1568 "line": 34
1569 }
1570 },
1571 {
1572 "defaultMessage": "!!!Add {name}",
1573 "end": {
1574 "column": 3,
1575 "line": 41
1576 },
1577 "file": "src/components/settings/services/EditServiceForm.js",
1578 "id": "settings.service.form.addServiceHeadline",
1579 "start": {
1580 "column": 22,
1581 "line": 38
1582 }
1583 },
1584 {
1585 "defaultMessage": "!!!Edit {name}",
1586 "end": {
1587 "column": 3,
1588 "line": 45
1589 },
1590 "file": "src/components/settings/services/EditServiceForm.js",
1591 "id": "settings.service.form.editServiceHeadline",
1592 "start": {
1593 "column": 23,
1594 "line": 42
1595 }
1596 },
1597 {
1598 "defaultMessage": "!!!Hosted",
1599 "end": {
1600 "column": 3,
1601 "line": 49
1602 },
1603 "file": "src/components/settings/services/EditServiceForm.js",
1604 "id": "settings.service.form.tabHosted",
1605 "start": {
1606 "column": 13,
1607 "line": 46
1608 }
1609 },
1610 {
1611 "defaultMessage": "!!!Self hosted â­ï¸",
1612 "end": {
1613 "column": 3,
1614 "line": 53
1615 },
1616 "file": "src/components/settings/services/EditServiceForm.js",
1617 "id": "settings.service.form.tabOnPremise",
1618 "start": {
1619 "column": 16,
1620 "line": 50
1621 }
1622 },
1623 {
1624 "defaultMessage": "!!!Use the hosted {name} service.",
1625 "end": {
1626 "column": 3,
1627 "line": 57
1628 },
1629 "file": "src/components/settings/services/EditServiceForm.js",
1630 "id": "settings.service.form.useHostedService",
1631 "start": {
1632 "column": 20,
1633 "line": 54
1634 }
1635 },
1636 {
1637 "defaultMessage": "!!!Could not validate custom {name} server.",
1638 "end": {
1639 "column": 3,
1640 "line": 61
1641 },
1642 "file": "src/components/settings/services/EditServiceForm.js",
1643 "id": "settings.service.form.customUrlValidationError",
1644 "start": {
1645 "column": 28,
1646 "line": 58
1647 }
1648 },
1649 {
1650 "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.",
1651 "end": {
1652 "column": 3,
1653 "line": 65
1654 },
1655 "file": "src/components/settings/services/EditServiceForm.js",
1656 "id": "settings.service.form.customUrlPremiumInfo",
1657 "start": {
1658 "column": 24,
1659 "line": 62
1660 }
1661 },
1662 {
1663 "defaultMessage": "!!!Upgrade your account",
1664 "end": {
1665 "column": 3,
1666 "line": 69
1667 },
1668 "file": "src/components/settings/services/EditServiceForm.js",
1669 "id": "settings.service.form.customUrlUpgradeAccount",
1670 "start": {
1671 "column": 27,
1672 "line": 66
1673 }
1674 },
1675 {
1676 "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
1677 "end": {
1678 "column": 3,
1679 "line": 73
1680 },
1681 "file": "src/components/settings/services/EditServiceForm.js",
1682 "id": "settings.service.form.indirectMessageInfo",
1683 "start": {
1684 "column": 23,
1685 "line": 70
1686 }
1687 },
1688 {
1689 "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted",
1690 "end": {
1691 "column": 3,
1692 "line": 77
1693 },
1694 "file": "src/components/settings/services/EditServiceForm.js",
1695 "id": "settings.service.form.isMutedInfo",
1696 "start": {
1697 "column": 15,
1698 "line": 74
1699 }
1700 },
1701 {
1702 "defaultMessage": "!!!Notifications",
1703 "end": {
1704 "column": 3,
1705 "line": 81
1706 },
1707 "file": "src/components/settings/services/EditServiceForm.js",
1708 "id": "settings.service.form.headlineNotifications",
1709 "start": {
1710 "column": 25,
1711 "line": 78
1712 }
1713 },
1714 {
1715 "defaultMessage": "!!!Unread message badges",
1716 "end": {
1717 "column": 3,
1718 "line": 85
1719 },
1720 "file": "src/components/settings/services/EditServiceForm.js",
1721 "id": "settings.service.form.headlineBadges",
1722 "start": {
1723 "column": 18,
1724 "line": 82
1725 }
1726 },
1727 {
1728 "defaultMessage": "!!!General",
1729 "end": {
1730 "column": 3,
1731 "line": 89
1732 },
1733 "file": "src/components/settings/services/EditServiceForm.js",
1734 "id": "settings.service.form.headlineGeneral",
1735 "start": {
1736 "column": 19,
1737 "line": 86
1738 }
1739 },
1740 {
1741 "defaultMessage": "!!!Delete",
1742 "end": {
1743 "column": 3,
1744 "line": 93
1745 },
1746 "file": "src/components/settings/services/EditServiceForm.js",
1747 "id": "settings.service.form.iconDelete",
1748 "start": {
1749 "column": 14,
1750 "line": 90
1751 }
1752 },
1753 {
1754 "defaultMessage": "!!!Drop your image, or click here",
1755 "end": {
1756 "column": 3,
1757 "line": 97
1758 },
1759 "file": "src/components/settings/services/EditServiceForm.js",
1760 "id": "settings.service.form.iconUpload",
1761 "start": {
1762 "column": 14,
1763 "line": 94
1764 }
1765 },
1766 {
1767 "defaultMessage": "!!!HTTP/HTTPS Proxy Settings",
1768 "end": {
1769 "column": 3,
1770 "line": 101
1771 },
1772 "file": "src/components/settings/services/EditServiceForm.js",
1773 "id": "settings.service.form.proxy.headline",
1774 "start": {
1775 "column": 17,
1776 "line": 98
1777 }
1778 },
1779 {
1780 "defaultMessage": "!!!Please restart Franz after changing proxy Settings.",
1781 "end": {
1782 "column": 3,
1783 "line": 105
1784 },
1785 "file": "src/components/settings/services/EditServiceForm.js",
1786 "id": "settings.service.form.proxy.restartInfo",
1787 "start": {
1788 "column": 20,
1789 "line": 102
1790 }
1791 },
1792 {
1793 "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.",
1794 "end": {
1795 "column": 3,
1796 "line": 109
1797 },
1798 "file": "src/components/settings/services/EditServiceForm.js",
1799 "id": "settings.service.form.proxy.info",
1800 "start": {
1801 "column": 13,
1802 "line": 106
1803 }
1804 }
1805 ],
1806 "path": "src/components/settings/services/EditServiceForm.json"
1807 },
1808 {
1809 "descriptors": [
1810 {
1811 "defaultMessage": "!!!Error",
1812 "end": {
1813 "column": 3,
1814 "line": 13
1815 },
1816 "file": "src/components/settings/services/ServiceError.js",
1817 "id": "settings.service.error.headline",
1818 "start": {
1819 "column": 12,
1820 "line": 10
1821 }
1822 },
1823 {
1824 "defaultMessage": "!!!Back to services",
1825 "end": {
1826 "column": 3,
1827 "line": 17
1828 },
1829 "file": "src/components/settings/services/ServiceError.js",
1830 "id": "settings.service.error.goBack",
1831 "start": {
1832 "column": 10,
1833 "line": 14
1834 }
1835 },
1836 {
1837 "defaultMessage": "!!!Available services",
1838 "end": {
1839 "column": 3,
1840 "line": 21
1841 },
1842 "file": "src/components/settings/services/ServiceError.js",
1843 "id": "settings.service.form.availableServices",
1844 "start": {
1845 "column": 21,
1846 "line": 18
1847 }
1848 },
1849 {
1850 "defaultMessage": "!!!Could not load service recipe.",
1851 "end": {
1852 "column": 3,
1853 "line": 25
1854 },
1855 "file": "src/components/settings/services/ServiceError.js",
1856 "id": "settings.service.error.message",
1857 "start": {
1858 "column": 16,
1859 "line": 22
1860 }
1861 }
1862 ],
1863 "path": "src/components/settings/services/ServiceError.json"
1864 },
1865 {
1866 "descriptors": [
1867 {
1868 "defaultMessage": "!!!Service is disabled",
1869 "end": {
1870 "column": 3,
1871 "line": 14
1872 },
1873 "file": "src/components/settings/services/ServiceItem.js",
1874 "id": "settings.services.tooltip.isDisabled",
1875 "start": {
1876 "column": 21,
1877 "line": 11
1878 }
1879 },
1880 {
1881 "defaultMessage": "!!!Notifications are disabled",
1882 "end": {
1883 "column": 3,
1884 "line": 18
1885 },
1886 "file": "src/components/settings/services/ServiceItem.js",
1887 "id": "settings.services.tooltip.notificationsDisabled",
1888 "start": {
1889 "column": 32,
1890 "line": 15
1891 }
1892 },
1893 {
1894 "defaultMessage": "!!!All sounds are muted",
1895 "end": {
1896 "column": 3,
1897 "line": 22
1898 },
1899 "file": "src/components/settings/services/ServiceItem.js",
1900 "id": "settings.services.tooltip.isMuted",
1901 "start": {
1902 "column": 18,
1903 "line": 19
1904 }
1905 }
1906 ],
1907 "path": "src/components/settings/services/ServiceItem.json"
1908 },
1909 {
1910 "descriptors": [
1911 {
1912 "defaultMessage": "!!!Your services",
1913 "end": {
1914 "column": 3,
1915 "line": 17
1916 },
1917 "file": "src/components/settings/services/ServicesDashboard.js",
1918 "id": "settings.services.headline",
1919 "start": {
1920 "column": 12,
1921 "line": 14
1922 }
1923 },
1924 {
1925 "defaultMessage": "!!!Search service",
1926 "end": {
1927 "column": 3,
1928 "line": 21
1929 },
1930 "file": "src/components/settings/services/ServicesDashboard.js",
1931 "id": "settings.searchService",
1932 "start": {
1933 "column": 17,
1934 "line": 18
1935 }
1936 },
1937 {
1938 "defaultMessage": "!!!You haven't added any services yet.",
1939 "end": {
1940 "column": 3,
1941 "line": 25
1942 },
1943 "file": "src/components/settings/services/ServicesDashboard.js",
1944 "id": "settings.services.noServicesAdded",
1945 "start": {
1946 "column": 19,
1947 "line": 22
1948 }
1949 },
1950 {
1951 "defaultMessage": "!!!Sorry, but no service matched your search term.",
1952 "end": {
1953 "column": 3,
1954 "line": 29
1955 },
1956 "file": "src/components/settings/services/ServicesDashboard.js",
1957 "id": "settings.recipes.nothingFound",
1958 "start": {
1959 "column": 18,
1960 "line": 26
1961 }
1962 },
1963 {
1964 "defaultMessage": "!!!Discover services",
1965 "end": {
1966 "column": 3,
1967 "line": 33
1968 },
1969 "file": "src/components/settings/services/ServicesDashboard.js",
1970 "id": "settings.services.discoverServices",
1971 "start": {
1972 "column": 20,
1973 "line": 30
1974 }
1975 },
1976 {
1977 "defaultMessage": "!!!Could not load your services",
1978 "end": {
1979 "column": 3,
1980 "line": 37
1981 },
1982 "file": "src/components/settings/services/ServicesDashboard.js",
1983 "id": "settings.services.servicesRequestFailed",
1984 "start": {
1985 "column": 25,
1986 "line": 34
1987 }
1988 },
1989 {
1990 "defaultMessage": "!!!Try again",
1991 "end": {
1992 "column": 3,
1993 "line": 41
1994 },
1995 "file": "src/components/settings/services/ServicesDashboard.js",
1996 "id": "settings.account.tryReloadServices",
1997 "start": {
1998 "column": 21,
1999 "line": 38
2000 }
2001 },
2002 {
2003 "defaultMessage": "!!!Your changes have been saved",
2004 "end": {
2005 "column": 3,
2006 "line": 45
2007 },
2008 "file": "src/components/settings/services/ServicesDashboard.js",
2009 "id": "settings.services.updatedInfo",
2010 "start": {
2011 "column": 15,
2012 "line": 42
2013 }
2014 },
2015 {
2016 "defaultMessage": "!!!Service has been deleted",
2017 "end": {
2018 "column": 3,
2019 "line": 49
2020 },
2021 "file": "src/components/settings/services/ServicesDashboard.js",
2022 "id": "settings.services.deletedInfo",
2023 "start": {
2024 "column": 15,
2025 "line": 46
2026 }
2027 }
2028 ],
2029 "path": "src/components/settings/services/ServicesDashboard.json"
2030 },
2031 {
2032 "descriptors": [
2033 {
2034 "defaultMessage": "!!!Settings",
2035 "end": {
2036 "column": 3,
2037 "line": 19
2038 },
2039 "file": "src/components/settings/settings/EditSettingsForm.js",
2040 "id": "settings.app.headline",
2041 "start": {
2042 "column": 12,
2043 "line": 16
2044 }
2045 },
2046 {
2047 "defaultMessage": "!!!General",
2048 "end": {
2049 "column": 3,
2050 "line": 23
2051 },
2052 "file": "src/components/settings/settings/EditSettingsForm.js",
2053 "id": "settings.app.headlineGeneral",
2054 "start": {
2055 "column": 19,
2056 "line": 20
2057 }
2058 },
2059 {
2060 "defaultMessage": "!!!Language",
2061 "end": {
2062 "column": 3,
2063 "line": 27
2064 },
2065 "file": "src/components/settings/settings/EditSettingsForm.js",
2066 "id": "settings.app.headlineLanguage",
2067 "start": {
2068 "column": 20,
2069 "line": 24
2070 }
2071 },
2072 {
2073 "defaultMessage": "!!!Updates",
2074 "end": {
2075 "column": 3,
2076 "line": 31
2077 },
2078 "file": "src/components/settings/settings/EditSettingsForm.js",
2079 "id": "settings.app.headlineUpdates",
2080 "start": {
2081 "column": 19,
2082 "line": 28
2083 }
2084 },
2085 {
2086 "defaultMessage": "!!!Appearance",
2087 "end": {
2088 "column": 3,
2089 "line": 35
2090 },
2091 "file": "src/components/settings/settings/EditSettingsForm.js",
2092 "id": "settings.app.headlineAppearance",
2093 "start": {
2094 "column": 22,
2095 "line": 32
2096 }
2097 },
2098 {
2099 "defaultMessage": "!!!Advanced",
2100 "end": {
2101 "column": 3,
2102 "line": 39
2103 },
2104 "file": "src/components/settings/settings/EditSettingsForm.js",
2105 "id": "settings.app.headlineAdvanced",
2106 "start": {
2107 "column": 20,
2108 "line": 36
2109 }
2110 },
2111 {
2112 "defaultMessage": "!!!Help us to translate Franz into your language.",
2113 "end": {
2114 "column": 3,
2115 "line": 43
2116 },
2117 "file": "src/components/settings/settings/EditSettingsForm.js",
2118 "id": "settings.app.translationHelp",
2119 "start": {
2120 "column": 19,
2121 "line": 40
2122 }
2123 },
2124 {
2125 "defaultMessage": "!!!Cache",
2126 "end": {
2127 "column": 3,
2128 "line": 47
2129 },
2130 "file": "src/components/settings/settings/EditSettingsForm.js",
2131 "id": "settings.app.subheadlineCache",
2132 "start": {
2133 "column": 20,
2134 "line": 44
2135 }
2136 },
2137 {
2138 "defaultMessage": "!!!Franz cache is currently using {size} of disk space.",
2139 "end": {
2140 "column": 3,
2141 "line": 51
2142 },
2143 "file": "src/components/settings/settings/EditSettingsForm.js",
2144 "id": "settings.app.cacheInfo",
2145 "start": {
2146 "column": 13,
2147 "line": 48
2148 }
2149 },
2150 {
2151 "defaultMessage": "!!!Clear cache",
2152 "end": {
2153 "column": 3,
2154 "line": 55
2155 },
2156 "file": "src/components/settings/settings/EditSettingsForm.js",
2157 "id": "settings.app.buttonClearAllCache",
2158 "start": {
2159 "column": 23,
2160 "line": 52
2161 }
2162 },
2163 {
2164 "defaultMessage": "!!!Check for updates",
2165 "end": {
2166 "column": 3,
2167 "line": 59
2168 },
2169 "file": "src/components/settings/settings/EditSettingsForm.js",
2170 "id": "settings.app.buttonSearchForUpdate",
2171 "start": {
2172 "column": 25,
2173 "line": 56
2174 }
2175 },
2176 {
2177 "defaultMessage": "!!!Restart & install update",
2178 "end": {
2179 "column": 3,
2180 "line": 63
2181 },
2182 "file": "src/components/settings/settings/EditSettingsForm.js",
2183 "id": "settings.app.buttonInstallUpdate",
2184 "start": {
2185 "column": 23,
2186 "line": 60
2187 }
2188 },
2189 {
2190 "defaultMessage": "!!!Is searching for update",
2191 "end": {
2192 "column": 3,
2193 "line": 67
2194 },
2195 "file": "src/components/settings/settings/EditSettingsForm.js",
2196 "id": "settings.app.updateStatusSearching",
2197 "start": {
2198 "column": 25,
2199 "line": 64
2200 }
2201 },
2202 {
2203 "defaultMessage": "!!!Update available, downloading...",
2204 "end": {
2205 "column": 3,
2206 "line": 71
2207 },
2208 "file": "src/components/settings/settings/EditSettingsForm.js",
2209 "id": "settings.app.updateStatusAvailable",
2210 "start": {
2211 "column": 25,
2212 "line": 68
2213 }
2214 },
2215 {
2216 "defaultMessage": "!!!You are using the latest version of Franz",
2217 "end": {
2218 "column": 3,
2219 "line": 75
2220 },
2221 "file": "src/components/settings/settings/EditSettingsForm.js",
2222 "id": "settings.app.updateStatusUpToDate",
2223 "start": {
2224 "column": 24,
2225 "line": 72
2226 }
2227 },
2228 {
2229 "defaultMessage": "!!!Current version:",
2230 "end": {
2231 "column": 3,
2232 "line": 79
2233 },
2234 "file": "src/components/settings/settings/EditSettingsForm.js",
2235 "id": "settings.app.currentVersion",
2236 "start": {
2237 "column": 18,
2238 "line": 76
2239 }
2240 },
2241 {
2242 "defaultMessage": "!!!Changes require restart",
2243 "end": {
2244 "column": 3,
2245 "line": 83
2246 },
2247 "file": "src/components/settings/settings/EditSettingsForm.js",
2248 "id": "settings.app.restartRequired",
2249 "start": {
2250 "column": 29,
2251 "line": 80
2252 }
2253 },
2254 {
2255 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.",
2256 "end": {
2257 "column": 3,
2258 "line": 87
2259 },
2260 "file": "src/components/settings/settings/EditSettingsForm.js",
2261 "id": "settings.app.languageDisclaimer",
2262 "start": {
2263 "column": 22,
2264 "line": 84
2265 }
2266 }
2267 ],
2268 "path": "src/components/settings/settings/EditSettingsForm.json"
2269 },
2270 {
2271 "descriptors": [
2272 {
2273 "defaultMessage": "!!!Team",
2274 "end": {
2275 "column": 3,
2276 "line": 17
2277 },
2278 "file": "src/components/settings/team/TeamDashboard.js",
2279 "id": "settings.team.headline",
2280 "start": {
2281 "column": 12,
2282 "line": 14
2283 }
2284 },
2285 {
2286 "defaultMessage": "!!!Franz for Teams",
2287 "end": {
2288 "column": 3,
2289 "line": 21
2290 },
2291 "file": "src/components/settings/team/TeamDashboard.js",
2292 "id": "settings.team.contentHeadline",
2293 "start": {
2294 "column": 19,
2295 "line": 18
2296 }
2297 },
2298 {
2299 "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
2300 "end": {
2301 "column": 3,
2302 "line": 25
2303 },
2304 "file": "src/components/settings/team/TeamDashboard.js",
2305 "id": "settings.team.intro",
2306 "start": {
2307 "column": 9,
2308 "line": 22
2309 }
2310 },
2311 {
2312 "defaultMessage": "!!!Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
2313 "end": {
2314 "column": 3,
2315 "line": 29
2316 },
2317 "file": "src/components/settings/team/TeamDashboard.js",
2318 "id": "settings.team.copy",
2319 "start": {
2320 "column": 8,
2321 "line": 26
2322 }
2323 },
2324 {
2325 "defaultMessage": "!!!Manage your Team on meetfranz.com",
2326 "end": {
2327 "column": 3,
2328 "line": 33
2329 },
2330 "file": "src/components/settings/team/TeamDashboard.js",
2331 "id": "settings.team.manageAction",
2332 "start": {
2333 "column": 16,
2334 "line": 30
2335 }
2336 },
2337 {
2338 "defaultMessage": "!!!Upgrade your Account",
2339 "end": {
2340 "column": 3,
2341 "line": 37
2342 },
2343 "file": "src/components/settings/team/TeamDashboard.js",
2344 "id": "settings.team.upgradeAction",
2345 "start": {
2346 "column": 17,
2347 "line": 34
2348 }
2349 }
2350 ],
2351 "path": "src/components/settings/team/TeamDashboard.json"
2352 },
2353 {
2354 "descriptors": [
2355 {
2356 "defaultMessage": "!!!Account",
2357 "end": {
2358 "column": 3,
2359 "line": 18
2360 },
2361 "file": "src/components/settings/user/EditUserForm.js",
2362 "id": "settings.account.headline",
2363 "start": {
2364 "column": 12,
2365 "line": 15
2366 }
2367 },
2368 {
2369 "defaultMessage": "!!!Update Profile",
2370 "end": {
2371 "column": 3,
2372 "line": 22
2373 },
2374 "file": "src/components/settings/user/EditUserForm.js",
2375 "id": "settings.account.headlineProfile",
2376 "start": {
2377 "column": 19,
2378 "line": 19
2379 }
2380 },
2381 {
2382 "defaultMessage": "!!!Account Information",
2383 "end": {
2384 "column": 3,
2385 "line": 26
2386 },
2387 "file": "src/components/settings/user/EditUserForm.js",
2388 "id": "settings.account.headlineAccount",
2389 "start": {
2390 "column": 19,
2391 "line": 23
2392 }
2393 },
2394 {
2395 "defaultMessage": "!!!Change Password",
2396 "end": {
2397 "column": 3,
2398 "line": 30
2399 },
2400 "file": "src/components/settings/user/EditUserForm.js",
2401 "id": "settings.account.headlinePassword",
2402 "start": {
2403 "column": 20,
2404 "line": 27
2405 }
2406 },
2407 {
2408 "defaultMessage": "!!!Your changes have been saved",
2409 "end": {
2410 "column": 3,
2411 "line": 34
2412 },
2413 "file": "src/components/settings/user/EditUserForm.js",
2414 "id": "settings.account.successInfo",
2415 "start": {
2416 "column": 15,
2417 "line": 31
2418 }
2419 },
2420 {
2421 "defaultMessage": "!!!Update profile",
2422 "end": {
2423 "column": 3,
2424 "line": 38
2425 },
2426 "file": "src/components/settings/user/EditUserForm.js",
2427 "id": "settings.account.buttonSave",
2428 "start": {
2429 "column": 14,
2430 "line": 35
2431 }
2432 }
2433 ],
2434 "path": "src/components/settings/user/EditUserForm.json"
2435 },
2436 {
2437 "descriptors": [
2438 {
2439 "defaultMessage": "!!!Support the development of Franz",
2440 "end": {
2441 "column": 3,
2442 "line": 17
2443 },
2444 "file": "src/components/subscription/SubscriptionForm.js",
2445 "id": "subscription.submit.label",
2446 "start": {
2447 "column": 21,
2448 "line": 14
2449 }
2450 },
2451 {
2452 "defaultMessage": "!!!Could not initialize payment form",
2453 "end": {
2454 "column": 3,
2455 "line": 21
2456 },
2457 "file": "src/components/subscription/SubscriptionForm.js",
2458 "id": "subscription.paymentSessionError",
2459 "start": {
2460 "column": 23,
2461 "line": 18
2462 }
2463 },
2464 {
2465 "defaultMessage": "!!!free",
2466 "end": {
2467 "column": 3,
2468 "line": 25
2469 },
2470 "file": "src/components/subscription/SubscriptionForm.js",
2471 "id": "subscription.type.free",
2472 "start": {
2473 "column": 12,
2474 "line": 22
2475 }
2476 },
2477 {
2478 "defaultMessage": "!!!month",
2479 "end": {
2480 "column": 3,
2481 "line": 29
2482 },
2483 "file": "src/components/subscription/SubscriptionForm.js",
2484 "id": "subscription.type.month",
2485 "start": {
2486 "column": 15,
2487 "line": 26
2488 }
2489 },
2490 {
2491 "defaultMessage": "!!!year",
2492 "end": {
2493 "column": 3,
2494 "line": 33
2495 },
2496 "file": "src/components/subscription/SubscriptionForm.js",
2497 "id": "subscription.type.year",
2498 "start": {
2499 "column": 14,
2500 "line": 30
2501 }
2502 },
2503 {
2504 "defaultMessage": "!!!The Franz Premium Supporter Account includes",
2505 "end": {
2506 "column": 3,
2507 "line": 37
2508 },
2509 "file": "src/components/subscription/SubscriptionForm.js",
2510 "id": "subscription.includedFeatures",
2511 "start": {
2512 "column": 20,
2513 "line": 34
2514 }
2515 },
2516 {
2517 "defaultMessage": "!!!Add on-premise/hosted services like Mattermost",
2518 "end": {
2519 "column": 3,
2520 "line": 41
2521 },
2522 "file": "src/components/subscription/SubscriptionForm.js",
2523 "id": "subscription.features.onpremise.mattermost",
2524 "start": {
2525 "column": 13,
2526 "line": 38
2527 }
2528 },
2529 {
2530 "defaultMessage": "!!!No app delays & nagging to upgrade license",
2531 "end": {
2532 "column": 3,
2533 "line": 45
2534 },
2535 "file": "src/components/subscription/SubscriptionForm.js",
2536 "id": "subscription.features.noInterruptions",
2537 "start": {
2538 "column": 19,
2539 "line": 42
2540 }
2541 },
2542 {
2543 "defaultMessage": "!!!Proxy support for services",
2544 "end": {
2545 "column": 3,
2546 "line": 49
2547 },
2548 "file": "src/components/subscription/SubscriptionForm.js",
2549 "id": "subscription.features.proxy",
2550 "start": {
2551 "column": 9,
2552 "line": 46
2553 }
2554 },
2555 {
2556 "defaultMessage": "!!!Support for Spellchecker",
2557 "end": {
2558 "column": 3,
2559 "line": 53
2560 },
2561 "file": "src/components/subscription/SubscriptionForm.js",
2562 "id": "subscription.features.spellchecker",
2563 "start": {
2564 "column": 16,
2565 "line": 50
2566 }
2567 },
2568 {
2569 "defaultMessage": "!!!Organize your services in workspaces",
2570 "end": {
2571 "column": 3,
2572 "line": 57
2573 },
2574 "file": "src/components/subscription/SubscriptionForm.js",
2575 "id": "subscription.features.workspaces",
2576 "start": {
2577 "column": 14,
2578 "line": 54
2579 }
2580 },
2581 {
2582 "defaultMessage": "!!!No ads, ever!",
2583 "end": {
2584 "column": 3,
2585 "line": 61
2586 },
2587 "file": "src/components/subscription/SubscriptionForm.js",
2588 "id": "subscription.features.ads",
2589 "start": {
2590 "column": 7,
2591 "line": 58
2592 }
2593 },
2594 {
2595 "defaultMessage": "!!!coming soon",
2596 "end": {
2597 "column": 3,
2598 "line": 65
2599 },
2600 "file": "src/components/subscription/SubscriptionForm.js",
2601 "id": "subscription.features.comingSoon",
2602 "start": {
2603 "column": 14,
2604 "line": 62
2605 }
2606 },
2607 {
2608 "defaultMessage": "!!!EU residents: local sales tax may apply",
2609 "end": {
2610 "column": 3,
2611 "line": 69
2612 },
2613 "file": "src/components/subscription/SubscriptionForm.js",
2614 "id": "subscription.euTaxInfo",
2615 "start": {
2616 "column": 13,
2617 "line": 66
2618 }
2619 }
2620 ],
2621 "path": "src/components/subscription/SubscriptionForm.json"
2622 },
2623 {
2624 "descriptors": [
2625 {
2626 "defaultMessage": "!!!Cancel",
2627 "end": {
2628 "column": 3,
2629 "line": 14
2630 },
2631 "file": "src/components/subscription/SubscriptionPopup.js",
2632 "id": "subscriptionPopup.buttonCancel",
2633 "start": {
2634 "column": 16,
2635 "line": 11
2636 }
2637 },
2638 {
2639 "defaultMessage": "!!!Done",
2640 "end": {
2641 "column": 3,
2642 "line": 18
2643 },
2644 "file": "src/components/subscription/SubscriptionPopup.js",
2645 "id": "subscriptionPopup.buttonDone",
2646 "start": {
2647 "column": 14,
2648 "line": 15
2649 }
2650 }
2651 ],
2652 "path": "src/components/subscription/SubscriptionPopup.json"
2653 },
2654 {
2655 "descriptors": [
2656 {
2657 "defaultMessage": "!!!Upgrade account",
2658 "end": {
2659 "column": 3,
2660 "line": 18
2661 },
2662 "file": "src/components/ui/PremiumFeatureContainer/index.js",
2663 "id": "premiumFeature.button.upgradeAccount",
2664 "start": {
2665 "column": 10,
2666 "line": 15
2667 }
2668 }
2669 ],
2670 "path": "src/components/ui/PremiumFeatureContainer/index.json"
2671 },
2672 {
2673 "descriptors": [
2674 {
2675 "defaultMessage": "!!!Loading",
2676 "end": {
2677 "column": 3,
2678 "line": 14
2679 },
2680 "file": "src/components/ui/WebviewLoader/index.js",
2681 "id": "service.webviewLoader.loading",
2682 "start": {
2683 "column": 11,
2684 "line": 11
2685 }
2686 }
2687 ],
2688 "path": "src/components/ui/WebviewLoader/index.json"
2689 },
2690 {
2691 "descriptors": [
2692 {
2693 "defaultMessage": "!!!Something went wrong.",
2694 "end": {
2695 "column": 3,
2696 "line": 14
2697 },
2698 "file": "src/components/util/ErrorBoundary/index.js",
2699 "id": "app.errorHandler.headline",
2700 "start": {
2701 "column": 12,
2702 "line": 11
2703 }
2704 },
2705 {
2706 "defaultMessage": "!!!Reload",
2707 "end": {
2708 "column": 3,
2709 "line": 18
2710 },
2711 "file": "src/components/util/ErrorBoundary/index.js",
2712 "id": "app.errorHandler.action",
2713 "start": {
2714 "column": 10,
2715 "line": 15
2716 }
2717 }
2718 ],
2719 "path": "src/components/util/ErrorBoundary/index.json"
2720 },
2721 {
2722 "descriptors": [
2723 {
2724 "defaultMessage": "!!!Name",
2725 "end": {
2726 "column": 3,
2727 "line": 31
2728 },
2729 "file": "src/containers/settings/EditServiceScreen.js",
2730 "id": "settings.service.form.name",
2731 "start": {
2732 "column": 8,
2733 "line": 28
2734 }
2735 },
2736 {
2737 "defaultMessage": "!!!Enable service",
2738 "end": {
2739 "column": 3,
2740 "line": 35
2741 },
2742 "file": "src/containers/settings/EditServiceScreen.js",
2743 "id": "settings.service.form.enableService",
2744 "start": {
2745 "column": 17,
2746 "line": 32
2747 }
2748 },
2749 {
2750 "defaultMessage": "!!!Enable Notifications",
2751 "end": {
2752 "column": 3,
2753 "line": 39
2754 },
2755 "file": "src/containers/settings/EditServiceScreen.js",
2756 "id": "settings.service.form.enableNotification",
2757 "start": {
2758 "column": 22,
2759 "line": 36
2760 }
2761 },
2762 {
2763 "defaultMessage": "!!!Show unread message badges",
2764 "end": {
2765 "column": 3,
2766 "line": 43
2767 },
2768 "file": "src/containers/settings/EditServiceScreen.js",
2769 "id": "settings.service.form.enableBadge",
2770 "start": {
2771 "column": 15,
2772 "line": 40
2773 }
2774 },
2775 {
2776 "defaultMessage": "!!!Enable audio",
2777 "end": {
2778 "column": 3,
2779 "line": 47
2780 },
2781 "file": "src/containers/settings/EditServiceScreen.js",
2782 "id": "settings.service.form.enableAudio",
2783 "start": {
2784 "column": 15,
2785 "line": 44
2786 }
2787 },
2788 {
2789 "defaultMessage": "!!!Team",
2790 "end": {
2791 "column": 3,
2792 "line": 51
2793 },
2794 "file": "src/containers/settings/EditServiceScreen.js",
2795 "id": "settings.service.form.team",
2796 "start": {
2797 "column": 8,
2798 "line": 48
2799 }
2800 },
2801 {
2802 "defaultMessage": "!!!Custom server",
2803 "end": {
2804 "column": 3,
2805 "line": 55
2806 },
2807 "file": "src/containers/settings/EditServiceScreen.js",
2808 "id": "settings.service.form.customUrl",
2809 "start": {
2810 "column": 13,
2811 "line": 52
2812 }
2813 },
2814 {
2815 "defaultMessage": "!!!Show message badge for all new messages",
2816 "end": {
2817 "column": 3,
2818 "line": 59
2819 },
2820 "file": "src/containers/settings/EditServiceScreen.js",
2821 "id": "settings.service.form.indirectMessages",
2822 "start": {
2823 "column": 20,
2824 "line": 56
2825 }
2826 },
2827 {
2828 "defaultMessage": "!!!Custom icon",
2829 "end": {
2830 "column": 3,
2831 "line": 63
2832 },
2833 "file": "src/containers/settings/EditServiceScreen.js",
2834 "id": "settings.service.form.icon",
2835 "start": {
2836 "column": 8,
2837 "line": 60
2838 }
2839 },
2840 {
2841 "defaultMessage": "!!!Enable Dark Mode",
2842 "end": {
2843 "column": 3,
2844 "line": 67
2845 },
2846 "file": "src/containers/settings/EditServiceScreen.js",
2847 "id": "settings.service.form.enableDarkMode",
2848 "start": {
2849 "column": 18,
2850 "line": 64
2851 }
2852 },
2853 {
2854 "defaultMessage": "!!!Use Proxy",
2855 "end": {
2856 "column": 3,
2857 "line": 71
2858 },
2859 "file": "src/containers/settings/EditServiceScreen.js",
2860 "id": "settings.service.form.proxy.isEnabled",
2861 "start": {
2862 "column": 15,
2863 "line": 68
2864 }
2865 },
2866 {
2867 "defaultMessage": "!!!Proxy Host/IP",
2868 "end": {
2869 "column": 3,
2870 "line": 75
2871 },
2872 "file": "src/containers/settings/EditServiceScreen.js",
2873 "id": "settings.service.form.proxy.host",
2874 "start": {
2875 "column": 13,
2876 "line": 72
2877 }
2878 },
2879 {
2880 "defaultMessage": "!!!Port",
2881 "end": {
2882 "column": 3,
2883 "line": 79
2884 },
2885 "file": "src/containers/settings/EditServiceScreen.js",
2886 "id": "settings.service.form.proxy.port",
2887 "start": {
2888 "column": 13,
2889 "line": 76
2890 }
2891 },
2892 {
2893 "defaultMessage": "!!!User",
2894 "end": {
2895 "column": 3,
2896 "line": 83
2897 },
2898 "file": "src/containers/settings/EditServiceScreen.js",
2899 "id": "settings.service.form.proxy.user",
2900 "start": {
2901 "column": 13,
2902 "line": 80
2903 }
2904 },
2905 {
2906 "defaultMessage": "!!!Password",
2907 "end": {
2908 "column": 3,
2909 "line": 87
2910 },
2911 "file": "src/containers/settings/EditServiceScreen.js",
2912 "id": "settings.service.form.proxy.password",
2913 "start": {
2914 "column": 17,
2915 "line": 84
2916 }
2917 }
2918 ],
2919 "path": "src/containers/settings/EditServiceScreen.json"
2920 },
2921 {
2922 "descriptors": [
2923 {
2924 "defaultMessage": "!!!Launch Franz on start",
2925 "end": {
2926 "column": 3,
2927 "line": 25
2928 },
2929 "file": "src/containers/settings/EditSettingsScreen.js",
2930 "id": "settings.app.form.autoLaunchOnStart",
2931 "start": {
2932 "column": 21,
2933 "line": 22
2934 }
2935 },
2936 {
2937 "defaultMessage": "!!!Open in background",
2938 "end": {
2939 "column": 3,
2940 "line": 29
2941 },
2942 "file": "src/containers/settings/EditSettingsScreen.js",
2943 "id": "settings.app.form.autoLaunchInBackground",
2944 "start": {
2945 "column": 26,
2946 "line": 26
2947 }
2948 },
2949 {
2950 "defaultMessage": "!!!Keep Franz in background when closing the window",
2951 "end": {
2952 "column": 3,
2953 "line": 33
2954 },
2955 "file": "src/containers/settings/EditSettingsScreen.js",
2956 "id": "settings.app.form.runInBackground",
2957 "start": {
2958 "column": 19,
2959 "line": 30
2960 }
2961 },
2962 {
2963 "defaultMessage": "!!!Show Franz in system tray",
2964 "end": {
2965 "column": 3,
2966 "line": 37
2967 },
2968 "file": "src/containers/settings/EditSettingsScreen.js",
2969 "id": "settings.app.form.enableSystemTray",
2970 "start": {
2971 "column": 20,
2972 "line": 34
2973 }
2974 },
2975 {
2976 "defaultMessage": "!!!Minimize Franz to system tray",
2977 "end": {
2978 "column": 3,
2979 "line": 41
2980 },
2981 "file": "src/containers/settings/EditSettingsScreen.js",
2982 "id": "settings.app.form.minimizeToSystemTray",
2983 "start": {
2984 "column": 24,
2985 "line": 38
2986 }
2987 },
2988 {
2989 "defaultMessage": "!!!Language",
2990 "end": {
2991 "column": 3,
2992 "line": 45
2993 },
2994 "file": "src/containers/settings/EditSettingsScreen.js",
2995 "id": "settings.app.form.language",
2996 "start": {
2997 "column": 12,
2998 "line": 42
2999 }
3000 },
3001 {
3002 "defaultMessage": "!!!Dark Mode",
3003 "end": {
3004 "column": 3,
3005 "line": 49
3006 },
3007 "file": "src/containers/settings/EditSettingsScreen.js",
3008 "id": "settings.app.form.darkMode",
3009 "start": {
3010 "column": 12,
3011 "line": 46
3012 }
3013 },
3014 {
3015 "defaultMessage": "!!!Display disabled services tabs",
3016 "end": {
3017 "column": 3,
3018 "line": 53
3019 },
3020 "file": "src/containers/settings/EditSettingsScreen.js",
3021 "id": "settings.app.form.showDisabledServices",
3022 "start": {
3023 "column": 24,
3024 "line": 50
3025 }
3026 },
3027 {
3028 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
3029 "end": {
3030 "column": 3,
3031 "line": 57
3032 },
3033 "file": "src/containers/settings/EditSettingsScreen.js",
3034 "id": "settings.app.form.showMessagesBadgesWhenMuted",
3035 "start": {
3036 "column": 29,
3037 "line": 54
3038 }
3039 },
3040 {
3041 "defaultMessage": "!!!Enable spell checking",
3042 "end": {
3043 "column": 3,
3044 "line": 61
3045 },
3046 "file": "src/containers/settings/EditSettingsScreen.js",
3047 "id": "settings.app.form.enableSpellchecking",
3048 "start": {
3049 "column": 23,
3050 "line": 58
3051 }
3052 },
3053 {
3054 "defaultMessage": "!!!Enable GPU Acceleration",
3055 "end": {
3056 "column": 3,
3057 "line": 65
3058 },
3059 "file": "src/containers/settings/EditSettingsScreen.js",
3060 "id": "settings.app.form.enableGPUAcceleration",
3061 "start": {
3062 "column": 25,
3063 "line": 62
3064 }
3065 },
3066 {
3067 "defaultMessage": "!!!Include beta versions",
3068 "end": {
3069 "column": 3,
3070 "line": 69
3071 },
3072 "file": "src/containers/settings/EditSettingsScreen.js",
3073 "id": "settings.app.form.beta",
3074 "start": {
3075 "column": 8,
3076 "line": 66
3077 }
3078 }
3079 ],
3080 "path": "src/containers/settings/EditSettingsScreen.json"
3081 },
3082 {
3083 "descriptors": [
3084 {
3085 "defaultMessage": "!!!Firstname",
3086 "end": {
3087 "column": 3,
3088 "line": 17
3089 },
3090 "file": "src/containers/settings/EditUserScreen.js",
3091 "id": "settings.user.form.firstname",
3092 "start": {
3093 "column": 13,
3094 "line": 14
3095 }
3096 },
3097 {
3098 "defaultMessage": "!!!Lastname",
3099 "end": {
3100 "column": 3,
3101 "line": 21
3102 },
3103 "file": "src/containers/settings/EditUserScreen.js",
3104 "id": "settings.user.form.lastname",
3105 "start": {
3106 "column": 12,
3107 "line": 18
3108 }
3109 },
3110 {
3111 "defaultMessage": "!!!Email",
3112 "end": {
3113 "column": 3,
3114 "line": 25
3115 },
3116 "file": "src/containers/settings/EditUserScreen.js",
3117 "id": "settings.user.form.email",
3118 "start": {
3119 "column": 9,
3120 "line": 22
3121 }
3122 },
3123 {
3124 "defaultMessage": "!!!Account type",
3125 "end": {
3126 "column": 3,
3127 "line": 29
3128 },
3129 "file": "src/containers/settings/EditUserScreen.js",
3130 "id": "settings.user.form.accountType.label",
3131 "start": {
3132 "column": 20,
3133 "line": 26
3134 }
3135 },
3136 {
3137 "defaultMessage": "!!!Individual",
3138 "end": {
3139 "column": 3,
3140 "line": 33
3141 },
3142 "file": "src/containers/settings/EditUserScreen.js",
3143 "id": "settings.user.form.accountType.individual",
3144 "start": {
3145 "column": 25,
3146 "line": 30
3147 }
3148 },
3149 {
3150 "defaultMessage": "!!!Non-Profit",
3151 "end": {
3152 "column": 3,
3153 "line": 37
3154 },
3155 "file": "src/containers/settings/EditUserScreen.js",
3156 "id": "settings.user.form.accountType.non-profit",
3157 "start": {
3158 "column": 24,
3159 "line": 34
3160 }
3161 },
3162 {
3163 "defaultMessage": "!!!Company",
3164 "end": {
3165 "column": 3,
3166 "line": 41
3167 },
3168 "file": "src/containers/settings/EditUserScreen.js",
3169 "id": "settings.user.form.accountType.company",
3170 "start": {
3171 "column": 22,
3172 "line": 38
3173 }
3174 },
3175 {
3176 "defaultMessage": "!!!Current password",
3177 "end": {
3178 "column": 3,
3179 "line": 45
3180 },
3181 "file": "src/containers/settings/EditUserScreen.js",
3182 "id": "settings.user.form.currentPassword",
3183 "start": {
3184 "column": 19,
3185 "line": 42
3186 }
3187 },
3188 {
3189 "defaultMessage": "!!!New password",
3190 "end": {
3191 "column": 3,
3192 "line": 49
3193 },
3194 "file": "src/containers/settings/EditUserScreen.js",
3195 "id": "settings.user.form.newPassword",
3196 "start": {
3197 "column": 15,
3198 "line": 46
3199 }
3200 }
3201 ],
3202 "path": "src/containers/settings/EditUserScreen.json"
3203 },
3204 {
3205 "descriptors": [
3206 {
3207 "defaultMessage": "!!!Changes in Franz {version}",
3208 "end": {
3209 "column": 3,
3210 "line": 23
3211 },
3212 "file": "src/features/announcements/components/AnnouncementScreen.js",
3213 "id": "feature.announcements.changelog.headline",
3214 "start": {
3215 "column": 12,
3216 "line": 20
3217 }
3218 }
3219 ],
3220 "path": "src/features/announcements/components/AnnouncementScreen.json"
3221 },
3222 {
3223 "descriptors": [
3224 {
3225 "defaultMessage": "!!!Please purchase license to skip waiting",
3226 "end": {
3227 "column": 3,
3228 "line": 18
3229 },
3230 "file": "src/features/delayApp/Component.js",
3231 "id": "feature.delayApp.headline",
3232 "start": {
3233 "column": 12,
3234 "line": 15
3235 }
3236 },
3237 {
3238 "defaultMessage": "!!!Get a Franz Supporter License",
3239 "end": {
3240 "column": 3,
3241 "line": 22
3242 },
3243 "file": "src/features/delayApp/Component.js",
3244 "id": "feature.delayApp.action",
3245 "start": {
3246 "column": 10,
3247 "line": 19
3248 }
3249 },
3250 {
3251 "defaultMessage": "!!!Franz will continue in {seconds} seconds.",
3252 "end": {
3253 "column": 3,
3254 "line": 26
3255 },
3256 "file": "src/features/delayApp/Component.js",
3257 "id": "feature.delayApp.text",
3258 "start": {
3259 "column": 8,
3260 "line": 23
3261 }
3262 }
3263 ],
3264 "path": "src/features/delayApp/Component.json"
3265 },
3266 {
3267 "descriptors": [
3268 {
3269 "defaultMessage": "!!!Franz is better together!",
3270 "end": {
3271 "column": 3,
3272 "line": 18
3273 },
3274 "file": "src/features/shareFranz/Component.js",
3275 "id": "feature.shareFranz.headline",
3276 "start": {
3277 "column": 12,
3278 "line": 15
3279 }
3280 },
3281 {
3282 "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
3283 "end": {
3284 "column": 3,
3285 "line": 22
3286 },
3287 "file": "src/features/shareFranz/Component.js",
3288 "id": "feature.shareFranz.text",
3289 "start": {
3290 "column": 8,
3291 "line": 19
3292 }
3293 },
3294 {
3295 "defaultMessage": "!!!Share as email",
3296 "end": {
3297 "column": 3,
3298 "line": 26
3299 },
3300 "file": "src/features/shareFranz/Component.js",
3301 "id": "feature.shareFranz.action.email",
3302 "start": {
3303 "column": 16,
3304 "line": 23
3305 }
3306 },
3307 {
3308 "defaultMessage": "!!!Share on Facebook",
3309 "end": {
3310 "column": 3,
3311 "line": 30
3312 },
3313 "file": "src/features/shareFranz/Component.js",
3314 "id": "feature.shareFranz.action.facebook",
3315 "start": {
3316 "column": 19,
3317 "line": 27
3318 }
3319 },
3320 {
3321 "defaultMessage": "!!!Share on Twitter",
3322 "end": {
3323 "column": 3,
3324 "line": 34
3325 },
3326 "file": "src/features/shareFranz/Component.js",
3327 "id": "feature.shareFranz.action.twitter",
3328 "start": {
3329 "column": 18,
3330 "line": 31
3331 }
3332 },
3333 {
3334 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
3335 "end": {
3336 "column": 3,
3337 "line": 38
3338 },
3339 "file": "src/features/shareFranz/Component.js",
3340 "id": "feature.shareFranz.shareText.email",
3341 "start": {
3342 "column": 18,
3343 "line": 35
3344 }
3345 },
3346 {
3347 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger",
3348 "end": {
3349 "column": 3,
3350 "line": 42
3351 },
3352 "file": "src/features/shareFranz/Component.js",
3353 "id": "feature.shareFranz.shareText.twitter",
3354 "start": {
3355 "column": 20,
3356 "line": 39
3357 }
3358 }
3359 ],
3360 "path": "src/features/shareFranz/Component.json"
3361 },
3362 {
3363 "descriptors": [
3364 {
3365 "defaultMessage": "!!!Create workspace",
3366 "end": {
3367 "column": 3,
3368 "line": 16
3369 },
3370 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
3371 "id": "settings.workspace.add.form.submitButton",
3372 "start": {
3373 "column": 16,
3374 "line": 13
3375 }
3376 },
3377 {
3378 "defaultMessage": "!!!Name",
3379 "end": {
3380 "column": 3,
3381 "line": 20
3382 },
3383 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
3384 "id": "settings.workspace.add.form.name",
3385 "start": {
3386 "column": 8,
3387 "line": 17
3388 }
3389 }
3390 ],
3391 "path": "src/features/workspaces/components/CreateWorkspaceForm.json"
3392 },
3393 {
3394 "descriptors": [
3395 {
3396 "defaultMessage": "!!!Delete workspace",
3397 "end": {
3398 "column": 3,
3399 "line": 22
3400 },
3401 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
3402 "id": "settings.workspace.form.buttonDelete",
3403 "start": {
3404 "column": 16,
3405 "line": 19
3406 }
3407 },
3408 {
3409 "defaultMessage": "!!!Save workspace",
3410 "end": {
3411 "column": 3,
3412 "line": 26
3413 },
3414 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
3415 "id": "settings.workspace.form.buttonSave",
3416 "start": {
3417 "column": 14,
3418 "line": 23
3419 }
3420 },
3421 {
3422 "defaultMessage": "!!!Name",
3423 "end": {
3424 "column": 3,
3425 "line": 30
3426 },
3427 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
3428 "id": "settings.workspace.form.name",
3429 "start": {
3430 "column": 8,
3431 "line": 27
3432 }
3433 },
3434 {
3435 "defaultMessage": "!!!Your workspaces",
3436 "end": {
3437 "column": 3,
3438 "line": 34
3439 },
3440 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
3441 "id": "settings.workspace.form.yourWorkspaces",
3442 "start": {
3443 "column": 18,
3444 "line": 31
3445 }
3446 },
3447 {
3448 "defaultMessage": "!!!Services in this Workspace",
3449 "end": {
3450 "column": 3,
3451 "line": 38
3452 },
3453 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
3454 "id": "settings.workspace.form.servicesInWorkspaceHeadline",
3455 "start": {
3456 "column": 31,
3457 "line": 35
3458 }
3459 },
3460 {
3461 "defaultMessage": "!!!You haven't added any services yet.",
3462 "end": {
3463 "column": 3,
3464 "line": 42
3465 },
3466 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
3467 "id": "settings.services.noServicesAdded",
3468 "start": {
3469 "column": 19,
3470 "line": 39
3471 }
3472 },
3473 {
3474 "defaultMessage": "!!!Discover services",
3475 "end": {
3476 "column": 3,
3477 "line": 46
3478 },
3479 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
3480 "id": "settings.services.discoverServices",
3481 "start": {
3482 "column": 20,
3483 "line": 43
3484 }
3485 }
3486 ],
3487 "path": "src/features/workspaces/components/EditWorkspaceForm.json"
3488 },
3489 {
3490 "descriptors": [
3491 {
3492 "defaultMessage": "!!!Workspaces",
3493 "end": {
3494 "column": 3,
3495 "line": 19
3496 },
3497 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3498 "id": "workspaceDrawer.headline",
3499 "start": {
3500 "column": 12,
3501 "line": 16
3502 }
3503 },
3504 {
3505 "defaultMessage": "!!!All services",
3506 "end": {
3507 "column": 3,
3508 "line": 23
3509 },
3510 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3511 "id": "workspaceDrawer.allServices",
3512 "start": {
3513 "column": 15,
3514 "line": 20
3515 }
3516 },
3517 {
3518 "defaultMessage": "!!!Workspaces settings",
3519 "end": {
3520 "column": 3,
3521 "line": 27
3522 },
3523 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3524 "id": "workspaceDrawer.workspacesSettingsTooltip",
3525 "start": {
3526 "column": 29,
3527 "line": 24
3528 }
3529 },
3530 {
3531 "defaultMessage": "!!!Info about workspace feature",
3532 "end": {
3533 "column": 3,
3534 "line": 31
3535 },
3536 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3537 "id": "workspaceDrawer.workspaceFeatureInfo",
3538 "start": {
3539 "column": 24,
3540 "line": 28
3541 }
3542 },
3543 {
3544 "defaultMessage": "!!!Create your first workspace",
3545 "end": {
3546 "column": 3,
3547 "line": 35
3548 },
3549 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3550 "id": "workspaceDrawer.premiumCtaButtonLabel",
3551 "start": {
3552 "column": 25,
3553 "line": 32
3554 }
3555 },
3556 {
3557 "defaultMessage": "!!!Reactivate premium account",
3558 "end": {
3559 "column": 3,
3560 "line": 39
3561 },
3562 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3563 "id": "workspaceDrawer.reactivatePremiumAccountLabel",
3564 "start": {
3565 "column": 28,
3566 "line": 36
3567 }
3568 },
3569 {
3570 "defaultMessage": "!!!add new workspace",
3571 "end": {
3572 "column": 3,
3573 "line": 43
3574 },
3575 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3576 "id": "workspaceDrawer.addNewWorkspaceLabel",
3577 "start": {
3578 "column": 24,
3579 "line": 40
3580 }
3581 },
3582 {
3583 "defaultMessage": "!!!Premium feature",
3584 "end": {
3585 "column": 3,
3586 "line": 47
3587 },
3588 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
3589 "id": "workspaceDrawer.proFeatureBadge",
3590 "start": {
3591 "column": 23,
3592 "line": 44
3593 }
3594 }
3595 ],
3596 "path": "src/features/workspaces/components/WorkspaceDrawer.json"
3597 },
3598 {
3599 "descriptors": [
3600 {
3601 "defaultMessage": "!!!No services added yet",
3602 "end": {
3603 "column": 3,
3604 "line": 15
3605 },
3606 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js",
3607 "id": "workspaceDrawer.item.noServicesAddedYet",
3608 "start": {
3609 "column": 22,
3610 "line": 12
3611 }
3612 },
3613 {
3614 "defaultMessage": "!!!edit",
3615 "end": {
3616 "column": 3,
3617 "line": 19
3618 },
3619 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js",
3620 "id": "workspaceDrawer.item.contextMenuEdit",
3621 "start": {
3622 "column": 19,
3623 "line": 16
3624 }
3625 }
3626 ],
3627 "path": "src/features/workspaces/components/WorkspaceDrawerItem.json"
3628 },
3629 {
3630 "descriptors": [
3631 {
3632 "defaultMessage": "!!!Your workspaces",
3633 "end": {
3634 "column": 3,
3635 "line": 20
3636 },
3637 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3638 "id": "settings.workspaces.headline",
3639 "start": {
3640 "column": 12,
3641 "line": 17
3642 }
3643 },
3644 {
3645 "defaultMessage": "!!!You haven't added any workspaces yet.",
3646 "end": {
3647 "column": 3,
3648 "line": 24
3649 },
3650 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3651 "id": "settings.workspaces.noWorkspacesAdded",
3652 "start": {
3653 "column": 19,
3654 "line": 21
3655 }
3656 },
3657 {
3658 "defaultMessage": "!!!Could not load your workspaces",
3659 "end": {
3660 "column": 3,
3661 "line": 28
3662 },
3663 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3664 "id": "settings.workspaces.workspacesRequestFailed",
3665 "start": {
3666 "column": 27,
3667 "line": 25
3668 }
3669 },
3670 {
3671 "defaultMessage": "!!!Try again",
3672 "end": {
3673 "column": 3,
3674 "line": 32
3675 },
3676 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3677 "id": "settings.workspaces.tryReloadWorkspaces",
3678 "start": {
3679 "column": 23,
3680 "line": 29
3681 }
3682 },
3683 {
3684 "defaultMessage": "!!!Your changes have been saved",
3685 "end": {
3686 "column": 3,
3687 "line": 36
3688 },
3689 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3690 "id": "settings.workspaces.updatedInfo",
3691 "start": {
3692 "column": 15,
3693 "line": 33
3694 }
3695 },
3696 {
3697 "defaultMessage": "!!!Workspace has been deleted",
3698 "end": {
3699 "column": 3,
3700 "line": 40
3701 },
3702 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3703 "id": "settings.workspaces.deletedInfo",
3704 "start": {
3705 "column": 15,
3706 "line": 37
3707 }
3708 },
3709 {
3710 "defaultMessage": "!!!Info about workspace feature",
3711 "end": {
3712 "column": 3,
3713 "line": 44
3714 },
3715 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3716 "id": "settings.workspaces.workspaceFeatureInfo",
3717 "start": {
3718 "column": 24,
3719 "line": 41
3720 }
3721 },
3722 {
3723 "defaultMessage": "!!!Less is More: Introducing Franz Workspaces",
3724 "end": {
3725 "column": 3,
3726 "line": 48
3727 },
3728 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
3729 "id": "settings.workspaces.workspaceFeatureHeadline",
3730 "start": {
3731 "column": 28,
3732 "line": 45
3733 }
3734 }
3735 ],
3736 "path": "src/features/workspaces/components/WorkspacesDashboard.json"
3737 },
3738 {
3739 "descriptors": [
3740 {
3741 "defaultMessage": "!!!Switching to",
3742 "end": {
3743 "column": 3,
3744 "line": 15
3745 },
3746 "file": "src/features/workspaces/components/WorkspaceSwitchingIndicator.js",
3747 "id": "workspaces.switchingIndicator.switchingTo",
3748 "start": {
3749 "column": 15,
3750 "line": 12
3751 }
3752 }
3753 ],
3754 "path": "src/features/workspaces/components/WorkspaceSwitchingIndicator.json"
3755 },
3756 {
3757 "descriptors": [
3758 {
3759 "defaultMessage": "!!!Field is required",
3760 "end": {
3761 "column": 3,
3762 "line": 7
3763 },
3764 "file": "src/helpers/validation-helpers.js",
3765 "id": "validation.required",
3766 "start": {
3767 "column": 12,
3768 "line": 4
3769 }
3770 },
3771 {
3772 "defaultMessage": "!!!Email not valid",
3773 "end": {
3774 "column": 3,
3775 "line": 11
3776 },
3777 "file": "src/helpers/validation-helpers.js",
3778 "id": "validation.email",
3779 "start": {
3780 "column": 9,
3781 "line": 8
3782 }
3783 },
3784 {
3785 "defaultMessage": "!!!Not a valid URL",
3786 "end": {
3787 "column": 3,
3788 "line": 15
3789 },
3790 "file": "src/helpers/validation-helpers.js",
3791 "id": "validation.url",
3792 "start": {
3793 "column": 7,
3794 "line": 12
3795 }
3796 },
3797 {
3798 "defaultMessage": "!!!Too few characters",
3799 "end": {
3800 "column": 3,
3801 "line": 19
3802 },
3803 "file": "src/helpers/validation-helpers.js",
3804 "id": "validation.minLength",
3805 "start": {
3806 "column": 13,
3807 "line": 16
3808 }
3809 },
3810 {
3811 "defaultMessage": "!!!At least one is required",
3812 "end": {
3813 "column": 3,
3814 "line": 23
3815 },
3816 "file": "src/helpers/validation-helpers.js",
3817 "id": "validation.oneRequired",
3818 "start": {
3819 "column": 15,
3820 "line": 20
3821 }
3822 }
3823 ],
3824 "path": "src/helpers/validation-helpers.json"
3825 },
3826 {
3827 "descriptors": [
3828 {
3829 "defaultMessage": "!!!Can't connect to Franz Online Services",
3830 "end": {
3831 "column": 3,
3832 "line": 7
3833 },
3834 "file": "src/i18n/globalMessages.js",
3835 "id": "global.api.unhealthy",
3836 "start": {
3837 "column": 16,
3838 "line": 4
3839 }
3840 },
3841 {
3842 "defaultMessage": "!!!You are not connected to the internet.",
3843 "end": {
3844 "column": 3,
3845 "line": 11
3846 },
3847 "file": "src/i18n/globalMessages.js",
3848 "id": "global.notConnectedToTheInternet",
3849 "start": {
3850 "column": 29,
3851 "line": 8
3852 }
3853 },
3854 {
3855 "defaultMessage": "!!!Spell checking language",
3856 "end": {
3857 "column": 3,
3858 "line": 15
3859 },
3860 "file": "src/i18n/globalMessages.js",
3861 "id": "global.spellchecking.language",
3862 "start": {
3863 "column": 24,
3864 "line": 12
3865 }
3866 },
3867 {
3868 "defaultMessage": "!!!Use System Default ({default})",
3869 "end": {
3870 "column": 3,
3871 "line": 19
3872 },
3873 "file": "src/i18n/globalMessages.js",
3874 "id": "global.spellchecker.useDefault",
3875 "start": {
3876 "column": 29,
3877 "line": 16
3878 }
3879 },
3880 {
3881 "defaultMessage": "!!!Detect language automatically",
3882 "end": {
3883 "column": 3,
3884 "line": 23
3885 },
3886 "file": "src/i18n/globalMessages.js",
3887 "id": "global.spellchecking.autodetect",
3888 "start": {
3889 "column": 34,
3890 "line": 20
3891 }
3892 },
3893 {
3894 "defaultMessage": "!!!Automatic",
3895 "end": {
3896 "column": 3,
3897 "line": 27
3898 },
3899 "file": "src/i18n/globalMessages.js",
3900 "id": "global.spellchecking.autodetect.short",
3901 "start": {
3902 "column": 39,
3903 "line": 24
3904 }
3905 }
3906 ],
3907 "path": "src/i18n/globalMessages.json"
3908 },
3909 {
3910 "descriptors": [
3911 {
3912 "defaultMessage": "!!!Edit",
3913 "end": {
3914 "column": 3,
3915 "line": 18
3916 },
3917 "file": "src/lib/Menu.js",
3918 "id": "menu.edit",
3919 "start": {
3920 "column": 8,
3921 "line": 15
3922 }
3923 },
3924 {
3925 "defaultMessage": "!!!Undo",
3926 "end": {
3927 "column": 3,
3928 "line": 22
3929 },
3930 "file": "src/lib/Menu.js",
3931 "id": "menu.edit.undo",
3932 "start": {
3933 "column": 8,
3934 "line": 19
3935 }
3936 },
3937 {
3938 "defaultMessage": "!!!Redo",
3939 "end": {
3940 "column": 3,
3941 "line": 26
3942 },
3943 "file": "src/lib/Menu.js",
3944 "id": "menu.edit.redo",
3945 "start": {
3946 "column": 8,
3947 "line": 23
3948 }
3949 },
3950 {
3951 "defaultMessage": "!!!Cut",
3952 "end": {
3953 "column": 3,
3954 "line": 30
3955 },
3956 "file": "src/lib/Menu.js",
3957 "id": "menu.edit.cut",
3958 "start": {
3959 "column": 7,
3960 "line": 27
3961 }
3962 },
3963 {
3964 "defaultMessage": "!!!Copy",
3965 "end": {
3966 "column": 3,
3967 "line": 34
3968 },
3969 "file": "src/lib/Menu.js",
3970 "id": "menu.edit.copy",
3971 "start": {
3972 "column": 8,
3973 "line": 31
3974 }
3975 },
3976 {
3977 "defaultMessage": "!!!Paste",
3978 "end": {
3979 "column": 3,
3980 "line": 38
3981 },
3982 "file": "src/lib/Menu.js",
3983 "id": "menu.edit.paste",
3984 "start": {
3985 "column": 9,
3986 "line": 35
3987 }
3988 },
3989 {
3990 "defaultMessage": "!!!Paste And Match Style",
3991 "end": {
3992 "column": 3,
3993 "line": 42
3994 },
3995 "file": "src/lib/Menu.js",
3996 "id": "menu.edit.pasteAndMatchStyle",
3997 "start": {
3998 "column": 22,
3999 "line": 39
4000 }
4001 },
4002 {
4003 "defaultMessage": "!!!Delete",
4004 "end": {
4005 "column": 3,
4006 "line": 46
4007 },
4008 "file": "src/lib/Menu.js",
4009 "id": "menu.edit.delete",
4010 "start": {
4011 "column": 10,
4012 "line": 43
4013 }
4014 },
4015 {
4016 "defaultMessage": "!!!Select All",
4017 "end": {
4018 "column": 3,
4019 "line": 50
4020 },
4021 "file": "src/lib/Menu.js",
4022 "id": "menu.edit.selectAll",
4023 "start": {
4024 "column": 13,
4025 "line": 47
4026 }
4027 },
4028 {
4029 "defaultMessage": "!!!Speech",
4030 "end": {
4031 "column": 3,
4032 "line": 54
4033 },
4034 "file": "src/lib/Menu.js",
4035 "id": "menu.edit.speech",
4036 "start": {
4037 "column": 10,
4038 "line": 51
4039 }
4040 },
4041 {
4042 "defaultMessage": "!!!Start Speaking",
4043 "end": {
4044 "column": 3,
4045 "line": 58
4046 },
4047 "file": "src/lib/Menu.js",
4048 "id": "menu.edit.startSpeaking",
4049 "start": {
4050 "column": 17,
4051 "line": 55
4052 }
4053 },
4054 {
4055 "defaultMessage": "!!!Stop Speaking",
4056 "end": {
4057 "column": 3,
4058 "line": 62
4059 },
4060 "file": "src/lib/Menu.js",
4061 "id": "menu.edit.stopSpeaking",
4062 "start": {
4063 "column": 16,
4064 "line": 59
4065 }
4066 },
4067 {
4068 "defaultMessage": "!!!Start Dictation",
4069 "end": {
4070 "column": 3,
4071 "line": 66
4072 },
4073 "file": "src/lib/Menu.js",
4074 "id": "menu.edit.startDictation",
4075 "start": {
4076 "column": 18,
4077 "line": 63
4078 }
4079 },
4080 {
4081 "defaultMessage": "!!!Emoji & Symbols",
4082 "end": {
4083 "column": 3,
4084 "line": 70
4085 },
4086 "file": "src/lib/Menu.js",
4087 "id": "menu.edit.emojiSymbols",
4088 "start": {
4089 "column": 16,
4090 "line": 67
4091 }
4092 },
4093 {
4094 "defaultMessage": "!!!Actual Size",
4095 "end": {
4096 "column": 3,
4097 "line": 74
4098 },
4099 "file": "src/lib/Menu.js",
4100 "id": "menu.view.resetZoom",
4101 "start": {
4102 "column": 13,
4103 "line": 71
4104 }
4105 },
4106 {
4107 "defaultMessage": "!!!Zoom In",
4108 "end": {
4109 "column": 3,
4110 "line": 78
4111 },
4112 "file": "src/lib/Menu.js",
4113 "id": "menu.view.zoomIn",
4114 "start": {
4115 "column": 10,
4116 "line": 75
4117 }
4118 },
4119 {
4120 "defaultMessage": "!!!Zoom Out",
4121 "end": {
4122 "column": 3,
4123 "line": 82
4124 },
4125 "file": "src/lib/Menu.js",
4126 "id": "menu.view.zoomOut",
4127 "start": {
4128 "column": 11,
4129 "line": 79
4130 }
4131 },
4132 {
4133 "defaultMessage": "!!!Enter Full Screen",
4134 "end": {
4135 "column": 3,
4136 "line": 86
4137 },
4138 "file": "src/lib/Menu.js",
4139 "id": "menu.view.enterFullScreen",
4140 "start": {
4141 "column": 19,
4142 "line": 83
4143 }
4144 },
4145 {
4146 "defaultMessage": "!!!Exit Full Screen",
4147 "end": {
4148 "column": 3,
4149 "line": 90
4150 },
4151 "file": "src/lib/Menu.js",
4152 "id": "menu.view.exitFullScreen",
4153 "start": {
4154 "column": 18,
4155 "line": 87
4156 }
4157 },
4158 {
4159 "defaultMessage": "!!!Toggle Full Screen",
4160 "end": {
4161 "column": 3,
4162 "line": 94
4163 },
4164 "file": "src/lib/Menu.js",
4165 "id": "menu.view.toggleFullScreen",
4166 "start": {
4167 "column": 20,
4168 "line": 91
4169 }
4170 },
4171 {
4172 "defaultMessage": "!!!Toggle Developer Tools",
4173 "end": {
4174 "column": 3,
4175 "line": 98
4176 },
4177 "file": "src/lib/Menu.js",
4178 "id": "menu.view.toggleDevTools",
4179 "start": {
4180 "column": 18,
4181 "line": 95
4182 }
4183 },
4184 {
4185 "defaultMessage": "!!!Toggle Service Developer Tools",
4186 "end": {
4187 "column": 3,
4188 "line": 102
4189 },
4190 "file": "src/lib/Menu.js",
4191 "id": "menu.view.toggleServiceDevTools",
4192 "start": {
4193 "column": 25,
4194 "line": 99
4195 }
4196 },
4197 {
4198 "defaultMessage": "!!!Reload Service",
4199 "end": {
4200 "column": 3,
4201 "line": 106
4202 },
4203 "file": "src/lib/Menu.js",
4204 "id": "menu.view.reloadService",
4205 "start": {
4206 "column": 17,
4207 "line": 103
4208 }
4209 },
4210 {
4211 "defaultMessage": "!!!Reload Franz",
4212 "end": {
4213 "column": 3,
4214 "line": 110
4215 },
4216 "file": "src/lib/Menu.js",
4217 "id": "menu.view.reloadFranz",
4218 "start": {
4219 "column": 15,
4220 "line": 107
4221 }
4222 },
4223 {
4224 "defaultMessage": "!!!Minimize",
4225 "end": {
4226 "column": 3,
4227 "line": 114
4228 },
4229 "file": "src/lib/Menu.js",
4230 "id": "menu.window.minimize",
4231 "start": {
4232 "column": 12,
4233 "line": 111
4234 }
4235 },
4236 {
4237 "defaultMessage": "!!!Close",
4238 "end": {
4239 "column": 3,
4240 "line": 118
4241 },
4242 "file": "src/lib/Menu.js",
4243 "id": "menu.window.close",
4244 "start": {
4245 "column": 9,
4246 "line": 115
4247 }
4248 },
4249 {
4250 "defaultMessage": "!!!Learn More",
4251 "end": {
4252 "column": 3,
4253 "line": 122
4254 },
4255 "file": "src/lib/Menu.js",
4256 "id": "menu.help.learnMore",
4257 "start": {
4258 "column": 13,
4259 "line": 119
4260 }
4261 },
4262 {
4263 "defaultMessage": "!!!Changelog",
4264 "end": {
4265 "column": 3,
4266 "line": 126
4267 },
4268 "file": "src/lib/Menu.js",
4269 "id": "menu.help.changelog",
4270 "start": {
4271 "column": 13,
4272 "line": 123
4273 }
4274 },
4275 {
4276 "defaultMessage": "!!!Support",
4277 "end": {
4278 "column": 3,
4279 "line": 130
4280 },
4281 "file": "src/lib/Menu.js",
4282 "id": "menu.help.support",
4283 "start": {
4284 "column": 11,
4285 "line": 127
4286 }
4287 },
4288 {
4289 "defaultMessage": "!!!Terms of Service",
4290 "end": {
4291 "column": 3,
4292 "line": 134
4293 },
4294 "file": "src/lib/Menu.js",
4295 "id": "menu.help.tos",
4296 "start": {
4297 "column": 7,
4298 "line": 131
4299 }
4300 },
4301 {
4302 "defaultMessage": "!!!Privacy Statement",
4303 "end": {
4304 "column": 3,
4305 "line": 138
4306 },
4307 "file": "src/lib/Menu.js",
4308 "id": "menu.help.privacy",
4309 "start": {
4310 "column": 11,
4311 "line": 135
4312 }
4313 },
4314 {
4315 "defaultMessage": "!!!File",
4316 "end": {
4317 "column": 3,
4318 "line": 142
4319 },
4320 "file": "src/lib/Menu.js",
4321 "id": "menu.file",
4322 "start": {
4323 "column": 8,
4324 "line": 139
4325 }
4326 },
4327 {
4328 "defaultMessage": "!!!View",
4329 "end": {
4330 "column": 3,
4331 "line": 146
4332 },
4333 "file": "src/lib/Menu.js",
4334 "id": "menu.view",
4335 "start": {
4336 "column": 8,
4337 "line": 143
4338 }
4339 },
4340 {
4341 "defaultMessage": "!!!Services",
4342 "end": {
4343 "column": 3,
4344 "line": 150
4345 },
4346 "file": "src/lib/Menu.js",
4347 "id": "menu.services",
4348 "start": {
4349 "column": 12,
4350 "line": 147
4351 }
4352 },
4353 {
4354 "defaultMessage": "!!!Window",
4355 "end": {
4356 "column": 3,
4357 "line": 154
4358 },
4359 "file": "src/lib/Menu.js",
4360 "id": "menu.window",
4361 "start": {
4362 "column": 10,
4363 "line": 151
4364 }
4365 },
4366 {
4367 "defaultMessage": "!!!Help",
4368 "end": {
4369 "column": 3,
4370 "line": 158
4371 },
4372 "file": "src/lib/Menu.js",
4373 "id": "menu.help",
4374 "start": {
4375 "column": 8,
4376 "line": 155
4377 }
4378 },
4379 {
4380 "defaultMessage": "!!!About Franz",
4381 "end": {
4382 "column": 3,
4383 "line": 162
4384 },
4385 "file": "src/lib/Menu.js",
4386 "id": "menu.app.about",
4387 "start": {
4388 "column": 9,
4389 "line": 159
4390 }
4391 },
4392 {
4393 "defaultMessage": "!!!What's new?",
4394 "end": {
4395 "column": 3,
4396 "line": 166
4397 },
4398 "file": "src/lib/Menu.js",
4399 "id": "menu.app.announcement",
4400 "start": {
4401 "column": 16,
4402 "line": 163
4403 }
4404 },
4405 {
4406 "defaultMessage": "!!!Settings",
4407 "end": {
4408 "column": 3,
4409 "line": 170
4410 },
4411 "file": "src/lib/Menu.js",
4412 "id": "menu.app.settings",
4413 "start": {
4414 "column": 12,
4415 "line": 167
4416 }
4417 },
4418 {
4419 "defaultMessage": "!!!Hide",
4420 "end": {
4421 "column": 3,
4422 "line": 174
4423 },
4424 "file": "src/lib/Menu.js",
4425 "id": "menu.app.hide",
4426 "start": {
4427 "column": 8,
4428 "line": 171
4429 }
4430 },
4431 {
4432 "defaultMessage": "!!!Hide Others",
4433 "end": {
4434 "column": 3,
4435 "line": 178
4436 },
4437 "file": "src/lib/Menu.js",
4438 "id": "menu.app.hideOthers",
4439 "start": {
4440 "column": 14,
4441 "line": 175
4442 }
4443 },
4444 {
4445 "defaultMessage": "!!!Unhide",
4446 "end": {
4447 "column": 3,
4448 "line": 182
4449 },
4450 "file": "src/lib/Menu.js",
4451 "id": "menu.app.unhide",
4452 "start": {
4453 "column": 10,
4454 "line": 179
4455 }
4456 },
4457 {
4458 "defaultMessage": "!!!Quit",
4459 "end": {
4460 "column": 3,
4461 "line": 186
4462 },
4463 "file": "src/lib/Menu.js",
4464 "id": "menu.app.quit",
4465 "start": {
4466 "column": 8,
4467 "line": 183
4468 }
4469 },
4470 {
4471 "defaultMessage": "!!!Add New Service...",
4472 "end": {
4473 "column": 3,
4474 "line": 190
4475 },
4476 "file": "src/lib/Menu.js",
4477 "id": "menu.services.addNewService",
4478 "start": {
4479 "column": 17,
4480 "line": 187
4481 }
4482 },
4483 {
4484 "defaultMessage": "!!!Add New Workspace...",
4485 "end": {
4486 "column": 3,
4487 "line": 194
4488 },
4489 "file": "src/lib/Menu.js",
4490 "id": "menu.workspaces.addNewWorkspace",
4491 "start": {
4492 "column": 19,
4493 "line": 191
4494 }
4495 },
4496 {
4497 "defaultMessage": "!!!Open workspace drawer",
4498 "end": {
4499 "column": 3,
4500 "line": 198
4501 },
4502 "file": "src/lib/Menu.js",
4503 "id": "menu.workspaces.openWorkspaceDrawer",
4504 "start": {
4505 "column": 23,
4506 "line": 195
4507 }
4508 },
4509 {
4510 "defaultMessage": "!!!Close workspace drawer",
4511 "end": {
4512 "column": 3,
4513 "line": 202
4514 },
4515 "file": "src/lib/Menu.js",
4516 "id": "menu.workspaces.closeWorkspaceDrawer",
4517 "start": {
4518 "column": 24,
4519 "line": 199
4520 }
4521 },
4522 {
4523 "defaultMessage": "!!!Activate next service...",
4524 "end": {
4525 "column": 3,
4526 "line": 206
4527 },
4528 "file": "src/lib/Menu.js",
4529 "id": "menu.services.setNextServiceActive",
4530 "start": {
4531 "column": 23,
4532 "line": 203
4533 }
4534 },
4535 {
4536 "defaultMessage": "!!!Activate previous service...",
4537 "end": {
4538 "column": 3,
4539 "line": 210
4540 },
4541 "file": "src/lib/Menu.js",
4542 "id": "menu.services.activatePreviousService",
4543 "start": {
4544 "column": 27,
4545 "line": 207
4546 }
4547 },
4548 {
4549 "defaultMessage": "!!!Disable notifications & audio",
4550 "end": {
4551 "column": 3,
4552 "line": 214
4553 },
4554 "file": "src/lib/Menu.js",
4555 "id": "sidebar.muteApp",
4556 "start": {
4557 "column": 11,
4558 "line": 211
4559 }
4560 },
4561 {
4562 "defaultMessage": "!!!Enable notifications & audio",
4563 "end": {
4564 "column": 3,
4565 "line": 218
4566 },
4567 "file": "src/lib/Menu.js",
4568 "id": "sidebar.unmuteApp",
4569 "start": {
4570 "column": 13,
4571 "line": 215
4572 }
4573 },
4574 {
4575 "defaultMessage": "!!!Workspaces",
4576 "end": {
4577 "column": 3,
4578 "line": 222
4579 },
4580 "file": "src/lib/Menu.js",
4581 "id": "menu.workspaces",
4582 "start": {
4583 "column": 14,
4584 "line": 219
4585 }
4586 },
4587 {
4588 "defaultMessage": "!!!Default",
4589 "end": {
4590 "column": 3,
4591 "line": 226
4592 },
4593 "file": "src/lib/Menu.js",
4594 "id": "menu.workspaces.defaultWorkspace",
4595 "start": {
4596 "column": 20,
4597 "line": 223
4598 }
4599 }
4600 ],
4601 "path": "src/lib/Menu.json"
4602 }
4603] \ No newline at end of file
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json
index 671eecd41..0ff4b5abb 100644
--- a/src/i18n/locales/el.json
+++ b/src/i18n/locales/el.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "ΕπαναφόÏτωση", 2 "app.errorHandler.action" : "ΕπαναφόÏτωση",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Îάτι δεν λειτουÏγεί",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 5 "feature.delayApp.action" : "Get a Franz Supporter License",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 6 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 7 "feature.delayApp.text" : "Franz θα συνεχίσει σε {seconds} δευτεÏόλεπτα.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Δεν είναι δυνατή η σÏνδεση με τις ζωντανές υπηÏεσίες του Franz", 15 "global.api.unhealthy" : "Δεν είναι δυνατή η σÏνδεση με τις ζωντανές υπηÏεσίες του Franz",
8 "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο", 16 "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο",
17 "global.spellchecker.useDefault" : "Use System Default ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Spell checking language",
9 "import.headline" : "Εισαγάγετε τις υπηÏεσίες σας Franz 4", 21 "import.headline" : "Εισαγάγετε τις υπηÏεσίες σας Franz 4",
10 "import.notSupportedHeadline" : "ΥπηÏεσίες που δεν υποστηÏίζονται ακόμα στο Franz 5", 22 "import.notSupportedHeadline" : "ΥπηÏεσίες που δεν υποστηÏίζονται ακόμα στο Franz 5",
11 "import.skip.label" : "Θέλω να Ï€Ïοσθέσω υπηÏεσίες χειÏοκίνητα", 23 "import.skip.label" : "Θέλω να Ï€Ïοσθέσω υπηÏεσίες χειÏοκίνητα",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "ΣÏνδεση", 44 "login.submit.label" : "ΣÏνδεση",
33 "login.tokenExpired" : "Η συνεδÏία σας έληξε, συνδεθείτε ξανά.", 45 "login.tokenExpired" : "Η συνεδÏία σας έληξε, συνδεθείτε ξανά.",
34 "menu.app.about" : "Σχετικά με το Franz", 46 "menu.app.about" : "Σχετικά με το Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "ΑπόκÏυψη", 48 "menu.app.hide" : "ΑπόκÏυψη",
36 "menu.app.hideOthers" : "ΑπόκÏυψη των άλλων", 49 "menu.app.hideOthers" : "ΑπόκÏυψη των άλλων",
37 "menu.app.quit" : "Έξοδος", 50 "menu.app.quit" : "Έξοδος",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "ΥποστήÏιξη", 72 "menu.help.support" : "ΥποστήÏιξη",
60 "menu.help.tos" : "ÎŒÏοι ΧÏήσης", 73 "menu.help.tos" : "ÎŒÏοι ΧÏήσης",
61 "menu.services" : "ΥπηÏεσίες", 74 "menu.services" : "ΥπηÏεσίες",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Îέα ΥπηÏεσία", 76 "menu.services.addNewService" : "Îέα ΥπηÏεσία",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "ΠÏοβολή", 78 "menu.view" : "ΠÏοβολή",
64 "menu.view.enterFullScreen" : "ΠλήÏης Οθόνη", 79 "menu.view.enterFullScreen" : "ΠλήÏης Οθόνη",
65 "menu.view.exitFullScreen" : "Έξοδος από πλήÏη οθόνη", 80 "menu.view.exitFullScreen" : "Έξοδος από πλήÏη οθόνη",
@@ -74,6 +89,11 @@
74 "menu.window" : "ΠαÏάθυÏο", 89 "menu.window" : "ΠαÏάθυÏο",
75 "menu.window.close" : "Îλείσιμο", 90 "menu.window.close" : "Îλείσιμο",
76 "menu.window.minimize" : "Ελαχιστοποίηση", 91 "menu.window.minimize" : "Ελαχιστοποίηση",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Όλες οι υπηÏεσίες",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", 97 "password.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου",
78 "password.headline" : "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης", 98 "password.headline" : "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης",
79 "password.link.login" : "ΣÏνδεση στο λογαÏιασμό σας", 99 "password.link.login" : "ΣÏνδεση στο λογαÏιασμό σας",
@@ -97,6 +117,7 @@
97 "service.errorHandler.headline" : "Ω, όχι!", 117 "service.errorHandler.headline" : "Ω, όχι!",
98 "service.errorHandler.message" : "Σφάλμα", 118 "service.errorHandler.message" : "Σφάλμα",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} has failed to load.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Îεκινήστε", 121 "services.getStarted" : "Îεκινήστε",
101 "services.welcome" : "ÎαλÏÏ‚ οÏίσατε στον Franz", 122 "services.welcome" : "ÎαλÏÏ‚ οÏίσατε στον Franz",
102 "settings.account.account.editButton" : "ΕπεξεÏγασία λογαÏιασμοÏ", 123 "settings.account.account.editButton" : "ΕπεξεÏγασία λογαÏιασμοÏ",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Λήψη", 138 "settings.account.invoiceDownload" : "Λήψη",
118 "settings.account.manageSubscription.label" : "ΔιαχείÏιση της συνδÏομής σας", 139 "settings.account.manageSubscription.label" : "ΔιαχείÏιση της συνδÏομής σας",
119 "settings.account.successInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί", 140 "settings.account.successInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί",
141 "settings.account.tryReloadServices" : "Δοκιμάστε ξανά",
120 "settings.account.tryReloadUserInfoRequest" : "Δοκιμάστε ξανά", 142 "settings.account.tryReloadUserInfoRequest" : "Δοκιμάστε ξανά",
121 "settings.account.userInfoRequestFailed" : "Δεν ήταν δυνατή η φόÏτωση πληÏοφοÏιÏν χÏήστη", 143 "settings.account.userInfoRequestFailed" : "Δεν ήταν δυνατή η φόÏτωση πληÏοφοÏιÏν χÏήστη",
122 "settings.app.buttonClearAllCache" : "ÎαθαÏισμός λανθάνουσας μνήμης", 144 "settings.app.buttonClearAllCache" : "ÎαθαÏισμός λανθάνουσας μνήμης",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "ΣυμπεÏιλάβετε εκδόσεις beta", 151 "settings.app.form.beta" : "ΣυμπεÏιλάβετε εκδόσεις beta",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Join the Dark Side",
131 "settings.app.form.enableGPUAcceleration" : "ΕνεÏγοποιήση Ενίσχυσης GPU ", 153 "settings.app.form.enableGPUAcceleration" : "ΕνεÏγοποιήση Ενίσχυσης GPU ",
132 "settings.app.form.enableMenuBar" : "Εμφάνιση ΓÏαμμής ÎœÎµÎ½Î¿Ï Franz",
133 "settings.app.form.enableSpellchecking" : "ΕνεÏγοποίηση οÏθογÏÎ±Ï†Î¹ÎºÎ¿Ï ÎµÎ»Î­Î³Ï‡Î¿Ï…", 154 "settings.app.form.enableSpellchecking" : "ΕνεÏγοποίηση οÏθογÏÎ±Ï†Î¹ÎºÎ¿Ï ÎµÎ»Î­Î³Ï‡Î¿Ï…",
134 "settings.app.form.enableSystemTray" : "Εμφάνιση του Franz στη γÏαμμή ειδοποιήσεων", 155 "settings.app.form.enableSystemTray" : "Εμφάνιση του Franz στη γÏαμμή ειδοποιήσεων",
135 "settings.app.form.hideDockIcon" : "ΑπόκÏυψη εικονιδίου Franz",
136 "settings.app.form.language" : "ΓλÏσσα", 156 "settings.app.form.language" : "ΓλÏσσα",
137 "settings.app.form.minimizeToSystemTray" : "Ελαχιστοποίηση του Franz στη γÏαμμή ειδοποιήσεων", 157 "settings.app.form.minimizeToSystemTray" : "Ελαχιστοποίηση του Franz στη γÏαμμή ειδοποιήσεων",
138 "settings.app.form.runInBackground" : "ÎÏατήστε το Franz στο παÏασκήνιο κατά το κλείσιμο του παÏαθÏÏου", 158 "settings.app.form.runInBackground" : "ÎÏατήστε το Franz στο παÏασκήνιο κατά το κλείσιμο του παÏαθÏÏου",
139 "settings.app.form.showDisabledServices" : "ΠÏοβολή καÏτελÏν των απενεÏγοποιημένων υπηÏεσιÏν", 159 "settings.app.form.showDisabledServices" : "ΠÏοβολή καÏτελÏν των απενεÏγοποιημένων υπηÏεσιÏν",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "ΠÏοβολή του εικονιδίου μη αναγνωσμένου μηνÏματος όταν οι ειδοποιήσεις είναι απενεÏγοποιημένες", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "ΠÏοβολή του εικονιδίου μη αναγνωσμένου μηνÏματος όταν οι ειδοποιήσεις είναι απενεÏγοποιημένες",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Ρυθμίσεις", 161 "settings.app.headline" : "Ρυθμίσεις",
143 "settings.app.headlineAdvanced" : "Για Ï€ÏοχωÏημένους", 162 "settings.app.headlineAdvanced" : "Για Ï€ÏοχωÏημένους",
144 "settings.app.headlineAppearance" : "Εμφάνιση", 163 "settings.app.headlineAppearance" : "Εμφάνιση",
145 "settings.app.headlineGeneral" : "Γενικά", 164 "settings.app.headlineGeneral" : "Γενικά",
146 "settings.app.headlineLanguage" : "ΓλÏσσα", 165 "settings.app.headlineLanguage" : "ΓλÏσσα",
147 "settings.app.headlineUpdates" : "ΕνημεÏÏσεις", 166 "settings.app.headlineUpdates" : "ΕνημεÏÏσεις",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Οι αλλαγές απαιτοÏν επανεκκίνηση", 168 "settings.app.restartRequired" : "Οι αλλαγές απαιτοÏν επανεκκίνηση",
149 "settings.app.subheadlineCache" : "Λανθάνουσα μνήμη", 169 "settings.app.subheadlineCache" : "Λανθάνουσα μνήμη",
150 "settings.app.translationHelp" : "Βοηθήστε μας να μεταφÏάσουμε το Franz στη δική σας γλÏσσα.", 170 "settings.app.translationHelp" : "Βοηθήστε μας να μεταφÏάσουμε το Franz στη δική σας γλÏσσα.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "ΠÏασκαλέστε Φίλους", 177 "settings.navigation.inviteFriends" : "ΠÏασκαλέστε Φίλους",
158 "settings.navigation.logout" : "ΑποσÏνδεση", 178 "settings.navigation.logout" : "ΑποσÏνδεση",
159 "settings.navigation.settings" : "Ρυθμίσεις", 179 "settings.navigation.settings" : "Ρυθμίσεις",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Οι υπηÏεσίες σας", 181 "settings.navigation.yourServices" : "Οι υπηÏεσίες σας",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Όλες οι υπηÏεσίες", 183 "settings.recipes.all" : "Όλες οι υπηÏεσίες",
162 "settings.recipes.dev" : "Ανάπτυξη", 184 "settings.recipes.dev" : "Ανάπτυξη",
163 "settings.recipes.headline" : "Διαθέσιμες υπηÏεσίες", 185 "settings.recipes.headline" : "Διαθέσιμες υπηÏεσίες",
@@ -201,8 +223,6 @@
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "User (optional)",
203 "settings.service.form.saveButton" : "Αποθήκευση υπηÏεσίας", 225 "settings.service.form.saveButton" : "Αποθήκευση υπηÏεσίας",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Φιλοξενείται", 226 "settings.service.form.tabHosted" : "Φιλοξενείται",
207 "settings.service.form.tabOnPremise" : "Αυτο-φιλοξενείται â­ï¸", 227 "settings.service.form.tabOnPremise" : "Αυτο-φιλοξενείται â­ï¸",
208 "settings.service.form.team" : "Ομάδα", 228 "settings.service.form.team" : "Ομάδα",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "ΑνακαλÏψτε υπηÏεσίες", 232 "settings.services.discoverServices" : "ΑνακαλÏψτε υπηÏεσίες",
213 "settings.services.headline" : "Οι υπηÏεσίες σας", 233 "settings.services.headline" : "Οι υπηÏεσίες σας",
214 "settings.services.noServicesAdded" : "Δεν έχετε Ï€Ïοσθέσει ακόμα υπηÏεσίες.", 234 "settings.services.noServicesAdded" : "Δεν έχετε Ï€Ïοσθέσει ακόμα υπηÏεσίες.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Η υπηÏεσία είναι απενεÏγοποιημένη", 236 "settings.services.tooltip.isDisabled" : "Η υπηÏεσία είναι απενεÏγοποιημένη",
216 "settings.services.tooltip.isMuted" : "Όλοι οι ήχοι είναι απενεÏγοποιημένοι", 237 "settings.services.tooltip.isMuted" : "Όλοι οι ήχοι είναι απενεÏγοποιημένοι",
217 "settings.services.tooltip.notificationsDisabled" : "Οι ειδοποιήσεις είναι απενεÏγοποιημένες", 238 "settings.services.tooltip.notificationsDisabled" : "Οι ειδοποιήσεις είναι απενεÏγοποιημένες",
218 "settings.services.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί", 239 "settings.services.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Ομάδα",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "ΕταιÏεία", 246 "settings.user.form.accountType.company" : "ΕταιÏεία",
220 "settings.user.form.accountType.individual" : "Ατομικός", 247 "settings.user.form.accountType.individual" : "Ατομικός",
221 "settings.user.form.accountType.label" : "ΤÏπος λογαÏιασμοÏ", 248 "settings.user.form.accountType.label" : "ΤÏπος λογαÏιασμοÏ",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Όνομα", 252 "settings.user.form.firstname" : "Όνομα",
226 "settings.user.form.lastname" : "Επίθετο", 253 "settings.user.form.lastname" : "Επίθετο",
227 "settings.user.form.newPassword" : "Îέος κωδικός Ï€Ïόσβασης", 254 "settings.user.form.newPassword" : "Îέος κωδικός Ï€Ïόσβασης",
255 "settings.workspace.add.form.name" : "Όνομα",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Όνομα",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Δοκιμάστε ξανά",
266 "settings.workspaces.updatedInfo" : "Οι αλλαγές σας έχουν αποθηκευτεί",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "ΠÏοσθήκη νέας υπηÏεσίας", 270 "sidebar.addNewService" : "ΠÏοσθήκη νέας υπηÏεσίας",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "ΑπενεÏγοποίηση ειδοποιήσεων & ήχου", 272 "sidebar.muteApp" : "ΑπενεÏγοποίηση ειδοποιήσεων & ήχου",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Ρυθμίσεις", 274 "sidebar.settings" : "Ρυθμίσεις",
231 "sidebar.unmuteApp" : "ΕνεÏγοποίηση ειδοποιήσεων & ήχου", 275 "sidebar.unmuteApp" : "ΕνεÏγοποίηση ειδοποιήσεων & ήχου",
232 "signup.company.label" : "ΕταιÏεία", 276 "signup.company.label" : "ΕταιÏεία",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Πολίτες Ε.Ε.: Στις τιμές δεν πεÏιλαμβάνονται τυχόν φόÏοι και άλλες τοπικές επιβαÏÏνσεις", 288 "subscription.euTaxInfo" : "Πολίτες Ε.Ε.: Στις τιμές δεν πεÏιλαμβάνονται τυχόν φόÏοι και άλλες τοπικές επιβαÏÏνσεις",
245 "subscription.features.ads" : "Τέλος στις διαφημίσεις", 289 "subscription.features.ads" : "Τέλος στις διαφημίσεις",
246 "subscription.features.comingSoon" : "σÏντομα", 290 "subscription.features.comingSoon" : "σÏντομα",
247 "subscription.features.encryptedSync" : "ÎÏυπτογÏαφημένος συγχÏονισμός πεÏιόδου σÏνδεσης",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 291 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
249 "subscription.features.onpremise" : "Add on-premise \/ hosted services όπως το HipChat",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services", 293 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Support for spellchecker",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "Ο Premium λογαÏιασμός υποστήÏιξης Franz πεÏιλαμβάνει", 296 "subscription.includedFeatures" : "Ο Premium λογαÏιασμός υποστήÏιξης Franz πεÏιλαμβάνει",
254 "subscription.paymentSessionError" : "Δεν ήταν δυνατή η Ï€Ïοετοιμασία της φόÏμας πληÏωμής", 297 "subscription.paymentSessionError" : "Δεν ήταν δυνατή η Ï€Ïοετοιμασία της φόÏμας πληÏωμής",
255 "subscription.submit.label" : "Θέλω να βοηθήσω στην ανάπτυξη του Franz", 298 "subscription.submit.label" : "Θέλω να βοηθήσω στην ανάπτυξη του Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "ΕπαναφόÏτωση", 312 "tabs.item.reload" : "ΕπαναφόÏτωση",
270 "validation.email" : "{field} δεν είναι έγκυÏο", 313 "validation.email" : "{field} δεν είναι έγκυÏο",
271 "validation.minLength" : "{field} Ï€Ïέπει να είναι τουλάχιστον {length} χαÏακτήÏες", 314 "validation.minLength" : "{field} Ï€Ïέπει να είναι τουλάχιστον {length} χαÏακτήÏες",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} είναι υποχÏεωτικό", 316 "validation.required" : "{field} είναι υποχÏεωτικό",
273 "validation.url" : "{field} δεν είναι έγκυÏος σÏνδεσμος URL", 317 "validation.url" : "{field} δεν είναι έγκυÏος σÏνδεσμος URL",
274 "welcome.loginButton" : "ΣÏνδεση στο λογαÏιασμό σας", 318 "welcome.loginButton" : "ΣÏνδεση στο λογαÏιασμό σας",
275 "welcome.signupButton" : "ΔημιουÏγία δωÏεάν λογαÏιασμοÏ", 319 "welcome.signupButton" : "ΔημιουÏγία δωÏεάν λογαÏιασμοÏ",
276 "welcome.slogan" : "Επικοινωνία που λειτουÏγεί για εσάς" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Όλες οι υπηÏεσίες",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 99df6a0ca..6c2759dcc 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -1,277 +1,331 @@
1{ 1{
2 "app.errorHandler.action": "Reload",
3 "app.errorHandler.headline": "Something went wrong",
4 "feature.announcements.changelog.headline": "Changes in Franz {version}",
5 "feature.delayApp.action": "Get a Franz Supporter License",
6 "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting",
7 "feature.delayApp.text": "Franz will continue in {seconds} seconds.",
8 "feature.shareFranz.action.email": "Send as email",
9 "feature.shareFranz.action.facebook": "Share on Facebook",
10 "feature.shareFranz.action.twitter": "Share on Twitter",
11 "feature.shareFranz.headline": "Franz is better together!",
12 "feature.shareFranz.shareText.email": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger",
14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
2 "global.api.unhealthy": "Can't connect to Franz online services", 15 "global.api.unhealthy": "Can't connect to Franz online services",
3 "global.notConnectedToTheInternet": "You are not connected to the internet.", 16 "global.notConnectedToTheInternet": "You are not connected to the internet.",
4 "welcome.signupButton": "Create a free account", 17 "global.spellchecker.useDefault": "Use System Default ({default})",
5 "welcome.loginButton": "Login to your account", 18 "global.spellchecking.autodetect": "Detect language automatically",
6 "welcome.slogan": "Messaging that works for you", 19 "global.spellchecking.autodetect.short": "Automatic",
7 "login.headline": "Sign in", 20 "global.spellchecking.language": "Spell checking language",
21 "import.headline": "Import your Franz 4 services",
22 "import.notSupportedHeadline": "Services not yet supported in Franz 5",
23 "import.skip.label": "I want to add services manually",
24 "import.submit.label": "Import services",
25 "infobar.buttonChangelog": "What is new?",
26 "infobar.buttonInstallUpdate": "Restart & install update",
27 "infobar.buttonReloadServices": "Reload services",
28 "infobar.requiredRequestsFailed": "Could not load services and user information",
29 "infobar.servicesUpdated": "Your services have been updated.",
30 "infobar.updateAvailable": "A new update for Franz is available.",
31 "invite.email.label": "Email address",
32 "invite.headline.friends": "Invite 3 of your friends or colleagues",
33 "invite.name.label": "Name",
34 "invite.skip.label": "I want to do this later",
35 "invite.submit.label": "Send invites",
36 "invite.successInfo": "Invitations sent successfully",
8 "login.email.label": "Email address", 37 "login.email.label": "Email address",
38 "login.headline": "Sign in",
39 "login.invalidCredentials": "Email or password not valid",
40 "login.link.password": "Reset password",
41 "login.link.signup": "Create a free account",
9 "login.password.label": "Password", 42 "login.password.label": "Password",
43 "login.serverLogout": "Your session expired, please login again.",
10 "login.submit.label": "Sign in", 44 "login.submit.label": "Sign in",
11 "login.invalidCredentials": "Email or password not valid",
12 "login.tokenExpired": "Your session expired, please login again.", 45 "login.tokenExpired": "Your session expired, please login again.",
13 "login.serverLogout": "Your session expired, please login again.", 46 "menu.app.about": "About Franz",
14 "login.link.signup": "Create a free account", 47 "menu.app.announcement": "What's new?",
15 "login.link.password": "Reset password", 48 "menu.app.hide": "Hide",
16 "password.headline": "Reset password", 49 "menu.app.hideOthers": "Hide Others",
50 "menu.app.quit": "Quit",
51 "menu.app.settings": "Settings",
52 "menu.app.unhide": "Unhide",
53 "menu.edit": "Edit",
54 "menu.edit.copy": "Copy",
55 "menu.edit.cut": "Cut",
56 "menu.edit.delete": "Delete",
57 "menu.edit.emojiSymbols": "Emoji & Symbols",
58 "menu.edit.paste": "Paste",
59 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
60 "menu.edit.redo": "Redo",
61 "menu.edit.selectAll": "Select All",
62 "menu.edit.speech": "Speech",
63 "menu.edit.startDictation": "Start Dictation",
64 "menu.edit.startSpeaking": "Start Speaking",
65 "menu.edit.stopSpeaking": "Stop Speaking",
66 "menu.edit.undo": "Undo",
67 "menu.file": "File",
68 "menu.help": "Help",
69 "menu.help.changelog": "Changelog",
70 "menu.help.learnMore": "Learn More",
71 "menu.help.privacy": "Privacy Statement",
72 "menu.help.support": "Support",
73 "menu.help.tos": "Terms of Service",
74 "menu.services": "Services",
75 "menu.services.activatePreviousService": "Activate previous service",
76 "menu.services.addNewService": "Add New Service...",
77 "menu.services.setNextServiceActive": "Activate next service",
78 "menu.view": "View",
79 "menu.view.enterFullScreen": "Enter Full Screen",
80 "menu.view.exitFullScreen": "Exit Full Screen",
81 "menu.view.reloadFranz": "Reload Franz",
82 "menu.view.reloadService": "Reload Service",
83 "menu.view.resetZoom": "Actual Size",
84 "menu.view.toggleDevTools": "Toggle Developer Tools",
85 "menu.view.toggleFullScreen": "Toggle Full Screen",
86 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools",
87 "menu.view.zoomIn": "Zoom In",
88 "menu.view.zoomOut": "Zoom Out",
89 "menu.window": "Window",
90 "menu.window.close": "Close",
91 "menu.window.minimize": "Minimize",
92 "menu.workspaces": "Workspaces",
93 "menu.workspaces.addNewWorkspace": "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace": "All services",
96 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer",
17 "password.email.label": "Email address", 97 "password.email.label": "Email address",
18 "password.submit.label": "Submit", 98 "password.headline": "Reset password",
99 "password.link.login": "Sign in to your account",
100 "password.link.signup": "Create a free account",
19 "password.noUser": "No user with that email address was found", 101 "password.noUser": "No user with that email address was found",
102 "password.submit.label": "Submit",
20 "password.successInfo": "Please check your email", 103 "password.successInfo": "Please check your email",
21 "password.link.signup": "Create a free account", 104 "premiumFeature.button.upgradeAccount": "Upgrade account",
22 "password.link.login": "Sign in to your account",
23 "signup.headline": "Sign up",
24 "signup.firstname.label": "First Name",
25 "signup.lastname.label": "Last Name",
26 "signup.email.label": "Email address",
27 "signup.company.label": "Company",
28 "signup.password.label": "Password",
29 "signup.submit.label": "Create account",
30 "signup.link.login": "Already have an account, sign in?",
31 "signup.emailDuplicate": "A user with that email address already exists",
32 "signup.legal.info": "By creating a Franz account you accept the",
33 "signup.legal.terms": "Terms of service",
34 "signup.legal.privacy": "Privacy Statement",
35 "pricing.headline": "Support Franz", 105 "pricing.headline": "Support Franz",
36 "pricing.support.label": "Select your support plan",
37 "pricing.submit.label": "I want to support the development of Franz",
38 "pricing.link.skipPayment": "I don't want to support the development of Franz.", 106 "pricing.link.skipPayment": "I don't want to support the development of Franz.",
39 "import.headline": "Import your Franz 4 services", 107 "pricing.submit.label": "I want to support the development of Franz",
40 "import.notSupportedHeadline": "Services not yet supported in Franz 5", 108 "pricing.support.label": "Select your support plan",
41 "import.submit.label": "Import services", 109 "service.crashHandler.action": "Reload {name}",
42 "import.skip.label": "I want to add services manually", 110 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
43 "invite.submit.label": "Send invites", 111 "service.crashHandler.headline": "Oh no!",
44 "invite.headline.friends": "Invite 3 of your friends or colleagues", 112 "service.crashHandler.text": "{name} has caused an error.",
45 "invite.name.label": "Name", 113 "service.disabledHandler.action": "Enable {name}",
46 "invite.email.label": "Email address", 114 "service.disabledHandler.headline": "{name} is disabled",
47 "invite.skip.label": "I want to do this later", 115 "service.errorHandler.action": "Reload {name}",
48 "invite.successInfo": "Invitations sent successfully", 116 "service.errorHandler.editAction": "Edit {name}",
49 "subscription.submit.label": "I want to support the development of Franz", 117 "service.errorHandler.headline": "Oh no!",
50 "subscription.paymentSessionError": "Could not initialize payment form", 118 "service.errorHandler.message": "Error",
51 "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes", 119 "service.errorHandler.text": "{name} has failed to load.",
52 "subscription.features.onpremise": "Add on-premise/hosted services like HipChat", 120 "service.webviewLoader.loading": "Loading",
53 "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost",
54 "subscription.features.encryptedSync": "Encrypted session synchronization",
55 "subscription.features.proxy": "Proxy support for services",
56 "subscription.features.ads": "No ads, ever!",
57 "subscription.features.spellchecker": "Support for spellchecker",
58 "subscription.features.noInterruptions": "No app delays & nagging to upgrade license",
59 "subscription.features.comingSoon": "coming soon",
60 "infobar.servicesUpdated": "Your services have been updated.",
61 "infobar.updateAvailable": "A new update for Franz is available.",
62 "infobar.buttonReloadServices": "Reload services",
63 "infobar.buttonInstallUpdate": "Restart & install update",
64 "infobar.buttonChangelog": "What is new?",
65 "infobar.requiredRequestsFailed": "Could not load services and user information",
66 "sidebar.settings": "Settings",
67 "sidebar.addNewService": "Add new service",
68 "sidebar.muteApp": "Disable notifications & audio",
69 "sidebar.unmuteApp": "Enable notifications & audio",
70 "services.welcome": "Welcome to Franz",
71 "services.getStarted": "Get started", 121 "services.getStarted": "Get started",
72 "settings.searchService": "Search service", 122 "services.welcome": "Welcome to Franz",
73 "settings.account.headline": "Account", 123 "settings.account.account.editButton": "Edit account",
74 "settings.account.headlineSubscription": "Your subscription",
75 "settings.account.headlineUpgrade": "Upgrade your account & support Franz",
76 "settings.account.headlineInvoices": "Invoices",
77 "settings.account.headlineDangerZone": "Danger Zone",
78 "settings.account.manageSubscription.label": "Manage your subscription",
79 "settings.account.accountType.basic": "Basic Account", 124 "settings.account.accountType.basic": "Basic Account",
80 "settings.account.accountType.premium": "Premium Supporter Account", 125 "settings.account.accountType.premium": "Premium Supporter Account",
81 "settings.account.account.editButton": "Edit account",
82 "settings.account.invoiceDownload": "Download",
83 "settings.account.userInfoRequestFailed": "Could not load user information",
84 "settings.account.tryReloadUserInfoRequest": "Try again",
85 "settings.account.headlineProfile": "Update profile",
86 "settings.account.headlineAccount": "Account information",
87 "settings.account.headlinePassword": "Change password",
88 "settings.account.successInfo": "Your changes have been saved",
89 "settings.account.buttonSave": "Update profile", 126 "settings.account.buttonSave": "Update profile",
90 "settings.account.deleteAccount": "Delete account", 127 "settings.account.deleteAccount": "Delete account",
91 "settings.account.deleteInfo": "If you don't need your Franz account any longer, you can delete your account and all related data here.",
92 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", 128 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
129 "settings.account.deleteInfo": "If you don't need your Franz account any longer, you can delete your account and all related data here.",
130 "settings.account.headline": "Account",
131 "settings.account.headlineAccount": "Account information",
132 "settings.account.headlineDangerZone": "Danger Zone",
133 "settings.account.headlineInvoices": "Invoices",
134 "settings.account.headlinePassword": "Change password",
135 "settings.account.headlineProfile": "Update profile",
136 "settings.account.headlineSubscription": "Your subscription",
137 "settings.account.headlineUpgrade": "Upgrade your account & support Franz",
138 "settings.account.invoiceDownload": "Download",
139 "settings.account.manageSubscription.label": "Manage your subscription",
140 "settings.account.successInfo": "Your changes have been saved",
141 "settings.account.tryReloadServices": "Try again",
142 "settings.account.tryReloadUserInfoRequest": "Try again",
143 "settings.account.userInfoRequestFailed": "Could not load user information",
144 "settings.app.buttonClearAllCache": "Clear cache",
145 "settings.app.buttonInstallUpdate": "Restart & install update",
146 "settings.app.buttonSearchForUpdate": "Check for updates",
147 "settings.app.cacheInfo": "Franz cache is currently using {size} of disk space.",
148 "settings.app.currentVersion": "Current version:",
149 "settings.app.form.autoLaunchInBackground": "Open in background",
150 "settings.app.form.autoLaunchOnStart": "Launch Franz on start",
151 "settings.app.form.beta": "Include beta versions",
152 "settings.app.form.darkMode": "Join the Dark Side",
153 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
154 "settings.app.form.enableSpellchecking": "Enable spell checking",
155 "settings.app.form.enableSystemTray": "Show Franz in system tray",
156 "settings.app.form.language": "Language",
157 "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray",
158 "settings.app.form.runInBackground": "Keep Franz in background when closing the window",
159 "settings.app.form.showDisabledServices": "Display disabled services tabs",
160 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
161 "settings.app.headline": "Settings",
162 "settings.app.headlineAdvanced": "Advanced",
163 "settings.app.headlineAppearance": "Appearance",
164 "settings.app.headlineGeneral": "General",
165 "settings.app.headlineLanguage": "Language",
166 "settings.app.headlineUpdates": "Updates",
167 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
168 "settings.app.restartRequired": "Changes require restart",
169 "settings.app.subheadlineCache": "Cache",
170 "settings.app.translationHelp": "Help us to translate Franz into your language.",
171 "settings.app.updateStatusAvailable": "Update available, downloading...",
172 "settings.app.updateStatusSearching": "Is searching for update",
173 "settings.app.updateStatusUpToDate": "You are using the latest version of Franz",
93 "settings.invite.headline": "Invite Friends", 174 "settings.invite.headline": "Invite Friends",
94 "settings.navigation.availableServices": "Available services",
95 "settings.navigation.yourServices": "Your services",
96 "settings.navigation.account": "Account", 175 "settings.navigation.account": "Account",
97 "settings.navigation.settings": "Settings", 176 "settings.navigation.availableServices": "Available services",
98 "settings.navigation.inviteFriends": "Invite Friends", 177 "settings.navigation.inviteFriends": "Invite Friends",
99 "settings.navigation.logout": "Logout", 178 "settings.navigation.logout": "Logout",
100 "settings.recipes.headline": "Available services", 179 "settings.navigation.settings": "Settings",
101 "settings.recipes.mostPopular": "Most popular", 180 "settings.navigation.team": "Manage Team",
181 "settings.navigation.yourServices": "Your services",
182 "settings.navigation.yourWorkspaces": "Your workspaces",
102 "settings.recipes.all": "All services", 183 "settings.recipes.all": "All services",
103 "settings.recipes.dev": "Development", 184 "settings.recipes.dev": "Development",
185 "settings.recipes.headline": "Available services",
186 "settings.recipes.missingService": "Missing a service?",
187 "settings.recipes.mostPopular": "Most popular",
104 "settings.recipes.nothingFound": "Sorry, but no service matched your search term.", 188 "settings.recipes.nothingFound": "Sorry, but no service matched your search term.",
105 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added", 189 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added",
106 "settings.recipes.missingService": "Missing a service?", 190 "settings.searchService": "Search service",
107 "settings.service.form.saveButton": "Save service", 191 "settings.service.error.goBack": "Back to services",
108 "settings.service.form.deleteButton": "Delete service", 192 "settings.service.error.headline": "Error",
109 "settings.service.form.availableServices": "Available services", 193 "settings.service.error.message": "Could not load service recipe.",
110 "settings.service.form.yourServices": "Your services",
111 "settings.service.form.addServiceHeadline": "Add {name}", 194 "settings.service.form.addServiceHeadline": "Add {name}",
112 "settings.service.form.editServiceHeadline": "Edit {name}", 195 "settings.service.form.availableServices": "Available services",
113 "settings.service.form.tabHosted": "Hosted", 196 "settings.service.form.customUrl": "Custom server",
114 "settings.service.form.tabOnPremise": "Self hosted â­ï¸",
115 "settings.service.form.useHostedService": "Use the hosted {name} service.",
116 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
117 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.", 197 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Franz Premium Supporter Account.",
118 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account", 198 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account",
119 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", 199 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
120 "settings.service.form.name": "Name", 200 "settings.service.form.deleteButton": "Delete service",
121 "settings.service.form.enableService": "Enable service", 201 "settings.service.form.editServiceHeadline": "Edit {name}",
122 "settings.service.form.enableNotification": "Enable notifications",
123 "settings.service.form.enableBadge": "Show unread message badges",
124 "settings.service.form.team": "Team",
125 "settings.service.form.customUrl": "Custom server",
126 "settings.service.form.indirectMessages": "Show message badge for all new messages",
127 "settings.service.form.enableAudio": "Enable audio", 202 "settings.service.form.enableAudio": "Enable audio",
128 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", 203 "settings.service.form.enableBadge": "Show unread message badges",
129 "settings.service.form.headlineNotifications": "Notifications", 204 "settings.service.form.enableDarkMode": "Enable Dark Mode",
205 "settings.service.form.enableNotification": "Enable notifications",
206 "settings.service.form.enableService": "Enable service",
130 "settings.service.form.headlineBadges": "Unread message badges", 207 "settings.service.form.headlineBadges": "Unread message badges",
131 "settings.service.form.headlineGeneral": "General", 208 "settings.service.form.headlineGeneral": "General",
209 "settings.service.form.headlineNotifications": "Notifications",
132 "settings.service.form.icon": "Custom icon", 210 "settings.service.form.icon": "Custom icon",
133 "settings.service.form.iconDelete": "Delete", 211 "settings.service.form.iconDelete": "Delete",
134 "settings.service.form.iconUpload": "Drop your image, or click here", 212 "settings.service.form.iconUpload": "Drop your image, or click here",
135 "settings.service.form.enableDarkMode": "Enable Dark Mode", 213 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
214 "settings.service.form.indirectMessages": "Show message badge for all new messages",
215 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
216 "settings.service.form.name": "Name",
136 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
137 "settings.service.form.proxy.isEnabled": "Use Proxy",
138 "settings.service.form.proxy.host": "Proxy Host/IP", 218 "settings.service.form.proxy.host": "Proxy Host/IP",
139 "settings.service.form.proxy.port": "Port",
140 "settings.service.form.proxy.user": "User (optional)",
141 "settings.service.form.proxy.password": "Password (optional)",
142 "settings.service.form.proxy.info": "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info": "Proxy settings will not synced with the Franz servers.",
220 "settings.service.form.proxy.isEnabled": "Use Proxy",
221 "settings.service.form.proxy.password": "Password (optional)",
222 "settings.service.form.proxy.port": "Port",
143 "settings.service.form.proxy.restartInfo": "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo": "Please restart Franz after changing proxy Settings.",
144 "settings.service.form.spellcheckerLanguage": "Spell checking Language", 224 "settings.service.form.proxy.user": "User (optional)",
145 "settings.service.form.spellcheckerLanguage.default": "Use System Default ({default})", 225 "settings.service.form.saveButton": "Save service",
146 "settings.service.error.headline": "Error", 226 "settings.service.form.tabHosted": "Hosted",
147 "settings.service.error.goBack": "Back to services", 227 "settings.service.form.tabOnPremise": "Self hosted â­ï¸",
148 "settings.service.error.message": "Could not load service recipe.", 228 "settings.service.form.team": "Team",
149 "settings.services.tooltip.isDisabled": "Service is disabled", 229 "settings.service.form.useHostedService": "Use the hosted {name} service.",
150 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 230 "settings.service.form.yourServices": "Your services",
151 "settings.services.tooltip.isMuted": "All sounds are muted", 231 "settings.services.deletedInfo": "Service has been deleted",
232 "settings.services.discoverServices": "Discover services",
152 "settings.services.headline": "Your services", 233 "settings.services.headline": "Your services",
153 "settings.services.noServicesAdded": "You haven't added any services yet.", 234 "settings.services.noServicesAdded": "You haven't added any services yet.",
154 "settings.services.discoverServices": "Discover services", 235 "settings.services.servicesRequestFailed": "Could not load your services",
236 "settings.services.tooltip.isDisabled": "Service is disabled",
237 "settings.services.tooltip.isMuted": "All sounds are muted",
238 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
155 "settings.services.updatedInfo": "Your changes have been saved", 239 "settings.services.updatedInfo": "Your changes have been saved",
156 "settings.services.deletedInfo": "Service has been deleted", 240 "settings.team.contentHeadline": "Franz for Teams",
157 "settings.app.headline": "Settings", 241 "settings.team.copy": "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
158 "settings.app.headlineGeneral": "General", 242 "settings.team.headline": "Team",
159 "settings.app.headlineLanguage": "Language", 243 "settings.team.intro": "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
160 "settings.app.headlineUpdates": "Updates", 244 "settings.team.manageAction": "Manage your Team on meetfranz.com",
161 "settings.app.headlineAppearance": "Appearance", 245 "settings.team.upgradeAction": "Upgrade your Account",
162 "settings.app.headlineAdvanced": "Advanced", 246 "settings.user.form.accountType.company": "Company",
163 "settings.app.buttonSearchForUpdate": "Check for updates", 247 "settings.user.form.accountType.individual": "Individual",
164 "settings.app.buttonInstallUpdate": "Restart & install update", 248 "settings.user.form.accountType.label": "Account type",
165 "settings.app.updateStatusSearching": "Is searching for update", 249 "settings.user.form.accountType.non-profit": "Non-Profit",
166 "settings.app.updateStatusAvailable": "Update available, downloading...", 250 "settings.user.form.currentPassword": "Current password",
167 "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", 251 "settings.user.form.email": "Email",
168 "settings.app.subheadlineCache": "Cache",
169 "settings.app.cacheInfo": "Franz cache is currently using {size} of disk space.",
170 "settings.app.buttonClearAllCache": "Clear cache",
171 "settings.app.form.autoLaunchOnStart": "Launch Franz on start",
172 "settings.app.form.autoLaunchInBackground": "Open in background",
173 "settings.app.form.enableSystemTray": "Show Franz in system tray",
174 "settings.app.form.darkMode": "Join the Dark Side",
175 "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray",
176 "settings.app.form.enableMenuBar": "Show Franz in Menu Bar",
177 "settings.app.form.hideDockIcon": "Hide Franz icon in Dock",
178 "settings.app.form.runInBackground": "Keep Franz in background when closing the window",
179 "settings.app.form.language": "Language",
180 "settings.app.form.enableSpellchecking": "Enable spell checking",
181 "settings.app.form.spellcheckerLanguage": "Spell checking language",
182 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
183 "settings.app.form.showDisabledServices": "Display disabled services tabs",
184 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
185 "settings.app.form.beta": "Include beta versions",
186 "settings.app.translationHelp": "Help us to translate Franz into your language.",
187 "settings.app.currentVersion": "Current version:",
188 "settings.app.restartRequired": "Changes require restart",
189 "settings.user.form.firstname": "First Name", 252 "settings.user.form.firstname": "First Name",
190 "settings.user.form.lastname": "Last Name", 253 "settings.user.form.lastname": "Last Name",
191 "settings.user.form.email": "Email",
192 "settings.user.form.currentPassword": "Current password",
193 "settings.user.form.newPassword": "New password", 254 "settings.user.form.newPassword": "New password",
194 "settings.user.form.accountType.label": "Account type", 255 "settings.workspace.add.form.name": "Name",
195 "settings.user.form.accountType.individual": "Individual", 256 "settings.workspace.add.form.submitButton": "Create workspace",
196 "settings.user.form.accountType.non-profit": "Non-Profit", 257 "settings.workspace.form.buttonDelete": "Delete workspace",
197 "settings.user.form.accountType.company": "Company", 258 "settings.workspace.form.buttonSave": "Save workspace",
259 "settings.workspace.form.name": "Name",
260 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces": "Your workspaces",
262 "settings.workspaces.deletedInfo": "Workspace has been deleted",
263 "settings.workspaces.headline": "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces": "Try again",
266 "settings.workspaces.updatedInfo": "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo": "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
270 "sidebar.addNewService": "Add new service",
271 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
272 "sidebar.muteApp": "Disable notifications & audio",
273 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
274 "sidebar.settings": "Settings",
275 "sidebar.unmuteApp": "Enable notifications & audio",
276 "signup.company.label": "Company",
277 "signup.email.label": "Email address",
278 "signup.emailDuplicate": "A user with that email address already exists",
279 "signup.firstname.label": "First Name",
280 "signup.headline": "Sign up",
281 "signup.lastname.label": "Last Name",
282 "signup.legal.info": "By creating a Franz account you accept the",
283 "signup.legal.privacy": "Privacy Statement",
284 "signup.legal.terms": "Terms of service",
285 "signup.link.login": "Already have an account, sign in?",
286 "signup.password.label": "Password",
287 "signup.submit.label": "Create account",
288 "subscription.euTaxInfo": "EU residents: local sales tax may apply",
289 "subscription.features.ads": "No ads, ever!",
290 "subscription.features.comingSoon": "coming soon",
291 "subscription.features.noInterruptions": "No app delays & nagging to upgrade license",
292 "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost",
293 "subscription.features.proxy": "Proxy support for services",
294 "subscription.features.spellchecker": "Support for spellchecker",
295 "subscription.features.workspaces": "Organize your services in workspaces",
296 "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes",
297 "subscription.paymentSessionError": "Could not initialize payment form",
298 "subscription.submit.label": "I want to support the development of Franz",
198 "subscription.type.free": "free", 299 "subscription.type.free": "free",
199 "subscription.type.month": "month", 300 "subscription.type.month": "month",
200 "subscription.type.year": "year", 301 "subscription.type.year": "year",
201 "subscription.euTaxInfo": "EU residents: local sales tax may apply",
202 "subscriptionPopup.buttonCancel": "Cancel", 302 "subscriptionPopup.buttonCancel": "Cancel",
203 "subscriptionPopup.buttonDone": "Done", 303 "subscriptionPopup.buttonDone": "Done",
204 "tabs.item.reload": "Reload", 304 "tabs.item.deleteService": "Delete service",
205 "tabs.item.edit": "Edit",
206 "tabs.item.disableNotifications": "Disable notifications",
207 "tabs.item.enableNotification": "Enable notifications",
208 "tabs.item.disableAudio": "Disable audio", 305 "tabs.item.disableAudio": "Disable audio",
209 "tabs.item.enableAudio": "Enable audio", 306 "tabs.item.disableNotifications": "Disable notifications",
210 "tabs.item.disableService": "Disable service", 307 "tabs.item.disableService": "Disable service",
308 "tabs.item.edit": "Edit",
309 "tabs.item.enableAudio": "Enable audio",
310 "tabs.item.enableNotification": "Enable notifications",
211 "tabs.item.enableService": "Enable service", 311 "tabs.item.enableService": "Enable service",
212 "tabs.item.deleteService": "Delete service", 312 "tabs.item.reload": "Reload",
213 "service.crashHandler.headline": "Oh no!",
214 "service.crashHandler.text": "{name} has caused an error.",
215 "service.crashHandler.action": "Reload {name}",
216 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
217 "service.errorHandler.headline": "Oh no!",
218 "service.errorHandler.text": "{name} has failed to load.",
219 "service.errorHandler.message": "Error",
220 "service.errorHandler.action": "Reload {name}",
221 "service.errorHandler.editAction": "Edit {name}",
222 "service.disabledHandler.headline": "{name} is disabled",
223 "service.disabledHandler.action": "Enable {name}",
224 "menu.edit": "Edit",
225 "menu.edit.undo": "Undo",
226 "menu.edit.redo": "Redo",
227 "menu.edit.cut": "Cut",
228 "menu.edit.copy": "Copy",
229 "menu.edit.paste": "Paste",
230 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
231 "menu.edit.delete": "Delete",
232 "menu.edit.selectAll": "Select All",
233 "menu.edit.speech": "Speech",
234 "menu.edit.startSpeaking": "Start Speaking",
235 "menu.edit.stopSpeaking": "Stop Speaking",
236 "menu.edit.startDictation": "Start Dictation",
237 "menu.edit.emojiSymbols": "Emoji & Symbols",
238 "menu.view.resetZoom": "Actual Size",
239 "menu.view.zoomIn": "Zoom In",
240 "menu.view.zoomOut": "Zoom Out",
241 "menu.view.enterFullScreen": "Enter Full Screen",
242 "menu.view.exitFullScreen": "Exit Full Screen",
243 "menu.view.toggleFullScreen": "Toggle Full Screen",
244 "menu.view.toggleDevTools": "Toggle Developer Tools",
245 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools",
246 "menu.view.reloadService": "Reload Service",
247 "menu.view.reloadFranz": "Reload Franz",
248 "menu.window.minimize": "Minimize",
249 "menu.window.close": "Close",
250 "menu.help.learnMore": "Learn More",
251 "menu.help.changelog": "Changelog",
252 "menu.help.support": "Support",
253 "menu.help.tos": "Terms of Service",
254 "menu.help.privacy": "Privacy Statement",
255 "menu.file": "File",
256 "menu.view": "View",
257 "menu.services": "Services",
258 "menu.window": "Window",
259 "menu.help": "Help",
260 "menu.app.about": "About Franz",
261 "menu.app.settings": "Settings",
262 "menu.app.hide": "Hide",
263 "menu.app.hideOthers": "Hide Others",
264 "menu.app.unhide": "Unhide",
265 "menu.app.quit": "Quit",
266 "menu.services.addNewService": "Add New Service...",
267 "validation.required": "{field} is required",
268 "validation.email": "{field} is not valid", 313 "validation.email": "{field} is not valid",
269 "validation.url": "{field} is not a valid URL",
270 "validation.minLength": "{field} should be at least {length} characters long", 314 "validation.minLength": "{field} should be at least {length} characters long",
271 "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting", 315 "validation.oneRequired": "At least one is required",
272 "feature.delayApp.action": "Get a Franz Supporter License", 316 "validation.required": "{field} is required",
273 "feature.delayApp.text": "Franz will continue in {seconds} seconds.", 317 "validation.url": "{field} is not a valid URL",
274 "premiumFeature.button.upgradeAccount": "Upgrade account", 318 "welcome.loginButton": "Login to your account",
275 "app.errorHandler.headline": "Something went wrong", 319 "welcome.signupButton": "Create a free account",
276 "app.errorHandler.action": "Reload" 320 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
277} 321 "workspaceDrawer.allServices": "All services",
322 "workspaceDrawer.headline": "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit": "edit",
324 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge": "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
329 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo": "Switching to"
331} \ No newline at end of file
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index 669b4d2dd..4167a5c7d 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Recargar", 2 "app.errorHandler.action" : "Recargar",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Ha surgido un error",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Consigue una Licencia de Soporte de Franz", 5 "feature.delayApp.action" : "Consigue una Licencia de Soporte de Franz",
5 "feature.delayApp.headline" : "Por favor, compra una Licencia de Soporte de Franz para saltar la espera", 6 "feature.delayApp.headline" : "Por favor, compra una Licencia de Soporte de Franz para saltar la espera",
6 "feature.delayApp.text" : "Franz continuarĂ¡ en {seconds} segundos.", 7 "feature.delayApp.text" : "Franz continuarĂ¡ en {seconds} segundos.",
8 "feature.shareFranz.action.email" : "EnvĂ­a como correo",
9 "feature.shareFranz.action.facebook" : "Compartir en Facebook",
10 "feature.shareFranz.action.twitter" : "Compartir en Twitter",
11 "feature.shareFranz.headline" : "¡Juntos mejoramos Franz!",
12 "feature.shareFranz.shareText.email" : "¡He añadido {count} servicios a Franz! ObtĂ©n la aplicaciĂ³n gratuita para WhatsApp, Messenger, Slack, Skype en www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Dile a tus amigos y colegas lo asombroso que es Franz y ayĂºdanos a correr la voz.",
7 "global.api.unhealthy" : "No es posible conectarse a los servicios en lĂ­nea de Franz.", 15 "global.api.unhealthy" : "No es posible conectarse a los servicios en lĂ­nea de Franz.",
8 "global.notConnectedToTheInternet" : "No estĂ¡s conectado a Internet", 16 "global.notConnectedToTheInternet" : "No estĂ¡s conectado a Internet",
17 "global.spellchecker.useDefault" : "Utilizar estĂ¡ndar del sistema ({default})",
18 "global.spellchecking.autodetect" : "Detectar el idioma automĂ¡ticamente",
19 "global.spellchecking.autodetect.short" : "AutomĂ¡tico",
20 "global.spellchecking.language" : "Corrector de ortografĂ­a",
9 "import.headline" : "Importa tus servicios de Franz 4", 21 "import.headline" : "Importa tus servicios de Franz 4",
10 "import.notSupportedHeadline" : "Servicios no admitidos aĂºn en Franz 5", 22 "import.notSupportedHeadline" : "Servicios no admitidos aĂºn en Franz 5",
11 "import.skip.label" : "Quiero agregar servicios manualmente", 23 "import.skip.label" : "Quiero agregar servicios manualmente",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Iniciar sesiĂ³n", 44 "login.submit.label" : "Iniciar sesiĂ³n",
33 "login.tokenExpired" : "Tu sesiĂ³n ha expirado, por favor inicia sesiĂ³n de nuevo.", 45 "login.tokenExpired" : "Tu sesiĂ³n ha expirado, por favor inicia sesiĂ³n de nuevo.",
34 "menu.app.about" : "Sobre Franz", 46 "menu.app.about" : "Sobre Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Ocultar", 48 "menu.app.hide" : "Ocultar",
36 "menu.app.hideOthers" : "Ocultar otros", 49 "menu.app.hideOthers" : "Ocultar otros",
37 "menu.app.quit" : "Salir", 50 "menu.app.quit" : "Salir",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Ayuda técnica", 72 "menu.help.support" : "Ayuda técnica",
60 "menu.help.tos" : "TĂ©rminos del Servicio", 73 "menu.help.tos" : "TĂ©rminos del Servicio",
61 "menu.services" : "Servicios", 74 "menu.services" : "Servicios",
75 "menu.services.activatePreviousService" : "Activa el servicio previo",
62 "menu.services.addNewService" : "Añadir Nuevo Servicio...", 76 "menu.services.addNewService" : "Añadir Nuevo Servicio...",
77 "menu.services.setNextServiceActive" : "Activa el siguiente servicio",
63 "menu.view" : "Mostrar", 78 "menu.view" : "Mostrar",
64 "menu.view.enterFullScreen" : "Pasar a pantalla completa", 79 "menu.view.enterFullScreen" : "Pasar a pantalla completa",
65 "menu.view.exitFullScreen" : "Salir de Pantalla Completa", 80 "menu.view.exitFullScreen" : "Salir de Pantalla Completa",
@@ -74,6 +89,11 @@
74 "menu.window" : "Ventana", 89 "menu.window" : "Ventana",
75 "menu.window.close" : "Cerrar", 90 "menu.window.close" : "Cerrar",
76 "menu.window.minimize" : "Minimizar", 91 "menu.window.minimize" : "Minimizar",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Todos los servicios",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "DirecciĂ³n de correo electrĂ³nico", 97 "password.email.label" : "DirecciĂ³n de correo electrĂ³nico",
78 "password.headline" : "Restablecer contraseña", 98 "password.headline" : "Restablecer contraseña",
79 "password.link.login" : "Inicia sesiĂ³n en tu cuenta", 99 "password.link.login" : "Inicia sesiĂ³n en tu cuenta",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Editar {name}", 116 "service.errorHandler.editAction" : "Editar {name}",
97 "service.errorHandler.headline" : "¡Oh, no!", 117 "service.errorHandler.headline" : "¡Oh, no!",
98 "service.errorHandler.message" : "Error", 118 "service.errorHandler.message" : "Error",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} ha fallado la carga",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Primeros pasos", 121 "services.getStarted" : "Primeros pasos",
101 "services.welcome" : "Bienvenido a Franz", 122 "services.welcome" : "Bienvenido a Franz",
102 "settings.account.account.editButton" : "Editar cuenta", 123 "settings.account.account.editButton" : "Editar cuenta",
@@ -117,7 +138,8 @@
117 "settings.account.invoiceDownload" : "Descargar", 138 "settings.account.invoiceDownload" : "Descargar",
118 "settings.account.manageSubscription.label" : "Administra tu suscripciĂ³n", 139 "settings.account.manageSubscription.label" : "Administra tu suscripciĂ³n",
119 "settings.account.successInfo" : "Tus cambios han sido guardados", 140 "settings.account.successInfo" : "Tus cambios han sido guardados",
120 "settings.account.tryReloadUserInfoRequest" : "Intentar de nuevo", 141 "settings.account.tryReloadServices" : "Intentar de nuevo",
142 "settings.account.tryReloadUserInfoRequest" : "Intenta de nuevo",
121 "settings.account.userInfoRequestFailed" : "No se pudo cargar la informaciĂ³n de usuario", 143 "settings.account.userInfoRequestFailed" : "No se pudo cargar la informaciĂ³n de usuario",
122 "settings.app.buttonClearAllCache" : "Limpiar caché", 144 "settings.app.buttonClearAllCache" : "Limpiar caché",
123 "settings.app.buttonInstallUpdate" : "Reiniciar e instalar actualizaciones", 145 "settings.app.buttonInstallUpdate" : "Reiniciar e instalar actualizaciones",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Incluir versiones beta", 151 "settings.app.form.beta" : "Incluir versiones beta",
130 "settings.app.form.darkMode" : "Ănete al Lado Oscuro", 152 "settings.app.form.darkMode" : "Ănete al Lado Oscuro",
131 "settings.app.form.enableGPUAcceleration" : "Habilitar aceleraciĂ³n de GPU", 153 "settings.app.form.enableGPUAcceleration" : "Habilitar aceleraciĂ³n de GPU",
132 "settings.app.form.enableMenuBar" : "Mostrar a Franz en la barra de menĂºs",
133 "settings.app.form.enableSpellchecking" : "Activar correcciĂ³n ortogrĂ¡fica", 154 "settings.app.form.enableSpellchecking" : "Activar correcciĂ³n ortogrĂ¡fica",
134 "settings.app.form.enableSystemTray" : "Mostrar Franz en la bandeja del sistema", 155 "settings.app.form.enableSystemTray" : "Mostrar Franz en la bandeja del sistema",
135 "settings.app.form.hideDockIcon" : "Ocultar Icono de Franz en barra de herramientas",
136 "settings.app.form.language" : "Idioma", 156 "settings.app.form.language" : "Idioma",
137 "settings.app.form.minimizeToSystemTray" : "Minimizar Franz a la bandeja del sistema", 157 "settings.app.form.minimizeToSystemTray" : "Minimizar Franz a la bandeja del sistema",
138 "settings.app.form.runInBackground" : "Mantener Franz en segundo plano al cerrar la ventana", 158 "settings.app.form.runInBackground" : "Mantener Franz en segundo plano al cerrar la ventana",
139 "settings.app.form.showDisabledServices" : "Mostrar pestañas de servicios desactivados", 159 "settings.app.form.showDisabledServices" : "Mostrar pestañas de servicios desactivados",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar la insignia de mensajes sin leer cuando las notificaciones estĂ¡n desactivadas", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar la insignia de mensajes sin leer cuando las notificaciones estĂ¡n desactivadas",
141 "settings.app.form.spellcheckerLanguage" : "Corrector de ortografĂ­a",
142 "settings.app.headline" : "ConfiguraciĂ³n", 161 "settings.app.headline" : "ConfiguraciĂ³n",
143 "settings.app.headlineAdvanced" : "Avanzado", 162 "settings.app.headlineAdvanced" : "Avanzado",
144 "settings.app.headlineAppearance" : "Apariencia", 163 "settings.app.headlineAppearance" : "Apariencia",
145 "settings.app.headlineGeneral" : "General", 164 "settings.app.headlineGeneral" : "General",
146 "settings.app.headlineLanguage" : "Idioma", 165 "settings.app.headlineLanguage" : "Idioma",
147 "settings.app.headlineUpdates" : "Actualizaciones", 166 "settings.app.headlineUpdates" : "Actualizaciones",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Los cambios requieren reiniciar", 168 "settings.app.restartRequired" : "Los cambios requieren reiniciar",
149 "settings.app.subheadlineCache" : "Caché", 169 "settings.app.subheadlineCache" : "Caché",
150 "settings.app.translationHelp" : "AyĂºdanos a traducir Franz a tu idioma.", 170 "settings.app.translationHelp" : "AyĂºdanos a traducir Franz a tu idioma.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Invita a tus amigos", 177 "settings.navigation.inviteFriends" : "Invita a tus amigos",
158 "settings.navigation.logout" : "Cerrar sesiĂ³n", 178 "settings.navigation.logout" : "Cerrar sesiĂ³n",
159 "settings.navigation.settings" : "ConfiguraciĂ³n", 179 "settings.navigation.settings" : "ConfiguraciĂ³n",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Tus servicios", 181 "settings.navigation.yourServices" : "Tus servicios",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Todos los servicios", 183 "settings.recipes.all" : "Todos los servicios",
162 "settings.recipes.dev" : "Desarrollo", 184 "settings.recipes.dev" : "Desarrollo",
163 "settings.recipes.headline" : "Servicios disponibles", 185 "settings.recipes.headline" : "Servicios disponibles",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Mostrar señal de notificaciĂ³n para todos los mensajes nuevos", 214 "settings.service.form.indirectMessages" : "Mostrar señal de notificaciĂ³n para todos los mensajes nuevos",
193 "settings.service.form.isMutedInfo" : "Cuando estĂ©n desactivados, todos los sonidos de notificaciĂ³n y la reproducciĂ³n de audio serĂ¡n silenciados", 215 "settings.service.form.isMutedInfo" : "Cuando estĂ©n desactivados, todos los sonidos de notificaciĂ³n y la reproducciĂ³n de audio serĂ¡n silenciados",
194 "settings.service.form.name" : "Nombre", 216 "settings.service.form.name" : "Nombre",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "Ajustes Proxy HTTP\/HTTPS",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "Las configuraciones de Proxy no se sincronizarĂ¡n con los servidores de Franz.", 219 "settings.service.form.proxy.info" : "Las configuraciones de Proxy no se sincronizarĂ¡n con los servidores de Franz.",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Use Proxy",
199 "settings.service.form.proxy.password" : "Contraseña (opcional)", 221 "settings.service.form.proxy.password" : "Contraseña (opcional)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Puerto",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Por favor reinicie Franz despues de modificar los ajustes proxy.",
202 "settings.service.form.proxy.user" : "Usuario (opcional)", 224 "settings.service.form.proxy.user" : "Usuario (opcional)",
203 "settings.service.form.saveButton" : "Guardar servicio", 225 "settings.service.form.saveButton" : "Guardar servicio",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Alojado", 226 "settings.service.form.tabHosted" : "Alojado",
207 "settings.service.form.tabOnPremise" : "Auto alojado â­ï¸", 227 "settings.service.form.tabOnPremise" : "Auto alojado â­ï¸",
208 "settings.service.form.team" : "Equipo", 228 "settings.service.form.team" : "Equipo",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Descubrir servicios", 232 "settings.services.discoverServices" : "Descubrir servicios",
213 "settings.services.headline" : "Tus servicios", 233 "settings.services.headline" : "Tus servicios",
214 "settings.services.noServicesAdded" : "No has añadido ningĂºn servicio aĂºn.", 234 "settings.services.noServicesAdded" : "No has añadido ningĂºn servicio aĂºn.",
235 "settings.services.servicesRequestFailed" : "No pudo cargar tus servicios",
215 "settings.services.tooltip.isDisabled" : "El servicio estĂ¡ desactivado", 236 "settings.services.tooltip.isDisabled" : "El servicio estĂ¡ desactivado",
216 "settings.services.tooltip.isMuted" : "Todos los sonidos estĂ¡n silenciados", 237 "settings.services.tooltip.isMuted" : "Todos los sonidos estĂ¡n silenciados",
217 "settings.services.tooltip.notificationsDisabled" : "Las notificaciones estĂ¡n desactivadas", 238 "settings.services.tooltip.notificationsDisabled" : "Las notificaciones estĂ¡n desactivadas",
218 "settings.services.updatedInfo" : "Tus cambios han sido guardados", 239 "settings.services.updatedInfo" : "Tus cambios han sido guardados",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Equipo",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Empresa", 246 "settings.user.form.accountType.company" : "Empresa",
220 "settings.user.form.accountType.individual" : "Individual", 247 "settings.user.form.accountType.individual" : "Individual",
221 "settings.user.form.accountType.label" : "Tipo de cuenta", 248 "settings.user.form.accountType.label" : "Tipo de cuenta",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Nombre", 252 "settings.user.form.firstname" : "Nombre",
226 "settings.user.form.lastname" : "Apellido", 253 "settings.user.form.lastname" : "Apellido",
227 "settings.user.form.newPassword" : "Nueva contraseña", 254 "settings.user.form.newPassword" : "Nueva contraseña",
255 "settings.workspace.add.form.name" : "Nombre",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Nombre",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Try again",
266 "settings.workspaces.updatedInfo" : "Tus cambios han sido guardados",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Añadir nuevo servicio", 270 "sidebar.addNewService" : "Añadir nuevo servicio",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Desactivar notificaciones y sonido", 272 "sidebar.muteApp" : "Desactivar notificaciones y sonido",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "ConfiguraciĂ³n", 274 "sidebar.settings" : "ConfiguraciĂ³n",
231 "sidebar.unmuteApp" : "Activar notificaciones y sonido", 275 "sidebar.unmuteApp" : "Activar notificaciones y sonido",
232 "signup.company.label" : "Compañía", 276 "signup.company.label" : "Compañía",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Residentes de la UE: pueden aplicarse impuestos locales", 288 "subscription.euTaxInfo" : "Residentes de la UE: pueden aplicarse impuestos locales",
245 "subscription.features.ads" : "¡Sin publicidad, para siempre!", 289 "subscription.features.ads" : "¡Sin publicidad, para siempre!",
246 "subscription.features.comingSoon" : "prĂ³ximamente", 290 "subscription.features.comingSoon" : "prĂ³ximamente",
247 "subscription.features.encryptedSync" : "SincronizaciĂ³n de sesiĂ³n encriptada",
248 "subscription.features.noInterruptions" : "Sin retrasos en la app ni molestas actualizaciones de licencias", 291 "subscription.features.noInterruptions" : "Sin retrasos en la app ni molestas actualizaciones de licencias",
249 "subscription.features.onpremise" : "Añade servicios locales\/autoalojados como HipChat",
250 "subscription.features.onpremise.mattermost" : "Agregar servicios de almacenamiento como Mattermost", 292 "subscription.features.onpremise.mattermost" : "Agregar servicios de almacenamiento como Mattermost",
251 "subscription.features.proxy" : "Soporte Proxy para servicios", 293 "subscription.features.proxy" : "Soporte Proxy para servicios",
252 "subscription.features.spellchecker" : "Soporte para corrector de ortografĂ­a", 294 "subscription.features.spellchecker" : "Soporte para corrector de ortografĂ­a",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "La Cuenta pagada de Colaborador Premium de Franz incluye", 296 "subscription.includedFeatures" : "La Cuenta pagada de Colaborador Premium de Franz incluye",
254 "subscription.paymentSessionError" : "No se pudo inicializar el formulario de pago", 297 "subscription.paymentSessionError" : "No se pudo inicializar el formulario de pago",
255 "subscription.submit.label" : "Quiero apoyar el desarrollo de Franz", 298 "subscription.submit.label" : "Quiero apoyar el desarrollo de Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Recargar", 312 "tabs.item.reload" : "Recargar",
270 "validation.email" : "{field} no es vĂ¡lido", 313 "validation.email" : "{field} no es vĂ¡lido",
271 "validation.minLength" : "{field} deberĂ­a tener al menos {length} caracteres", 314 "validation.minLength" : "{field} deberĂ­a tener al menos {length} caracteres",
315 "validation.oneRequired" : "Al menos uno es requerido",
272 "validation.required" : "{field} es obligatorio", 316 "validation.required" : "{field} es obligatorio",
273 "validation.url" : "{field} no es una URL vĂ¡lida", 317 "validation.url" : "{field} no es una URL vĂ¡lida",
274 "welcome.loginButton" : "Accede a tu cuenta", 318 "welcome.loginButton" : "Accede a tu cuenta",
275 "welcome.signupButton" : "Crear una cuenta gratuita", 319 "welcome.signupButton" : "Crear una cuenta gratuita",
276 "welcome.slogan" : "MensajerĂ­a que funciona para ti" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Todos los servicios",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index a83767f1e..2bd5326c0 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Recharger", 2 "app.errorHandler.action" : "Recharger",
3 "app.errorHandler.headline" : "Une erreur s'est produite.", 3 "app.errorHandler.headline" : "Une erreur s'est produite",
4 "feature.announcements.changelog.headline" : "Changements dans Franz {version}",
4 "feature.delayApp.action" : "Obtenez une licence de Supporter Franz", 5 "feature.delayApp.action" : "Obtenez une licence de Supporter Franz",
5 "feature.delayApp.headline" : "Veuillez acheter une licence de Supporter Franz pour sauter le temps d'attente", 6 "feature.delayApp.headline" : "Veuillez acheter une licence de Supporter Franz pour sauter le temps d'attente",
6 "feature.delayApp.text" : "Franz continuera dans {seconds} secondes.", 7 "feature.delayApp.text" : "Franz reprendra dans {seconds} secondes.",
8 "feature.shareFranz.action.email" : "Envoyer par mail",
9 "feature.shareFranz.action.facebook" : "Partager sur Facebook",
10 "feature.shareFranz.action.twitter" : "Partager sur Twitter",
11 "feature.shareFranz.headline" : "Franz est meilleur quand on est tous ensemble !",
12 "feature.shareFranz.shareText.email" : "J'ai ajouté {count} services à Franz ! Télécharger l'appli gratuite pour WhatsApp, Messenger, Skype et cie sur www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "J'ai ajouté {count} services à Franz! Télécharge l'application gratuite pour WhatsApp, Messenger, Slack, Skype et compagnie sur www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Dites à vos amis et collègues combien Franz est super et aidez nous à faire passer le mot.",
7 "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", 15 "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz",
8 "global.notConnectedToTheInternet" : "Vous n'Ăªtes pas connectĂ© Ă  Internet.", 16 "global.notConnectedToTheInternet" : "Vous n'Ăªtes pas connectĂ© Ă  Internet.",
17 "global.spellchecker.useDefault" : "Par défaut ({default})",
18 "global.spellchecking.autodetect" : "Detecter automatiquement la langue",
19 "global.spellchecking.autodetect.short" : "Automatiquement",
20 "global.spellchecking.language" : "Langue de la vérification orthographique",
9 "import.headline" : "Importez vos services depuis la version 4 de Franz.", 21 "import.headline" : "Importez vos services depuis la version 4 de Franz.",
10 "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par Franz 5", 22 "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par Franz 5",
11 "import.skip.label" : "Je veux ajouter des services manuellement", 23 "import.skip.label" : "Je veux ajouter des services manuellement",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Se connecter", 44 "login.submit.label" : "Se connecter",
33 "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", 45 "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.",
34 "menu.app.about" : "Ă€ propos de Franz", 46 "menu.app.about" : "Ă€ propos de Franz",
47 "menu.app.announcement" : "Quoi de neuf? ",
35 "menu.app.hide" : "Masquer", 48 "menu.app.hide" : "Masquer",
36 "menu.app.hideOthers" : "Masquer les autres", 49 "menu.app.hideOthers" : "Masquer les autres",
37 "menu.app.quit" : "Quitter", 50 "menu.app.quit" : "Quitter",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Support", 72 "menu.help.support" : "Support",
60 "menu.help.tos" : "Conditions d'utilisation", 73 "menu.help.tos" : "Conditions d'utilisation",
61 "menu.services" : "Services", 74 "menu.services" : "Services",
75 "menu.services.activatePreviousService" : "Activer le service précédent",
62 "menu.services.addNewService" : "Ajouter un nouveau service...", 76 "menu.services.addNewService" : "Ajouter un nouveau service...",
77 "menu.services.setNextServiceActive" : "Activer le service suivant",
63 "menu.view" : "Aperçu", 78 "menu.view" : "Aperçu",
64 "menu.view.enterFullScreen" : "Entrer en mode plein Ă©cran", 79 "menu.view.enterFullScreen" : "Entrer en mode plein Ă©cran",
65 "menu.view.exitFullScreen" : "Sortir du mode plein Ă©cran", 80 "menu.view.exitFullScreen" : "Sortir du mode plein Ă©cran",
@@ -74,13 +89,18 @@
74 "menu.window" : "FenĂªtre", 89 "menu.window" : "FenĂªtre",
75 "menu.window.close" : "Fermer", 90 "menu.window.close" : "Fermer",
76 "menu.window.minimize" : "RĂ©duire", 91 "menu.window.minimize" : "RĂ©duire",
77 "password.email.label" : "Adresse e-mail", 92 "menu.workspaces" : "Espace de travail",
93 "menu.workspaces.addNewWorkspace" : "Ajouter un nouvel espace de travail",
94 "menu.workspaces.closeWorkspaceDrawer" : "Ouvrir l'espace de travail",
95 "menu.workspaces.defaultWorkspace" : "Tous les services",
96 "menu.workspaces.openWorkspaceDrawer" : "Fermer l'espace de travail",
97 "password.email.label" : "Adresse email",
78 "password.headline" : "RĂ©initialiser le mot de passe", 98 "password.headline" : "RĂ©initialiser le mot de passe",
79 "password.link.login" : "Connectez-vous Ă  votre compte", 99 "password.link.login" : "Connectez-vous Ă  votre compte",
80 "password.link.signup" : "Créer un compte gratuit.", 100 "password.link.signup" : "Créer un compte gratuit.",
81 "password.noUser" : "Aucun utilisateur n'a été trouvé avec cette adresse e-mail", 101 "password.noUser" : "Aucun utilisateur n'a été trouvé avec cette adresse email",
82 "password.submit.label" : "Soumettre", 102 "password.submit.label" : "Soumettre",
83 "password.successInfo" : "Merci de consulter vos e-mails", 103 "password.successInfo" : "Merci de consulter vos emails",
84 "premiumFeature.button.upgradeAccount" : "Mettre Ă  niveau mon compte", 104 "premiumFeature.button.upgradeAccount" : "Mettre Ă  niveau mon compte",
85 "pricing.headline" : "Soutenez Franz", 105 "pricing.headline" : "Soutenez Franz",
86 "pricing.link.skipPayment" : "Je ne veux pas soutenir le développement de Franz.", 106 "pricing.link.skipPayment" : "Je ne veux pas soutenir le développement de Franz.",
@@ -97,6 +117,7 @@
97 "service.errorHandler.headline" : "Oh non !", 117 "service.errorHandler.headline" : "Oh non !",
98 "service.errorHandler.message" : "Erreur", 118 "service.errorHandler.message" : "Erreur",
99 "service.errorHandler.text" : "Le chargement de {name} a échoué.", 119 "service.errorHandler.text" : "Le chargement de {name} a échoué.",
120 "service.webviewLoader.loading" : "Chargement (c'est l'heure du café...)",
100 "services.getStarted" : "Commencer", 121 "services.getStarted" : "Commencer",
101 "services.welcome" : "Bienvenue dans Franz", 122 "services.welcome" : "Bienvenue dans Franz",
102 "settings.account.account.editButton" : "Modifier le compte", 123 "settings.account.account.editButton" : "Modifier le compte",
@@ -108,7 +129,7 @@
108 "settings.account.deleteInfo" : "Si vous n'avez plus besoin de votre compte Franz, vous pouvez le supprimer avec toutes ses données associées.", 129 "settings.account.deleteInfo" : "Si vous n'avez plus besoin de votre compte Franz, vous pouvez le supprimer avec toutes ses données associées.",
109 "settings.account.headline" : "Compte", 130 "settings.account.headline" : "Compte",
110 "settings.account.headlineAccount" : "Informations sur le compte", 131 "settings.account.headlineAccount" : "Informations sur le compte",
111 "settings.account.headlineDangerZone" : "Zone Dangereuse !", 132 "settings.account.headlineDangerZone" : "Zone dangereuse !",
112 "settings.account.headlineInvoices" : "Factures", 133 "settings.account.headlineInvoices" : "Factures",
113 "settings.account.headlinePassword" : "Changer le mot de passe", 134 "settings.account.headlinePassword" : "Changer le mot de passe",
114 "settings.account.headlineProfile" : "Mettre Ă  jour le profil", 135 "settings.account.headlineProfile" : "Mettre Ă  jour le profil",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Télécharger", 138 "settings.account.invoiceDownload" : "Télécharger",
118 "settings.account.manageSubscription.label" : "GĂ©rer votre abonnement", 139 "settings.account.manageSubscription.label" : "GĂ©rer votre abonnement",
119 "settings.account.successInfo" : "Vos modifications ont été enregistrées", 140 "settings.account.successInfo" : "Vos modifications ont été enregistrées",
141 "settings.account.tryReloadServices" : "RĂ©essayer",
120 "settings.account.tryReloadUserInfoRequest" : "RĂ©essayer", 142 "settings.account.tryReloadUserInfoRequest" : "RĂ©essayer",
121 "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur", 143 "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur",
122 "settings.app.buttonClearAllCache" : "Vider le cache", 144 "settings.app.buttonClearAllCache" : "Vider le cache",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Accepter les versions bĂªta", 151 "settings.app.form.beta" : "Accepter les versions bĂªta",
130 "settings.app.form.darkMode" : "Rejoins le côté obscur", 152 "settings.app.form.darkMode" : "Rejoins le côté obscur",
131 "settings.app.form.enableGPUAcceleration" : "Activer l'accélération GPU", 153 "settings.app.form.enableGPUAcceleration" : "Activer l'accélération GPU",
132 "settings.app.form.enableMenuBar" : "Afficher Franz dans la barre des menus",
133 "settings.app.form.enableSpellchecking" : "Activer la vérification orthographique", 154 "settings.app.form.enableSpellchecking" : "Activer la vérification orthographique",
134 "settings.app.form.enableSystemTray" : "Afficher Franz dans la barre d'état système", 155 "settings.app.form.enableSystemTray" : "Afficher Franz dans la barre d'état système",
135 "settings.app.form.hideDockIcon" : "Masquer Franz dans le Dock",
136 "settings.app.form.language" : "Langue", 156 "settings.app.form.language" : "Langue",
137 "settings.app.form.minimizeToSystemTray" : "Minimiser Franz dans la zone de notification", 157 "settings.app.form.minimizeToSystemTray" : "Minimiser Franz dans la zone de notification",
138 "settings.app.form.runInBackground" : "Garder Franz ouvert en arrière-plan Ă  la fermeture de la fenĂªtre", 158 "settings.app.form.runInBackground" : "Garder Franz ouvert en arrière-plan Ă  la fermeture de la fenĂªtre",
139 "settings.app.form.showDisabledServices" : "Afficher les onglets des services désactivés", 159 "settings.app.form.showDisabledServices" : "Afficher les onglets des services désactivés",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Afficher les badges de messages non lus quand les notifications sont désactivées.", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Afficher les badges de messages non lus quand les notifications sont désactivées.",
141 "settings.app.form.spellcheckerLanguage" : "Langue de la vérification orthographique",
142 "settings.app.headline" : "Paramètres", 161 "settings.app.headline" : "Paramètres",
143 "settings.app.headlineAdvanced" : "Paramètres avancés", 162 "settings.app.headlineAdvanced" : "Paramètres avancés",
144 "settings.app.headlineAppearance" : "Apparence", 163 "settings.app.headlineAppearance" : "Apparence",
145 "settings.app.headlineGeneral" : "Général", 164 "settings.app.headlineGeneral" : "Général",
146 "settings.app.headlineLanguage" : "Langue", 165 "settings.app.headlineLanguage" : "Langue",
147 "settings.app.headlineUpdates" : "Mises Ă  jour", 166 "settings.app.headlineUpdates" : "Mises Ă  jour",
167 "settings.app.languageDisclaimer" : "Les traductions officielles sont l'anglais et l'allemand. Toutes les autres langues sont des traductions faites par la communauté.",
148 "settings.app.restartRequired" : "Les modifications nécessitent un redémarrage", 168 "settings.app.restartRequired" : "Les modifications nécessitent un redémarrage",
149 "settings.app.subheadlineCache" : "Cache", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Aidez-nous Ă  traduire Franz dans votre langue.", 170 "settings.app.translationHelp" : "Aidez-nous Ă  traduire Franz dans votre langue.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Inviter des amis", 177 "settings.navigation.inviteFriends" : "Inviter des amis",
158 "settings.navigation.logout" : "Se déconnecter", 178 "settings.navigation.logout" : "Se déconnecter",
159 "settings.navigation.settings" : "Paramètres", 179 "settings.navigation.settings" : "Paramètres",
180 "settings.navigation.team" : "GĂ©rer l'Ă©quipe",
160 "settings.navigation.yourServices" : "Vos services", 181 "settings.navigation.yourServices" : "Vos services",
182 "settings.navigation.yourWorkspaces" : "Tes espaces de travail",
161 "settings.recipes.all" : "Tous les services", 183 "settings.recipes.all" : "Tous les services",
162 "settings.recipes.dev" : "DĂ©veloppement", 184 "settings.recipes.dev" : "DĂ©veloppement",
163 "settings.recipes.headline" : "Services disponibles", 185 "settings.recipes.headline" : "Services disponibles",
@@ -192,19 +214,17 @@
192 "settings.service.form.indirectMessages" : "Afficher le badge des messages pour tous les nouveaux messages", 214 "settings.service.form.indirectMessages" : "Afficher le badge des messages pour tous les nouveaux messages",
193 "settings.service.form.isMutedInfo" : "Lorsque désactivé, tous les sons de notifications ainsi que l'audio sont coupés", 215 "settings.service.form.isMutedInfo" : "Lorsque désactivé, tous les sons de notifications ainsi que l'audio sont coupés",
194 "settings.service.form.name" : "Nom", 216 "settings.service.form.name" : "Nom",
195 "settings.service.form.proxy.headline" : "Paramètres Proxy HTTP\/HTTPS", 217 "settings.service.form.proxy.headline" : "Paramètres proxy HTTP\/HTTPS",
196 "settings.service.form.proxy.host" : "HĂ´te\/IP du proxy", 218 "settings.service.form.proxy.host" : "HĂ´te\/IP du proxy",
197 "settings.service.form.proxy.info" : "Les paramètres de proxy ne seront pas synchronisés avec les serveurs de Franz.", 219 "settings.service.form.proxy.info" : "Les paramètres de proxy ne seront pas synchronisés avec les serveurs de Franz.",
198 "settings.service.form.proxy.isEnabled" : "Utiliser un proxy", 220 "settings.service.form.proxy.isEnabled" : "Utiliser un proxy",
199 "settings.service.form.proxy.password" : "Mot de passe (facultatif)", 221 "settings.service.form.proxy.password" : "Mot de passe (facultatif)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Port",
201 "settings.service.form.proxy.restartInfo" : "Veuillez redémarrer Franz après avoir modifier les paramètres proxy.", 223 "settings.service.form.proxy.restartInfo" : "Veuillez redémarrer Franz après avoir modifié les paramètres proxy.",
202 "settings.service.form.proxy.user" : "Utilisateur (facultatif)", 224 "settings.service.form.proxy.user" : "Utilisateur (facultatif)",
203 "settings.service.form.saveButton" : "Enregistrer le service", 225 "settings.service.form.saveButton" : "Enregistrer le service",
204 "settings.service.form.spellcheckerLanguage" : "Veuillez vérifier l'épellation Langage",
205 "settings.service.form.spellcheckerLanguage.default" : "Par défaut ({default})",
206 "settings.service.form.tabHosted" : "Hébergé", 226 "settings.service.form.tabHosted" : "Hébergé",
207 "settings.service.form.tabOnPremise" : "Auto-hĂ©bergĂ© â­ï¸", 227 "settings.service.form.tabOnPremise" : "hĂ©bergĂ© par soi-mĂªme â­ï¸",
208 "settings.service.form.team" : "Équipe", 228 "settings.service.form.team" : "Équipe",
209 "settings.service.form.useHostedService" : "Utilisez le service hébergé {name}.", 229 "settings.service.form.useHostedService" : "Utilisez le service hébergé {name}.",
210 "settings.service.form.yourServices" : "Vos services", 230 "settings.service.form.yourServices" : "Vos services",
@@ -212,26 +232,50 @@
212 "settings.services.discoverServices" : "DĂ©couvrir les services", 232 "settings.services.discoverServices" : "DĂ©couvrir les services",
213 "settings.services.headline" : "Vos services", 233 "settings.services.headline" : "Vos services",
214 "settings.services.noServicesAdded" : "Vous n'avez pas encore ajouté de services.", 234 "settings.services.noServicesAdded" : "Vous n'avez pas encore ajouté de services.",
235 "settings.services.servicesRequestFailed" : "Impossible de charger vos services",
215 "settings.services.tooltip.isDisabled" : "Ce service est désactivé", 236 "settings.services.tooltip.isDisabled" : "Ce service est désactivé",
216 "settings.services.tooltip.isMuted" : "Tous les sons sont coupés", 237 "settings.services.tooltip.isMuted" : "Tous les sons sont coupés",
217 "settings.services.tooltip.notificationsDisabled" : "Notifications désactivées.", 238 "settings.services.tooltip.notificationsDisabled" : "Notifications désactivées.",
218 "settings.services.updatedInfo" : "Vos modifications ont été enregistrées", 239 "settings.services.updatedInfo" : "Vos modifications ont été enregistrées",
240 "settings.team.contentHeadline" : "Franz pour les Ă©quipes",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Équipe de travail",
243 "settings.team.intro" : "Tu peux dĂ©sormais gĂ©rer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, Ă  partir d'un seul et mĂªme compte.",
244 "settings.team.manageAction" : "Gère ton équipe sur meetfranz.com",
245 "settings.team.upgradeAction" : "Mise Ă  niveau du compte",
219 "settings.user.form.accountType.company" : "Entreprise", 246 "settings.user.form.accountType.company" : "Entreprise",
220 "settings.user.form.accountType.individual" : "Individuel", 247 "settings.user.form.accountType.individual" : "Individuel",
221 "settings.user.form.accountType.label" : "Type de compte", 248 "settings.user.form.accountType.label" : "Type de compte",
222 "settings.user.form.accountType.non-profit" : "Non-lucratif", 249 "settings.user.form.accountType.non-profit" : "Non-lucratif",
223 "settings.user.form.currentPassword" : "Mot de passe actuel", 250 "settings.user.form.currentPassword" : "Mot de passe actuel",
224 "settings.user.form.email" : "E-mail", 251 "settings.user.form.email" : "Email",
225 "settings.user.form.firstname" : "Prénom", 252 "settings.user.form.firstname" : "Prénom",
226 "settings.user.form.lastname" : "Nom", 253 "settings.user.form.lastname" : "Nom",
227 "settings.user.form.newPassword" : "Nouveau mot de passe", 254 "settings.user.form.newPassword" : "Nouveau mot de passe",
255 "settings.workspace.add.form.name" : "Nom",
256 "settings.workspace.add.form.submitButton" : "Créer un espace de travail",
257 "settings.workspace.form.buttonDelete" : "Effacer l'espace de travail",
258 "settings.workspace.form.buttonSave" : "Sauvegarder l'espace de travail",
259 "settings.workspace.form.name" : "Nom",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Tes espaces de travail",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Vos espaces de travails",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "RĂ©essayer",
266 "settings.workspaces.updatedInfo" : "Vos modifications ont été enregistrées",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Ajouter un nouveau service", 270 "sidebar.addNewService" : "Ajouter un nouveau service",
271 "sidebar.closeWorkspaceDrawer" : "Ouvrir l'espace de travail",
229 "sidebar.muteApp" : "DĂ©sactiver les notifications et les sons", 272 "sidebar.muteApp" : "DĂ©sactiver les notifications et les sons",
273 "sidebar.openWorkspaceDrawer" : "Fermer l'espace de travail",
230 "sidebar.settings" : "Paramètres", 274 "sidebar.settings" : "Paramètres",
231 "sidebar.unmuteApp" : "Activer les notifications et les sons", 275 "sidebar.unmuteApp" : "Activer les notifications et les sons",
232 "signup.company.label" : "Entreprise", 276 "signup.company.label" : "Entreprise",
233 "signup.email.label" : "Adresse e-mail", 277 "signup.email.label" : "Adresse email",
234 "signup.emailDuplicate" : "Cette adresse e-mail est déjà utilisée", 278 "signup.emailDuplicate" : "Cette adresse email est déjà utilisée",
235 "signup.firstname.label" : "Prénom", 279 "signup.firstname.label" : "Prénom",
236 "signup.headline" : "S'inscrire", 280 "signup.headline" : "S'inscrire",
237 "signup.lastname.label" : "Nom", 281 "signup.lastname.label" : "Nom",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "RĂ©sidents de l'UE : une taxe locale peut s'appliquer", 288 "subscription.euTaxInfo" : "RĂ©sidents de l'UE : une taxe locale peut s'appliquer",
245 "subscription.features.ads" : "Plus de pubs !", 289 "subscription.features.ads" : "Plus de pubs !",
246 "subscription.features.comingSoon" : "BientĂ´t disponible", 290 "subscription.features.comingSoon" : "BientĂ´t disponible",
247 "subscription.features.encryptedSync" : "Synchronisation de session cryptée",
248 "subscription.features.noInterruptions" : "Aucun délai dans l'application ni de harcèlement pour mettre à niveau la licence", 291 "subscription.features.noInterruptions" : "Aucun délai dans l'application ni de harcèlement pour mettre à niveau la licence",
249 "subscription.features.onpremise" : "Ajouter des services locaux\/hébergés comme HipChat",
250 "subscription.features.onpremise.mattermost" : "Ajouter des services auto-hébergés comme Mattermost", 292 "subscription.features.onpremise.mattermost" : "Ajouter des services auto-hébergés comme Mattermost",
251 "subscription.features.proxy" : "Support proxy pour les services", 293 "subscription.features.proxy" : "Support proxy pour les services",
252 "subscription.features.spellchecker" : "Prise en charge du correcteur orthographique", 294 "subscription.features.spellchecker" : "Prise en charge du correcteur orthographique",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut", 296 "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut",
254 "subscription.paymentSessionError" : "Initialisation du paiement impossible", 297 "subscription.paymentSessionError" : "Initialisation du paiement impossible",
255 "subscription.submit.label" : "Je souhaite aider au développement de Franz", 298 "subscription.submit.label" : "Je souhaite aider au développement de Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Recharger", 312 "tabs.item.reload" : "Recharger",
270 "validation.email" : "{field} n'est pas valide", 313 "validation.email" : "{field} n'est pas valide",
271 "validation.minLength" : "{field} doit contenir au moins {length} caractère(s)", 314 "validation.minLength" : "{field} doit contenir au moins {length} caractère(s)",
315 "validation.oneRequired" : "Au moins un de ces champs est requis",
272 "validation.required" : "{field} est requis", 316 "validation.required" : "{field} est requis",
273 "validation.url" : "{field} n'est pas une URL valide", 317 "validation.url" : "{field} n'est pas une URL valide",
274 "welcome.loginButton" : "Se connecter sur son compte", 318 "welcome.loginButton" : "Se connecter sur son compte",
275 "welcome.signupButton" : "Créer un compte gratuit", 319 "welcome.signupButton" : "Créer un compte gratuit",
276 "welcome.slogan" : "Une messagerie qui fonctionne pour vous" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Tous les services",
322 "workspaceDrawer.headline" : "Espace de travail",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json
index 0d3d8623e..3f1e827fb 100644
--- a/src/i18n/locales/ga.json
+++ b/src/i18n/locales/ga.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "AthlĂ³dĂ¡il", 2 "app.errorHandler.action" : "AthlĂ³dĂ¡il",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Something went wrong",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 5 "feature.delayApp.action" : "Get a Franz Supporter License",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 6 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 7 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Ní féidir nascadh le seirbhísí Franz ar líne", 15 "global.api.unhealthy" : "Ní féidir nascadh le seirbhísí Franz ar líne",
8 "global.notConnectedToTheInternet" : "NĂ­l tĂº nasctha leis an IdirlĂ­on.", 16 "global.notConnectedToTheInternet" : "NĂ­l tĂº nasctha leis an IdirlĂ­on.",
17 "global.spellchecker.useDefault" : "Use System Default ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Spell checking language",
9 "import.headline" : "IompĂ³rtĂ¡il do sheirbhĂ­sĂ­ Franz 4", 21 "import.headline" : "IompĂ³rtĂ¡il do sheirbhĂ­sĂ­ Franz 4",
10 "import.notSupportedHeadline" : "NĂ­l na seirbhĂ­sĂ­ seo taca ag Franz 5 go fĂ³ill", 22 "import.notSupportedHeadline" : "NĂ­l na seirbhĂ­sĂ­ seo taca ag Franz 5 go fĂ³ill",
11 "import.skip.label" : "Ba mhaith liom seirbhĂ­sĂ­ a chur de lĂ¡imh", 23 "import.skip.label" : "Ba mhaith liom seirbhĂ­sĂ­ a chur de lĂ¡imh",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "LogĂ¡il isteach", 44 "login.submit.label" : "LogĂ¡il isteach",
33 "login.tokenExpired" : "D'Ă©ag do sheisiĂºn, logĂ¡il isteach arĂ­s le do thoil.", 45 "login.tokenExpired" : "D'Ă©ag do sheisiĂºn, logĂ¡il isteach arĂ­s le do thoil.",
34 "menu.app.about" : "Faoi Franz", 46 "menu.app.about" : "Faoi Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Cuir Franz i bhfolach", 48 "menu.app.hide" : "Cuir Franz i bhfolach",
36 "menu.app.hideOthers" : "Folaigh feidhmchlĂ¡ir eile", 49 "menu.app.hideOthers" : "Folaigh feidhmchlĂ¡ir eile",
37 "menu.app.quit" : "Scoir", 50 "menu.app.quit" : "Scoir",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "TacaĂ­ocht", 72 "menu.help.support" : "TacaĂ­ocht",
60 "menu.help.tos" : "TĂ©armaĂ­ tagartha", 73 "menu.help.tos" : "TĂ©armaĂ­ tagartha",
61 "menu.services" : "SeirbhĂ­sĂ­", 74 "menu.services" : "SeirbhĂ­sĂ­",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Cuir seirbhĂ­s nua leis", 76 "menu.services.addNewService" : "Cuir seirbhĂ­s nua leis",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "Amharc", 78 "menu.view" : "Amharc",
64 "menu.view.enterFullScreen" : "Cuir isteach mĂ³d lĂ¡nscĂ¡ileĂ¡in", 79 "menu.view.enterFullScreen" : "Cuir isteach mĂ³d lĂ¡nscĂ¡ileĂ¡in",
65 "menu.view.exitFullScreen" : "Scoir mĂ³d lĂ¡nscĂ¡ileĂ¡in", 80 "menu.view.exitFullScreen" : "Scoir mĂ³d lĂ¡nscĂ¡ileĂ¡in",
@@ -74,6 +89,11 @@
74 "menu.window" : "Fuinneog", 89 "menu.window" : "Fuinneog",
75 "menu.window.close" : "DĂºn", 90 "menu.window.close" : "DĂºn",
76 "menu.window.minimize" : "Ăoslaghdaigh", 91 "menu.window.minimize" : "Ăoslaghdaigh",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Gach seirbhĂ­s",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Seoladh rĂ­omhphoist", 97 "password.email.label" : "Seoladh rĂ­omhphoist",
78 "password.headline" : "Athshocraigh pasfhocal", 98 "password.headline" : "Athshocraigh pasfhocal",
79 "password.link.login" : "LogĂ¡il isteach i do chuntas", 99 "password.link.login" : "LogĂ¡il isteach i do chuntas",
@@ -97,6 +117,7 @@
97 "service.errorHandler.headline" : "OrĂ³, nĂ­ hea!", 117 "service.errorHandler.headline" : "OrĂ³, nĂ­ hea!",
98 "service.errorHandler.message" : "EarrĂ¡id", 118 "service.errorHandler.message" : "EarrĂ¡id",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} has failed to load.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Cuir tĂºs", 121 "services.getStarted" : "Cuir tĂºs",
101 "services.welcome" : "FĂ¡ilte go Franz", 122 "services.welcome" : "FĂ¡ilte go Franz",
102 "settings.account.account.editButton" : "Cuir cuntas in eagar", 123 "settings.account.account.editButton" : "Cuir cuntas in eagar",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "ĂoslĂ³dĂ¡il", 138 "settings.account.invoiceDownload" : "ĂoslĂ³dĂ¡il",
118 "settings.account.manageSubscription.label" : "Bainistigh do shĂ­ntiĂºs", 139 "settings.account.manageSubscription.label" : "Bainistigh do shĂ­ntiĂºs",
119 "settings.account.successInfo" : "SĂ¡bhĂ¡ladh do chuid athruithe", 140 "settings.account.successInfo" : "SĂ¡bhĂ¡ladh do chuid athruithe",
141 "settings.account.tryReloadServices" : "Atriail",
120 "settings.account.tryReloadUserInfoRequest" : "Atriail", 142 "settings.account.tryReloadUserInfoRequest" : "Atriail",
121 "settings.account.userInfoRequestFailed" : "NĂ­ fĂ©idir eolas ĂºsĂ¡ideora a lĂ³dĂ¡il", 143 "settings.account.userInfoRequestFailed" : "NĂ­ fĂ©idir eolas ĂºsĂ¡ideora a lĂ³dĂ¡il",
122 "settings.app.buttonClearAllCache" : "Glan taisce", 144 "settings.app.buttonClearAllCache" : "Glan taisce",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Cuir leagain bĂ©ite san Ă¡ireamh", 151 "settings.app.form.beta" : "Cuir leagain bĂ©ite san Ă¡ireamh",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Join the Dark Side",
131 "settings.app.form.enableGPUAcceleration" : "Cumasaigh luasghĂ©arĂº APG", 153 "settings.app.form.enableGPUAcceleration" : "Cumasaigh luasghĂ©arĂº APG",
132 "settings.app.form.enableMenuBar" : "TaispeĂ¡in Franz sa bharra roghchlĂ¡ir",
133 "settings.app.form.enableSpellchecking" : "Cumasaigh seiceĂ¡il litrithe", 154 "settings.app.form.enableSpellchecking" : "Cumasaigh seiceĂ¡il litrithe",
134 "settings.app.form.enableSystemTray" : "TaispeĂ¡in Franz i dtrĂ¡idire an chĂ³rais", 155 "settings.app.form.enableSystemTray" : "TaispeĂ¡in Franz i dtrĂ¡idire an chĂ³rais",
135 "settings.app.form.hideDockIcon" : "Cuir Ă­ocĂ³in Franz i bhfolach Ă³n leaba nasctha",
136 "settings.app.form.language" : "Teanga", 156 "settings.app.form.language" : "Teanga",
137 "settings.app.form.minimizeToSystemTray" : "Ăoslaghdaigh Franz chuig trĂ¡idire an chĂ³rais", 157 "settings.app.form.minimizeToSystemTray" : "Ăoslaghdaigh Franz chuig trĂ¡idire an chĂ³rais",
138 "settings.app.form.runInBackground" : "CoimeĂ¡d Franz sa chĂºlra nuair a dhĂºntar an fhuinneog", 158 "settings.app.form.runInBackground" : "CoimeĂ¡d Franz sa chĂºlra nuair a dhĂºntar an fhuinneog",
139 "settings.app.form.showDisabledServices" : "TaispeĂ¡in tabanna do sheirbhĂ­sĂ­ dhĂ­chumasaithe", 159 "settings.app.form.showDisabledServices" : "TaispeĂ¡in tabanna do sheirbhĂ­sĂ­ dhĂ­chumasaithe",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "TaispeĂ¡in teachtaireachtaĂ­ neamhlĂ©ite, nuair a dhĂ­chumasaĂ­tear fĂ³graĂ­", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "TaispeĂ¡in teachtaireachtaĂ­ neamhlĂ©ite, nuair a dhĂ­chumasaĂ­tear fĂ³graĂ­",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Socruithe", 161 "settings.app.headline" : "Socruithe",
143 "settings.app.headlineAdvanced" : "Casta", 162 "settings.app.headlineAdvanced" : "Casta",
144 "settings.app.headlineAppearance" : "Dealramh", 163 "settings.app.headlineAppearance" : "Dealramh",
145 "settings.app.headlineGeneral" : "GinearĂ¡lta", 164 "settings.app.headlineGeneral" : "GinearĂ¡lta",
146 "settings.app.headlineLanguage" : "Teanga", 165 "settings.app.headlineLanguage" : "Teanga",
147 "settings.app.headlineUpdates" : "Nuashonruithe", 166 "settings.app.headlineUpdates" : "Nuashonruithe",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "NĂ­ gĂ¡ atosĂº chun athruithe a chur i bhfeidhm.", 168 "settings.app.restartRequired" : "NĂ­ gĂ¡ atosĂº chun athruithe a chur i bhfeidhm.",
149 "settings.app.subheadlineCache" : "Taisce", 169 "settings.app.subheadlineCache" : "Taisce",
150 "settings.app.translationHelp" : "Cabhraigh linn Franz a aistriĂº i do theanga.", 170 "settings.app.translationHelp" : "Cabhraigh linn Franz a aistriĂº i do theanga.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Tabhair cuireadh do chairde", 177 "settings.navigation.inviteFriends" : "Tabhair cuireadh do chairde",
158 "settings.navigation.logout" : "LogĂ¡il amach", 178 "settings.navigation.logout" : "LogĂ¡il amach",
159 "settings.navigation.settings" : "Socruithe", 179 "settings.navigation.settings" : "Socruithe",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Do sheirbhĂ­sĂ­", 181 "settings.navigation.yourServices" : "Do sheirbhĂ­sĂ­",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Gach seirbhĂ­s", 183 "settings.recipes.all" : "Gach seirbhĂ­s",
162 "settings.recipes.dev" : "Forbairt", 184 "settings.recipes.dev" : "Forbairt",
163 "settings.recipes.headline" : "SeirbhĂ­sĂ­ le fĂ¡il", 185 "settings.recipes.headline" : "SeirbhĂ­sĂ­ le fĂ¡il",
@@ -201,8 +223,6 @@
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "User (optional)",
203 "settings.service.form.saveButton" : "SĂ¡bhĂ¡il seirbhĂ­s", 225 "settings.service.form.saveButton" : "SĂ¡bhĂ¡il seirbhĂ­s",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Ă“stĂ¡ilte", 226 "settings.service.form.tabHosted" : "Ă“stĂ¡ilte",
207 "settings.service.form.tabOnPremise" : "FĂ©inĂ³stĂ¡ilte â­ï¸", 227 "settings.service.form.tabOnPremise" : "FĂ©inĂ³stĂ¡ilte â­ï¸",
208 "settings.service.form.team" : "Foireann", 228 "settings.service.form.team" : "Foireann",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Aimsigh seirbhĂ­sĂ­", 232 "settings.services.discoverServices" : "Aimsigh seirbhĂ­sĂ­",
213 "settings.services.headline" : "Do sheirbhĂ­sĂ­", 233 "settings.services.headline" : "Do sheirbhĂ­sĂ­",
214 "settings.services.noServicesAdded" : "NĂ­l aon seirbhĂ­s curtha agat go fĂ³ill.", 234 "settings.services.noServicesAdded" : "NĂ­l aon seirbhĂ­s curtha agat go fĂ³ill.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "SeirbhĂ­s dĂ­chumasaithe", 236 "settings.services.tooltip.isDisabled" : "SeirbhĂ­s dĂ­chumasaithe",
216 "settings.services.tooltip.isMuted" : "Tachtar gach fuaim", 237 "settings.services.tooltip.isMuted" : "Tachtar gach fuaim",
217 "settings.services.tooltip.notificationsDisabled" : "FĂ³graĂ­ dhĂ­chumasaithe", 238 "settings.services.tooltip.notificationsDisabled" : "FĂ³graĂ­ dhĂ­chumasaithe",
218 "settings.services.updatedInfo" : "SĂ¡bhĂ¡iltear do chuid athruithe", 239 "settings.services.updatedInfo" : "SĂ¡bhĂ¡iltear do chuid athruithe",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Foireann",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Comhlacht", 246 "settings.user.form.accountType.company" : "Comhlacht",
220 "settings.user.form.accountType.individual" : "Ar leith", 247 "settings.user.form.accountType.individual" : "Ar leith",
221 "settings.user.form.accountType.label" : "CineĂ¡l chuntais", 248 "settings.user.form.accountType.label" : "CineĂ¡l chuntais",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "CĂ©adainm", 252 "settings.user.form.firstname" : "CĂ©adainm",
226 "settings.user.form.lastname" : "Sloinne", 253 "settings.user.form.lastname" : "Sloinne",
227 "settings.user.form.newPassword" : "Pasfhocal nua", 254 "settings.user.form.newPassword" : "Pasfhocal nua",
255 "settings.workspace.add.form.name" : "Ainm",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Ainm",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Atriail",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Cuir seirbhĂ­s nua leis", 270 "sidebar.addNewService" : "Cuir seirbhĂ­s nua leis",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "DĂ­chumasaigh fĂ³graĂ­ â fuaim", 272 "sidebar.muteApp" : "DĂ­chumasaigh fĂ³graĂ­ â fuaim",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Socruithe", 274 "sidebar.settings" : "Socruithe",
231 "sidebar.unmuteApp" : "Cumasaigh fĂ³graĂ­ â fuaim", 275 "sidebar.unmuteApp" : "Cumasaigh fĂ³graĂ­ â fuaim",
232 "signup.company.label" : "Comhlacht", 276 "signup.company.label" : "Comhlacht",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "ĂithritheoirĂ­ an tAÉ: is fĂ©idir cĂ¡in dĂ­olachĂ¡in Ă¡itiĂºla a chur i bhfeidhm", 288 "subscription.euTaxInfo" : "ĂithritheoirĂ­ an tAÉ: is fĂ©idir cĂ¡in dĂ­olachĂ¡in Ă¡itiĂºla a chur i bhfeidhm",
245 "subscription.features.ads" : "FĂ³graĂ­ ar bith, choĂ­che!", 289 "subscription.features.ads" : "FĂ³graĂ­ ar bith, choĂ­che!",
246 "subscription.features.comingSoon" : "ag teacht go luath", 290 "subscription.features.comingSoon" : "ag teacht go luath",
247 "subscription.features.encryptedSync" : "SionchronĂº seisiĂºin chriptithe",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 291 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
249 "subscription.features.onpremise" : "Cuir seirbhĂ­sĂ­ Ă³stĂ¡ilte ar nĂ³s HipChat leis",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services", 293 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Support for spellchecker",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "Cuireann Cuntas PhÅ•eimhthacadĂ³ra Franz san Ă¡ireamh", 296 "subscription.includedFeatures" : "Cuireann Cuntas PhÅ•eimhthacadĂ³ra Franz san Ă¡ireamh",
254 "subscription.paymentSessionError" : "NĂ­ fĂ©idir an bhfoirm Ă­ocaĂ­ochta a lĂ³dĂ¡il", 297 "subscription.paymentSessionError" : "NĂ­ fĂ©idir an bhfoirm Ă­ocaĂ­ochta a lĂ³dĂ¡il",
255 "subscription.submit.label" : "Ba mhaith liom tacaĂ­ocht a thabhairt d'fhorbairt Franz", 298 "subscription.submit.label" : "Ba mhaith liom tacaĂ­ocht a thabhairt d'fhorbairt Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "AthlĂ³dĂ¡il", 312 "tabs.item.reload" : "AthlĂ³dĂ¡il",
270 "validation.email" : "NĂ­l {field} neamhbhailĂ­", 313 "validation.email" : "NĂ­l {field} neamhbhailĂ­",
271 "validation.minLength" : "Ba cheart go mbeadh {field} ar a laghad {length} charactar fada", 314 "validation.minLength" : "Ba cheart go mbeadh {field} ar a laghad {length} charactar fada",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "TĂ¡ {field} de dhĂ­th", 316 "validation.required" : "TĂ¡ {field} de dhĂ­th",
273 "validation.url" : "NĂ­ AAA bhailĂ­ Ă© {field}", 317 "validation.url" : "NĂ­ AAA bhailĂ­ Ă© {field}",
274 "welcome.loginButton" : "LogĂ¡il isteach i do chuntas", 318 "welcome.loginButton" : "LogĂ¡il isteach i do chuntas",
275 "welcome.signupButton" : "Cruthaigh cuntas nua", 319 "welcome.signupButton" : "Cruthaigh cuntas nua",
276 "welcome.slogan" : "TeachtaireachtaĂ­ a oibrĂ­onn duitse" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Gach seirbhĂ­s",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json
index 2ff69755d..468238166 100644
--- a/src/i18n/locales/hr.json
+++ b/src/i18n/locales/hr.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Ponovno uÄitavanje", 2 "app.errorHandler.action" : "Ponovno uÄitavanje",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Something went wrong",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 5 "feature.delayApp.action" : "Get a Franz Supporter License",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 6 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 7 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Nije se moguće povezati na Francove on-line servise. ", 15 "global.api.unhealthy" : "Nije se moguće povezati na Francove on-line servise. ",
8 "global.notConnectedToTheInternet" : "Sada ste povezani s internetom. ", 16 "global.notConnectedToTheInternet" : "Sada ste povezani s internetom. ",
17 "global.spellchecker.useDefault" : "Use System Default ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Spell checking language",
9 "import.headline" : "Uvezite svoje Franc 4 servise. ", 21 "import.headline" : "Uvezite svoje Franc 4 servise. ",
10 "import.notSupportedHeadline" : "Franc 5 trenutno ne podržava taj servis", 22 "import.notSupportedHeadline" : "Franc 5 trenutno ne podržava taj servis",
11 "import.skip.label" : "Želim ruÄno dodati ove usluge", 23 "import.skip.label" : "Želim ruÄno dodati ove usluge",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Prijavite se", 44 "login.submit.label" : "Prijavite se",
33 "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", 45 "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.",
34 "menu.app.about" : "O aplikaciji", 46 "menu.app.about" : "O aplikaciji",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Hide", 48 "menu.app.hide" : "Hide",
36 "menu.app.hideOthers" : "Hide Others", 49 "menu.app.hideOthers" : "Hide Others",
37 "menu.app.quit" : "Quit", 50 "menu.app.quit" : "Quit",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Support", 72 "menu.help.support" : "Support",
60 "menu.help.tos" : "Terms of Service", 73 "menu.help.tos" : "Terms of Service",
61 "menu.services" : "Services", 74 "menu.services" : "Services",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Add New Service...", 76 "menu.services.addNewService" : "Add New Service...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "View", 78 "menu.view" : "View",
64 "menu.view.enterFullScreen" : "Enter Full Screen", 79 "menu.view.enterFullScreen" : "Enter Full Screen",
65 "menu.view.exitFullScreen" : "Exit Full Screen", 80 "menu.view.exitFullScreen" : "Exit Full Screen",
@@ -74,6 +89,11 @@
74 "menu.window" : "Window", 89 "menu.window" : "Window",
75 "menu.window.close" : "Close", 90 "menu.window.close" : "Close",
76 "menu.window.minimize" : "Minimize", 91 "menu.window.minimize" : "Minimize",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Sve usluge",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Vaša e-adresa", 97 "password.email.label" : "Vaša e-adresa",
78 "password.headline" : "Stvorite novu zaporku", 98 "password.headline" : "Stvorite novu zaporku",
79 "password.link.login" : "Prijavite se na VaÅ¡ raÄun", 99 "password.link.login" : "Prijavite se na VaÅ¡ raÄun",
@@ -97,6 +117,7 @@
97 "service.errorHandler.headline" : "O, ne! ", 117 "service.errorHandler.headline" : "O, ne! ",
98 "service.errorHandler.message" : "Greška", 118 "service.errorHandler.message" : "Greška",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} has failed to load.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "ZapoÄnimo!", 121 "services.getStarted" : "ZapoÄnimo!",
101 "services.welcome" : "Dobrodošli u Franz", 122 "services.welcome" : "Dobrodošli u Franz",
102 "settings.account.account.editButton" : "Uredi raÄun", 123 "settings.account.account.editButton" : "Uredi raÄun",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Preuzmite", 138 "settings.account.invoiceDownload" : "Preuzmite",
118 "settings.account.manageSubscription.label" : "Upravljajte pretplatama", 139 "settings.account.manageSubscription.label" : "Upravljajte pretplatama",
119 "settings.account.successInfo" : "Vaše promjene su spremljene", 140 "settings.account.successInfo" : "Vaše promjene su spremljene",
141 "settings.account.tryReloadServices" : "Pokušajte ponovno",
120 "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno", 142 "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno",
121 "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku", 143 "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku",
122 "settings.app.buttonClearAllCache" : "OÄisti memoriju", 144 "settings.app.buttonClearAllCache" : "OÄisti memoriju",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Obuhvati i beta verzije", 151 "settings.app.form.beta" : "Obuhvati i beta verzije",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Join the Dark Side",
131 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", 153 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration",
132 "settings.app.form.enableMenuBar" : "Prikaži Franz u traci izbornika",
133 "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", 154 "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa",
134 "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", 155 "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci",
135 "settings.app.form.hideDockIcon" : "Sakrij ikonu Franz u prostoru za obavijesti",
136 "settings.app.form.language" : "Jezik", 156 "settings.app.form.language" : "Jezik",
137 "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku", 157 "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku",
138 "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren", 158 "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren",
139 "settings.app.form.showDisabledServices" : "Prikaži ploÄe s onemogućenim servisima", 159 "settings.app.form.showDisabledServices" : "Prikaži ploÄe s onemogućenim servisima",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaži neproÄitane znaÄke poruka kad se obavjeÅ¡tenja onemoguće", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaži neproÄitane znaÄke poruka kad se obavjeÅ¡tenja onemoguće",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Postavke", 161 "settings.app.headline" : "Postavke",
143 "settings.app.headlineAdvanced" : "Napredne alatke", 162 "settings.app.headlineAdvanced" : "Napredne alatke",
144 "settings.app.headlineAppearance" : "Izgled", 163 "settings.app.headlineAppearance" : "Izgled",
145 "settings.app.headlineGeneral" : "Općenito", 164 "settings.app.headlineGeneral" : "Općenito",
146 "settings.app.headlineLanguage" : "Jezik", 165 "settings.app.headlineLanguage" : "Jezik",
147 "settings.app.headlineUpdates" : "Nadogradnje", 166 "settings.app.headlineUpdates" : "Nadogradnje",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni zagon", 168 "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni zagon",
149 "settings.app.subheadlineCache" : "Predmemorija", 169 "settings.app.subheadlineCache" : "Predmemorija",
150 "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ", 170 "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Pozovi prijatelje", 177 "settings.navigation.inviteFriends" : "Pozovi prijatelje",
158 "settings.navigation.logout" : "Odjava", 178 "settings.navigation.logout" : "Odjava",
159 "settings.navigation.settings" : "Postavke", 179 "settings.navigation.settings" : "Postavke",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Vaše usluge", 181 "settings.navigation.yourServices" : "Vaše usluge",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Sve usluge", 183 "settings.recipes.all" : "Sve usluge",
162 "settings.recipes.dev" : "Razvoj", 184 "settings.recipes.dev" : "Razvoj",
163 "settings.recipes.headline" : "Dostupne usluge", 185 "settings.recipes.headline" : "Dostupne usluge",
@@ -201,8 +223,6 @@
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "User (optional)",
203 "settings.service.form.saveButton" : "SaÄuvaj uslugu\/e", 225 "settings.service.form.saveButton" : "SaÄuvaj uslugu\/e",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Hostovano", 226 "settings.service.form.tabHosted" : "Hostovano",
207 "settings.service.form.tabOnPremise" : "Samo-hostovano â­ï¸", 227 "settings.service.form.tabOnPremise" : "Samo-hostovano â­ï¸",
208 "settings.service.form.team" : "Tim", 228 "settings.service.form.team" : "Tim",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Pronađite usluge", 232 "settings.services.discoverServices" : "Pronađite usluge",
213 "settings.services.headline" : "Vaše usluge", 233 "settings.services.headline" : "Vaše usluge",
214 "settings.services.noServicesAdded" : "Još uvijek niste unijeli niti jednu uslugu.", 234 "settings.services.noServicesAdded" : "Još uvijek niste unijeli niti jednu uslugu.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Usluga je onemogućena. ", 236 "settings.services.tooltip.isDisabled" : "Usluga je onemogućena. ",
216 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni. ", 237 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni. ",
217 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.", 238 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.",
218 "settings.services.updatedInfo" : "Vaše promjene su pohranjene. ", 239 "settings.services.updatedInfo" : "Vaše promjene su pohranjene. ",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Tim",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Tvrtka", 246 "settings.user.form.accountType.company" : "Tvrtka",
220 "settings.user.form.accountType.individual" : "Pojedinac", 247 "settings.user.form.accountType.individual" : "Pojedinac",
221 "settings.user.form.accountType.label" : "Tip raÄuna", 248 "settings.user.form.accountType.label" : "Tip raÄuna",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Ime", 252 "settings.user.form.firstname" : "Ime",
226 "settings.user.form.lastname" : "Prezime", 253 "settings.user.form.lastname" : "Prezime",
227 "settings.user.form.newPassword" : "Nova lozinka", 254 "settings.user.form.newPassword" : "Nova lozinka",
255 "settings.workspace.add.form.name" : "Ime",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Ime",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Pokušajte ponovno",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Dodajte novu uslugu", 270 "sidebar.addNewService" : "Dodajte novu uslugu",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Ugasi obavijesti i zvuk", 272 "sidebar.muteApp" : "Ugasi obavijesti i zvuk",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Postavke", 274 "sidebar.settings" : "Postavke",
231 "sidebar.unmuteApp" : "Omogući obavijesti i zvuk", 275 "sidebar.unmuteApp" : "Omogući obavijesti i zvuk",
232 "signup.company.label" : "Tvrtka", 276 "signup.company.label" : "Tvrtka",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje ", 288 "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje ",
245 "subscription.features.ads" : "Bez reklama, doživotno!", 289 "subscription.features.ads" : "Bez reklama, doživotno!",
246 "subscription.features.comingSoon" : "Dolazi uskoro", 290 "subscription.features.comingSoon" : "Dolazi uskoro",
247 "subscription.features.encryptedSync" : "Kodirano usklađivanje sesija.",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 291 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
249 "subscription.features.onpremise" : "Dodajte pretpostavljeni\/hostirani servis kao Å¡to ima usluga HipChat ",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services", 293 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Support for spellchecker",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće: ", 296 "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće: ",
254 "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu", 297 "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu",
255 "subscription.submit.label" : "Želim da podržim razvoj Franca. ", 298 "subscription.submit.label" : "Želim da podržim razvoj Franca. ",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Ponovno uÄitavanje", 312 "tabs.item.reload" : "Ponovno uÄitavanje",
270 "validation.email" : "{field} is not valid", 313 "validation.email" : "{field} is not valid",
271 "validation.minLength" : "{field} should be at least {length} characters long", 314 "validation.minLength" : "{field} should be at least {length} characters long",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} is required", 316 "validation.required" : "{field} is required",
273 "validation.url" : "{field} is not a valid URL", 317 "validation.url" : "{field} is not a valid URL",
274 "welcome.loginButton" : "Prijavite se na raÄun", 318 "welcome.loginButton" : "Prijavite se na raÄun",
275 "welcome.signupButton" : "Stvorite novi korisniÄki raÄun", 319 "welcome.signupButton" : "Stvorite novi korisniÄki raÄun",
276 "welcome.slogan" : "Poruke koje su stvorene za tebe" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Sve usluge",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json
index 0b396cf3b..b28dcb17a 100644
--- a/src/i18n/locales/hu.json
+++ b/src/i18n/locales/hu.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "ĂjratöltĂ©s", 2 "app.errorHandler.action" : "ĂjratöltĂ©s",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Valami nem jött össze",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.action" : "Szerezz egy Franz TĂ¡mogatĂ³i Liszencet",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.headline" : "KĂ©rjĂ¼k vĂ¡sĂ¡rolj egy Franc TĂ¡mogatĂ³i Liszencet a vĂ¡rakozĂ¡s Ă¡tugrĂ¡sĂ¡hoz",
7 "feature.delayApp.text" : "A Franz tovĂ¡bblĂ©p {seconds} mĂ¡sodperc mĂºlva.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgĂ¡ltatĂ¡shoz", 15 "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgĂ¡ltatĂ¡shoz",
8 "global.notConnectedToTheInternet" : "Nincs hĂ¡lĂ³zati kapcsolat.", 16 "global.notConnectedToTheInternet" : "Nincs hĂ¡lĂ³zati kapcsolat.",
17 "global.spellchecker.useDefault" : "Rendszer alapbeĂ¡llĂ­tĂ¡s hasznĂ¡lata ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "HelyesĂ­rĂ¡s-ellenÅ‘rzÅ‘ nyelve",
9 "import.headline" : "ImportĂ¡ld szolgĂ¡ltatĂ¡saidat a Franz 4-bÅ‘l", 21 "import.headline" : "ImportĂ¡ld szolgĂ¡ltatĂ¡saidat a Franz 4-bÅ‘l",
10 "import.notSupportedHeadline" : "MĂ©g nem tĂ¡mogatott szolgĂ¡ltatĂ¡sok a Franz 5-ben", 22 "import.notSupportedHeadline" : "MĂ©g nem tĂ¡mogatott szolgĂ¡ltatĂ¡sok a Franz 5-ben",
11 "import.skip.label" : "ManuĂ¡lisan szeretnĂ©m hozzĂ¡adni a szolgĂ¡ltatĂ¡sokat", 23 "import.skip.label" : "ManuĂ¡lisan szeretnĂ©m hozzĂ¡adni a szolgĂ¡ltatĂ¡sokat",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Bejelentkezés", 44 "login.submit.label" : "Bejelentkezés",
33 "login.tokenExpired" : "A munkamenet lejĂ¡rt, kĂ©rlek lĂ©pj be Ăºjra.", 45 "login.tokenExpired" : "A munkamenet lejĂ¡rt, kĂ©rlek lĂ©pj be Ăºjra.",
34 "menu.app.about" : "NĂ©vjegy", 46 "menu.app.about" : "NĂ©vjegy",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Elrejt", 48 "menu.app.hide" : "Elrejt",
36 "menu.app.hideOthers" : "Többi elrejtése", 49 "menu.app.hideOthers" : "Többi elrejtése",
37 "menu.app.quit" : "Kilépés", 50 "menu.app.quit" : "Kilépés",
@@ -51,7 +64,7 @@
51 "menu.edit.startSpeaking" : "Beszélgetés kezdeményezése", 64 "menu.edit.startSpeaking" : "Beszélgetés kezdeményezése",
52 "menu.edit.stopSpeaking" : "Beszéd vége", 65 "menu.edit.stopSpeaking" : "Beszéd vége",
53 "menu.edit.undo" : "VisszavonĂ¡s", 66 "menu.edit.undo" : "VisszavonĂ¡s",
54 "menu.file" : "fĂ¡jl", 67 "menu.file" : "FĂ¡jl",
55 "menu.help" : "SĂºgĂ³", 68 "menu.help" : "SĂºgĂ³",
56 "menu.help.changelog" : "VĂ¡ltozĂ¡sok listĂ¡ja", 69 "menu.help.changelog" : "VĂ¡ltozĂ¡sok listĂ¡ja",
57 "menu.help.learnMore" : "Tudjon meg többet", 70 "menu.help.learnMore" : "Tudjon meg többet",
@@ -59,21 +72,28 @@
59 "menu.help.support" : "TĂ¡mogatĂ¡s", 72 "menu.help.support" : "TĂ¡mogatĂ¡s",
60 "menu.help.tos" : "FelhasznĂ¡lĂ³i feltĂ©telek", 73 "menu.help.tos" : "FelhasznĂ¡lĂ³i feltĂ©telek",
61 "menu.services" : "SzolgĂ¡ltatĂ¡sok", 74 "menu.services" : "SzolgĂ¡ltatĂ¡sok",
62 "menu.services.addNewService" : "Ăj kiszolgĂ¡lĂ³ hozzĂ¡adĂ¡sa", 75 "menu.services.activatePreviousService" : "Activate previous service",
76 "menu.services.addNewService" : "Ăj szolgĂ¡ltatĂ¡s hozzĂ¡adĂ¡sa...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "NĂ©zet", 78 "menu.view" : "NĂ©zet",
64 "menu.view.enterFullScreen" : "KilĂ©pĂ©s a teljes kĂ©pernyÅ‘s mĂ³dbĂ³l", 79 "menu.view.enterFullScreen" : "KilĂ©pĂ©s a teljes kĂ©pernyÅ‘s mĂ³dbĂ³l",
65 "menu.view.exitFullScreen" : "KilĂ©pĂ©s a teljes kĂ©pernyÅ‘s mĂ³dbĂ³l", 80 "menu.view.exitFullScreen" : "KilĂ©pĂ©s a teljes kĂ©pernyÅ‘s mĂ³dbĂ³l",
66 "menu.view.reloadFranz" : "Franz ĂºjrainditĂ¡sa", 81 "menu.view.reloadFranz" : "Franz ĂºjrainditĂ¡sa",
67 "menu.view.reloadService" : "KiszolgĂ¡lĂ³ ĂºjraindĂ­tĂ¡sa", 82 "menu.view.reloadService" : "SzolgĂ¡ltatĂ¡s ĂºjraindĂ­tĂ¡sa",
68 "menu.view.resetZoom" : "Tényleges méret", 83 "menu.view.resetZoom" : "Tényleges méret",
69 "menu.view.toggleDevTools" : "fejlesztÅ‘i eszközök bekapcsolĂ¡sa", 84 "menu.view.toggleDevTools" : "FejlesztÅ‘i eszközök ki\/bekapcsolĂ¡sa",
70 "menu.view.toggleFullScreen" : "VĂ¡ltĂ¡s Teljes kĂ©pernyÅ‘s mĂ³dra", 85 "menu.view.toggleFullScreen" : "Teljes kĂ©pernyÅ‘s mĂ³d ki\/bekapcsolĂ¡sa",
71 "menu.view.toggleServiceDevTools" : "KiszolgĂ¡lĂ³ FejlesztÅ‘i Eszközök BekapcsolĂ¡sa", 86 "menu.view.toggleServiceDevTools" : "SzolgĂ¡ltatĂ¡s FejlesztÅ‘i Eszközök ki\/bekapcsolĂ¡sa",
72 "menu.view.zoomIn" : "NagyĂ­tĂ¡s", 87 "menu.view.zoomIn" : "NagyĂ­tĂ¡s",
73 "menu.view.zoomOut" : "Kicsinyítés", 88 "menu.view.zoomOut" : "Kicsinyítés",
74 "menu.window" : "Ablak", 89 "menu.window" : "Ablak",
75 "menu.window.close" : "BezĂ¡rĂ¡s", 90 "menu.window.close" : "BezĂ¡rĂ¡s",
76 "menu.window.minimize" : "TĂ¡lcĂ¡ra", 91 "menu.window.minimize" : "TĂ¡lcĂ¡ra",
92 "menu.workspaces" : "MunkaterĂ¼letek",
93 "menu.workspaces.addNewWorkspace" : "Ăj munkaterĂ¼let...",
94 "menu.workspaces.closeWorkspaceDrawer" : "MunkaterĂ¼let panel bezĂ¡rĂ¡sa",
95 "menu.workspaces.defaultWorkspace" : "Ă–sszes szolgĂ¡ltatĂ¡s",
96 "menu.workspaces.openWorkspaceDrawer" : "MunkaterĂ¼let panel kinyitĂ¡sa",
77 "password.email.label" : "Email cĂ­m", 97 "password.email.label" : "Email cĂ­m",
78 "password.headline" : "JelszĂ³ visszaĂ¡llĂ­tĂ¡sa", 98 "password.headline" : "JelszĂ³ visszaĂ¡llĂ­tĂ¡sa",
79 "password.link.login" : "Jelentkezz be a fiĂ³kodba", 99 "password.link.login" : "Jelentkezz be a fiĂ³kodba",
@@ -81,13 +101,13 @@
81 "password.noUser" : "Nem talĂ¡lhatĂ³ felhasznĂ¡lĂ³ a megadott email cĂ­mmel", 101 "password.noUser" : "Nem talĂ¡lhatĂ³ felhasznĂ¡lĂ³ a megadott email cĂ­mmel",
82 "password.submit.label" : "KĂ¼ldĂ©s", 102 "password.submit.label" : "KĂ¼ldĂ©s",
83 "password.successInfo" : "EllenÅ‘rizd az email fiĂ³kodat", 103 "password.successInfo" : "EllenÅ‘rizd az email fiĂ³kodat",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "FiĂ³k frissĂ­tĂ©se",
85 "pricing.headline" : "TĂ¡mogasd a Franz-ot", 105 "pricing.headline" : "TĂ¡mogasd a Franz-ot",
86 "pricing.link.skipPayment" : "Nem szeretnĂ©m tĂ¡mogatni a Franz fejlesztĂ©sĂ©t.", 106 "pricing.link.skipPayment" : "Nem szeretnĂ©m tĂ¡mogatni a Franz fejlesztĂ©sĂ©t.",
87 "pricing.submit.label" : "TĂ¡mogatni szeretnĂ©m a Franz fejlesztĂ©sĂ©t.", 107 "pricing.submit.label" : "TĂ¡mogatni szeretnĂ©m a Franz fejlesztĂ©sĂ©t",
88 "pricing.support.label" : "VĂ¡laszd ki a tĂ¡mogatĂ¡s mĂ³djĂ¡t", 108 "pricing.support.label" : "VĂ¡laszd ki a tĂ¡mogatĂ¡s mĂ³djĂ¡t",
89 "service.crashHandler.action" : "{name} ĂºjratöltĂ©se", 109 "service.crashHandler.action" : "{name} ĂºjratöltĂ©se",
90 "service.crashHandler.autoReload" : "MegprĂ³bĂ¡ljuk automatikusan helyreĂ¡llĂ­tani {name}-t {seconds} mp-en belĂ¼l", 110 "service.crashHandler.autoReload" : "{name} automatikusan helyreĂ¡llĂ­tĂ¡sa {seconds} mĂ¡sodpercen belĂ¼l",
91 "service.crashHandler.headline" : "Jajj ne!", 111 "service.crashHandler.headline" : "Jajj ne!",
92 "service.crashHandler.text" : "{name} hibĂ¡t okozott.", 112 "service.crashHandler.text" : "{name} hibĂ¡t okozott.",
93 "service.disabledHandler.action" : "{name} engedélyezése", 113 "service.disabledHandler.action" : "{name} engedélyezése",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "{name} szerkesztése", 116 "service.errorHandler.editAction" : "{name} szerkesztése",
97 "service.errorHandler.headline" : "Jajj ne!", 117 "service.errorHandler.headline" : "Jajj ne!",
98 "service.errorHandler.message" : "Hiba", 118 "service.errorHandler.message" : "Hiba",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} nem tudott betöltÅ‘dni.",
120 "service.webviewLoader.loading" : "Betöltés",
100 "services.getStarted" : "Kezdj hozzĂ¡", 121 "services.getStarted" : "Kezdj hozzĂ¡",
101 "services.welcome" : "Ăœdvözöl a Franz", 122 "services.welcome" : "Ăœdvözöl a Franz",
102 "settings.account.account.editButton" : "FiĂ³k szerkesztĂ©se", 123 "settings.account.account.editButton" : "FiĂ³k szerkesztĂ©se",
@@ -108,7 +129,7 @@
108 "settings.account.deleteInfo" : "Ha mĂ©g nem szeretnĂ©d fenntartani a Franz-fiĂ³kodat, akkor itt törölheted minden hozzĂ¡ kapcsolĂ³dĂ³ adattal egyĂ¼tt.", 129 "settings.account.deleteInfo" : "Ha mĂ©g nem szeretnĂ©d fenntartani a Franz-fiĂ³kodat, akkor itt törölheted minden hozzĂ¡ kapcsolĂ³dĂ³ adattal egyĂ¼tt.",
109 "settings.account.headline" : "FiĂ³k", 130 "settings.account.headline" : "FiĂ³k",
110 "settings.account.headlineAccount" : "FiĂ³kinformĂ¡ciĂ³k", 131 "settings.account.headlineAccount" : "FiĂ³kinformĂ¡ciĂ³k",
111 "settings.account.headlineDangerZone" : "VeszĂ©lyes terĂ¼let, Ă³vatosan!", 132 "settings.account.headlineDangerZone" : "VeszĂ©lyes terĂ¼let",
112 "settings.account.headlineInvoices" : "SzĂ¡mlĂ¡k", 133 "settings.account.headlineInvoices" : "SzĂ¡mlĂ¡k",
113 "settings.account.headlinePassword" : "JelszĂ³csere", 134 "settings.account.headlinePassword" : "JelszĂ³csere",
114 "settings.account.headlineProfile" : "Profil frissítése", 135 "settings.account.headlineProfile" : "Profil frissítése",
@@ -117,54 +138,55 @@
117 "settings.account.invoiceDownload" : "Letöltés", 138 "settings.account.invoiceDownload" : "Letöltés",
118 "settings.account.manageSubscription.label" : "ElÅ‘fizetĂ©s kezelĂ©se", 139 "settings.account.manageSubscription.label" : "ElÅ‘fizetĂ©s kezelĂ©se",
119 "settings.account.successInfo" : "A mĂ³dosĂ­tĂ¡sokat elmentettĂ¼k", 140 "settings.account.successInfo" : "A mĂ³dosĂ­tĂ¡sokat elmentettĂ¼k",
141 "settings.account.tryReloadServices" : "PrĂ³bĂ¡ld Ăºjra",
120 "settings.account.tryReloadUserInfoRequest" : "PrĂ³bĂ¡ld Ăºjra", 142 "settings.account.tryReloadUserInfoRequest" : "PrĂ³bĂ¡ld Ăºjra",
121 "settings.account.userInfoRequestFailed" : "A felhasznĂ¡lĂ³i adatok betöltĂ©se sikertelen", 143 "settings.account.userInfoRequestFailed" : "A felhasznĂ¡lĂ³i adatok betöltĂ©se sikertelen",
122 "settings.app.buttonClearAllCache" : "GyorsĂ­tĂ³tĂ¡r törlĂ©se", 144 "settings.app.buttonClearAllCache" : "GyorsĂ­tĂ³tĂ¡r törlĂ©se",
123 "settings.app.buttonInstallUpdate" : "ĂjraindĂ­tĂ¡s Ă©s frissĂ­tĂ©sek telepĂ­tĂ©se", 145 "settings.app.buttonInstallUpdate" : "ĂjraindĂ­tĂ¡s Ă©s frissĂ­tĂ©sek telepĂ­tĂ©se",
124 "settings.app.buttonSearchForUpdate" : "Frissítések keresése", 146 "settings.app.buttonSearchForUpdate" : "Frissítések keresése",
125 "settings.app.cacheInfo" : "A Franz gyorsĂ­tĂ³tĂ¡r jelenleg {space} lemezterĂ¼letet hasznĂ¡l.", 147 "settings.app.cacheInfo" : "A Franz gyorsĂ­tĂ³tĂ¡r jelenleg {size} lemezterĂ¼letet hasznĂ¡l.",
126 "settings.app.currentVersion" : "AktuĂ¡lis verziĂ³:", 148 "settings.app.currentVersion" : "AktuĂ¡lis verziĂ³:",
127 "settings.app.form.autoLaunchInBackground" : "MegnyitĂ¡s hĂ¡ttĂ©rben", 149 "settings.app.form.autoLaunchInBackground" : "MegnyitĂ¡s hĂ¡ttĂ©rben",
128 "settings.app.form.autoLaunchOnStart" : "Franz betöltĂ©se indĂ­tĂ¡skor", 150 "settings.app.form.autoLaunchOnStart" : "Franz betöltĂ©se indĂ­tĂ¡skor",
129 "settings.app.form.beta" : "BĂ©ta verziĂ³k keresĂ©se", 151 "settings.app.form.beta" : "BĂ©ta verziĂ³k keresĂ©se",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Csatlakozz a Sötét Oldalhoz",
131 "settings.app.form.enableGPUAcceleration" : "hardveres gyorsĂ­tĂ¡s engedĂ©lyezĂ©se", 153 "settings.app.form.enableGPUAcceleration" : "Hardveres gyorsĂ­tĂ¡s engedĂ©lyezĂ©se",
132 "settings.app.form.enableMenuBar" : "Franz megjelenĂ­tĂ©se a menĂ¼sorban",
133 "settings.app.form.enableSpellchecking" : "HelyesĂ­rĂ¡s-ellenÅ‘rzĂ©s engedĂ©lyezĂ©se", 154 "settings.app.form.enableSpellchecking" : "HelyesĂ­rĂ¡s-ellenÅ‘rzĂ©s engedĂ©lyezĂ©se",
134 "settings.app.form.enableSystemTray" : "Franz mutatĂ¡sa a tĂ¡lcĂ¡n", 155 "settings.app.form.enableSystemTray" : "Franz mutatĂ¡sa a tĂ¡lcĂ¡n",
135 "settings.app.form.hideDockIcon" : "Franz ikon elrejtése a Dock mögött",
136 "settings.app.form.language" : "Nyelv", 156 "settings.app.form.language" : "Nyelv",
137 "settings.app.form.minimizeToSystemTray" : "Franz kicsinyĂ­tĂ©se a tĂ¡lcĂ¡ra", 157 "settings.app.form.minimizeToSystemTray" : "Franz kicsinyĂ­tĂ©se a tĂ¡lcĂ¡ra",
138 "settings.app.form.runInBackground" : "Franz fusson a hĂ¡ttĂ©rben az ablak bezĂ¡rĂ¡sakor", 158 "settings.app.form.runInBackground" : "Franz fusson a hĂ¡ttĂ©rben az ablak bezĂ¡rĂ¡sakor",
139 "settings.app.form.showDisabledServices" : "Letiltott szolgĂ¡ltatĂ¡sok megjelenĂ­tĂ©se", 159 "settings.app.form.showDisabledServices" : "Letiltott szolgĂ¡ltatĂ¡sok megjelenĂ­tĂ©se",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Mutass az 'olvasatlan Ă¼zenet' jelzĂ©st amikor az Ă©rtesĂ­tĂ©sek le vannak tiltva.", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Mutassa az 'olvasatlan Ă¼zenet' jelzĂ©st, amikor az Ă©rtesĂ­tĂ©sek le vannak tiltva",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "BeĂ¡llĂ­tĂ¡sok", 161 "settings.app.headline" : "BeĂ¡llĂ­tĂ¡sok",
143 "settings.app.headlineAdvanced" : "HaladĂ³", 162 "settings.app.headlineAdvanced" : "HaladĂ³",
144 "settings.app.headlineAppearance" : "Megjelenés", 163 "settings.app.headlineAppearance" : "Megjelenés",
145 "settings.app.headlineGeneral" : "ĂltalĂ¡nos", 164 "settings.app.headlineGeneral" : "ĂltalĂ¡nos",
146 "settings.app.headlineLanguage" : "Nyelv", 165 "settings.app.headlineLanguage" : "Nyelv",
147 "settings.app.headlineUpdates" : "Frissítések", 166 "settings.app.headlineUpdates" : "Frissítések",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "ĂjraindĂ­tĂ¡st igĂ©nylÅ‘ mĂ³dosĂ­tĂ¡s", 168 "settings.app.restartRequired" : "ĂjraindĂ­tĂ¡st igĂ©nylÅ‘ mĂ³dosĂ­tĂ¡s",
149 "settings.app.subheadlineCache" : "GyorsĂ­tĂ³tĂ¡r", 169 "settings.app.subheadlineCache" : "GyorsĂ­tĂ³tĂ¡r",
150 "settings.app.translationHelp" : "SegĂ­ts nekĂ¼nk a Franz-ot lefordĂ­tani a nyelvedre.", 170 "settings.app.translationHelp" : "SegĂ­ts nekĂ¼nk a Franz-ot lefordĂ­tani a nyelvedre.",
151 "settings.app.updateStatusAvailable" : "FrissĂ­tĂ©s elĂ©rhetÅ‘, letöltĂ©s folyamatban...", 171 "settings.app.updateStatusAvailable" : "FrissĂ­tĂ©s elĂ©rhetÅ‘, letöltĂ©s folyamatban...",
152 "settings.app.updateStatusSearching" : "Frissítéseket keres", 172 "settings.app.updateStatusSearching" : "Frissítéseket keres",
153 "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verziĂ³jĂ¡t hasznĂ¡lod", 173 "settings.app.updateStatusUpToDate" : "A Franz legfrissebb verziĂ³jĂ¡t hasznĂ¡lod",
154 "settings.invite.headline" : "BarĂ¡t meghĂ­vĂ¡sa", 174 "settings.invite.headline" : "BarĂ¡tok meghĂ­vĂ¡sa",
155 "settings.navigation.account" : "FiĂ³k", 175 "settings.navigation.account" : "FiĂ³k",
156 "settings.navigation.availableServices" : "ElĂ©rhetÅ‘ szolgĂ¡ltatĂ¡sok", 176 "settings.navigation.availableServices" : "ElĂ©rhetÅ‘ szolgĂ¡ltatĂ¡sok",
157 "settings.navigation.inviteFriends" : "BarĂ¡t meghĂ­vĂ¡sa", 177 "settings.navigation.inviteFriends" : "BarĂ¡t meghĂ­vĂ¡sa",
158 "settings.navigation.logout" : "Kijelentkezés", 178 "settings.navigation.logout" : "Kijelentkezés",
159 "settings.navigation.settings" : "BeĂ¡llĂ­tĂ¡sok", 179 "settings.navigation.settings" : "BeĂ¡llĂ­tĂ¡sok",
180 "settings.navigation.team" : "Csapat kezelése",
160 "settings.navigation.yourServices" : "SzolgĂ¡ltatĂ¡said", 181 "settings.navigation.yourServices" : "SzolgĂ¡ltatĂ¡said",
182 "settings.navigation.yourWorkspaces" : "MunkaterĂ¼leteid",
161 "settings.recipes.all" : "Ă–sszes szolgĂ¡ltatĂ¡s", 183 "settings.recipes.all" : "Ă–sszes szolgĂ¡ltatĂ¡s",
162 "settings.recipes.dev" : "Fejlesztés", 184 "settings.recipes.dev" : "Fejlesztés",
163 "settings.recipes.headline" : "ElĂ©rhetÅ‘ szolgĂ¡ltatĂ¡sok", 185 "settings.recipes.headline" : "ElĂ©rhetÅ‘ szolgĂ¡ltatĂ¡sok",
164 "settings.recipes.missingService" : "HiĂ¡nyzik egy szolgĂ¡ltatĂ¡s?", 186 "settings.recipes.missingService" : "HiĂ¡nyzik egy szolgĂ¡ltatĂ¡s?",
165 "settings.recipes.mostPopular" : "LegnĂ©pszerűbb", 187 "settings.recipes.mostPopular" : "LegnĂ©pszerűbb",
166 "settings.recipes.nothingFound" : "SajnĂ¡ljuk, nincs egyezĂ©s a szolgĂ¡ltatĂ¡sok között a keresett kifejezĂ©sre.", 188 "settings.recipes.nothingFound" : "SajnĂ¡ljuk, nincs egyezĂ©s a szolgĂ¡ltatĂ¡sok között a keresett kifejezĂ©sre.",
167 "settings.recipes.servicesSuccessfulAddedInfo" : "SzolgĂ¡ltatĂ¡s sikeresen hozzĂ¡adva.", 189 "settings.recipes.servicesSuccessfulAddedInfo" : "SzolgĂ¡ltatĂ¡s sikeresen hozzĂ¡adva",
168 "settings.searchService" : "SzolgĂ¡ltatĂ¡sok keresĂ©se", 190 "settings.searchService" : "SzolgĂ¡ltatĂ¡sok keresĂ©se",
169 "settings.service.error.goBack" : "Vissza a szolgĂ¡ltatĂ¡sokhoz", 191 "settings.service.error.goBack" : "Vissza a szolgĂ¡ltatĂ¡sokhoz",
170 "settings.service.error.headline" : "Hiba", 192 "settings.service.error.headline" : "Hiba",
@@ -174,12 +196,12 @@
174 "settings.service.form.customUrl" : "Egyéni szerver", 196 "settings.service.form.customUrl" : "Egyéni szerver",
175 "settings.service.form.customUrlPremiumInfo" : "EgyĂ©nileg Ă¼zemeltetett szolgĂ¡ltatĂ¡sok hozzĂ¡adĂ¡sĂ¡hoz Franz PrĂ©mium TĂ¡mogatĂ³ FiĂ³k szĂ¼ksĂ©ges.", 197 "settings.service.form.customUrlPremiumInfo" : "EgyĂ©nileg Ă¼zemeltetett szolgĂ¡ltatĂ¡sok hozzĂ¡adĂ¡sĂ¡hoz Franz PrĂ©mium TĂ¡mogatĂ³ FiĂ³k szĂ¼ksĂ©ges.",
176 "settings.service.form.customUrlUpgradeAccount" : "FrissĂ­tsd fiĂ³kodat", 198 "settings.service.form.customUrlUpgradeAccount" : "FrissĂ­tsd fiĂ³kodat",
177 "settings.service.form.customUrlValidationError" : "Nem sikerĂ¼lt hitelesĂ­teni az egyĂ©ni {name} szervert.", 199 "settings.service.form.customUrlValidationError" : "Nem sikerĂ¼lt Ă©rvĂ©nyesĂ­teni az egyĂ©ni {name} kiszolgĂ¡lĂ³t.",
178 "settings.service.form.deleteButton" : "SzolgĂ¡ltatĂ¡s törlĂ©se", 200 "settings.service.form.deleteButton" : "SzolgĂ¡ltatĂ¡s törlĂ©se",
179 "settings.service.form.editServiceHeadline" : "{name} szerkesztése", 201 "settings.service.form.editServiceHeadline" : "{name} szerkesztése",
180 "settings.service.form.enableAudio" : "Hang engedélyezése", 202 "settings.service.form.enableAudio" : "Hang engedélyezése",
181 "settings.service.form.enableBadge" : "Mutasd az olvasatlan jelzéseket", 203 "settings.service.form.enableBadge" : "Mutasd az olvasatlan jelzéseket",
182 "settings.service.form.enableDarkMode" : "Enable Dark Mode", 204 "settings.service.form.enableDarkMode" : "SötĂ©t mĂ³d engedĂ©lyezĂ©se",
183 "settings.service.form.enableNotification" : "Értesítések engedélyezése", 205 "settings.service.form.enableNotification" : "Értesítések engedélyezése",
184 "settings.service.form.enableService" : "SzolgĂ¡ltatĂ¡s engedĂ©lyezĂ©se", 206 "settings.service.form.enableService" : "SzolgĂ¡ltatĂ¡s engedĂ©lyezĂ©se",
185 "settings.service.form.headlineBadges" : "Olvasatlan Ă¼zenet jelzĂ©sek", 207 "settings.service.form.headlineBadges" : "Olvasatlan Ă¼zenet jelzĂ©sek",
@@ -188,34 +210,39 @@
188 "settings.service.form.icon" : "Egyedi ikon", 210 "settings.service.form.icon" : "Egyedi ikon",
189 "settings.service.form.iconDelete" : "Törlés", 211 "settings.service.form.iconDelete" : "Törlés",
190 "settings.service.form.iconUpload" : "HĂºzd ide a kĂ©pet, vagy kattints ide", 212 "settings.service.form.iconUpload" : "HĂºzd ide a kĂ©pet, vagy kattints ide",
191 "settings.service.form.indirectMessageInfo" : "ÉrtesĂ­tĂ©st kapsz minden Ă¼zenetrÅ‘l a csatornĂ¡ban, nem csak @felhasznĂ¡lĂ³nĂ©v, @csatorna @here Ă©s egyĂ©b emlĂ­tĂ©sek esetĂ©n", 213 "settings.service.form.indirectMessageInfo" : "ÉrtesĂ­tĂ©st kapsz minden Ă¼zenetrÅ‘l a csatornĂ¡ban, nem csak @felhasznĂ¡lĂ³nĂ©v, @csatorna, @here Ă©s egyĂ©b emlĂ­tĂ©sek esetĂ©n",
192 "settings.service.form.indirectMessages" : "Ăœzenet kitűzÅ‘ megjelenĂ­tĂ©se minden Ă¼zenethez", 214 "settings.service.form.indirectMessages" : "Ăœzenet kitűzÅ‘ megjelenĂ­tĂ©se minden Ă¼zenethez",
193 "settings.service.form.isMutedInfo" : "Ha kikapcsolod, minden Ă©rtesĂ­tĂ©si Ă©s lejĂ¡tszott hang nĂ©mĂ­tĂ¡sra kerĂ¼l.", 215 "settings.service.form.isMutedInfo" : "Ha kikapcsolod, minden Ă©rtesĂ­tĂ©si Ă©s lejĂ¡tszott hang nĂ©mĂ­tĂ¡sra kerĂ¼l",
194 "settings.service.form.name" : "NĂ©v", 216 "settings.service.form.name" : "NĂ©v",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy beĂ¡llĂ­tĂ¡sok",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "Proxy beĂ¡llĂ­tĂ¡sok nem szinkronizĂ¡lĂ³dnak a Franz kiszolgĂ¡lĂ³kkal.",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Proxy hasznĂ¡lata",
199 "settings.service.form.proxy.password" : "Password (optional)", 221 "settings.service.form.proxy.password" : "JelszĂ³ (opcionĂ¡lis)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Port",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "KĂ©rjĂ¼k indĂ­tsd Ăºjra a Franz-ot a proxy beĂ¡llĂ­tĂ¡sok megvĂ¡ltoztatĂ¡sa utĂ¡n.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "FelhasznĂ¡lĂ³ (opcionĂ¡lis)",
203 "settings.service.form.saveButton" : "SzolgĂ¡ltatĂ¡s mentĂ©se", 225 "settings.service.form.saveButton" : "SzolgĂ¡ltatĂ¡s mentĂ©se",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Ăœzemeltetett", 226 "settings.service.form.tabHosted" : "Ăœzemeltetett",
207 "settings.service.form.tabOnPremise" : "EgyĂ©nileg Ă¼zemeltetett", 227 "settings.service.form.tabOnPremise" : "EgyĂ©nileg Ă¼zemeltetett",
208 "settings.service.form.team" : "Csapat", 228 "settings.service.form.team" : "Csapat",
209 "settings.service.form.useHostedService" : "A tĂ¡voli {name} szolgĂ¡ltatĂ¡s hasznĂ¡lata", 229 "settings.service.form.useHostedService" : "A tĂ¡voli {name} szolgĂ¡ltatĂ¡s hasznĂ¡lata.",
210 "settings.service.form.yourServices" : "SzolgĂ¡ltatĂ¡said", 230 "settings.service.form.yourServices" : "SzolgĂ¡ltatĂ¡said",
211 "settings.services.deletedInfo" : "A szolgĂ¡ltatĂ¡s törlĂ©sre kerĂ¼lt", 231 "settings.services.deletedInfo" : "A szolgĂ¡ltatĂ¡s törlĂ©sre kerĂ¼lt",
212 "settings.services.discoverServices" : "SzolgĂ¡ltatĂ¡sok felfedezĂ©se", 232 "settings.services.discoverServices" : "SzolgĂ¡ltatĂ¡sok felfedezĂ©se",
213 "settings.services.headline" : "SzolgĂ¡ltatĂ¡said", 233 "settings.services.headline" : "SzolgĂ¡ltatĂ¡said",
214 "settings.services.noServicesAdded" : "MĂ©g nem adtĂ¡l hozzĂ¡ egyetlen szolgĂ¡ltatĂ¡st sem eddig.", 234 "settings.services.noServicesAdded" : "MĂ©g nem adtĂ¡l hozzĂ¡ egyetlen szolgĂ¡ltatĂ¡st sem eddig.",
215 "settings.services.tooltip.isDisabled" : "Ez a szolgĂ¡ltatĂ¡s le van tiltva.", 235 "settings.services.servicesRequestFailed" : "Could not load your services",
236 "settings.services.tooltip.isDisabled" : "A szolgĂ¡ltatĂ¡s le van tiltva",
216 "settings.services.tooltip.isMuted" : "Minden hang lenémítva", 237 "settings.services.tooltip.isMuted" : "Minden hang lenémítva",
217 "settings.services.tooltip.notificationsDisabled" : "Értesítések letiltva", 238 "settings.services.tooltip.notificationsDisabled" : "Értesítések letiltva",
218 "settings.services.updatedInfo" : "A mĂ³dosĂ­tĂ¡sokat elmentettĂ¼k", 239 "settings.services.updatedInfo" : "A mĂ³dosĂ­tĂ¡sokat elmentettĂ¼k",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Csapat",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "CĂ©g", 246 "settings.user.form.accountType.company" : "CĂ©g",
220 "settings.user.form.accountType.individual" : "Egyén", 247 "settings.user.form.accountType.individual" : "Egyén",
221 "settings.user.form.accountType.label" : "FiĂ³k tĂ­pusa", 248 "settings.user.form.accountType.label" : "FiĂ³k tĂ­pusa",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Keresztnév", 252 "settings.user.form.firstname" : "Keresztnév",
226 "settings.user.form.lastname" : "Vezetéknév", 253 "settings.user.form.lastname" : "Vezetéknév",
227 "settings.user.form.newPassword" : "Ăj jelszĂ³", 254 "settings.user.form.newPassword" : "Ăj jelszĂ³",
255 "settings.workspace.add.form.name" : "NĂ©v",
256 "settings.workspace.add.form.submitButton" : "Ăj munkaterĂ¼let",
257 "settings.workspace.form.buttonDelete" : "MunkaterĂ¼let törlĂ©se",
258 "settings.workspace.form.buttonSave" : "MunkaterĂ¼let mentĂ©se",
259 "settings.workspace.form.name" : "NĂ©v",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "SzolgĂ¡ltatĂ¡sok ezen a MunkaterĂ¼leten",
261 "settings.workspace.form.yourWorkspaces" : "MunkaterĂ¼leteid",
262 "settings.workspaces.deletedInfo" : "MunkaterĂ¼let törölve",
263 "settings.workspaces.headline" : "MunkaterĂ¼leteid",
264 "settings.workspaces.noWorkspacesAdded" : "MĂ©g nem hoztĂ¡l lĂ©tre munkaterĂ¼leteket.",
265 "settings.workspaces.tryReloadWorkspaces" : "PrĂ³bĂ¡ld Ăºjra",
266 "settings.workspaces.updatedInfo" : "A mĂ³dosĂ­tĂ¡sokat elmentettĂ¼k",
267 "settings.workspaces.workspaceFeatureHeadline" : "A kevesebb több: Bemutatjuk a Franz MunkaterĂ¼leteket",
268 "settings.workspaces.workspaceFeatureInfo" : "A Franz MunkaterĂ¼letek lehetÅ‘vĂ© teszik, hogy összpontosĂ­ts a jelenleg fontos dolgokra. ĂllĂ­tsd be a kĂ¼lönbözÅ‘ szolgĂ¡ltatĂ¡skĂ©szleteket Ă©s könnyedĂ©n vĂ¡lthatsz közöttĂ¼k bĂ¡rmikor. Te döntöd el, hogy mely szolgĂ¡ltatĂ¡sokra van szĂ¼ksĂ©ged, mikor Ă©s hol, Ă­gy segĂ­thetĂ¼nk abban, hogy a teljesĂ­tmĂ©nyed csĂºcsĂ¡n maradhass, vagy ha csak akarod, egyszerűen kikapcsold a munkĂ¡val kapcsolatos dolgokat.",
269 "settings.workspaces.workspacesRequestFailed" : "Nem sikerĂ¼lt betölteni a munkaterĂ¼leteket",
228 "sidebar.addNewService" : "SzolgĂ¡ltatĂ¡s hozzĂ¡adĂ¡sa", 270 "sidebar.addNewService" : "SzolgĂ¡ltatĂ¡s hozzĂ¡adĂ¡sa",
271 "sidebar.closeWorkspaceDrawer" : "MunkaterĂ¼let panel bezĂ¡rĂ¡sa",
229 "sidebar.muteApp" : "ÉrtesĂ­tĂ©sek Ă©s hangok letiltĂ¡sa", 272 "sidebar.muteApp" : "ÉrtesĂ­tĂ©sek Ă©s hangok letiltĂ¡sa",
273 "sidebar.openWorkspaceDrawer" : "MunkaterĂ¼let panel megnyitĂ¡sa",
230 "sidebar.settings" : "BeĂ¡llĂ­tĂ¡sok", 274 "sidebar.settings" : "BeĂ¡llĂ­tĂ¡sok",
231 "sidebar.unmuteApp" : "Értesítések és hangok engedélyezése", 275 "sidebar.unmuteApp" : "Értesítések és hangok engedélyezése",
232 "signup.company.label" : "CĂ©g", 276 "signup.company.label" : "CĂ©g",
@@ -243,13 +287,12 @@
243 "signup.submit.label" : "FiĂ³k lĂ©trehozĂ¡sa", 287 "signup.submit.label" : "FiĂ³k lĂ©trehozĂ¡sa",
244 "subscription.euTaxInfo" : "EU Ă¡llampolgĂ¡rok: helyi vĂ¡sĂ¡rlĂ¡s esetĂ©n adĂ³k kerĂ¼lhetnek felszĂ¡molĂ¡sra", 288 "subscription.euTaxInfo" : "EU Ă¡llampolgĂ¡rok: helyi vĂ¡sĂ¡rlĂ¡s esetĂ©n adĂ³k kerĂ¼lhetnek felszĂ¡molĂ¡sra",
245 "subscription.features.ads" : "Hirdetésmentes, mindig!", 289 "subscription.features.ads" : "Hirdetésmentes, mindig!",
246 "subscription.features.comingSoon" : "Hamarosan!", 290 "subscription.features.comingSoon" : "hamarosan",
247 "subscription.features.encryptedSync" : "TitkosĂ­tott munkamenet szinkronizĂ¡lĂ¡s", 291 "subscription.features.noInterruptions" : "Nincs több app kĂ©slekedĂ©s Ă©s liszencfrissĂ­tĂ©si piszkĂ¡lĂ¡s",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "SajĂ¡t kiszolgĂ¡lĂ³s szolgĂ¡ltatĂ¡sok hozzĂ¡adĂ¡sa, pl.: Mattermost",
249 "subscription.features.onpremise" : "Helyi\/Ă¼zemeltetett szolgĂ¡ltatĂ¡sok hasznĂ¡lata, pl. HipChat", 293 "subscription.features.proxy" : "Proxy tĂ¡mogatĂ¡s a szolgĂ¡ltatĂ¡sokhoz",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 294 "subscription.features.spellchecker" : "TĂ¡mogatĂ¡s a HelyesĂ­rĂ¡s-ellenÅ‘rzÅ‘höz",
251 "subscription.features.proxy" : "Proxy support for services", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
252 "subscription.features.spellchecker" : "Support for spellchecker",
253 "subscription.includedFeatures" : "Az elÅ‘fizetett Franz PrĂ©mium TĂ¡mogatĂ³ FiĂ³k tartalmazza", 296 "subscription.includedFeatures" : "Az elÅ‘fizetett Franz PrĂ©mium TĂ¡mogatĂ³ FiĂ³k tartalmazza",
254 "subscription.paymentSessionError" : "Nem sikerĂ¼lt a fizetĂ©si felĂ¼letet betölteni", 297 "subscription.paymentSessionError" : "Nem sikerĂ¼lt a fizetĂ©si felĂ¼letet betölteni",
255 "subscription.submit.label" : "SzeretnĂ©m tĂ¡mogatni a Franz fejlesztĂ©sĂ©t", 298 "subscription.submit.label" : "SzeretnĂ©m tĂ¡mogatni a Franz fejlesztĂ©sĂ©t",
@@ -268,10 +311,21 @@
268 "tabs.item.enableService" : "SzolgĂ¡ltatĂ¡s engedĂ©lyezĂ©se", 311 "tabs.item.enableService" : "SzolgĂ¡ltatĂ¡s engedĂ©lyezĂ©se",
269 "tabs.item.reload" : "ĂjratöltĂ©s", 312 "tabs.item.reload" : "ĂjratöltĂ©s",
270 "validation.email" : "{field} nem érvényes", 313 "validation.email" : "{field} nem érvényes",
271 "validation.minLength" : "{field} legalĂ¡bb {length} karakter hosszĂºnak kell lennie", 314 "validation.minLength" : "{field} mezÅ‘nek legalĂ¡bb {length} karakter hosszĂºnak kell lennie",
272 "validation.required" : "{field} KitöltĂ©se kötelezÅ‘", 315 "validation.oneRequired" : "At least one is required",
316 "validation.required" : "{field} kitöltĂ©se kötelezÅ‘",
273 "validation.url" : "{field} nem érvényes URL", 317 "validation.url" : "{field} nem érvényes URL",
274 "welcome.loginButton" : "Jelentkezz be a fiĂ³kodba", 318 "welcome.loginButton" : "Jelentkezz be a fiĂ³kodba",
275 "welcome.signupButton" : "Ăj fiĂ³k lĂ©trehozĂ¡sa", 319 "welcome.signupButton" : "Ăj fiĂ³k lĂ©trehozĂ¡sa",
276 "welcome.slogan" : "ĂœzenetkĂ¼ldĂ©s okosan" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Ă–sszes szolgĂ¡ltatĂ¡s",
322 "workspaceDrawer.headline" : "MunkaterĂ¼letek",
323 "workspaceDrawer.item.contextMenuEdit" : "szerkeszt",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "KĂ©szĂ­tsd el az elsÅ‘ munkaterĂ¼letedet",
326 "workspaceDrawer.proFeatureBadge" : "PrĂ©mium funkciĂ³",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "PrĂ©mium fiĂ³k reaktivĂ¡lĂ¡sa",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "MunkaterĂ¼let beĂ¡llĂ­tĂ¡sok szerkesztĂ©se",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
index 11596d142..e7a46e5e9 100644
--- a/src/i18n/locales/id.json
+++ b/src/i18n/locales/id.json
@@ -1,16 +1,28 @@
1{ 1{
2 "app.errorHandler.action" : "Muat Ulang", 2 "app.errorHandler.action" : "Muat Ulang",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Terjadi kesalahan",
4 "feature.delayApp.action" : "Dapatkan Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Perubahan dalam Franz {version}",
5 "feature.delayApp.headline" : "Beli Franz Supporter License agar tidak perlu menunggu", 5 "feature.delayApp.action" : "Dapatkan Lisensi Pendukung Franz",
6 "feature.delayApp.headline" : "Beli Lisensi Pendukung Franz agar tidak perlu menunggu",
6 "feature.delayApp.text" : "Franz akan melanjutkan dalam {seconds} detik.", 7 "feature.delayApp.text" : "Franz akan melanjutkan dalam {seconds} detik.",
8 "feature.shareFranz.action.email" : "Kirim sebagai email",
9 "feature.shareFranz.action.facebook" : "Bagikan di Facebook",
10 "feature.shareFranz.action.twitter" : "Bagikan di Twitter",
11 "feature.shareFranz.headline" : "Franz lebih baik bersama!",
12 "feature.shareFranz.shareText.email" : "Saya telah menambahkan layanan {count} ke Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan co di www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Beri tahu teman dan kolega Anda betapa hebatnya Franz dan bantu kami menyebarkan berita.",
7 "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Franz", 15 "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Franz",
8 "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.", 16 "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.",
17 "global.spellchecker.useDefault" : "Gunakan Bawaan Sistem ({default})",
18 "global.spellchecking.autodetect" : "Deteksi bahasa secara otomatis",
19 "global.spellchecking.autodetect.short" : "Otomatis",
20 "global.spellchecking.language" : "Periksa ejaan",
9 "import.headline" : "Impor layanan Franz 4 Anda", 21 "import.headline" : "Impor layanan Franz 4 Anda",
10 "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5", 22 "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5",
11 "import.skip.label" : "Saya ingin menambahkan layanan secara manual", 23 "import.skip.label" : "Saya ingin menambahkan layanan secara manual",
12 "import.submit.label" : "Impor layanan", 24 "import.submit.label" : "Impor layanan",
13 "infobar.buttonChangelog" : "Apa yang baru?", 25 "infobar.buttonChangelog" : "Yang baru",
14 "infobar.buttonInstallUpdate" : "Mulai ulang & instal pembaruan", 26 "infobar.buttonInstallUpdate" : "Mulai ulang & instal pembaruan",
15 "infobar.buttonReloadServices" : "Muat ulang layanan", 27 "infobar.buttonReloadServices" : "Muat ulang layanan",
16 "infobar.requiredRequestsFailed" : "Gagal memuat layanan dan informasi pengguna", 28 "infobar.requiredRequestsFailed" : "Gagal memuat layanan dan informasi pengguna",
@@ -19,12 +31,12 @@
19 "invite.email.label" : "Alamat email", 31 "invite.email.label" : "Alamat email",
20 "invite.headline.friends" : "Undang 3 teman atau kolega Anda", 32 "invite.headline.friends" : "Undang 3 teman atau kolega Anda",
21 "invite.name.label" : "Nama", 33 "invite.name.label" : "Nama",
22 "invite.skip.label" : "Nanti saja", 34 "invite.skip.label" : "Saya ingin melakukan ini nanti",
23 "invite.submit.label" : "Kirim undangan", 35 "invite.submit.label" : "Kirim undangan",
24 "invite.successInfo" : "Undangan berhasil dikirim", 36 "invite.successInfo" : "Undangan berhasil dikirim",
25 "login.email.label" : "Alamat email", 37 "login.email.label" : "Alamat email",
26 "login.headline" : "Masuk", 38 "login.headline" : "Masuk",
27 "login.invalidCredentials" : "Email atau sandi salah", 39 "login.invalidCredentials" : "Email atau kata sandi tidak valid",
28 "login.link.password" : "Setel ulang sandi", 40 "login.link.password" : "Setel ulang sandi",
29 "login.link.signup" : "Buat akun gratis", 41 "login.link.signup" : "Buat akun gratis",
30 "login.password.label" : "Sandi", 42 "login.password.label" : "Sandi",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Masuk", 44 "login.submit.label" : "Masuk",
33 "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.", 45 "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.",
34 "menu.app.about" : "Tentang Franz", 46 "menu.app.about" : "Tentang Franz",
47 "menu.app.announcement" : "Yang baru",
35 "menu.app.hide" : "Sembunyikan", 48 "menu.app.hide" : "Sembunyikan",
36 "menu.app.hideOthers" : "Sembunyikan Lainnya", 49 "menu.app.hideOthers" : "Sembunyikan Lainnya",
37 "menu.app.quit" : "Keluar", 50 "menu.app.quit" : "Keluar",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Dukungan", 72 "menu.help.support" : "Dukungan",
60 "menu.help.tos" : "Ketentuan Layanan", 73 "menu.help.tos" : "Ketentuan Layanan",
61 "menu.services" : "Layanan", 74 "menu.services" : "Layanan",
75 "menu.services.activatePreviousService" : "Aktifkan layanan sebelumnya",
62 "menu.services.addNewService" : "Tambahkan Layanan Baru...", 76 "menu.services.addNewService" : "Tambahkan Layanan Baru...",
77 "menu.services.setNextServiceActive" : "Aktifkan layanan berikutnya",
63 "menu.view" : "Tampilan", 78 "menu.view" : "Tampilan",
64 "menu.view.enterFullScreen" : "Masuk ke Mode Layar Penuh", 79 "menu.view.enterFullScreen" : "Masuk ke Mode Layar Penuh",
65 "menu.view.exitFullScreen" : "Keluar dari Layar Penuh", 80 "menu.view.exitFullScreen" : "Keluar dari Layar Penuh",
@@ -74,6 +89,11 @@
74 "menu.window" : "Jendela", 89 "menu.window" : "Jendela",
75 "menu.window.close" : "Tutup", 90 "menu.window.close" : "Tutup",
76 "menu.window.minimize" : "Minimalkan", 91 "menu.window.minimize" : "Minimalkan",
92 "menu.workspaces" : "Ruang kerja",
93 "menu.workspaces.addNewWorkspace" : "Tambah Ruang Kerja Baru...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Tutup laci ruang kerja",
95 "menu.workspaces.defaultWorkspace" : "Semua layanan",
96 "menu.workspaces.openWorkspaceDrawer" : "Buka laci ruang kerja",
77 "password.email.label" : "Alamat email", 97 "password.email.label" : "Alamat email",
78 "password.headline" : "Setel ulang sandi", 98 "password.headline" : "Setel ulang sandi",
79 "password.link.login" : "Masuk ke akun Anda", 99 "password.link.login" : "Masuk ke akun Anda",
@@ -92,19 +112,20 @@
92 "service.crashHandler.text" : "{name} menyebabkan kesalahan.", 112 "service.crashHandler.text" : "{name} menyebabkan kesalahan.",
93 "service.disabledHandler.action" : "Aktifkan {name}", 113 "service.disabledHandler.action" : "Aktifkan {name}",
94 "service.disabledHandler.headline" : "{name} dinonaktifkan", 114 "service.disabledHandler.headline" : "{name} dinonaktifkan",
95 "service.errorHandler.action" : "Muat Ulang {name}", 115 "service.errorHandler.action" : "Muat ulang {name}",
96 "service.errorHandler.editAction" : "Edit {nama}", 116 "service.errorHandler.editAction" : "Edit {nama}",
97 "service.errorHandler.headline" : "Ya Ampun!", 117 "service.errorHandler.headline" : "Oh tidak!",
98 "service.errorHandler.message" : "Kesalahan", 118 "service.errorHandler.message" : "Kesalahan",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} gagal dimuat",
100 "services.getStarted" : "Ayo mulai!", 120 "service.webviewLoader.loading" : "Memuat",
121 "services.getStarted" : "Memulai",
101 "services.welcome" : "Selamat datang di Franz", 122 "services.welcome" : "Selamat datang di Franz",
102 "settings.account.account.editButton" : "Edit akun", 123 "settings.account.account.editButton" : "Edit akun",
103 "settings.account.accountType.basic" : "Akun Dasar", 124 "settings.account.accountType.basic" : "Akun Dasar",
104 "settings.account.accountType.premium" : "Akun Pendukung Premium", 125 "settings.account.accountType.premium" : "Akun Pendukung Premium",
105 "settings.account.buttonSave" : "Perbarui profil", 126 "settings.account.buttonSave" : "Perbarui profil",
106 "settings.account.deleteAccount" : "Hapus akun", 127 "settings.account.deleteAccount" : "Hapus akun",
107 "settings.account.deleteEmailSent" : "Anda akan menerima email yang berisi tautan untuk melakukan konfirmasi penghapusan akun. Akun dan data Anda tidak bisa dipulihkan!", 128 "settings.account.deleteEmailSent" : "Anda menerima email dengan tautan untuk mengonfirmasi penghapusan akun. Akun dan data Anda tidak bisa dipulihkan!",
108 "settings.account.deleteInfo" : "Jika Anda tidak membutuhkan akun Franz lagi, Anda bisa menghapus akun dan semua data terkait di sini.", 129 "settings.account.deleteInfo" : "Jika Anda tidak membutuhkan akun Franz lagi, Anda bisa menghapus akun dan semua data terkait di sini.",
109 "settings.account.headline" : "Akun", 130 "settings.account.headline" : "Akun",
110 "settings.account.headlineAccount" : "Informasi akun", 131 "settings.account.headlineAccount" : "Informasi akun",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Unduh", 138 "settings.account.invoiceDownload" : "Unduh",
118 "settings.account.manageSubscription.label" : "Kelola langganan Anda", 139 "settings.account.manageSubscription.label" : "Kelola langganan Anda",
119 "settings.account.successInfo" : "Perubahan Anda telah disimpan", 140 "settings.account.successInfo" : "Perubahan Anda telah disimpan",
141 "settings.account.tryReloadServices" : "Coba lagi",
120 "settings.account.tryReloadUserInfoRequest" : "Coba lagi", 142 "settings.account.tryReloadUserInfoRequest" : "Coba lagi",
121 "settings.account.userInfoRequestFailed" : "Gagal memuat informasi pengguna", 143 "settings.account.userInfoRequestFailed" : "Gagal memuat informasi pengguna",
122 "settings.app.buttonClearAllCache" : "Bersihkan singgahan", 144 "settings.app.buttonClearAllCache" : "Bersihkan singgahan",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Sertakan versi beta", 151 "settings.app.form.beta" : "Sertakan versi beta",
130 "settings.app.form.darkMode" : "Sisi Kelam menunggu Anda (Mode Gelap)", 152 "settings.app.form.darkMode" : "Sisi Kelam menunggu Anda (Mode Gelap)",
131 "settings.app.form.enableGPUAcceleration" : "Aktifkan Akselerasi GPU", 153 "settings.app.form.enableGPUAcceleration" : "Aktifkan Akselerasi GPU",
132 "settings.app.form.enableMenuBar" : "Tampilkan Franz di Bilah Menu",
133 "settings.app.form.enableSpellchecking" : "Aktifkan pemeriksaan ejaan", 154 "settings.app.form.enableSpellchecking" : "Aktifkan pemeriksaan ejaan",
134 "settings.app.form.enableSystemTray" : "Tampilkan Franz di baki sistem", 155 "settings.app.form.enableSystemTray" : "Tampilkan Franz di baki sistem",
135 "settings.app.form.hideDockIcon" : "Sembunyikan ikon Franz di Dock",
136 "settings.app.form.language" : "Bahasa", 156 "settings.app.form.language" : "Bahasa",
137 "settings.app.form.minimizeToSystemTray" : "Perkecil Franz ke baki sistem", 157 "settings.app.form.minimizeToSystemTray" : "Perkecil Franz ke baki sistem",
138 "settings.app.form.runInBackground" : "Tetap jalankan Franz di latar belakang saat menutup jendela", 158 "settings.app.form.runInBackground" : "Tetap jalankan Franz di latar belakang saat menutup jendela",
139 "settings.app.form.showDisabledServices" : "Tampilkan tab layanan yang dinonaktifkan", 159 "settings.app.form.showDisabledServices" : "Tampilkan tab layanan yang dinonaktifkan",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Tampilkan lencana pesan belum dibaca saat pemberitahuan dinonaktifkan", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Tampilkan lencana pesan belum dibaca saat pemberitahuan dinonaktifkan",
141 "settings.app.form.spellcheckerLanguage" : "Periksa ejaan",
142 "settings.app.headline" : "Pengaturan", 161 "settings.app.headline" : "Pengaturan",
143 "settings.app.headlineAdvanced" : "Tingkat Lanjut", 162 "settings.app.headlineAdvanced" : "Tingkat Lanjut",
144 "settings.app.headlineAppearance" : "Tampilan", 163 "settings.app.headlineAppearance" : "Tampilan",
145 "settings.app.headlineGeneral" : "Umum", 164 "settings.app.headlineGeneral" : "Umum",
146 "settings.app.headlineLanguage" : "Bahasa", 165 "settings.app.headlineLanguage" : "Bahasa",
147 "settings.app.headlineUpdates" : "Versi Baru", 166 "settings.app.headlineUpdates" : "Versi Baru",
167 "settings.app.languageDisclaimer" : "Penerjemahan resmi dilakukan untuk Bahasa Inggris dan Jerman. Bahasa lainnya merupakan penerjemahan oleh komunitas.",
148 "settings.app.restartRequired" : "Perubahan membutuhkan mulai ulang", 168 "settings.app.restartRequired" : "Perubahan membutuhkan mulai ulang",
149 "settings.app.subheadlineCache" : "Singgahan", 169 "settings.app.subheadlineCache" : "Singgahan",
150 "settings.app.translationHelp" : "Bantu kami menerjemahkan Franz ke bahasa Anda.", 170 "settings.app.translationHelp" : "Bantu kami menerjemahkan Franz ke bahasa Anda.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Undang Teman", 177 "settings.navigation.inviteFriends" : "Undang Teman",
158 "settings.navigation.logout" : "Keluar", 178 "settings.navigation.logout" : "Keluar",
159 "settings.navigation.settings" : "Pengaturan", 179 "settings.navigation.settings" : "Pengaturan",
180 "settings.navigation.team" : "Kelola Tim",
160 "settings.navigation.yourServices" : "Layanan Anda", 181 "settings.navigation.yourServices" : "Layanan Anda",
182 "settings.navigation.yourWorkspaces" : "Ruang kerja Anda",
161 "settings.recipes.all" : "Semua layanan", 183 "settings.recipes.all" : "Semua layanan",
162 "settings.recipes.dev" : "Pengembangan", 184 "settings.recipes.dev" : "Pengembangan",
163 "settings.recipes.headline" : "Layanan tersedia", 185 "settings.recipes.headline" : "Layanan tersedia",
@@ -167,7 +189,7 @@
167 "settings.recipes.servicesSuccessfulAddedInfo" : "Layanan berhasil ditambahkan", 189 "settings.recipes.servicesSuccessfulAddedInfo" : "Layanan berhasil ditambahkan",
168 "settings.searchService" : "Cari layanan", 190 "settings.searchService" : "Cari layanan",
169 "settings.service.error.goBack" : "Kembali ke layanan", 191 "settings.service.error.goBack" : "Kembali ke layanan",
170 "settings.service.error.headline" : "Kesalahan", 192 "settings.service.error.headline" : "Terjadi kesalahan",
171 "settings.service.error.message" : "Tidak dapat memuat konfigurasi layanan.", 193 "settings.service.error.message" : "Tidak dapat memuat konfigurasi layanan.",
172 "settings.service.form.addServiceHeadline" : "Tambahkan {name}", 194 "settings.service.form.addServiceHeadline" : "Tambahkan {name}",
173 "settings.service.form.availableServices" : "Layanan tersedia", 195 "settings.service.form.availableServices" : "Layanan tersedia",
@@ -176,7 +198,7 @@
176 "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda", 198 "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda",
177 "settings.service.form.customUrlValidationError" : "Gagal memvalidasi server {nama} khusus.", 199 "settings.service.form.customUrlValidationError" : "Gagal memvalidasi server {nama} khusus.",
178 "settings.service.form.deleteButton" : "Hapus layanan", 200 "settings.service.form.deleteButton" : "Hapus layanan",
179 "settings.service.form.editServiceHeadline" : "Edit {nama}", 201 "settings.service.form.editServiceHeadline" : "Edit {name}",
180 "settings.service.form.enableAudio" : "Aktifkan audio", 202 "settings.service.form.enableAudio" : "Aktifkan audio",
181 "settings.service.form.enableBadge" : "Tampilkan lencana pesan belum dibaca", 203 "settings.service.form.enableBadge" : "Tampilkan lencana pesan belum dibaca",
182 "settings.service.form.enableDarkMode" : "Aktifkan Mode Gelap", 204 "settings.service.form.enableDarkMode" : "Aktifkan Mode Gelap",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Tampilkan lencana pesan untuk semua pesan baru", 214 "settings.service.form.indirectMessages" : "Tampilkan lencana pesan untuk semua pesan baru",
193 "settings.service.form.isMutedInfo" : "Saat dinonaktifkan, semua suara pemberitahuan dan pemutaran audio akan dibisukan", 215 "settings.service.form.isMutedInfo" : "Saat dinonaktifkan, semua suara pemberitahuan dan pemutaran audio akan dibisukan",
194 "settings.service.form.name" : "Nama", 216 "settings.service.form.name" : "Nama",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "Pengaturan Proxy HTTP\/HTTPS",
196 "settings.service.form.proxy.host" : "Host\/IP Proksi", 218 "settings.service.form.proxy.host" : "Host\/IP Proksi",
197 "settings.service.form.proxy.info" : "Pengaturan proksi tidak akan disinkronkan dengan server Franz.", 219 "settings.service.form.proxy.info" : "Pengaturan proksi tidak akan disinkronkan dengan server Franz.",
198 "settings.service.form.proxy.isEnabled" : "Gunakan Proksi", 220 "settings.service.form.proxy.isEnabled" : "Gunakan Proksi",
199 "settings.service.form.proxy.password" : "Sandi (opsional)", 221 "settings.service.form.proxy.password" : "Sandi (opsional)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Port",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Silahkan mulai ulang Franz setelah mengubah Setelan proxy",
202 "settings.service.form.proxy.user" : "Pengguna (opsional)", 224 "settings.service.form.proxy.user" : "Pengguna (opsional)",
203 "settings.service.form.saveButton" : "Simpan layanan", 225 "settings.service.form.saveButton" : "Simpan layanan",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Hosted", 226 "settings.service.form.tabHosted" : "Hosted",
207 "settings.service.form.tabOnPremise" : "Hosted mandiri", 227 "settings.service.form.tabOnPremise" : "Hosted mandiri",
208 "settings.service.form.team" : "Tim", 228 "settings.service.form.team" : "Tim",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Temukan layanan", 232 "settings.services.discoverServices" : "Temukan layanan",
213 "settings.services.headline" : "Layanan Anda", 233 "settings.services.headline" : "Layanan Anda",
214 "settings.services.noServicesAdded" : "Anda belum menambahkan layanan apa pun.", 234 "settings.services.noServicesAdded" : "Anda belum menambahkan layanan apa pun.",
235 "settings.services.servicesRequestFailed" : "Tidak dapat memuat layanan Anda",
215 "settings.services.tooltip.isDisabled" : "Layanan dinonaktifkan", 236 "settings.services.tooltip.isDisabled" : "Layanan dinonaktifkan",
216 "settings.services.tooltip.isMuted" : "Semua suara dibisukan", 237 "settings.services.tooltip.isMuted" : "Semua suara dibisukan",
217 "settings.services.tooltip.notificationsDisabled" : "Pemberitahuan dinonaktifkan", 238 "settings.services.tooltip.notificationsDisabled" : "Pemberitahuan dinonaktifkan",
218 "settings.services.updatedInfo" : "Perubahan telah disimpan", 239 "settings.services.updatedInfo" : "Perubahan telah disimpan",
240 "settings.team.contentHeadline" : "Franz untuk Tim",
241 "settings.team.copy" : "Franz untuk Tim menyediakan opsi untuk mengundang rekan kerja ke tim Anda dengan mengirimkan undangan email dan mengelola langganan mereka pada preferensi akun Anda. Jangan habiskan waktu Anda menyiapkan langganan bagi masing-masing anggota tim, lupakan berbagai faktur dan periode penagihan - satu tim untuk semua!",
242 "settings.team.headline" : "Tim",
243 "settings.team.intro" : "Anda dan tim Anda menggunakan Franz? Kini Anda bisa mengelola langganan Premium untuk semua rekan kerja, teman, atau anggota keluar sebanyak yang Anda inginkan, semuanya cukup dari satu akun.",
244 "settings.team.manageAction" : "Kelola Tim Anda di meetfranz.com",
245 "settings.team.upgradeAction" : "Tingkatkan Akun Anda",
219 "settings.user.form.accountType.company" : "Perusahaan", 246 "settings.user.form.accountType.company" : "Perusahaan",
220 "settings.user.form.accountType.individual" : "Pribadi", 247 "settings.user.form.accountType.individual" : "Pribadi",
221 "settings.user.form.accountType.label" : "Jenis akun", 248 "settings.user.form.accountType.label" : "Jenis akun",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Nama Depan", 252 "settings.user.form.firstname" : "Nama Depan",
226 "settings.user.form.lastname" : "Nama Belakang", 253 "settings.user.form.lastname" : "Nama Belakang",
227 "settings.user.form.newPassword" : "Sandi baru", 254 "settings.user.form.newPassword" : "Sandi baru",
255 "settings.workspace.add.form.name" : "Nama",
256 "settings.workspace.add.form.submitButton" : "Buat ruang kerja",
257 "settings.workspace.form.buttonDelete" : "Hapus ruang kerja",
258 "settings.workspace.form.buttonSave" : "Simpan ruang kerja",
259 "settings.workspace.form.name" : "Nama",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Layanan dalam Ruang Kerja ini",
261 "settings.workspace.form.yourWorkspaces" : "Ruang kerja Anda",
262 "settings.workspaces.deletedInfo" : "Ruang kerja telah dihapus",
263 "settings.workspaces.headline" : "Ruang kerja Anda",
264 "settings.workspaces.noWorkspacesAdded" : "Anda belum menambahkan ruang kerja.",
265 "settings.workspaces.tryReloadWorkspaces" : "Coba lagi",
266 "settings.workspaces.updatedInfo" : "Perubahan Anda telah disimpan",
267 "settings.workspaces.workspaceFeatureHeadline" : "Sedikit Namun Banyak: Memperkenalkan Ruang Kerja Franz",
268 "settings.workspaces.workspaceFeatureInfo" : "Ruang Kerja Franz dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain. Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.",
269 "settings.workspaces.workspacesRequestFailed" : "Tidak dapat memuat ruang kerja Anda",
228 "sidebar.addNewService" : "Tambahkan layanan baru", 270 "sidebar.addNewService" : "Tambahkan layanan baru",
271 "sidebar.closeWorkspaceDrawer" : "Tutup laci ruang kerja",
229 "sidebar.muteApp" : "Nonaktifkan pemberitahuan & audio", 272 "sidebar.muteApp" : "Nonaktifkan pemberitahuan & audio",
273 "sidebar.openWorkspaceDrawer" : "Buka laci ruang kerja",
230 "sidebar.settings" : "Pengaturan", 274 "sidebar.settings" : "Pengaturan",
231 "sidebar.unmuteApp" : "Aktifkan pemberitahuan", 275 "sidebar.unmuteApp" : "Aktifkan pemberitahuan",
232 "signup.company.label" : "Perusahaan", 276 "signup.company.label" : "Perusahaan",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Warga UE: pajak penjualan lokal mungkin berlaku", 288 "subscription.euTaxInfo" : "Warga UE: pajak penjualan lokal mungkin berlaku",
245 "subscription.features.ads" : "Tanpa iklan, selamanya!", 289 "subscription.features.ads" : "Tanpa iklan, selamanya!",
246 "subscription.features.comingSoon" : "segera hadir", 290 "subscription.features.comingSoon" : "segera hadir",
247 "subscription.features.encryptedSync" : "Sinkronisasi sesi terenkripsi",
248 "subscription.features.noInterruptions" : "Tanpa menunggu dan ditanya untuk meningkatkan lisensi", 291 "subscription.features.noInterruptions" : "Tanpa menunggu dan ditanya untuk meningkatkan lisensi",
249 "subscription.features.onpremise" : "Integrasi layanan hosted, misalnya HipChat",
250 "subscription.features.onpremise.mattermost" : "Integrasi layanan hosted, misalnya Mattermost", 292 "subscription.features.onpremise.mattermost" : "Integrasi layanan hosted, misalnya Mattermost",
251 "subscription.features.proxy" : "Dukungan proksi untuk layanan", 293 "subscription.features.proxy" : "Dukungan proksi untuk layanan",
252 "subscription.features.spellchecker" : "Dukungan pengecek ejaan", 294 "subscription.features.spellchecker" : "Dukungan pengecek ejaan",
295 "subscription.features.workspaces" : "Kelola layanan Anda dalam ruang kerja",
253 "subscription.includedFeatures" : "Franz Premium Supporter Account berbayar menyertakan", 296 "subscription.includedFeatures" : "Franz Premium Supporter Account berbayar menyertakan",
254 "subscription.paymentSessionError" : "Tidak bisa menginisialisasi formulir pembayaran", 297 "subscription.paymentSessionError" : "Tidak bisa menginisialisasi formulir pembayaran",
255 "subscription.submit.label" : "Saya ingin mendukung pengembangan Franz", 298 "subscription.submit.label" : "Saya ingin mendukung pengembangan Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Muat Ulang", 312 "tabs.item.reload" : "Muat Ulang",
270 "validation.email" : "{field} tidak benar", 313 "validation.email" : "{field} tidak benar",
271 "validation.minLength" : "{field} setidaknya harus {length} karakter", 314 "validation.minLength" : "{field} setidaknya harus {length} karakter",
315 "validation.oneRequired" : "Setidaknya diperlukan satu",
272 "validation.required" : "{field} wajib diisi", 316 "validation.required" : "{field} wajib diisi",
273 "validation.url" : "{field} bukan URL yang benar", 317 "validation.url" : "{field} bukan URL yang benar",
274 "welcome.loginButton" : "Masuk ke akun Anda", 318 "welcome.loginButton" : "Masuk ke akun Anda",
275 "welcome.signupButton" : "Buat akun gratis", 319 "welcome.signupButton" : "Buat akun gratis",
276 "welcome.slogan" : "Perpesanan yang bekerja untuk Anda" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Tambah ruang kerja baru",
321 "workspaceDrawer.allServices" : "Semua layanan",
322 "workspaceDrawer.headline" : "Ruang kerja",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "Belum ada layanan yang ditambahkan",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Buat ruang kerja pertama Anda",
326 "workspaceDrawer.proFeatureBadge" : "Fitur premium",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Aktifkan ulang akun premium",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Ruang Kerja Franz dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain.<\/p><p>Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit setelan ruang kerja",
330 "workspaces.switchingIndicator.switchingTo" : "Beralih ke"
277} 331}
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index 47cbd8f1e..c12641e36 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Ricarica", 2 "app.errorHandler.action" : "Ricarica",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Qualcosa è andato storto",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Ricevi una Licenza Supporter di Franz", 5 "feature.delayApp.action" : "Ricevi una Licenza Supporter di Franz",
5 "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Franz per saltare l'attesa", 6 "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Franz per saltare l'attesa",
6 "feature.delayApp.text" : "Franz continuerĂ  a funzionare tra {seconds} secondi.", 7 "feature.delayApp.text" : "Franz continuerĂ  a funzionare tra {seconds} secondi.",
8 "feature.shareFranz.action.email" : "Manda come email",
9 "feature.shareFranz.action.facebook" : "Condividi su Facebook",
10 "feature.shareFranz.action.twitter" : "Condividi su Twitter",
11 "feature.shareFranz.headline" : "Franze è migliore insieme!",
12 "feature.shareFranz.shareText.email" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l'app gratuita per WhatsApp, Messenger, Slack, Skype e altri all'indirizzo www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Condividi con i tuoi amici e colleghi quanto Franz è fantastico e aiutaci a diffondere la parola.",
7 "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz", 15 "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz",
8 "global.notConnectedToTheInternet" : "Non sei connesso a Internet.", 16 "global.notConnectedToTheInternet" : "Non sei connesso a Internet.",
17 "global.spellchecker.useDefault" : "Usa le impostazioni predefinite di sistema ({default})",
18 "global.spellchecking.autodetect" : "Rileva automaticamente la lingua",
19 "global.spellchecking.autodetect.short" : "Automatico",
20 "global.spellchecking.language" : "Lingua per controllo ortografico",
9 "import.headline" : "Importa i servizi di Franz 4", 21 "import.headline" : "Importa i servizi di Franz 4",
10 "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5", 22 "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5",
11 "import.skip.label" : "Voglio aggiungere i servizi manualmente", 23 "import.skip.label" : "Voglio aggiungere i servizi manualmente",
@@ -32,8 +44,9 @@
32 "login.submit.label" : "Accedi", 44 "login.submit.label" : "Accedi",
33 "login.tokenExpired" : "La tua sessione è scaduta, per favore accedi di nuovo.", 45 "login.tokenExpired" : "La tua sessione è scaduta, per favore accedi di nuovo.",
34 "menu.app.about" : "Info su Franz", 46 "menu.app.about" : "Info su Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Nascondi", 48 "menu.app.hide" : "Nascondi",
36 "menu.app.hideOthers" : "Nascondi Altri", 49 "menu.app.hideOthers" : "Nascondi altri",
37 "menu.app.quit" : "Esci", 50 "menu.app.quit" : "Esci",
38 "menu.app.settings" : "Settings", 51 "menu.app.settings" : "Settings",
39 "menu.app.unhide" : "Mostra", 52 "menu.app.unhide" : "Mostra",
@@ -41,7 +54,7 @@
41 "menu.edit.copy" : "Copia", 54 "menu.edit.copy" : "Copia",
42 "menu.edit.cut" : "Taglia", 55 "menu.edit.cut" : "Taglia",
43 "menu.edit.delete" : "Elimina", 56 "menu.edit.delete" : "Elimina",
44 "menu.edit.emojiSymbols" : "Emoji e Simboli", 57 "menu.edit.emojiSymbols" : "Emoji e simboli",
45 "menu.edit.paste" : "Incolla", 58 "menu.edit.paste" : "Incolla",
46 "menu.edit.pasteAndMatchStyle" : "Incolla e Mantieni Stile", 59 "menu.edit.pasteAndMatchStyle" : "Incolla e Mantieni Stile",
47 "menu.edit.redo" : "Ripeti", 60 "menu.edit.redo" : "Ripeti",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Supporto", 72 "menu.help.support" : "Supporto",
60 "menu.help.tos" : "Termini di Servizio", 73 "menu.help.tos" : "Termini di Servizio",
61 "menu.services" : "Servizi", 74 "menu.services" : "Servizi",
75 "menu.services.activatePreviousService" : "Attiva servizio precedente",
62 "menu.services.addNewService" : "Aggiungi Nuovo Servizio...", 76 "menu.services.addNewService" : "Aggiungi Nuovo Servizio...",
77 "menu.services.setNextServiceActive" : "Attiva servizio seguente",
63 "menu.view" : "Visualizza", 78 "menu.view" : "Visualizza",
64 "menu.view.enterFullScreen" : "Visualizza a Schermo Intero", 79 "menu.view.enterFullScreen" : "Visualizza a Schermo Intero",
65 "menu.view.exitFullScreen" : "Esci da Schermo Intero", 80 "menu.view.exitFullScreen" : "Esci da Schermo Intero",
@@ -74,6 +89,11 @@
74 "menu.window" : "Finestra", 89 "menu.window" : "Finestra",
75 "menu.window.close" : "Chiudi", 90 "menu.window.close" : "Chiudi",
76 "menu.window.minimize" : "Minimizza", 91 "menu.window.minimize" : "Minimizza",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Tutti i servizi",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Indirizzo email", 97 "password.email.label" : "Indirizzo email",
78 "password.headline" : "Reimposta password", 98 "password.headline" : "Reimposta password",
79 "password.link.login" : "Accedi al tuo account", 99 "password.link.login" : "Accedi al tuo account",
@@ -81,7 +101,7 @@
81 "password.noUser" : "Non è stato trovato nessun utente con questo indirizzo e-mail", 101 "password.noUser" : "Non è stato trovato nessun utente con questo indirizzo e-mail",
82 "password.submit.label" : "Invia", 102 "password.submit.label" : "Invia",
83 "password.successInfo" : "Per favore controlla la tua email", 103 "password.successInfo" : "Per favore controlla la tua email",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "Effettua l'upgrade del tuo account",
85 "pricing.headline" : "Supporta Franz", 105 "pricing.headline" : "Supporta Franz",
86 "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz", 106 "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz",
87 "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz", 107 "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Modifica {name}", 116 "service.errorHandler.editAction" : "Modifica {name}",
97 "service.errorHandler.headline" : "Oh no!", 117 "service.errorHandler.headline" : "Oh no!",
98 "service.errorHandler.message" : "Errore", 118 "service.errorHandler.message" : "Errore",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} non si è caricato correttamente.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Iniziamo", 121 "services.getStarted" : "Iniziamo",
101 "services.welcome" : "Benvenuto su Franz", 122 "services.welcome" : "Benvenuto su Franz",
102 "settings.account.account.editButton" : "Modifica account", 123 "settings.account.account.editButton" : "Modifica account",
@@ -117,7 +138,8 @@
117 "settings.account.invoiceDownload" : "Scarica", 138 "settings.account.invoiceDownload" : "Scarica",
118 "settings.account.manageSubscription.label" : "Gestisci il tuo abbonamento", 139 "settings.account.manageSubscription.label" : "Gestisci il tuo abbonamento",
119 "settings.account.successInfo" : "Le tue modifiche sono state salvate", 140 "settings.account.successInfo" : "Le tue modifiche sono state salvate",
120 "settings.account.tryReloadUserInfoRequest" : "Prova di nuovo", 141 "settings.account.tryReloadServices" : "Prova di nuovo",
142 "settings.account.tryReloadUserInfoRequest" : "Riprova",
121 "settings.account.userInfoRequestFailed" : "Impossibile caricare le informazioni dell'utente.", 143 "settings.account.userInfoRequestFailed" : "Impossibile caricare le informazioni dell'utente.",
122 "settings.app.buttonClearAllCache" : "Svuota la cache", 144 "settings.app.buttonClearAllCache" : "Svuota la cache",
123 "settings.app.buttonInstallUpdate" : "Riavvia e installa l'aggiornamento", 145 "settings.app.buttonInstallUpdate" : "Riavvia e installa l'aggiornamento",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Includi versioni beta", 151 "settings.app.form.beta" : "Includi versioni beta",
130 "settings.app.form.darkMode" : "Unisciti al Lato Oscuro.", 152 "settings.app.form.darkMode" : "Unisciti al Lato Oscuro.",
131 "settings.app.form.enableGPUAcceleration" : "Attiva Accelerazione GPU", 153 "settings.app.form.enableGPUAcceleration" : "Attiva Accelerazione GPU",
132 "settings.app.form.enableMenuBar" : "Mostra Franz nella Barra del Menu",
133 "settings.app.form.enableSpellchecking" : "Attiva controllo ortografico", 154 "settings.app.form.enableSpellchecking" : "Attiva controllo ortografico",
134 "settings.app.form.enableSystemTray" : "Mostra Franz nell'area di notifica", 155 "settings.app.form.enableSystemTray" : "Mostra Franz nell'area di notifica",
135 "settings.app.form.hideDockIcon" : "Nascondi l'icona Franz nel Dock",
136 "settings.app.form.language" : "Lingua", 156 "settings.app.form.language" : "Lingua",
137 "settings.app.form.minimizeToSystemTray" : "Minimizza Franz nell'area di notifica", 157 "settings.app.form.minimizeToSystemTray" : "Minimizza Franz nell'area di notifica",
138 "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra", 158 "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra",
139 "settings.app.form.showDisabledServices" : "Mostra schede servizi disattivati", 159 "settings.app.form.showDisabledServices" : "Mostra schede servizi disattivati",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Impostazioni", 161 "settings.app.headline" : "Impostazioni",
143 "settings.app.headlineAdvanced" : "Avanzate", 162 "settings.app.headlineAdvanced" : "Avanzate",
144 "settings.app.headlineAppearance" : "Aspetto", 163 "settings.app.headlineAppearance" : "Aspetto",
145 "settings.app.headlineGeneral" : "Generale", 164 "settings.app.headlineGeneral" : "Generale",
146 "settings.app.headlineLanguage" : "Lingua", 165 "settings.app.headlineLanguage" : "Lingua",
147 "settings.app.headlineUpdates" : "Aggiornamenti", 166 "settings.app.headlineUpdates" : "Aggiornamenti",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Le modifiche richiedono un riavvio", 168 "settings.app.restartRequired" : "Le modifiche richiedono un riavvio",
149 "settings.app.subheadlineCache" : "Cache", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Aiutaci a tradurre Franz nella tua lingua.", 170 "settings.app.translationHelp" : "Aiutaci a tradurre Franz nella tua lingua.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Invita Amici", 177 "settings.navigation.inviteFriends" : "Invita Amici",
158 "settings.navigation.logout" : "Esci", 178 "settings.navigation.logout" : "Esci",
159 "settings.navigation.settings" : "Impostazioni", 179 "settings.navigation.settings" : "Impostazioni",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "I tuoi servizi", 181 "settings.navigation.yourServices" : "I tuoi servizi",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Tutti i servizi", 183 "settings.recipes.all" : "Tutti i servizi",
162 "settings.recipes.dev" : "Sviluppo", 184 "settings.recipes.dev" : "Sviluppo",
163 "settings.recipes.headline" : "Servizi disponibili", 185 "settings.recipes.headline" : "Servizi disponibili",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Mostra l'etichetta per tutti i nuovi messaggi", 214 "settings.service.form.indirectMessages" : "Mostra l'etichetta per tutti i nuovi messaggi",
193 "settings.service.form.isMutedInfo" : "Se disattivato, tutte le notifiche sonore e le riproduzioni audio saranno mutate", 215 "settings.service.form.isMutedInfo" : "Se disattivato, tutte le notifiche sonore e le riproduzioni audio saranno mutate",
194 "settings.service.form.name" : "Nome", 216 "settings.service.form.name" : "Nome",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "Impostazioni Proxy HTTP\/HTTPS",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "Le impostazioni proxy non verranno sincronizzate con i server Franz",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Usa un Proxy",
199 "settings.service.form.proxy.password" : "Password (optional)", 221 "settings.service.form.proxy.password" : "Password (opzionale)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Porta",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Riavvia Franz dopo aver cambiato le impostazioni del proxy.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "Utente (opzionale)",
203 "settings.service.form.saveButton" : "Salva servizio", 225 "settings.service.form.saveButton" : "Salva servizio",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Hosted", 226 "settings.service.form.tabHosted" : "Hosted",
207 "settings.service.form.tabOnPremise" : "Self hosted â­ï¸", 227 "settings.service.form.tabOnPremise" : "Self hosted â­ï¸",
208 "settings.service.form.team" : "Gruppo", 228 "settings.service.form.team" : "Gruppo",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Scopri servizi", 232 "settings.services.discoverServices" : "Scopri servizi",
213 "settings.services.headline" : "I tuoi servizi", 233 "settings.services.headline" : "I tuoi servizi",
214 "settings.services.noServicesAdded" : "Non hai aggiunto ancora nessun servizio.", 234 "settings.services.noServicesAdded" : "Non hai aggiunto ancora nessun servizio.",
235 "settings.services.servicesRequestFailed" : "Impossibile caricare il servizio",
215 "settings.services.tooltip.isDisabled" : "Il servizio è disattivato", 236 "settings.services.tooltip.isDisabled" : "Il servizio è disattivato",
216 "settings.services.tooltip.isMuted" : "Tutti i suoni sono disattivati", 237 "settings.services.tooltip.isMuted" : "Tutti i suoni sono disattivati",
217 "settings.services.tooltip.notificationsDisabled" : "Le notifiche sono disattivate", 238 "settings.services.tooltip.notificationsDisabled" : "Le notifiche sono disattivate",
218 "settings.services.updatedInfo" : "Le tue modifiche sono state salvate", 239 "settings.services.updatedInfo" : "Le tue modifiche sono state salvate",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Gruppo",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "SocietĂ ", 246 "settings.user.form.accountType.company" : "SocietĂ ",
220 "settings.user.form.accountType.individual" : "Individuale", 247 "settings.user.form.accountType.individual" : "Individuale",
221 "settings.user.form.accountType.label" : "Tipo di account", 248 "settings.user.form.accountType.label" : "Tipo di account",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Nome", 252 "settings.user.form.firstname" : "Nome",
226 "settings.user.form.lastname" : "Cognome", 253 "settings.user.form.lastname" : "Cognome",
227 "settings.user.form.newPassword" : "Nuova password", 254 "settings.user.form.newPassword" : "Nuova password",
255 "settings.workspace.add.form.name" : "Nome",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Nome",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Try again",
266 "settings.workspaces.updatedInfo" : "Le tue modifiche sono state salvate",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Aggiungi un nuovo servizio", 270 "sidebar.addNewService" : "Aggiungi un nuovo servizio",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Disattiva notifiche e audio", 272 "sidebar.muteApp" : "Disattiva notifiche e audio",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Impostazioni", 274 "sidebar.settings" : "Impostazioni",
231 "sidebar.unmuteApp" : "Attiva notifiche e audio", 275 "sidebar.unmuteApp" : "Attiva notifiche e audio",
232 "signup.company.label" : "SocietĂ ", 276 "signup.company.label" : "SocietĂ ",
@@ -235,7 +279,7 @@
235 "signup.firstname.label" : "Nome", 279 "signup.firstname.label" : "Nome",
236 "signup.headline" : "Iscriviti", 280 "signup.headline" : "Iscriviti",
237 "signup.lastname.label" : "Cognome", 281 "signup.lastname.label" : "Cognome",
238 "signup.legal.info" : "Creando un account di Franz accetti l' ", 282 "signup.legal.info" : "Creando un account di Franz stai accettando il ",
239 "signup.legal.privacy" : "Informativa sulla Privacy", 283 "signup.legal.privacy" : "Informativa sulla Privacy",
240 "signup.legal.terms" : "Termini di Servizio", 284 "signup.legal.terms" : "Termini di Servizio",
241 "signup.link.login" : "Hai giĂ  un account, vuoi accedere?", 285 "signup.link.login" : "Hai giĂ  un account, vuoi accedere?",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Per i residenti UE: possono essere applicate tasse locali", 288 "subscription.euTaxInfo" : "Per i residenti UE: possono essere applicate tasse locali",
245 "subscription.features.ads" : "Nessuna pubblicitĂ , mai!", 289 "subscription.features.ads" : "Nessuna pubblicitĂ , mai!",
246 "subscription.features.comingSoon" : "in arrivo", 290 "subscription.features.comingSoon" : "in arrivo",
247 "subscription.features.encryptedSync" : "Sincronizzazione sessione crittografata", 291 "subscription.features.noInterruptions" : "L'upgrade della licenza avrĂ  impatti sull'utilizzo dell'App",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Aggiungi servizi on-premise\/hosted come \"Mattermost\"",
249 "subscription.features.onpremise" : "Aggiungi servizi on-premise\/hosted come HipChat", 293 "subscription.features.proxy" : "Supporto proxy per i servizi",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 294 "subscription.features.spellchecker" : "Supporto per il correttore ortografico",
251 "subscription.features.proxy" : "Proxy support for services", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
252 "subscription.features.spellchecker" : "Support for spellchecker",
253 "subscription.includedFeatures" : "L'account a pagamento Franz Premium Supporter include", 296 "subscription.includedFeatures" : "L'account a pagamento Franz Premium Supporter include",
254 "subscription.paymentSessionError" : "Impossibile inizializzare il modulo per il pagamento", 297 "subscription.paymentSessionError" : "Impossibile inizializzare il modulo per il pagamento",
255 "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz", 298 "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Ricarica", 312 "tabs.item.reload" : "Ricarica",
270 "validation.email" : "{field} non valido", 313 "validation.email" : "{field} non valido",
271 "validation.minLength" : "{field} dovrebbe contenere almeno {length} caratteri", 314 "validation.minLength" : "{field} dovrebbe contenere almeno {length} caratteri",
315 "validation.oneRequired" : "Almeno un campo è richiesto",
272 "validation.required" : "{field} è necessario", 316 "validation.required" : "{field} è necessario",
273 "validation.url" : "{field} non è un URL valido", 317 "validation.url" : "{field} non è un URL valido",
274 "welcome.loginButton" : "Accedi al tuo account", 318 "welcome.loginButton" : "Accedi al tuo account",
275 "welcome.signupButton" : "Crea un account gratuito", 319 "welcome.signupButton" : "Crea un account gratuito",
276 "welcome.slogan" : "Un sistema di messaggistica che va bene per te" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Tutti i servizi",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index 6eea64c3a..cf7e9ab78 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -1,16 +1,28 @@
1{ 1{
2 "app.errorHandler.action" : "å†èª­ă¿è¾¼ă¿", 2 "app.errorHandler.action" : "å†èª­ă¿è¾¼ă¿",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "é–“é•ăˆă¦ă„ă‚‹éƒ¨åˆ†ăŒă‚ă‚ă¾ă™",
4 "feature.delayApp.action" : "Franz サăƒăƒ¼ă‚¿ăƒ¼ăƒ©ă‚¤ă‚»ăƒ³ă‚¹ă‚’購入ă™ă‚‹", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Franz ă‚’ă™ăă«èµ·å‹•ă™ă‚‹ă«ă¯ă€Franz サăƒăƒ¼ă‚¿ăƒ¼ăƒ©ă‚¤ă‚»ăƒ³ă‚¹ă‚’購入ă—ă¦ăă ă•ă„。", 5 "feature.delayApp.action" : "Franzサăƒăƒ¼ă‚¿ăƒ¼ăƒ©ă‚¤ă‚»ăƒ³ă‚¹ă‚’購入ă™ă‚‹",
6 "feature.delayApp.text" : "Franz ă¯ă‚ă¨{seconds}秒後ă«èµ·å‹•ă—ă¾ă™ă€‚", 6 "feature.delayApp.headline" : "Franză‚’ă™ăă«èµ·å‹•ă™ă‚‹ă«ă¯ă€Franz サăƒăƒ¼ă‚¿ăƒ¼ăƒ©ă‚¤ă‚»ăƒ³ă‚¹ă‚’購入ă—ă¦ăă ă•ă„。",
7 "feature.delayApp.text" : "Franză¯ă‚ă¨{seconds}秒後ă«èµ·å‹•ă—ă¾ă™ă€‚",
8 "feature.shareFranz.action.email" : "ăƒ¡ăƒ¼ăƒ«ă§é€ä¿¡",
9 "feature.shareFranz.action.facebook" : "Facebookă§ă‚·ă‚§ă‚¢",
10 "feature.shareFranz.action.twitter" : "Twitteră§ă‚·ă‚§ă‚¢",
11 "feature.shareFranz.headline" : "Franză¯ă‚ăªăŸă¨ă¨ă‚‚ă«",
12 "feature.shareFranz.shareText.email" : "Franză§{count}個ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’ä½¿ă£ă¦ă„ă¾ă™ï¼ă‚ăªăŸă‚‚Gmail, Messenger, Slack, Skypeăªă©ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’Franză§ä¸€å…ƒç®¡ç†ă—ă¾ă—ょă†ï¼ www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "ă‚ăªăŸă®ăå‹é”ă«Franză‚’æ•™ăˆă¦ă‚ă’ă¾ă—ょă†ă€‚",
7 "global.api.unhealthy" : "Franză®ă‚ªăƒ³ăƒ©ă‚¤ăƒ³ă‚µăƒ¼ăƒ“ă‚¹ă«æ¥ç¶ă§ăă¾ă›ă‚“。", 15 "global.api.unhealthy" : "Franză®ă‚ªăƒ³ăƒ©ă‚¤ăƒ³ă‚µăƒ¼ăƒ“ă‚¹ă«æ¥ç¶ă§ăă¾ă›ă‚“。",
8 "global.notConnectedToTheInternet" : "ă‚¤ăƒ³ă‚¿ăƒ¼ăƒăƒƒăƒˆă«æ¥ç¶ă•ă‚Œă¦ă„ă¾ă›ă‚“。", 16 "global.notConnectedToTheInternet" : "ă‚¤ăƒ³ă‚¿ăƒ¼ăƒăƒƒăƒˆă«æ¥ç¶ă•ă‚Œă¦ă„ă¾ă›ă‚“。",
17 "global.spellchecker.useDefault" : " {default}ă‚’åˆæœŸè¨­å®ă§ä½¿ç”¨ă—ă¦ăă ă•ă„",
18 "global.spellchecking.autodetect" : "言èªă‚’自動ç„ă«æ¤œå‡ºă™ă‚‹",
19 "global.spellchecking.autodetect.short" : "自動",
20 "global.spellchecking.language" : "ă‚¹ăƒăƒ«ăƒă‚§ăƒƒă‚¯ă™ă‚‹è¨€èª",
9 "import.headline" : "Franz 4ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’ă‚¤ăƒ³ăƒăƒ¼ăƒˆă—ă¦ä¸‹ă•ă„", 21 "import.headline" : "Franz 4ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’ă‚¤ăƒ³ăƒăƒ¼ăƒˆă—ă¦ä¸‹ă•ă„",
10 "import.notSupportedHeadline" : "Franz 5ă§ă¯ă“ă®ă‚µăƒ¼ăƒ“ă‚¹ă«ă¾ă å¯¾å¿œă—ă¦ă„ă¾ă›ă‚“", 22 "import.notSupportedHeadline" : "Franz 5ă§ă¯ă“ă®ă‚µăƒ¼ăƒ“ă‚¹ă«ă¾ă å¯¾å¿œă—ă¦ă„ă¾ă›ă‚“",
11 "import.skip.label" : "手動ă§ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ă™ă‚‹", 23 "import.skip.label" : "手動ă§ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ă™ă‚‹",
12 "import.submit.label" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’ă‚¤ăƒ³ăƒăƒ¼ăƒˆă—ă¦ä¸‹ă•ă„", 24 "import.submit.label" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’ă‚¤ăƒ³ăƒăƒ¼ăƒˆă—ă¦ä¸‹ă•ă„",
13 "infobar.buttonChangelog" : "最新ă®æƒ…å ±", 25 "infobar.buttonChangelog" : "æ›´æ–°å±¥æ­´ă‚’è¦‹ă‚‹",
14 "infobar.buttonInstallUpdate" : "å†èµ·å‹•ă—ă¦æ›´æ–°ă‚’ă‚¤ăƒ³ă‚¹ăƒˆăƒ¼ăƒ«ă™ă‚‹", 26 "infobar.buttonInstallUpdate" : "å†èµ·å‹•ă—ă¦æ›´æ–°ă‚’ă‚¤ăƒ³ă‚¹ăƒˆăƒ¼ăƒ«ă™ă‚‹",
15 "infobar.buttonReloadServices" : "ă‚µăƒ¼ăƒ“ă‚¹ă®å†èª­ă¿è¾¼ă¿", 27 "infobar.buttonReloadServices" : "ă‚µăƒ¼ăƒ“ă‚¹ă®å†èª­ă¿è¾¼ă¿",
16 "infobar.requiredRequestsFailed" : "ă‚µăƒ¼ăƒ“ă‚¹ă¨ăƒ¦ăƒ¼ă‚¶ăƒ¼æƒ…å ±ă‚’èª­ă¿è¾¼ă‚ă¾ă›ă‚“ă§ă—ăŸ", 28 "infobar.requiredRequestsFailed" : "ă‚µăƒ¼ăƒ“ă‚¹ă¨ăƒ¦ăƒ¼ă‚¶ăƒ¼æƒ…å ±ă‚’èª­ă¿è¾¼ă‚ă¾ă›ă‚“ă§ă—ăŸ",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "ă‚µă‚¤ăƒ³ă‚¤ăƒ³", 44 "login.submit.label" : "ă‚µă‚¤ăƒ³ă‚¤ăƒ³",
33 "login.tokenExpired" : "ă‚»ăƒƒă‚·ăƒ§ăƒ³ă®æœŸé™ăŒåˆ‡ă‚Œă¾ă—ăŸă€‚ăƒ­ă‚°ă‚¤ăƒ³ă—ç›´ă—ă¦ä¸‹ă•ă„。", 45 "login.tokenExpired" : "ă‚»ăƒƒă‚·ăƒ§ăƒ³ă®æœŸé™ăŒåˆ‡ă‚Œă¾ă—ăŸă€‚ăƒ­ă‚°ă‚¤ăƒ³ă—ç›´ă—ă¦ä¸‹ă•ă„。",
34 "menu.app.about" : "ăƒăƒ¼ă‚¸ăƒ§ăƒ³æƒ…å ±", 46 "menu.app.about" : "ăƒăƒ¼ă‚¸ăƒ§ăƒ³æƒ…å ±",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "é ă™", 48 "menu.app.hide" : "é ă™",
36 "menu.app.hideOthers" : "ä»–ă‚’é ă™", 49 "menu.app.hideOthers" : "ä»–ă‚’é ă™",
37 "menu.app.quit" : "終了", 50 "menu.app.quit" : "終了",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "サăƒăƒ¼ăƒˆ", 72 "menu.help.support" : "サăƒăƒ¼ăƒˆ",
60 "menu.help.tos" : "ă‚µăƒ¼ăƒ“ă‚¹åˆ©ç”¨è¦ç´„", 73 "menu.help.tos" : "ă‚µăƒ¼ăƒ“ă‚¹åˆ©ç”¨è¦ç´„",
61 "menu.services" : "ă‚µăƒ¼ăƒ“ă‚¹", 74 "menu.services" : "ă‚µăƒ¼ăƒ“ă‚¹",
75 "menu.services.activatePreviousService" : "å‰ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’æœ‰å¹ă«ă™ă‚‹",
62 "menu.services.addNewService" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ", 76 "menu.services.addNewService" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ",
77 "menu.services.setNextServiceActive" : "次ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’æœ‰å¹ă«ă™ă‚‹",
63 "menu.view" : "表示", 78 "menu.view" : "表示",
64 "menu.view.enterFullScreen" : "全画é¢è¡¨ç¤º", 79 "menu.view.enterFullScreen" : "全画é¢è¡¨ç¤º",
65 "menu.view.exitFullScreen" : "全画é¢è¡¨ç¤ºă‚’終了ă™ă‚‹", 80 "menu.view.exitFullScreen" : "全画é¢è¡¨ç¤ºă‚’終了ă™ă‚‹",
@@ -74,6 +89,11 @@
74 "menu.window" : "ă‚¦ă‚£ăƒ³ăƒ‰ă‚¦", 89 "menu.window" : "ă‚¦ă‚£ăƒ³ăƒ‰ă‚¦",
75 "menu.window.close" : "é–‰ă˜ă‚‹", 90 "menu.window.close" : "é–‰ă˜ă‚‹",
76 "menu.window.minimize" : "最å°åŒ–", 91 "menu.window.minimize" : "最å°åŒ–",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "ă™ă¹ă¦ă®ă‚µăƒ¼ăƒ“ă‚¹",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "ăƒ¡ăƒ¼ăƒ«ă‚¢ăƒ‰ăƒ¬ă‚¹", 97 "password.email.label" : "ăƒ¡ăƒ¼ăƒ«ă‚¢ăƒ‰ăƒ¬ă‚¹",
78 "password.headline" : "ăƒ‘ă‚¹ăƒ¯ăƒ¼ăƒ‰ă®ăƒªă‚»ăƒƒăƒˆ", 98 "password.headline" : "ăƒ‘ă‚¹ăƒ¯ăƒ¼ăƒ‰ă®ăƒªă‚»ăƒƒăƒˆ",
79 "password.link.login" : "ă‚µă‚¤ăƒ³ă‚¤ăƒ³", 99 "password.link.login" : "ă‚µă‚¤ăƒ³ă‚¤ăƒ³",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "{name}を編集", 116 "service.errorHandler.editAction" : "{name}を編集",
97 "service.errorHandler.headline" : "ă—ă¾ă£ăŸï¼", 117 "service.errorHandler.headline" : "ă—ă¾ă£ăŸï¼",
98 "service.errorHandler.message" : "ă‚¨ăƒ©ăƒ¼", 118 "service.errorHandler.message" : "ă‚¨ăƒ©ăƒ¼",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} ă¯ăƒ­ăƒ¼ăƒ‰ă«å¤±æ•—ă—ă¾ă—ăŸ",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "ă¯ă˜ă‚ă‚‹", 121 "services.getStarted" : "ă¯ă˜ă‚ă‚‹",
101 "services.welcome" : "Franză«ă‚ˆă†ă“ă", 122 "services.welcome" : "Franză«ă‚ˆă†ă“ă",
102 "settings.account.account.editButton" : "ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă®ç·¨é›†", 123 "settings.account.account.editButton" : "ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă®ç·¨é›†",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "ăƒ€ă‚¦ăƒ³ăƒ­ăƒ¼ăƒ‰", 138 "settings.account.invoiceDownload" : "ăƒ€ă‚¦ăƒ³ăƒ­ăƒ¼ăƒ‰",
118 "settings.account.manageSubscription.label" : "ă‚µăƒ–ă‚¹ă‚¯ăƒªăƒ—ă‚·ăƒ§ăƒ³ă®ç®¡ç†", 139 "settings.account.manageSubscription.label" : "ă‚µăƒ–ă‚¹ă‚¯ăƒªăƒ—ă‚·ăƒ§ăƒ³ă®ç®¡ç†",
119 "settings.account.successInfo" : "変更内容ăŒä¿å­˜ă•ă‚Œă¾ă—ăŸ", 140 "settings.account.successInfo" : "変更内容ăŒä¿å­˜ă•ă‚Œă¾ă—ăŸ",
141 "settings.account.tryReloadServices" : "ă‚‚ă†ä¸€åº¦è©¦ă™",
120 "settings.account.tryReloadUserInfoRequest" : "ă‚‚ă†ä¸€åº¦è©¦ă™", 142 "settings.account.tryReloadUserInfoRequest" : "ă‚‚ă†ä¸€åº¦è©¦ă™",
121 "settings.account.userInfoRequestFailed" : "ăƒ¦ăƒ¼ă‚¶æƒ…å ±ă‚’èª­ă¿è¾¼ă‚ă¾ă›ă‚“ă§ă—ăŸ", 143 "settings.account.userInfoRequestFailed" : "ăƒ¦ăƒ¼ă‚¶æƒ…å ±ă‚’èª­ă¿è¾¼ă‚ă¾ă›ă‚“ă§ă—ăŸ",
122 "settings.app.buttonClearAllCache" : "ă‚­ăƒ£ăƒƒă‚·ăƒ¥ă‚’æ¶ˆå»ă™ă‚‹", 144 "settings.app.buttonClearAllCache" : "ă‚­ăƒ£ăƒƒă‚·ăƒ¥ă‚’æ¶ˆå»ă™ă‚‹",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Betaăƒăƒ¼ă‚¸ăƒ§ăƒ³ă‚’å«ă‚ă‚‹", 151 "settings.app.form.beta" : "Betaăƒăƒ¼ă‚¸ăƒ§ăƒ³ă‚’å«ă‚ă‚‹",
130 "settings.app.form.darkMode" : "ăƒ€ăƒ¼ă‚¯ăƒ¢ăƒ¼ăƒ‰ă‚’æœ‰å¹ă«ă™ă‚‹", 152 "settings.app.form.darkMode" : "ăƒ€ăƒ¼ă‚¯ăƒ¢ăƒ¼ăƒ‰ă‚’æœ‰å¹ă«ă™ă‚‹",
131 "settings.app.form.enableGPUAcceleration" : "GPUă‚¢ă‚¯ă‚»ăƒ©ăƒ¬ăƒ¼ă‚·ăƒ§ăƒ³ă‚’æœ‰å¹ă«ă™ă‚‹", 153 "settings.app.form.enableGPUAcceleration" : "GPUă‚¢ă‚¯ă‚»ăƒ©ăƒ¬ăƒ¼ă‚·ăƒ§ăƒ³ă‚’æœ‰å¹ă«ă™ă‚‹",
132 "settings.app.form.enableMenuBar" : "ăƒ¡ăƒ‹ăƒ¥ăƒ¼ăƒăƒ¼ă«Franză‚’è¡¨ç¤ºă™ă‚‹",
133 "settings.app.form.enableSpellchecking" : "ă‚¹ăƒăƒ«ăƒă‚§ăƒƒă‚¯ă‚’有å¹ă«ă™ă‚‹", 154 "settings.app.form.enableSpellchecking" : "ă‚¹ăƒăƒ«ăƒă‚§ăƒƒă‚¯ă‚’有å¹ă«ă™ă‚‹",
134 "settings.app.form.enableSystemTray" : "Franză‚’ă‚·ă‚¹ăƒ†ăƒ ăƒˆăƒ¬ă‚¤ă«è¡¨ç¤ºă™ă‚‹", 155 "settings.app.form.enableSystemTray" : "Franză‚’ă‚·ă‚¹ăƒ†ăƒ ăƒˆăƒ¬ă‚¤ă«è¡¨ç¤ºă™ă‚‹",
135 "settings.app.form.hideDockIcon" : "Dockă‹ă‚‰Franză‚’é ă™",
136 "settings.app.form.language" : "言èª", 156 "settings.app.form.language" : "言èª",
137 "settings.app.form.minimizeToSystemTray" : "Franză‚’ă‚·ă‚¹ăƒ†ăƒ ăƒˆăƒ¬ă‚¤ă«æœ€å°åŒ–ă™ă‚‹", 157 "settings.app.form.minimizeToSystemTray" : "Franză‚’ă‚·ă‚¹ăƒ†ăƒ ăƒˆăƒ¬ă‚¤ă«æœ€å°åŒ–ă™ă‚‹",
138 "settings.app.form.runInBackground" : "ă‚¦ă‚¤ăƒ³ăƒ‰ă‚¦ă‚’é–‰ă˜ăŸé›ă«Franză‚’ăƒăƒƒă‚¯ă‚°ăƒ©ă‚¦ăƒ³ăƒ‰ă§å®Ÿè¡Œă•ă›ă¦ăă", 158 "settings.app.form.runInBackground" : "ă‚¦ă‚¤ăƒ³ăƒ‰ă‚¦ă‚’é–‰ă˜ăŸé›ă«Franză‚’ăƒăƒƒă‚¯ă‚°ăƒ©ă‚¦ăƒ³ăƒ‰ă§å®Ÿè¡Œă•ă›ă¦ăă",
139 "settings.app.form.showDisabledServices" : "ç„¡å¹åŒ–ă•ă‚ŒăŸă‚µăƒ¼ăƒ“ă‚¹ă®ă‚¿ăƒ–ă‚’è¡¨ç¤ºă™ă‚‹", 159 "settings.app.form.showDisabledServices" : "ç„¡å¹åŒ–ă•ă‚ŒăŸă‚µăƒ¼ăƒ“ă‚¹ă®ă‚¿ăƒ–ă‚’è¡¨ç¤ºă™ă‚‹",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "é€çŸ¥ă®ç„¡å¹æ™‚ă«æœªèª­ăƒ¡ăƒƒă‚»ăƒ¼ă‚¸ä»¶æ•°ă‚’表示ă™ă‚‹", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "é€çŸ¥ă®ç„¡å¹æ™‚ă«æœªèª­ăƒ¡ăƒƒă‚»ăƒ¼ă‚¸ä»¶æ•°ă‚’表示ă™ă‚‹",
141 "settings.app.form.spellcheckerLanguage" : "ă‚¹ăƒăƒ«ăƒă‚§ăƒƒă‚¯ă™ă‚‹è¨€èª",
142 "settings.app.headline" : "設å®", 161 "settings.app.headline" : "設å®",
143 "settings.app.headlineAdvanced" : "詳細", 162 "settings.app.headlineAdvanced" : "詳細",
144 "settings.app.headlineAppearance" : "è¡¨ç¤ºă‚¹ă‚¿ă‚¤ăƒ«", 163 "settings.app.headlineAppearance" : "è¡¨ç¤ºă‚¹ă‚¿ă‚¤ăƒ«",
145 "settings.app.headlineGeneral" : "一般", 164 "settings.app.headlineGeneral" : "一般",
146 "settings.app.headlineLanguage" : "言èª", 165 "settings.app.headlineLanguage" : "言èª",
147 "settings.app.headlineUpdates" : "æ›´æ–°", 166 "settings.app.headlineUpdates" : "æ›´æ–°",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "変更ă«ă¯å†èµ·å‹•ăŒå¿…è¦ă§ă™", 168 "settings.app.restartRequired" : "変更ă«ă¯å†èµ·å‹•ăŒå¿…è¦ă§ă™",
149 "settings.app.subheadlineCache" : "ă‚­ăƒ£ăƒƒă‚·ăƒ¥", 169 "settings.app.subheadlineCache" : "ă‚­ăƒ£ăƒƒă‚·ăƒ¥",
150 "settings.app.translationHelp" : "Franză®ç¿»è¨³ä½œæ¥­ă«ă”å”å›ă‚’ă願ă„ă—ă¾ă™ă€‚", 170 "settings.app.translationHelp" : "Franză®ç¿»è¨³ä½œæ¥­ă«ă”å”å›ă‚’ă願ă„ă—ă¾ă™ă€‚",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "知ă‚åˆă„ă‚’æ‹›å¾…ă™ă‚‹", 177 "settings.navigation.inviteFriends" : "知ă‚åˆă„ă‚’æ‹›å¾…ă™ă‚‹",
158 "settings.navigation.logout" : "ăƒ­ă‚°ă‚¢ă‚¦ăƒˆ", 178 "settings.navigation.logout" : "ăƒ­ă‚°ă‚¢ă‚¦ăƒˆ",
159 "settings.navigation.settings" : "設å®", 179 "settings.navigation.settings" : "設å®",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "利用中ă®ă‚µăƒ¼ăƒ“ă‚¹", 181 "settings.navigation.yourServices" : "利用中ă®ă‚µăƒ¼ăƒ“ă‚¹",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "ă™ă¹ă¦ă®ă‚µăƒ¼ăƒ“ă‚¹", 183 "settings.recipes.all" : "ă™ă¹ă¦ă®ă‚µăƒ¼ăƒ“ă‚¹",
162 "settings.recipes.dev" : "開発版", 184 "settings.recipes.dev" : "開発版",
163 "settings.recipes.headline" : "利用å¯èƒ½ăªă‚µăƒ¼ăƒ“ă‚¹", 185 "settings.recipes.headline" : "利用å¯èƒ½ăªă‚µăƒ¼ăƒ“ă‚¹",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "ă™ă¹ă¦ă®æ–°è¦ăƒ¡ăƒƒă‚»ăƒ¼ă‚¸ă«ă¤ă„ă¦ăƒăƒƒă‚¸ă‚’表示ă™ă‚‹", 214 "settings.service.form.indirectMessages" : "ă™ă¹ă¦ă®æ–°è¦ăƒ¡ăƒƒă‚»ăƒ¼ă‚¸ă«ă¤ă„ă¦ăƒăƒƒă‚¸ă‚’表示ă™ă‚‹",
193 "settings.service.form.isMutedInfo" : "ç„¡å¹åŒ–ă•ă‚Œă¦ă„ă‚‹å ´åˆă€å…¨ă¦ă®é€çŸ¥éŸ³ă‚„ă‚ªăƒ¼ăƒ‡ă‚£ă‚ªå†ç”Ÿă¯ç„¡éŸ³ă«ăªă‚ă¾ă™", 215 "settings.service.form.isMutedInfo" : "ç„¡å¹åŒ–ă•ă‚Œă¦ă„ă‚‹å ´åˆă€å…¨ă¦ă®é€çŸ¥éŸ³ă‚„ă‚ªăƒ¼ăƒ‡ă‚£ă‚ªå†ç”Ÿă¯ç„¡éŸ³ă«ăªă‚ă¾ă™",
194 "settings.service.form.name" : "ă‚µăƒ¼ăƒ“ă‚¹å", 216 "settings.service.form.name" : "ă‚µăƒ¼ăƒ“ă‚¹å",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "HTTP\/HTTPSă®ăƒ—ăƒ­ă‚­ă‚·è¨­å®",
196 "settings.service.form.proxy.host" : "ăƒ—ăƒ­ă‚­ă‚·ă‚µăƒ¼ăƒăƒ¼\/IP", 218 "settings.service.form.proxy.host" : "ăƒ—ăƒ­ă‚­ă‚·ă‚µăƒ¼ăƒăƒ¼\/IP",
197 "settings.service.form.proxy.info" : "ăƒ—ăƒ­ă‚­ă‚·è¨­å®ă¯Franz ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă§åŒæœŸă•ă‚Œă¾ă›ă‚“。", 219 "settings.service.form.proxy.info" : "ăƒ—ăƒ­ă‚­ă‚·è¨­å®ă¯Franz ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă§åŒæœŸă•ă‚Œă¾ă›ă‚“。",
198 "settings.service.form.proxy.isEnabled" : "ăƒ—ăƒ­ă‚­ă‚·è¨­å®ă‚’有å¹ă«ă™ă‚‹", 220 "settings.service.form.proxy.isEnabled" : "ăƒ—ăƒ­ă‚­ă‚·è¨­å®ă‚’有å¹ă«ă™ă‚‹",
199 "settings.service.form.proxy.password" : "ăƒ‘ă‚¹ăƒ¯ăƒ¼ăƒ‰ï¼ˆä»»æ„)", 221 "settings.service.form.proxy.password" : "ăƒ‘ă‚¹ăƒ¯ăƒ¼ăƒ‰ï¼ˆä»»æ„)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "ăƒăƒ¼ăƒˆ",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "ăƒ—ăƒ­ă‚­ă‚·è¨­å®ă‚’変更ă—ă¦ă‹ă‚‰ă€Franză‚’å†èµ·å‹•ă—ă¦ăă ă•ă„",
202 "settings.service.form.proxy.user" : "ăƒ¦ăƒ¼ă‚¶ăƒ¼å(任æ„)", 224 "settings.service.form.proxy.user" : "ăƒ¦ăƒ¼ă‚¶ăƒ¼å(任æ„)",
203 "settings.service.form.saveButton" : "ă‚µăƒ¼ăƒ“ă‚¹ă®ä¿å­˜", 225 "settings.service.form.saveButton" : "ă‚µăƒ¼ăƒ“ă‚¹ă®ä¿å­˜",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "ăƒ›ă‚¹ăƒˆ", 226 "settings.service.form.tabHosted" : "ăƒ›ă‚¹ăƒˆ",
207 "settings.service.form.tabOnPremise" : "ă‚»ăƒ«ăƒ•ăƒ›ă‚¹ăƒˆ â­ï¸", 227 "settings.service.form.tabOnPremise" : "ă‚»ăƒ«ăƒ•ăƒ›ă‚¹ăƒˆ â­ï¸",
208 "settings.service.form.team" : "ăƒăƒ¼ăƒ ", 228 "settings.service.form.team" : "ăƒăƒ¼ăƒ ",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’æ¢ă™", 232 "settings.services.discoverServices" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’æ¢ă™",
213 "settings.services.headline" : "利用中ă®ă‚µăƒ¼ăƒ“ă‚¹", 233 "settings.services.headline" : "利用中ă®ă‚µăƒ¼ăƒ“ă‚¹",
214 "settings.services.noServicesAdded" : "ă¾ă ă€ă©ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚‚è¿½å ă•ă‚Œă¦ă„ă¾ă›ă‚“。", 234 "settings.services.noServicesAdded" : "ă¾ă ă€ă©ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚‚è¿½å ă•ă‚Œă¦ă„ă¾ă›ă‚“。",
235 "settings.services.servicesRequestFailed" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’èª­ă¿è¾¼ă‚€ă“ă¨ăŒă§ăă¾ă›ă‚“ă§ă—ăŸ",
215 "settings.services.tooltip.isDisabled" : "ă‚µăƒ¼ăƒ“ă‚¹ăŒç„¡å¹ă§ă™", 236 "settings.services.tooltip.isDisabled" : "ă‚µăƒ¼ăƒ“ă‚¹ăŒç„¡å¹ă§ă™",
216 "settings.services.tooltip.isMuted" : "無音ă¨ăªă£ă¦ă„ă¾ă™", 237 "settings.services.tooltip.isMuted" : "無音ă¨ăªă£ă¦ă„ă¾ă™",
217 "settings.services.tooltip.notificationsDisabled" : "é€çŸ¥ă¯ç„¡å¹ă§ă™", 238 "settings.services.tooltip.notificationsDisabled" : "é€çŸ¥ă¯ç„¡å¹ă§ă™",
218 "settings.services.updatedInfo" : "変更内容ăŒä¿å­˜ă•ă‚Œă¾ă—ăŸ", 239 "settings.services.updatedInfo" : "変更内容ăŒä¿å­˜ă•ă‚Œă¾ă—ăŸ",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "ăƒăƒ¼ăƒ ",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "法人", 246 "settings.user.form.accountType.company" : "法人",
220 "settings.user.form.accountType.individual" : "個人", 247 "settings.user.form.accountType.individual" : "個人",
221 "settings.user.form.accountType.label" : "ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă®ç¨®é¡", 248 "settings.user.form.accountType.label" : "ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă®ç¨®é¡",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "å", 252 "settings.user.form.firstname" : "å",
226 "settings.user.form.lastname" : "姓", 253 "settings.user.form.lastname" : "姓",
227 "settings.user.form.newPassword" : "æ–°ă—ă„ăƒ‘ă‚¹ăƒ¯ăƒ¼ăƒ‰", 254 "settings.user.form.newPassword" : "æ–°ă—ă„ăƒ‘ă‚¹ăƒ¯ăƒ¼ăƒ‰",
255 "settings.workspace.add.form.name" : "Name",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Name",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "ă‚‚ă†ä¸€åº¦è©¦ă™",
266 "settings.workspaces.updatedInfo" : "変更内容ăŒä¿å­˜ă•ă‚Œă¾ă—ăŸ",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ", 270 "sidebar.addNewService" : "ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "é€çŸ¥ă¨ă‚ªăƒ¼ăƒ‡ă‚£ă‚ªă‚’ç„¡å¹åŒ–", 272 "sidebar.muteApp" : "é€çŸ¥ă¨ă‚ªăƒ¼ăƒ‡ă‚£ă‚ªă‚’ç„¡å¹åŒ–",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "設å®", 274 "sidebar.settings" : "設å®",
231 "sidebar.unmuteApp" : "é€çŸ¥ă¨ă‚ªăƒ¼ăƒ‡ă‚£ă‚ªă‚’有å¹åŒ–", 275 "sidebar.unmuteApp" : "é€çŸ¥ă¨ă‚ªăƒ¼ăƒ‡ă‚£ă‚ªă‚’有å¹åŒ–",
232 "signup.company.label" : "法人", 276 "signup.company.label" : "法人",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "EU在ä½è€… : 地域ă®æ¶ˆè²»ç¨ăŒé©ç”¨ă•ă‚Œă‚‹å¯èƒ½æ€§ăŒă‚ă‚ă¾ă™", 288 "subscription.euTaxInfo" : "EU在ä½è€… : 地域ă®æ¶ˆè²»ç¨ăŒé©ç”¨ă•ă‚Œă‚‹å¯èƒ½æ€§ăŒă‚ă‚ă¾ă™",
245 "subscription.features.ads" : "広å‘ă¯ä¸€åˆ‡ă‚ă‚ă¾ă›ă‚“!", 289 "subscription.features.ads" : "広å‘ă¯ä¸€åˆ‡ă‚ă‚ă¾ă›ă‚“!",
246 "subscription.features.comingSoon" : "ă¾ă‚‚ăªă登場", 290 "subscription.features.comingSoon" : "ă¾ă‚‚ăªă登場",
247 "subscription.features.encryptedSync" : "æ—å·åŒ–ă•ă‚ŒăŸă‚»ăƒƒă‚·ăƒ§ăƒ³ă®åŒæœŸ",
248 "subscription.features.noInterruptions" : "å¾…ă¡æ™‚é–“ăªă—ă§Franz ă‚’ă使ă„ă„ăŸă ă‘ă¾ă™", 291 "subscription.features.noInterruptions" : "å¾…ă¡æ™‚é–“ăªă—ă§Franz ă‚’ă使ă„ă„ăŸă ă‘ă¾ă™",
249 "subscription.features.onpremise" : "HipChată®ă‚ˆă†ăªă‚ªăƒ³ăƒ—ăƒ¬ăƒŸă‚¹\/ăƒ›ă‚¹ăƒˆå‹ă‚µăƒ¼ăƒ“ă‚¹ă®è¿½å ",
250 "subscription.features.onpremise.mattermost" : "Mattermost ă®ă‚ˆă†ăªă‚ªăƒ³ăƒ—ăƒ¬ăƒŸă‚¹ï¼ˆè‡ªç¤¾é‹ç”¨ï¼‰å‹ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ă§ăă‚‹ă‚ˆă†ă«ăªă‚ă¾ă™", 292 "subscription.features.onpremise.mattermost" : "Mattermost ă®ă‚ˆă†ăªă‚ªăƒ³ăƒ—ăƒ¬ăƒŸă‚¹ï¼ˆè‡ªç¤¾é‹ç”¨ï¼‰å‹ă®ă‚µăƒ¼ăƒ“ă‚¹ă‚’è¿½å ă§ăă‚‹ă‚ˆă†ă«ăªă‚ă¾ă™",
251 "subscription.features.proxy" : "ăƒ—ăƒ­ă‚­ă‚·è¨­å®ăŒåˆ©ç”¨å¯èƒ½", 293 "subscription.features.proxy" : "ăƒ—ăƒ­ă‚­ă‚·è¨­å®ăŒåˆ©ç”¨å¯èƒ½",
252 "subscription.features.spellchecker" : "ă‚¹ăƒăƒ«ăƒă‚§ăƒƒă‚¯æ©Ÿèƒ½ă‚’ă使ă„ă„ăŸă ă‘ă¾ă™", 294 "subscription.features.spellchecker" : "ă‚¹ăƒăƒ«ăƒă‚§ăƒƒă‚¯æ©Ÿèƒ½ă‚’ă使ă„ă„ăŸă ă‘ă¾ă™",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "Franz Premium Supporteræœ‰æ–™ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă«ă¯ä»¥ä¸‹ăŒå«ă¾ă‚Œă¾ă™", 296 "subscription.includedFeatures" : "Franz Premium Supporteræœ‰æ–™ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă«ă¯ä»¥ä¸‹ăŒå«ă¾ă‚Œă¾ă™",
254 "subscription.paymentSessionError" : "支払ă„ăƒ•ă‚©ăƒ¼ăƒ ă‚’åˆæœŸåŒ–出æ¥ă¾ă›ă‚“", 297 "subscription.paymentSessionError" : "支払ă„ăƒ•ă‚©ăƒ¼ăƒ ă‚’åˆæœŸåŒ–出æ¥ă¾ă›ă‚“",
255 "subscription.submit.label" : "Franză®é–‹ç™ºă‚’支æ´ă—ăŸă„", 298 "subscription.submit.label" : "Franză®é–‹ç™ºă‚’支æ´ă—ăŸă„",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "å†èª­ă¿è¾¼ă¿", 312 "tabs.item.reload" : "å†èª­ă¿è¾¼ă¿",
270 "validation.email" : "{field}ă¯æ­£ă—ăă‚ă‚ă¾ă›ă‚“", 313 "validation.email" : "{field}ă¯æ­£ă—ăă‚ă‚ă¾ă›ă‚“",
271 "validation.minLength" : "{field}ă¯å°‘ăªăă¨ă‚‚{length}文字以ä¸ă§ăªă‘ă‚Œă°ăªă‚ă¾ă›ă‚“", 314 "validation.minLength" : "{field}ă¯å°‘ăªăă¨ă‚‚{length}文字以ä¸ă§ăªă‘ă‚Œă°ăªă‚ă¾ă›ă‚“",
315 "validation.oneRequired" : "å°‘ăªăă¨ă‚‚1ă¤ă¯å¿…è¦ă§ă™",
272 "validation.required" : "{field}ă¯å¿…é ˆă§ă™", 316 "validation.required" : "{field}ă¯å¿…é ˆă§ă™",
273 "validation.url" : "{field}ă¯æ­£ă—ă„URLă§ă¯ă‚ă‚ă¾ă›ă‚“", 317 "validation.url" : "{field}ă¯æ­£ă—ă„URLă§ă¯ă‚ă‚ă¾ă›ă‚“",
274 "welcome.loginButton" : "ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă«ăƒ­ă‚°ă‚¤ăƒ³", 318 "welcome.loginButton" : "ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă«ăƒ­ă‚°ă‚¤ăƒ³",
275 "welcome.signupButton" : "ç„¡æ–™ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă‚’ä½œæˆ", 319 "welcome.signupButton" : "ç„¡æ–™ă‚¢ă‚«ă‚¦ăƒ³ăƒˆă‚’ä½œæˆ",
276 "welcome.slogan" : "Messaging that works for you" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "ă™ă¹ă¦ă®ă‚µăƒ¼ăƒ“ă‚¹",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json
index 632ca618e..af224c115 100644
--- a/src/i18n/locales/ka.json
+++ b/src/i18n/locales/ka.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ", 2 "app.errorHandler.action" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Something went wrong",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 5 "feature.delayApp.action" : "Get a Franz Supporter License",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 6 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 7 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Franz-ის áƒáƒœáƒáƒáƒ˜áƒœ სერვისთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ", 15 "global.api.unhealthy" : "Franz-ის áƒáƒœáƒáƒáƒ˜áƒœ სერვისთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ",
8 "global.notConnectedToTheInternet" : "თქვენ áƒáƒ  ხáƒáƒ áƒ— ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბუáƒáƒ˜.", 16 "global.notConnectedToTheInternet" : "თქვენ áƒáƒ  ხáƒáƒ áƒ— ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბუáƒáƒ˜.",
17 "global.spellchecker.useDefault" : "Use System Default ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Spell checking language",
9 "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Franz 4-ის სერვისები", 21 "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Franz 4-ის სერვისები",
10 "import.notSupportedHeadline" : "სერვისები ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რიáƒáƒ˜ Franz 5-ში", 22 "import.notSupportedHeadline" : "სერვისები ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რიáƒáƒ˜ Franz 5-ში",
11 "import.skip.label" : "I want to add services manually", 23 "import.skip.label" : "I want to add services manually",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "შესვáƒáƒ", 44 "login.submit.label" : "შესვáƒáƒ",
33 "login.tokenExpired" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜ ხეáƒáƒáƒ®áƒáƒ.", 45 "login.tokenExpired" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜ ხეáƒáƒáƒ®áƒáƒ.",
34 "menu.app.about" : "Franz-ის შესáƒáƒ®áƒ”ბ", 46 "menu.app.about" : "Franz-ის შესáƒáƒ®áƒ”ბ",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Hide", 48 "menu.app.hide" : "Hide",
36 "menu.app.hideOthers" : "სხვების დáƒáƒ›áƒáƒáƒ•áƒ", 49 "menu.app.hideOthers" : "სხვების დáƒáƒ›áƒáƒáƒ•áƒ",
37 "menu.app.quit" : "გáƒáƒ›áƒáƒ¡áƒ•áƒáƒ", 50 "menu.app.quit" : "გáƒáƒ›áƒáƒ¡áƒ•áƒáƒ",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Support", 72 "menu.help.support" : "Support",
60 "menu.help.tos" : "Terms of Service", 73 "menu.help.tos" : "Terms of Service",
61 "menu.services" : "Services", 74 "menu.services" : "Services",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Add New Service...", 76 "menu.services.addNewService" : "Add New Service...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "View", 78 "menu.view" : "View",
64 "menu.view.enterFullScreen" : "Enter Full Screen", 79 "menu.view.enterFullScreen" : "Enter Full Screen",
65 "menu.view.exitFullScreen" : "Exit Full Screen", 80 "menu.view.exitFullScreen" : "Exit Full Screen",
@@ -74,6 +89,11 @@
74 "menu.window" : "Window", 89 "menu.window" : "Window",
75 "menu.window.close" : "Close", 90 "menu.window.close" : "Close",
76 "menu.window.minimize" : "Minimize", 91 "menu.window.minimize" : "Minimize",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "ყვეáƒáƒ სერვისი",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "მეიáƒáƒ˜", 97 "password.email.label" : "მეიáƒáƒ˜",
78 "password.headline" : "áƒáƒáƒ áƒáƒáƒ˜áƒ¡ áƒáƒ¦áƒ“გენáƒ", 98 "password.headline" : "áƒáƒáƒ áƒáƒáƒ˜áƒ¡ áƒáƒ¦áƒ“გენáƒ",
79 "password.link.login" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜", 99 "password.link.login" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜",
@@ -97,6 +117,7 @@
97 "service.errorHandler.headline" : "Oh no!", 117 "service.errorHandler.headline" : "Oh no!",
98 "service.errorHandler.message" : "შეცდáƒáƒ›áƒ", 118 "service.errorHandler.message" : "შეცდáƒáƒ›áƒ",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} has failed to load.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "დáƒáƒ¬áƒ§áƒ”ბáƒ", 121 "services.getStarted" : "დáƒáƒ¬áƒ§áƒ”ბáƒ",
101 "services.welcome" : "მáƒáƒ’ესáƒáƒáƒ›áƒ”ბით Franz-ზე", 122 "services.welcome" : "მáƒáƒ’ესáƒáƒáƒ›áƒ”ბით Franz-ზე",
102 "settings.account.account.editButton" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ მáƒáƒ áƒ—ვáƒ", 123 "settings.account.account.editButton" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ მáƒáƒ áƒ—ვáƒ",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "გáƒáƒ“მáƒáƒ¬áƒ”რáƒ", 138 "settings.account.invoiceDownload" : "გáƒáƒ“მáƒáƒ¬áƒ”რáƒ",
118 "settings.account.manageSubscription.label" : "თქვენი გáƒáƒ›áƒáƒ¬áƒ”რის მáƒáƒ áƒ—ვáƒ", 139 "settings.account.manageSubscription.label" : "თქვენი გáƒáƒ›áƒáƒ¬áƒ”რის მáƒáƒ áƒ—ვáƒ",
119 "settings.account.successInfo" : "თქვენი ცვáƒáƒ˜áƒáƒ”ბები შენáƒáƒ®áƒ£áƒáƒ˜áƒ", 140 "settings.account.successInfo" : "თქვენი ცვáƒáƒ˜áƒáƒ”ბები შენáƒáƒ®áƒ£áƒáƒ˜áƒ",
141 "settings.account.tryReloadServices" : "სცáƒáƒ“ეთ ხეáƒáƒáƒ®áƒáƒ",
120 "settings.account.tryReloadUserInfoRequest" : "სცáƒáƒ“ეთ ხეáƒáƒáƒ®áƒáƒ", 142 "settings.account.tryReloadUserInfoRequest" : "სცáƒáƒ“ეთ ხეáƒáƒáƒ®áƒáƒ",
121 "settings.account.userInfoRequestFailed" : "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბáƒáƒ˜áƒ¡ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ", 143 "settings.account.userInfoRequestFailed" : "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბáƒáƒ˜áƒ¡ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრვერ მáƒáƒ®áƒ”რხდáƒ",
122 "settings.app.buttonClearAllCache" : "Clear cache", 144 "settings.app.buttonClearAllCache" : "Clear cache",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "ჩáƒáƒ áƒ—ეთ ბეტრვერსიები", 151 "settings.app.form.beta" : "ჩáƒáƒ áƒ—ეთ ბეტრვერსიები",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Join the Dark Side",
131 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", 153 "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration",
132 "settings.app.form.enableMenuBar" : "Show Franz in Menu Bar",
133 "settings.app.form.enableSpellchecking" : "Enable spell checking", 154 "settings.app.form.enableSpellchecking" : "Enable spell checking",
134 "settings.app.form.enableSystemTray" : "áƒáƒ©áƒ•áƒ”ნეთ Franz სისტემის უჯრáƒáƒ¨áƒ˜", 155 "settings.app.form.enableSystemTray" : "áƒáƒ©áƒ•áƒ”ნეთ Franz სისტემის უჯრáƒáƒ¨áƒ˜",
135 "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock",
136 "settings.app.form.language" : "ენáƒ", 156 "settings.app.form.language" : "ენáƒ",
137 "settings.app.form.minimizeToSystemTray" : "ჩáƒáƒ™áƒ”ცეთ Franz სისტემის უჯრáƒáƒ¨áƒ˜", 157 "settings.app.form.minimizeToSystemTray" : "ჩáƒáƒ™áƒ”ცეთ Franz სისტემის უჯრáƒáƒ¨áƒ˜",
138 "settings.app.form.runInBackground" : "დáƒáƒ¢áƒáƒ•áƒ”თ Franz გáƒáƒ¨áƒ•áƒ”ბუáƒáƒ˜ რáƒáƒ“ესáƒáƒª ფáƒáƒœáƒ¯áƒáƒ áƒ დáƒáƒ˜áƒ®áƒ£áƒ áƒ”ბáƒ", 158 "settings.app.form.runInBackground" : "დáƒáƒ¢áƒáƒ•áƒ”თ Franz გáƒáƒ¨áƒ•áƒ”ბუáƒáƒ˜ რáƒáƒ“ესáƒáƒª ფáƒáƒœáƒ¯áƒáƒ áƒ დáƒáƒ˜áƒ®áƒ£áƒ áƒ”ბáƒ",
139 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 159 "settings.app.form.showDisabledServices" : "Display disabled services tabs",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "áƒáƒáƒ áƒáƒ›áƒ”ტრები", 161 "settings.app.headline" : "áƒáƒáƒ áƒáƒ›áƒ”ტრები",
143 "settings.app.headlineAdvanced" : "Advanced", 162 "settings.app.headlineAdvanced" : "Advanced",
144 "settings.app.headlineAppearance" : "Appearance", 163 "settings.app.headlineAppearance" : "Appearance",
145 "settings.app.headlineGeneral" : "მთáƒáƒ•áƒáƒ áƒ˜", 164 "settings.app.headlineGeneral" : "მთáƒáƒ•áƒáƒ áƒ˜",
146 "settings.app.headlineLanguage" : "ენáƒ", 165 "settings.app.headlineLanguage" : "ენáƒ",
147 "settings.app.headlineUpdates" : "გáƒáƒœáƒáƒ®áƒáƒ”ბები", 166 "settings.app.headlineUpdates" : "გáƒáƒœáƒáƒ®áƒáƒ”ბები",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Changes require restart", 168 "settings.app.restartRequired" : "Changes require restart",
149 "settings.app.subheadlineCache" : "Cache", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 170 "settings.app.translationHelp" : "Help us to translate Franz into your language.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Invite Friends", 177 "settings.navigation.inviteFriends" : "Invite Friends",
158 "settings.navigation.logout" : "გáƒáƒ¡áƒ•áƒáƒ", 178 "settings.navigation.logout" : "გáƒáƒ¡áƒ•áƒáƒ",
159 "settings.navigation.settings" : "áƒáƒáƒ áƒáƒ›áƒ”ტრები", 179 "settings.navigation.settings" : "áƒáƒáƒ áƒáƒ›áƒ”ტრები",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "თქვენი სერვისები", 181 "settings.navigation.yourServices" : "თქვენი სერვისები",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "ყვეáƒáƒ სერვისი", 183 "settings.recipes.all" : "ყვეáƒáƒ სერვისი",
162 "settings.recipes.dev" : "გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ áƒ”ბáƒ", 184 "settings.recipes.dev" : "გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ áƒ”ბáƒ",
163 "settings.recipes.headline" : "ხეáƒáƒ›áƒ˜áƒ¡áƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ სერვისები", 185 "settings.recipes.headline" : "ხეáƒáƒ›áƒ˜áƒ¡áƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ სერვისები",
@@ -201,8 +223,6 @@
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "User (optional)",
203 "settings.service.form.saveButton" : "სერვისის შენáƒáƒ®áƒ•áƒ", 225 "settings.service.form.saveButton" : "სერვისის შენáƒáƒ®áƒ•áƒ",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒáƒ˜", 226 "settings.service.form.tabHosted" : "დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒáƒ˜",
207 "settings.service.form.tabOnPremise" : "თვით დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒáƒ˜ â­ï¸", 227 "settings.service.form.tabOnPremise" : "თვით დáƒáƒ°áƒáƒ¡áƒ¢áƒ˜áƒáƒ˜ â­ï¸",
208 "settings.service.form.team" : "გუნდი", 228 "settings.service.form.team" : "გუნდი",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "áƒáƒ¦áƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”თ სერვისები", 232 "settings.services.discoverServices" : "áƒáƒ¦áƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”თ სერვისები",
213 "settings.services.headline" : "თქვენი სერვისები", 233 "settings.services.headline" : "თქვენი სერვისები",
214 "settings.services.noServicesAdded" : "თქვენ ჯერ áƒáƒ  გáƒáƒ¥áƒ•áƒ— სერვისები დáƒáƒ›áƒáƒ¢áƒ”ბუáƒáƒ˜.", 234 "settings.services.noServicesAdded" : "თქვენ ჯერ áƒáƒ  გáƒáƒ¥áƒ•áƒ— სერვისები დáƒáƒ›áƒáƒ¢áƒ”ბუáƒáƒ˜.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "სერვისი გáƒáƒ—იშუáƒáƒ˜áƒ", 236 "settings.services.tooltip.isDisabled" : "სერვისი გáƒáƒ—იშუáƒáƒ˜áƒ",
216 "settings.services.tooltip.isMuted" : "All sounds are muted", 237 "settings.services.tooltip.isMuted" : "All sounds are muted",
217 "settings.services.tooltip.notificationsDisabled" : "შეტყáƒáƒ‘ინებები გáƒáƒ—იშუáƒáƒ˜áƒ", 238 "settings.services.tooltip.notificationsDisabled" : "შეტყáƒáƒ‘ინებები გáƒáƒ—იშუáƒáƒ˜áƒ",
218 "settings.services.updatedInfo" : "ცვáƒáƒ˜áƒáƒ”ბები შენáƒáƒ®áƒ£áƒáƒ˜áƒ", 239 "settings.services.updatedInfo" : "ცვáƒáƒ˜áƒáƒ”ბები შენáƒáƒ®áƒ£áƒáƒ˜áƒ",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "გუნდი",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "კáƒáƒ›áƒáƒáƒœáƒ˜áƒ", 246 "settings.user.form.accountType.company" : "კáƒáƒ›áƒáƒáƒœáƒ˜áƒ",
220 "settings.user.form.accountType.individual" : "ინდივიდუáƒáƒáƒ£áƒ áƒ˜", 247 "settings.user.form.accountType.individual" : "ინდივიდუáƒáƒáƒ£áƒ áƒ˜",
221 "settings.user.form.accountType.label" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ტიáƒáƒ˜", 248 "settings.user.form.accountType.label" : "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ტიáƒáƒ˜",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "First Name", 252 "settings.user.form.firstname" : "First Name",
226 "settings.user.form.lastname" : "Last Name", 253 "settings.user.form.lastname" : "Last Name",
227 "settings.user.form.newPassword" : "áƒáƒ®áƒáƒáƒ˜ áƒáƒáƒ áƒáƒáƒ˜", 254 "settings.user.form.newPassword" : "áƒáƒ®áƒáƒáƒ˜ áƒáƒáƒ áƒáƒáƒ˜",
255 "settings.workspace.add.form.name" : "Name",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Name",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "სცáƒáƒ“ეთ ხეáƒáƒáƒ®áƒáƒ",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Add new service", 270 "sidebar.addNewService" : "Add new service",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Disable notifications & audio", 272 "sidebar.muteApp" : "Disable notifications & audio",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "áƒáƒáƒ áƒáƒ›áƒ”ტრები", 274 "sidebar.settings" : "áƒáƒáƒ áƒáƒ›áƒ”ტრები",
231 "sidebar.unmuteApp" : "Enable notifications & audio", 275 "sidebar.unmuteApp" : "Enable notifications & audio",
232 "signup.company.label" : "კáƒáƒ›áƒáƒáƒœáƒ˜áƒ", 276 "signup.company.label" : "კáƒáƒ›áƒáƒáƒœáƒ˜áƒ",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 288 "subscription.euTaxInfo" : "EU residents: local sales tax may apply",
245 "subscription.features.ads" : "áƒáƒ áƒáƒœáƒáƒ˜áƒ áƒ˜ რეკáƒáƒáƒ›áƒ”ბი, áƒáƒ áƒáƒ¡áƒ“რáƒáƒ¡!", 289 "subscription.features.ads" : "áƒáƒ áƒáƒœáƒáƒ˜áƒ áƒ˜ რეკáƒáƒáƒ›áƒ”ბი, áƒáƒ áƒáƒ¡áƒ“რáƒáƒ¡!",
246 "subscription.features.comingSoon" : "მáƒáƒáƒ”", 290 "subscription.features.comingSoon" : "მáƒáƒáƒ”",
247 "subscription.features.encryptedSync" : "დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ£áƒáƒ˜ სესიის სინქრáƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 291 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
249 "subscription.features.onpremise" : "on-premise\/hosted სერვისების დáƒáƒ›áƒáƒ¢áƒ”ბáƒ, რáƒáƒ’áƒáƒ áƒ˜áƒªáƒáƒ HipChat",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services", 293 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Support for spellchecker",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "ფáƒáƒ¡áƒ˜áƒáƒœáƒ˜ Franz-ის áƒáƒ áƒ”მიუმ მხáƒáƒ áƒ›áƒ“áƒáƒ›áƒ­áƒ”რი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜", 296 "subscription.includedFeatures" : "ფáƒáƒ¡áƒ˜áƒáƒœáƒ˜ Franz-ის áƒáƒ áƒ”მიუმ მხáƒáƒ áƒ›áƒ“áƒáƒ›áƒ­áƒ”რი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜",
254 "subscription.paymentSessionError" : "გáƒáƒ“áƒáƒ®áƒ“ის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ¡ ინიციáƒáƒáƒ˜áƒ–áƒáƒªáƒ˜áƒ ვერ მáƒáƒ®áƒ”რხდáƒ", 297 "subscription.paymentSessionError" : "გáƒáƒ“áƒáƒ®áƒ“ის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ¡ ინიციáƒáƒáƒ˜áƒ–áƒáƒªáƒ˜áƒ ვერ მáƒáƒ®áƒ”რხდáƒ",
255 "subscription.submit.label" : "მინდრხეáƒáƒ˜ შევუწყრFranz-ის გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ áƒ”ბáƒáƒ¡", 298 "subscription.submit.label" : "მინდრხეáƒáƒ˜ შევუწყრFranz-ის გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ áƒ”ბáƒáƒ¡",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ", 312 "tabs.item.reload" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ",
270 "validation.email" : "{field} is not valid", 313 "validation.email" : "{field} is not valid",
271 "validation.minLength" : "{field} should be at least {length} characters long", 314 "validation.minLength" : "{field} should be at least {length} characters long",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} is required", 316 "validation.required" : "{field} is required",
273 "validation.url" : "{field} is not a valid URL", 317 "validation.url" : "{field} is not a valid URL",
274 "welcome.loginButton" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜", 318 "welcome.loginButton" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜",
275 "welcome.signupButton" : "შექმენი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜, ეს უფáƒáƒ¡áƒáƒ", 319 "welcome.signupButton" : "შექმენი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜, ეს უფáƒáƒ¡áƒáƒ",
276 "welcome.slogan" : "შეტყáƒáƒ‘ინების áƒáƒáƒáƒ˜áƒ™áƒáƒªáƒ˜áƒ, რáƒáƒ›áƒ”áƒáƒ˜áƒª მუშáƒáƒáƒ‘ს შენთვის" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "ყვეáƒáƒ სერვისი",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json
index c38a7f024..2854fcb09 100644
--- a/src/i18n/locales/nl-BE.json
+++ b/src/i18n/locales/nl-BE.json
@@ -1,124 +1,146 @@
1{ 1{
2 "app.errorHandler.action" : "Herladen", 2 "app.errorHandler.action" : "Herladen",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Er ging iets mis",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.action" : "Neem een Franz Supporter Licentie ",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.headline" : "Neem een Franz Supporter Licentie om niet meer te hoeven wachten",
7 "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services", 15 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services",
8 "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.", 16 "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.",
17 "global.spellchecker.useDefault" : "Gebruik Systeemstandaard ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Taal spellingscontrole",
9 "import.headline" : "Importeer je Franz 4 services", 21 "import.headline" : "Importeer je Franz 4 services",
10 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5", 22 "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5",
11 "import.skip.label" : "Ik wens services manueel toe te voegen", 23 "import.skip.label" : "Ik wil services handmatig toevoegen",
12 "import.submit.label" : "Importeer services", 24 "import.submit.label" : "Importeer services",
13 "infobar.buttonChangelog" : "Wat is er nieuw?", 25 "infobar.buttonChangelog" : "Wat is er nieuw?",
14 "infobar.buttonInstallUpdate" : "Start opnieuw op & installeer de update", 26 "infobar.buttonInstallUpdate" : "Opnieuw opstarten & update installeren",
15 "infobar.buttonReloadServices" : "Herlaad de services", 27 "infobar.buttonReloadServices" : "Services opnieuw laden",
16 "infobar.requiredRequestsFailed" : "Kan de services en gebruikers informatie niet laden", 28 "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden",
17 "infobar.servicesUpdated" : "Je services zijn geĂ¼pdatet.", 29 "infobar.servicesUpdated" : "Je services zijn bijgewerkt.",
18 "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.", 30 "infobar.updateAvailable" : "Er is een nieuwe update voor Franz beschikbaar.",
19 "invite.email.label" : "E-mailadres", 31 "invite.email.label" : "E-mailadres",
20 "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", 32 "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit",
21 "invite.name.label" : "Naam", 33 "invite.name.label" : "Naam",
22 "invite.skip.label" : "Ik wil dit later doen", 34 "invite.skip.label" : "Ik wil dit later doen",
23 "invite.submit.label" : "Verzend uitnodigingen", 35 "invite.submit.label" : "Uitnodigingen verzenden",
24 "invite.successInfo" : "Uitnodiging met succes verzonden", 36 "invite.successInfo" : "Uitnodiging met succes verzonden",
25 "login.email.label" : "E-mailadres", 37 "login.email.label" : "E-mailadres",
26 "login.headline" : "Inloggen", 38 "login.headline" : "Inloggen",
27 "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig", 39 "login.invalidCredentials" : "E-mailadres of wachtwoord ongeldig",
28 "login.link.password" : "Wachtwoord resetten", 40 "login.link.password" : "Wachtwoord resetten",
29 "login.link.signup" : "Maak een gratis account", 41 "login.link.signup" : "Maak een gratis account aan",
30 "login.password.label" : "Wachtwoord", 42 "login.password.label" : "Wachtwoord",
31 "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.", 43 "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
32 "login.submit.label" : "Log in", 44 "login.submit.label" : "Inloggen",
33 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", 45 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
34 "menu.app.about" : "Over Franz", 46 "menu.app.about" : "Over Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Verbergen", 48 "menu.app.hide" : "Verbergen",
36 "menu.app.hideOthers" : "Andere verbergen", 49 "menu.app.hideOthers" : "Andere Verbergen",
37 "menu.app.quit" : "Afsluiten", 50 "menu.app.quit" : "Afsluiten",
38 "menu.app.settings" : "Instellingen", 51 "menu.app.settings" : "Instellingen",
39 "menu.app.unhide" : "Zichtbaar maken", 52 "menu.app.unhide" : "Tonen",
40 "menu.edit" : "Aanpassen", 53 "menu.edit" : "Bewerken",
41 "menu.edit.copy" : "Kopiëren", 54 "menu.edit.copy" : "Kopiëren",
42 "menu.edit.cut" : "Knippen", 55 "menu.edit.cut" : "Knippen",
43 "menu.edit.delete" : "Verwijderen", 56 "menu.edit.delete" : "Verwijderen",
44 "menu.edit.emojiSymbols" : "Emoji & Symbolen", 57 "menu.edit.emojiSymbols" : "Emoji & Symbolen",
45 "menu.edit.paste" : "Plakken", 58 "menu.edit.paste" : "Plakken",
46 "menu.edit.pasteAndMatchStyle" : "Plakken en stijl overeen laten komen", 59 "menu.edit.pasteAndMatchStyle" : "Plakken en stijl overeen laten komen",
47 "menu.edit.redo" : "Opnieuw uitvoeren", 60 "menu.edit.redo" : "Opnieuw doen",
48 "menu.edit.selectAll" : "Selecteer alles", 61 "menu.edit.selectAll" : "Selecteer Alles",
49 "menu.edit.speech" : "Spraakuitvoer", 62 "menu.edit.speech" : "Spraakuitvoer",
50 "menu.edit.startDictation" : "Beginnen met dicteren", 63 "menu.edit.startDictation" : "Beginnen met dicteren",
51 "menu.edit.startSpeaking" : "Begin met spreken", 64 "menu.edit.startSpeaking" : "Begin met Spreken",
52 "menu.edit.stopSpeaking" : "Stoppen met spreken", 65 "menu.edit.stopSpeaking" : "Stoppen met Spreken",
53 "menu.edit.undo" : "Ongedaan maken", 66 "menu.edit.undo" : "Ongedaan maken",
54 "menu.file" : "Bestand", 67 "menu.file" : "Bestand",
55 "menu.help" : "Help", 68 "menu.help" : "Help",
56 "menu.help.changelog" : "Logboek", 69 "menu.help.changelog" : "Logboek",
57 "menu.help.learnMore" : "Meer weten", 70 "menu.help.learnMore" : "Meer Weten",
58 "menu.help.privacy" : "Privacyverklaring", 71 "menu.help.privacy" : "Privacyverklaring",
59 "menu.help.support" : "Ondersteuning", 72 "menu.help.support" : "Ondersteuning",
60 "menu.help.tos" : "Servicevoorwaarden", 73 "menu.help.tos" : "Servicevoorwaarden",
61 "menu.services" : "Diensten", 74 "menu.services" : "Services",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Nieuwe service toevoegen...", 76 "menu.services.addNewService" : "Nieuwe service toevoegen...",
63 "menu.view" : "Beeld", 77 "menu.services.setNextServiceActive" : "Activate next service",
78 "menu.view" : "Weergave",
64 "menu.view.enterFullScreen" : "Volledig scherm openen", 79 "menu.view.enterFullScreen" : "Volledig scherm openen",
65 "menu.view.exitFullScreen" : "Volledig scherm verlaten", 80 "menu.view.exitFullScreen" : "Volledig scherm verlaten",
66 "menu.view.reloadFranz" : "Franz Herladen", 81 "menu.view.reloadFranz" : "Franz Herladen",
67 "menu.view.reloadService" : "Service herladen", 82 "menu.view.reloadService" : "Service Herladen",
68 "menu.view.resetZoom" : "Werkelijke grootte", 83 "menu.view.resetZoom" : "Werkelijke Grootte",
69 "menu.view.toggleDevTools" : "Toggle Developer Tools", 84 "menu.view.toggleDevTools" : "Ontwikkelaarstools Aan\/Uit",
70 "menu.view.toggleFullScreen" : "Volledig scherm aan\/uit", 85 "menu.view.toggleFullScreen" : "Volledig Scherm Aan\/Uit",
71 "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", 86 "menu.view.toggleServiceDevTools" : "Service Ontwikkelaarstools Aan\/Uit",
72 "menu.view.zoomIn" : "Inzoomen", 87 "menu.view.zoomIn" : "Inzoomen",
73 "menu.view.zoomOut" : "Uitzoomen", 88 "menu.view.zoomOut" : "Uitzoomen",
74 "menu.window" : "Venster", 89 "menu.window" : "Venster",
75 "menu.window.close" : "Sluiten", 90 "menu.window.close" : "Sluiten",
76 "menu.window.minimize" : "Minimaliseren", 91 "menu.window.minimize" : "Minimaliseren",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Alle services",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "E-mailadres", 97 "password.email.label" : "E-mailadres",
78 "password.headline" : "Wachtwoord resetten", 98 "password.headline" : "Wachtwoord resetten",
79 "password.link.login" : "Log in op je account", 99 "password.link.login" : "Log in op je account",
80 "password.link.signup" : "Maak een gratis account", 100 "password.link.signup" : "Maak een gratis account",
81 "password.noUser" : "Geen gebruiker bekend met dat e-mailadres", 101 "password.noUser" : "Geen gebruiker gevonden met dat e-mailadres",
82 "password.submit.label" : "Doorgaan", 102 "password.submit.label" : "Verzenden",
83 "password.successInfo" : "Controleer alsjeblieft je e-mail", 103 "password.successInfo" : "Controleer alsjeblieft je e-mail",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "Upgrade account",
85 "pricing.headline" : "Ondersteun Franz", 105 "pricing.headline" : "Steun Franz",
86 "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz niet ondersteunen.", 106 "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz niet ondersteunen.",
87 "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen", 107 "pricing.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen",
88 "pricing.support.label" : "Selecteer je ondersteuningsplan", 108 "pricing.support.label" : "Selecteer je ondersteuningsplan",
89 "service.crashHandler.action" : "{naam} herladen", 109 "service.crashHandler.action" : "{naam} herladen",
90 "service.crashHandler.autoReload" : "Automatisch herstellen {name} proberen in {seconds} seconden", 110 "service.crashHandler.autoReload" : "Ga proberen om {name} te herstellen over {seconds} seconden",
91 "service.crashHandler.headline" : "Oh nee!", 111 "service.crashHandler.headline" : "Oh nee!",
92 "service.crashHandler.text" : "{name} heeft een probleem veroorzaakt.", 112 "service.crashHandler.text" : "{name} heeft een probleem veroorzaakt.",
93 "service.disabledHandler.action" : "Activeer {name}", 113 "service.disabledHandler.action" : "Activeer {name}",
94 "service.disabledHandler.headline" : "{name} is uitgeschakeld", 114 "service.disabledHandler.headline" : "{name} is uitgeschakeld",
95 "service.errorHandler.action" : "{naam} herladen", 115 "service.errorHandler.action" : "{naam} herladen",
96 "service.errorHandler.editAction" : "{name} aanpassen", 116 "service.errorHandler.editAction" : "Bewerk {name}",
97 "service.errorHandler.headline" : "Oh nee!", 117 "service.errorHandler.headline" : "Oh nee!",
98 "service.errorHandler.message" : "Fout", 118 "service.errorHandler.message" : "Fout",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} kon niet geladen worden.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Beginnen", 121 "services.getStarted" : "Beginnen",
101 "services.welcome" : "Welkom bij Franz", 122 "services.welcome" : "Welkom bij Franz",
102 "settings.account.account.editButton" : "Bewerk account", 123 "settings.account.account.editButton" : "Account bewerken",
103 "settings.account.accountType.basic" : "Basis Account", 124 "settings.account.accountType.basic" : "Basis Account",
104 "settings.account.accountType.premium" : "Premium Supporter Account", 125 "settings.account.accountType.premium" : "Premium Supporter Account",
105 "settings.account.buttonSave" : "Profiel aanpassen", 126 "settings.account.buttonSave" : "Profiel bijwerken",
106 "settings.account.deleteAccount" : "Account verwijderen", 127 "settings.account.deleteAccount" : "Account verwijderen",
107 "settings.account.deleteEmailSent" : "U heeft een email ontvangen met een bevestiginslink om uw account te verwijderen. Uw account en de bijhorende gegevens kunnen niet meer worden herstel na deze actie!", 128 "settings.account.deleteEmailSent" : "U heeft een email ontvangen met een bevestiginslink om uw account te verwijderen. Uw account en de bijhorende gegevens kunnen niet meer worden herstel na deze actie!",
108 "settings.account.deleteInfo" : "Indien u uw Franz account nietmeer nodig heeft, kan u hier uw account en de gerelateerde gegegevens verwijderen.", 129 "settings.account.deleteInfo" : "Indien u uw Franz account niet meer nodig heeft, kan u hier uw account en alle gerelateerde gegevens verwijderen.",
109 "settings.account.headline" : "Account", 130 "settings.account.headline" : "Account",
110 "settings.account.headlineAccount" : "Account informatie", 131 "settings.account.headlineAccount" : "Account informatie",
111 "settings.account.headlineDangerZone" : "Gevaren Zone", 132 "settings.account.headlineDangerZone" : "Gevarenzone",
112 "settings.account.headlineInvoices" : "Facturen", 133 "settings.account.headlineInvoices" : "Facturen",
113 "settings.account.headlinePassword" : "Wijzig wachtwoord", 134 "settings.account.headlinePassword" : "Wijzig wachtwoord",
114 "settings.account.headlineProfile" : "Profiel aanpassen", 135 "settings.account.headlineProfile" : "Profiel bijwerken",
115 "settings.account.headlineSubscription" : "Je abonnement", 136 "settings.account.headlineSubscription" : "Je abonnement",
116 "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz", 137 "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz",
117 "settings.account.invoiceDownload" : "Download", 138 "settings.account.invoiceDownload" : "Download",
118 "settings.account.manageSubscription.label" : "Beheer je abonnement", 139 "settings.account.manageSubscription.label" : "Beheer je abonnement",
119 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", 140 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen",
141 "settings.account.tryReloadServices" : "Probeer opnieuw",
120 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", 142 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw",
121 "settings.account.userInfoRequestFailed" : "Kon gebruikerinformatie niet laden", 143 "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden",
122 "settings.app.buttonClearAllCache" : "Cache wissen", 144 "settings.app.buttonClearAllCache" : "Cache wissen",
123 "settings.app.buttonInstallUpdate" : "Herstart & installeer update", 145 "settings.app.buttonInstallUpdate" : "Herstart & installeer update",
124 "settings.app.buttonSearchForUpdate" : "Controleer op updates", 146 "settings.app.buttonSearchForUpdate" : "Controleer op updates",
@@ -126,47 +148,47 @@
126 "settings.app.currentVersion" : "Huidige versie:", 148 "settings.app.currentVersion" : "Huidige versie:",
127 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", 149 "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond",
128 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten", 150 "settings.app.form.autoLaunchOnStart" : "Lanceer Franz bij opstarten",
129 "settings.app.form.beta" : "Inclusief bèta versies", 151 "settings.app.form.beta" : "Inclusief beta versies",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Word lid van de Dark Side",
131 "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren", 153 "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren",
132 "settings.app.form.enableMenuBar" : "Toon Franz in Menu Bar",
133 "settings.app.form.enableSpellchecking" : "Spellingcontrole inschakelen", 154 "settings.app.form.enableSpellchecking" : "Spellingcontrole inschakelen",
134 "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk", 155 "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk",
135 "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock",
136 "settings.app.form.language" : "Taal", 156 "settings.app.form.language" : "Taal",
137 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", 157 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk",
138 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", 158 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt",
139 "settings.app.form.showDisabledServices" : "Display disabled services tabs", 159 "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Show unread message badge when notifications are disabled", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Instellingen", 161 "settings.app.headline" : "Instellingen",
143 "settings.app.headlineAdvanced" : "Advanced", 162 "settings.app.headlineAdvanced" : "Geavanceerd",
144 "settings.app.headlineAppearance" : "Appearance", 163 "settings.app.headlineAppearance" : "Weergave",
145 "settings.app.headlineGeneral" : "Algemeen", 164 "settings.app.headlineGeneral" : "Algemeen",
146 "settings.app.headlineLanguage" : "Taal", 165 "settings.app.headlineLanguage" : "Taal",
147 "settings.app.headlineUpdates" : "Updates", 166 "settings.app.headlineUpdates" : "Updates",
148 "settings.app.restartRequired" : "Changes require restart", 167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
168 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig",
149 "settings.app.subheadlineCache" : "Cache", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Help us to translate Franz into your language.", 170 "settings.app.translationHelp" : "Help ons om Franz te vertalen naar uw taal.",
151 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", 171 "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...",
152 "settings.app.updateStatusSearching" : "Zoekt naar updates", 172 "settings.app.updateStatusSearching" : "Zoekt naar updates",
153 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", 173 "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz",
154 "settings.invite.headline" : "Invite Friends", 174 "settings.invite.headline" : "Nodig vrienden uit",
155 "settings.navigation.account" : "Account", 175 "settings.navigation.account" : "Account",
156 "settings.navigation.availableServices" : "Beschikbare services", 176 "settings.navigation.availableServices" : "Beschikbare services",
157 "settings.navigation.inviteFriends" : "Invite Friends", 177 "settings.navigation.inviteFriends" : "Nodig vrienden uit",
158 "settings.navigation.logout" : "Uitloggen", 178 "settings.navigation.logout" : "Uitloggen",
159 "settings.navigation.settings" : "Instellingen", 179 "settings.navigation.settings" : "Instellingen",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Jouw services", 181 "settings.navigation.yourServices" : "Jouw services",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Alle services", 183 "settings.recipes.all" : "Alle services",
162 "settings.recipes.dev" : "Ontwikkeling", 184 "settings.recipes.dev" : "Ontwikkeling",
163 "settings.recipes.headline" : "Beschikbare services", 185 "settings.recipes.headline" : "Beschikbare services",
164 "settings.recipes.missingService" : "Missing a service?", 186 "settings.recipes.missingService" : "Mist er een service?",
165 "settings.recipes.mostPopular" : "Meest populair", 187 "settings.recipes.mostPopular" : "Meest populair",
166 "settings.recipes.nothingFound" : "Sorry, maar geen enkele service kwam overeen met je zoekterm.", 188 "settings.recipes.nothingFound" : "Sorry, maar geen enkele service kwam overeen met je zoekterm.",
167 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", 189 "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd",
168 "settings.searchService" : "Search service", 190 "settings.searchService" : "Service zoeken",
169 "settings.service.error.goBack" : "Terug naar de services", 191 "settings.service.error.goBack" : "Terug naar services",
170 "settings.service.error.headline" : "Fout", 192 "settings.service.error.headline" : "Fout",
171 "settings.service.error.message" : "Kon het service-recept niet laden.", 193 "settings.service.error.message" : "Kon het service-recept niet laden.",
172 "settings.service.form.addServiceHeadline" : "{name} toevoegen", 194 "settings.service.form.addServiceHeadline" : "{name} toevoegen",
@@ -177,62 +199,84 @@
177 "settings.service.form.customUrlValidationError" : "Kon de custom {name} server niet valideren.", 199 "settings.service.form.customUrlValidationError" : "Kon de custom {name} server niet valideren.",
178 "settings.service.form.deleteButton" : "Service verwijderen", 200 "settings.service.form.deleteButton" : "Service verwijderen",
179 "settings.service.form.editServiceHeadline" : "{name} aanpassen", 201 "settings.service.form.editServiceHeadline" : "{name} aanpassen",
180 "settings.service.form.enableAudio" : "Enable audio", 202 "settings.service.form.enableAudio" : "Audio inschakelen",
181 "settings.service.form.enableBadge" : "Show unread message badges", 203 "settings.service.form.enableBadge" : "Toon badges met ongelezen berichten",
182 "settings.service.form.enableDarkMode" : "Enable Dark Mode", 204 "settings.service.form.enableDarkMode" : "Dark Mode aanzetten",
183 "settings.service.form.enableNotification" : "Notificaties aanzetten", 205 "settings.service.form.enableNotification" : "Notificaties aanzetten",
184 "settings.service.form.enableService" : "Service aanzetten", 206 "settings.service.form.enableService" : "Service aanzetten",
185 "settings.service.form.headlineBadges" : "Unread message badges", 207 "settings.service.form.headlineBadges" : "Ongelezen berichten badges",
186 "settings.service.form.headlineGeneral" : "Algemeen", 208 "settings.service.form.headlineGeneral" : "Algemeen",
187 "settings.service.form.headlineNotifications" : "Notifications", 209 "settings.service.form.headlineNotifications" : "Meldingen",
188 "settings.service.form.icon" : "Custom icon", 210 "settings.service.form.icon" : "Aangepast icoon",
189 "settings.service.form.iconDelete" : "Verwijderen", 211 "settings.service.form.iconDelete" : "Verwijderen",
190 "settings.service.form.iconUpload" : "Drop your image, or click here", 212 "settings.service.form.iconUpload" : "Sleep en drop je afbeelding, of klik hier",
191 "settings.service.form.indirectMessageInfo" : "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", 213 "settings.service.form.indirectMessageInfo" : "Je wordt verwittigd over alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...",
192 "settings.service.form.indirectMessages" : "Toon berichten-badge voor alle nieuwe berichten", 214 "settings.service.form.indirectMessages" : "Toon berichten-badge voor alle nieuwe berichten",
193 "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", 215 "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldingsgeluiden en afgespeelde audio uitgeschakeld zijn",
194 "settings.service.form.name" : "Naam", 216 "settings.service.form.name" : "Naam",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Instellingen",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers.",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Proxy gebruiken",
199 "settings.service.form.proxy.password" : "Password (optional)", 221 "settings.service.form.proxy.password" : "Wachtwoord (optioneel)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Poort",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Start Franz opnieuw op na het aanpassen van proxy Instellingen.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "Gebruiker (optioneel)",
203 "settings.service.form.saveButton" : "Service bewaren", 225 "settings.service.form.saveButton" : "Service opslaan",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Gehost", 226 "settings.service.form.tabHosted" : "Gehost",
207 "settings.service.form.tabOnPremise" : "Intern gehost â­ï¸", 227 "settings.service.form.tabOnPremise" : "Intern gehost â­ï¸",
208 "settings.service.form.team" : "Team", 228 "settings.service.form.team" : "Team",
209 "settings.service.form.useHostedService" : "Use the hosted {name} service.", 229 "settings.service.form.useHostedService" : "Gebruik de gehoste {name} service.",
210 "settings.service.form.yourServices" : "Jouw services", 230 "settings.service.form.yourServices" : "Jouw services",
211 "settings.services.deletedInfo" : "Service werd verwijderd", 231 "settings.services.deletedInfo" : "Service werd verwijderd",
212 "settings.services.discoverServices" : "Services ontdekken", 232 "settings.services.discoverServices" : "Services ontdekken",
213 "settings.services.headline" : "Jouw services", 233 "settings.services.headline" : "Jouw services",
214 "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", 234 "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.",
215 "settings.services.tooltip.isDisabled" : "Service staat uit", 235 "settings.services.servicesRequestFailed" : "Could not load your services",
216 "settings.services.tooltip.isMuted" : "All sounds are muted", 236 "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld",
237 "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld",
217 "settings.services.tooltip.notificationsDisabled" : "Notificaties staan uit", 238 "settings.services.tooltip.notificationsDisabled" : "Notificaties staan uit",
218 "settings.services.updatedInfo" : "Je wijzigingen werden bewaard", 239 "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Team",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Bedrijf", 246 "settings.user.form.accountType.company" : "Bedrijf",
220 "settings.user.form.accountType.individual" : "Particulier", 247 "settings.user.form.accountType.individual" : "Particulier",
221 "settings.user.form.accountType.label" : "Account type", 248 "settings.user.form.accountType.label" : "Account type",
222 "settings.user.form.accountType.non-profit" : "Non-Profit", 249 "settings.user.form.accountType.non-profit" : "Non-Profit",
223 "settings.user.form.currentPassword" : "Huidig wachtwoord", 250 "settings.user.form.currentPassword" : "Huidig wachtwoord",
224 "settings.user.form.email" : "Email", 251 "settings.user.form.email" : "Email",
225 "settings.user.form.firstname" : "Naam", 252 "settings.user.form.firstname" : "Voornaam",
226 "settings.user.form.lastname" : "Achternaam", 253 "settings.user.form.lastname" : "Achternaam",
227 "settings.user.form.newPassword" : "Nieuw wachtwoord", 254 "settings.user.form.newPassword" : "Nieuw wachtwoord",
228 "sidebar.addNewService" : "!!!Add new service", 255 "settings.workspace.add.form.name" : "Naam",
229 "sidebar.muteApp" : "Disable notifications & audio", 256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Naam",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw",
266 "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
270 "sidebar.addNewService" : "Nieuw service toevoegen",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
272 "sidebar.muteApp" : "Berichten & geluid uitschakelen",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Instellingen", 274 "sidebar.settings" : "Instellingen",
231 "sidebar.unmuteApp" : "Enable notifications & audio", 275 "sidebar.unmuteApp" : "Berichten & geluid inschakelen",
232 "signup.company.label" : "Bedrijf", 276 "signup.company.label" : "Bedrijf",
233 "signup.email.label" : "E-mailadres", 277 "signup.email.label" : "E-mailadres",
234 "signup.emailDuplicate" : "Er bestaat reeds een gebruiker met dat e-mailadres", 278 "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres",
235 "signup.firstname.label" : "Naam", 279 "signup.firstname.label" : "Voornaam",
236 "signup.headline" : "Registreren", 280 "signup.headline" : "Registreren",
237 "signup.lastname.label" : "Achternaam", 281 "signup.lastname.label" : "Achternaam",
238 "signup.legal.info" : "Door een account aan te maken aanvaard je de", 282 "signup.legal.info" : "Door een account aan te maken aanvaard je de",
@@ -241,15 +285,14 @@
241 "signup.link.login" : "Al een account, inloggen?", 285 "signup.link.login" : "Al een account, inloggen?",
242 "signup.password.label" : "Wachtwoord", 286 "signup.password.label" : "Wachtwoord",
243 "signup.submit.label" : "Account aanmaken", 287 "signup.submit.label" : "Account aanmaken",
244 "subscription.euTaxInfo" : "EU residents: local sales tax may apply", 288 "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn",
245 "subscription.features.ads" : "Geen reclame, nooit!", 289 "subscription.features.ads" : "Geen reclame, nooit!",
246 "subscription.features.comingSoon" : "komt binnenkort", 290 "subscription.features.comingSoon" : "komt binnenkort",
247 "subscription.features.encryptedSync" : "Synchronisatie van geëncrypteerde sessies", 291 "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe",
249 "subscription.features.onpremise" : "Intern gehoste services zoals HipChat", 293 "subscription.features.proxy" : "Proxy ondersteuning voor services",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 294 "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck",
251 "subscription.features.proxy" : "Proxy support for services", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
252 "subscription.features.spellchecker" : "Support for spellchecker",
253 "subscription.includedFeatures" : "Een betalend account voor Franz omvat", 296 "subscription.includedFeatures" : "Een betalend account voor Franz omvat",
254 "subscription.paymentSessionError" : "Betalingsformulier kon niet geladen worden", 297 "subscription.paymentSessionError" : "Betalingsformulier kon niet geladen worden",
255 "subscription.submit.label" : "Ik wil de ontwikkeling van Franz steunen", 298 "subscription.submit.label" : "Ik wil de ontwikkeling van Franz steunen",
@@ -259,19 +302,30 @@
259 "subscriptionPopup.buttonCancel" : "Annuleren", 302 "subscriptionPopup.buttonCancel" : "Annuleren",
260 "subscriptionPopup.buttonDone" : "Klaar", 303 "subscriptionPopup.buttonDone" : "Klaar",
261 "tabs.item.deleteService" : "Service verwijderen", 304 "tabs.item.deleteService" : "Service verwijderen",
262 "tabs.item.disableAudio" : "Disable audio", 305 "tabs.item.disableAudio" : "Audio uitschakelen",
263 "tabs.item.disableNotifications" : "Notificaties uitschakelen", 306 "tabs.item.disableNotifications" : "Notificaties uitschakelen",
264 "tabs.item.disableService" : "Service uitschakelen", 307 "tabs.item.disableService" : "Service uitschakelen",
265 "tabs.item.edit" : "Aanpassen", 308 "tabs.item.edit" : "Aanpassen",
266 "tabs.item.enableAudio" : "Enable audio", 309 "tabs.item.enableAudio" : "Audio inschakelen",
267 "tabs.item.enableNotification" : "Notificaties inschakelen", 310 "tabs.item.enableNotification" : "Notificaties inschakelen",
268 "tabs.item.enableService" : "Service aanzetten", 311 "tabs.item.enableService" : "Service inschakelen",
269 "tabs.item.reload" : "Herladen", 312 "tabs.item.reload" : "Herladen",
270 "validation.email" : "{field} is not valid", 313 "validation.email" : "{field} is niet geldig",
271 "validation.minLength" : "{field} should be at least {length} characters long", 314 "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn",
272 "validation.required" : "{field} is required", 315 "validation.oneRequired" : "At least one is required",
273 "validation.url" : "{field} is not a valid URL", 316 "validation.required" : "{field} is vereist",
317 "validation.url" : "{field} is niet een geldige URL",
274 "welcome.loginButton" : "Inloggen op je account", 318 "welcome.loginButton" : "Inloggen op je account",
275 "welcome.signupButton" : "Maak een gratis account aan", 319 "welcome.signupButton" : "Maak een gratis account aan",
276 "welcome.slogan" : "Messaging that works for you" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Alle services",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json
index 940f24b0b..03d4474c1 100644
--- a/src/i18n/locales/nl.json
+++ b/src/i18n/locales/nl.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Laad opnieuw", 2 "app.errorHandler.action" : "Herladen",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Er ging iets mis",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Sponsor Franz", 5 "feature.delayApp.action" : "Sponsor Franz",
5 "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", 6 "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan",
6 "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", 7 "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services", 15 "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services",
8 "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", 16 "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.",
17 "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Spelling checken",
9 "import.headline" : "Importeer uw Franz 4-services", 21 "import.headline" : "Importeer uw Franz 4-services",
10 "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Franz 5", 22 "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Franz 5",
11 "import.skip.label" : "Ik wil services handmatig toevoegen", 23 "import.skip.label" : "Ik wil services handmatig toevoegen",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Inloggen", 44 "login.submit.label" : "Inloggen",
33 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", 45 "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.",
34 "menu.app.about" : "Over Franz", 46 "menu.app.about" : "Over Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Verbergen", 48 "menu.app.hide" : "Verbergen",
36 "menu.app.hideOthers" : "Andere verbergen", 49 "menu.app.hideOthers" : "Andere verbergen",
37 "menu.app.quit" : "Afsluiten", 50 "menu.app.quit" : "Afsluiten",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Ondersteuning", 72 "menu.help.support" : "Ondersteuning",
60 "menu.help.tos" : "Servicevoorwaarden", 73 "menu.help.tos" : "Servicevoorwaarden",
61 "menu.services" : "Diensten", 74 "menu.services" : "Diensten",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Nieuwe dienst toevoegen", 76 "menu.services.addNewService" : "Nieuwe dienst toevoegen",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "Weergave", 78 "menu.view" : "Weergave",
64 "menu.view.enterFullScreen" : "Gebruik volledig scherm", 79 "menu.view.enterFullScreen" : "Gebruik volledig scherm",
65 "menu.view.exitFullScreen" : "Volledig scherm verlaten", 80 "menu.view.exitFullScreen" : "Volledig scherm verlaten",
@@ -74,6 +89,11 @@
74 "menu.window" : "Venster", 89 "menu.window" : "Venster",
75 "menu.window.close" : "Sluiten", 90 "menu.window.close" : "Sluiten",
76 "menu.window.minimize" : "Minimaliseren", 91 "menu.window.minimize" : "Minimaliseren",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Alle services",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "E-mailadres", 97 "password.email.label" : "E-mailadres",
78 "password.headline" : "Wachtwoord vergeten", 98 "password.headline" : "Wachtwoord vergeten",
79 "password.link.login" : "Log in op je account", 99 "password.link.login" : "Log in op je account",
@@ -92,11 +112,12 @@
92 "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.", 112 "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.",
93 "service.disabledHandler.action" : "Activeer {name}", 113 "service.disabledHandler.action" : "Activeer {name}",
94 "service.disabledHandler.headline" : "{name} is uitgeschakeld", 114 "service.disabledHandler.headline" : "{name} is uitgeschakeld",
95 "service.errorHandler.action" : "Laad {name} opnieuw", 115 "service.errorHandler.action" : "{name} herladen",
96 "service.errorHandler.editAction" : "Bewerk {name}", 116 "service.errorHandler.editAction" : "Bewerk {name}",
97 "service.errorHandler.headline" : "Oh nee!", 117 "service.errorHandler.headline" : "Oh nee!",
98 "service.errorHandler.message" : "Fout", 118 "service.errorHandler.message" : "Fout",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} kon niet geladen worden.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Begin", 121 "services.getStarted" : "Begin",
101 "services.welcome" : "Welkom bij Franz", 122 "services.welcome" : "Welkom bij Franz",
102 "settings.account.account.editButton" : "Bewerk account", 123 "settings.account.account.editButton" : "Bewerk account",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Download", 138 "settings.account.invoiceDownload" : "Download",
118 "settings.account.manageSubscription.label" : "Beheer je abonnement", 139 "settings.account.manageSubscription.label" : "Beheer je abonnement",
119 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", 140 "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen",
141 "settings.account.tryReloadServices" : "Probeer opnieuw",
120 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", 142 "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw",
121 "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", 143 "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden",
122 "settings.app.buttonClearAllCache" : "Cache legen", 144 "settings.app.buttonClearAllCache" : "Cache legen",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Inclusief bètaversies", 151 "settings.app.form.beta" : "Inclusief bètaversies",
130 "settings.app.form.darkMode" : "Stap over naar de donkere kant", 152 "settings.app.form.darkMode" : "Stap over naar de donkere kant",
131 "settings.app.form.enableGPUAcceleration" : "Schakel videokaart acceleratie in ", 153 "settings.app.form.enableGPUAcceleration" : "Schakel videokaart acceleratie in ",
132 "settings.app.form.enableMenuBar" : "Toon Franz in menubalk",
133 "settings.app.form.enableSpellchecking" : "Zet spellingcontrole aan", 154 "settings.app.form.enableSpellchecking" : "Zet spellingcontrole aan",
134 "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk", 155 "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk",
135 "settings.app.form.hideDockIcon" : "Verberg Franz in Dock",
136 "settings.app.form.language" : "Taal", 156 "settings.app.form.language" : "Taal",
137 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", 157 "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk",
138 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", 158 "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt",
139 "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services", 159 "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld",
141 "settings.app.form.spellcheckerLanguage" : "Spelling checken",
142 "settings.app.headline" : "Instellingen", 161 "settings.app.headline" : "Instellingen",
143 "settings.app.headlineAdvanced" : "Geavanceerd", 162 "settings.app.headlineAdvanced" : "Geavanceerd",
144 "settings.app.headlineAppearance" : "Weergave", 163 "settings.app.headlineAppearance" : "Weergave",
145 "settings.app.headlineGeneral" : "Algemeen", 164 "settings.app.headlineGeneral" : "Algemeen",
146 "settings.app.headlineLanguage" : "Taal", 165 "settings.app.headlineLanguage" : "Taal",
147 "settings.app.headlineUpdates" : "Updates", 166 "settings.app.headlineUpdates" : "Updates",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", 168 "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig",
149 "settings.app.subheadlineCache" : "Cache", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Help ons om Franz te vertalen naar uw taal.", 170 "settings.app.translationHelp" : "Help ons om Franz te vertalen naar uw taal.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Nodig vrienden uit", 177 "settings.navigation.inviteFriends" : "Nodig vrienden uit",
158 "settings.navigation.logout" : "Uitloggen", 178 "settings.navigation.logout" : "Uitloggen",
159 "settings.navigation.settings" : "Instellingen", 179 "settings.navigation.settings" : "Instellingen",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Jouw services", 181 "settings.navigation.yourServices" : "Jouw services",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Alle services", 183 "settings.recipes.all" : "Alle services",
162 "settings.recipes.dev" : "Ontwikkeling", 184 "settings.recipes.dev" : "Ontwikkeling",
163 "settings.recipes.headline" : "Beschikbare services", 185 "settings.recipes.headline" : "Beschikbare services",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", 214 "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten",
193 "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn", 215 "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn",
194 "settings.service.form.name" : "Naam", 216 "settings.service.form.name" : "Naam",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers", 219 "settings.service.form.proxy.info" : "Proxy instellingen worden niet gesynchroniseerd met de Franz servers",
198 "settings.service.form.proxy.isEnabled" : "Proxy gebruiken", 220 "settings.service.form.proxy.isEnabled" : "Proxy gebruiken",
199 "settings.service.form.proxy.password" : "Wachtwoord (optioneel)", 221 "settings.service.form.proxy.password" : "Wachtwoord (optioneel)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Poort",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Start Franz opnieuw na het aanpassen van proxy instellingen.",
202 "settings.service.form.proxy.user" : "Gebruiker (optioneel)", 224 "settings.service.form.proxy.user" : "Gebruiker (optioneel)",
203 "settings.service.form.saveButton" : "Service opslaan", 225 "settings.service.form.saveButton" : "Service opslaan",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Gehost", 226 "settings.service.form.tabHosted" : "Gehost",
207 "settings.service.form.tabOnPremise" : "Zelf-gehost â­ï¸", 227 "settings.service.form.tabOnPremise" : "Zelf-gehost â­ï¸",
208 "settings.service.form.team" : "Team", 228 "settings.service.form.team" : "Team",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Ontdek services", 232 "settings.services.discoverServices" : "Ontdek services",
213 "settings.services.headline" : "Jouw services", 233 "settings.services.headline" : "Jouw services",
214 "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", 234 "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld", 236 "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld",
216 "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld", 237 "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld",
217 "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld", 238 "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld",
218 "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", 239 "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Team",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Bedrijf", 246 "settings.user.form.accountType.company" : "Bedrijf",
220 "settings.user.form.accountType.individual" : "Individueel", 247 "settings.user.form.accountType.individual" : "Individueel",
221 "settings.user.form.accountType.label" : "Accounttype", 248 "settings.user.form.accountType.label" : "Accounttype",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Voornaam", 252 "settings.user.form.firstname" : "Voornaam",
226 "settings.user.form.lastname" : "Achternaam", 253 "settings.user.form.lastname" : "Achternaam",
227 "settings.user.form.newPassword" : "Nieuw wachtwoord", 254 "settings.user.form.newPassword" : "Nieuw wachtwoord",
255 "settings.workspace.add.form.name" : "Naam",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Naam",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw",
266 "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Voeg service toe", 270 "sidebar.addNewService" : "Voeg service toe",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Schakel berichten & geluid uit", 272 "sidebar.muteApp" : "Schakel berichten & geluid uit",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Instellingen", 274 "sidebar.settings" : "Instellingen",
231 "sidebar.unmuteApp" : "Berichten & geluid inschakelen", 275 "sidebar.unmuteApp" : "Berichten & geluid inschakelen",
232 "signup.company.label" : "Bedrijf", 276 "signup.company.label" : "Bedrijf",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn", 288 "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn",
245 "subscription.features.ads" : "Geen advertenties, nooit!", 289 "subscription.features.ads" : "Geen advertenties, nooit!",
246 "subscription.features.comingSoon" : "komt binnenkort", 290 "subscription.features.comingSoon" : "komt binnenkort",
247 "subscription.features.encryptedSync" : "Beveiligde sessie synchronisatie",
248 "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades", 291 "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades",
249 "subscription.features.onpremise" : "Add on-geschikt\/gehoste services zoals HipChat", 292 "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy understeuning voor diensten", 293 "subscription.features.proxy" : "Proxy understeuning voor diensten",
252 "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck", 294 "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "Betaald Franz Premium Supporter Account bevat", 296 "subscription.includedFeatures" : "Betaald Franz Premium Supporter Account bevat",
254 "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren", 297 "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren",
255 "subscription.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen", 298 "subscription.submit.label" : "Ik wil de ontwikkeling van Franz ondersteunen",
@@ -266,12 +309,23 @@
266 "tabs.item.enableAudio" : "Audio inschakelen", 309 "tabs.item.enableAudio" : "Audio inschakelen",
267 "tabs.item.enableNotification" : "Meldingen inschakelen", 310 "tabs.item.enableNotification" : "Meldingen inschakelen",
268 "tabs.item.enableService" : "Service inschakelen", 311 "tabs.item.enableService" : "Service inschakelen",
269 "tabs.item.reload" : "Laad opnieuw", 312 "tabs.item.reload" : "Herladen",
270 "validation.email" : "{field} is niet geldig", 313 "validation.email" : "{field} is niet geldig",
271 "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn", 314 "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} is vereist", 316 "validation.required" : "{field} is vereist",
273 "validation.url" : "{field} is niet een geldige URL", 317 "validation.url" : "{field} is niet een geldige URL",
274 "welcome.loginButton" : "Log in op je account", 318 "welcome.loginButton" : "Log in op je account",
275 "welcome.signupButton" : "Maak een gratis account", 319 "welcome.signupButton" : "Maak een gratis account",
276 "welcome.slogan" : "Messaging die voor jou werkt" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Alle services",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index d45e5ce24..591b13145 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Przeładuj", 2 "app.errorHandler.action" : "Przeładuj",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Coś poszło nie tak",
4 "feature.announcements.changelog.headline" : "Zmiany we Franzie {version}",
4 "feature.delayApp.action" : "Uzyskaj licencjÄ™ Franz Supporter", 5 "feature.delayApp.action" : "Uzyskaj licencjÄ™ Franz Supporter",
5 "feature.delayApp.headline" : "Kup licencję Franz Supporter , aby nie czekać", 6 "feature.delayApp.headline" : "Aby nie czekać kup licencję Franz Supporter",
6 "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.", 7 "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.",
8 "feature.shareFranz.action.email" : "Wyślij nam maila",
9 "feature.shareFranz.action.facebook" : "Udostępnij na Facebooku",
10 "feature.shareFranz.action.twitter" : "Udostępnij na Twitterze",
11 "feature.shareFranz.headline" : "Franz jest lepszy, gdy tworzymy go razem!",
12 "feature.shareFranz.shareText.email" : "DodaÅ‚em {count} serwisĂ³w do Franza! Pobierz darmowÄ… aplikacjÄ… WhatsApp, Messenger, Slack, Skype i inne na www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "DodaÅ‚em {count} serwisĂ³w do Franza! Pobierz darmowÄ… aplikacjÄ… WhatsApp, Messenger, Slack, Skype i inne na www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Powiedz znajomym i kolegom o tym, jak odlotowy jest Franz i pomĂ³Å¼ nam go spopularyzować.",
7 "global.api.unhealthy" : "Nie można połączyć się z usługami Franz online", 15 "global.api.unhealthy" : "Nie można połączyć się z usługami Franz online",
8 "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.", 16 "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.",
17 "global.spellchecker.useDefault" : "Użyj domyślnego dla systemu ({default})",
18 "global.spellchecking.autodetect" : "Automatycznie wykryj język",
19 "global.spellchecking.autodetect.short" : "Automatycznie",
20 "global.spellchecking.language" : "Język słownika",
9 "import.headline" : "Importuj usługi Franz 4", 21 "import.headline" : "Importuj usługi Franz 4",
10 "import.notSupportedHeadline" : "UsÅ‚ugi, ktĂ³re nie sÄ… jeszcze obsÅ‚ugiwane w Franz 5", 22 "import.notSupportedHeadline" : "UsÅ‚ugi, ktĂ³re nie sÄ… jeszcze obsÅ‚ugiwane w Franz 5",
11 "import.skip.label" : "Chcę dodać usługi samodzielnie", 23 "import.skip.label" : "Chcę dodać usługi samodzielnie",
@@ -25,18 +37,19 @@
25 "login.email.label" : "Adres email", 37 "login.email.label" : "Adres email",
26 "login.headline" : "Zaloguj siÄ™", 38 "login.headline" : "Zaloguj siÄ™",
27 "login.invalidCredentials" : "Adres email lub hasło są błędne", 39 "login.invalidCredentials" : "Adres email lub hasło są błędne",
28 "login.link.password" : "Wyzeruj hasło", 40 "login.link.password" : "Przypomnij hasło",
29 "login.link.signup" : "ZaÅ‚Ă³Å¼ darmowe konto", 41 "login.link.signup" : "ZaÅ‚Ă³Å¼ darmowe konto",
30 "login.password.label" : "Hasło", 42 "login.password.label" : "Hasło",
31 "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.", 43 "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.",
32 "login.submit.label" : "Zaloguj siÄ™", 44 "login.submit.label" : "Zaloguj siÄ™",
33 "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.", 45 "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.",
34 "menu.app.about" : "O Franz", 46 "menu.app.about" : "O Franz",
47 "menu.app.announcement" : "Co słychać?",
35 "menu.app.hide" : "Ukryj", 48 "menu.app.hide" : "Ukryj",
36 "menu.app.hideOthers" : "Ukryj pozostałe", 49 "menu.app.hideOthers" : "Ukryj pozostałe",
37 "menu.app.quit" : "Zakończ", 50 "menu.app.quit" : "Zakończ",
38 "menu.app.settings" : "Ustawienia", 51 "menu.app.settings" : "Ustawienia",
39 "menu.app.unhide" : "Pokaż", 52 "menu.app.unhide" : "Pokaż więcej",
40 "menu.edit" : "Edytuj", 53 "menu.edit" : "Edytuj",
41 "menu.edit.copy" : "Skopiuj", 54 "menu.edit.copy" : "Skopiuj",
42 "menu.edit.cut" : "Wytnij", 55 "menu.edit.cut" : "Wytnij",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Wsparcie", 72 "menu.help.support" : "Wsparcie",
60 "menu.help.tos" : "Warunki świadczenia usług", 73 "menu.help.tos" : "Warunki świadczenia usług",
61 "menu.services" : "Usługi", 74 "menu.services" : "Usługi",
75 "menu.services.activatePreviousService" : "WÅ‚Ä…cz poprzedni serwis",
62 "menu.services.addNewService" : "Dodaj nową usługę...", 76 "menu.services.addNewService" : "Dodaj nową usługę...",
77 "menu.services.setNextServiceActive" : "WÅ‚Ä…cz kolejny serwis",
63 "menu.view" : "Widok", 78 "menu.view" : "Widok",
64 "menu.view.enterFullScreen" : "Włącz tryb pełnoekranowy", 79 "menu.view.enterFullScreen" : "Włącz tryb pełnoekranowy",
65 "menu.view.exitFullScreen" : "Zakończ tryb pełnoekranowy", 80 "menu.view.exitFullScreen" : "Zakończ tryb pełnoekranowy",
@@ -68,20 +83,25 @@
68 "menu.view.resetZoom" : "Domyślny rozmiar", 83 "menu.view.resetZoom" : "Domyślny rozmiar",
69 "menu.view.toggleDevTools" : "Pokaż narzędzia developerskie", 84 "menu.view.toggleDevTools" : "Pokaż narzędzia developerskie",
70 "menu.view.toggleFullScreen" : "Przełącz tryb pełnoekranowy", 85 "menu.view.toggleFullScreen" : "Przełącz tryb pełnoekranowy",
71 "menu.view.toggleServiceDevTools" : "Włącz narzędzia developerskie serwisu", 86 "menu.view.toggleServiceDevTools" : "Włącz narzędzia developerskie usługi",
72 "menu.view.zoomIn" : "Powiększ", 87 "menu.view.zoomIn" : "Powiększ",
73 "menu.view.zoomOut" : "Pomniejsz", 88 "menu.view.zoomOut" : "Pomniejsz",
74 "menu.window" : "Okno", 89 "menu.window" : "Okno",
75 "menu.window.close" : "Zamknij", 90 "menu.window.close" : "Zamknij",
76 "menu.window.minimize" : "Zminimalizuj", 91 "menu.window.minimize" : "Zminimalizuj",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Wszystkie usługi",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Adres email", 97 "password.email.label" : "Adres email",
78 "password.headline" : "Wyzeruj hasło", 98 "password.headline" : "Przypomnij hasło",
79 "password.link.login" : "Zaloguj siÄ™ na swoje konto", 99 "password.link.login" : "Zaloguj siÄ™ na swoje konto",
80 "password.link.signup" : "StwĂ³rz darmowe konto", 100 "password.link.signup" : "StwĂ³rz darmowe konto",
81 "password.noUser" : "Nie znaleziono użytkownika z takim adresem email", 101 "password.noUser" : "Nie znaleziono użytkownika z takim adresem email",
82 "password.submit.label" : "Wyślij", 102 "password.submit.label" : "Wyślij",
83 "password.successInfo" : "ProszÄ™ sprawdzić swĂ³j email", 103 "password.successInfo" : "ProszÄ™ sprawdzić swĂ³j email",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "Ulepsz swoje konto",
85 "pricing.headline" : "Wspieraj Franz", 105 "pricing.headline" : "Wspieraj Franz",
86 "pricing.link.skipPayment" : "Nie chcę wspierać rozwoju aplikacji Franz.", 106 "pricing.link.skipPayment" : "Nie chcę wspierać rozwoju aplikacji Franz.",
87 "pricing.submit.label" : "ChcÄ™ wspierać rozwĂ³j aplikacji Franz", 107 "pricing.submit.label" : "ChcÄ™ wspierać rozwĂ³j aplikacji Franz",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Edytuj {name}", 116 "service.errorHandler.editAction" : "Edytuj {name}",
97 "service.errorHandler.headline" : "O nie!", 117 "service.errorHandler.headline" : "O nie!",
98 "service.errorHandler.message" : "BÅ‚Ä…d", 118 "service.errorHandler.message" : "BÅ‚Ä…d",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "Nie udało się załadować {name}.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Zacznij", 121 "services.getStarted" : "Zacznij",
101 "services.welcome" : "Witaj w programie Franz", 122 "services.welcome" : "Witaj w programie Franz",
102 "settings.account.account.editButton" : "Modyfikuj konta", 123 "settings.account.account.editButton" : "Modyfikuj konta",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Pobierz", 138 "settings.account.invoiceDownload" : "Pobierz",
118 "settings.account.manageSubscription.label" : "ZarzÄ…dzaj swoimi subskrypcjami", 139 "settings.account.manageSubscription.label" : "ZarzÄ…dzaj swoimi subskrypcjami",
119 "settings.account.successInfo" : "Twoje zmiany zostały zapisane", 140 "settings.account.successInfo" : "Twoje zmiany zostały zapisane",
141 "settings.account.tryReloadServices" : "SprĂ³buj ponownie",
120 "settings.account.tryReloadUserInfoRequest" : "SprĂ³buj ponownie", 142 "settings.account.tryReloadUserInfoRequest" : "SprĂ³buj ponownie",
121 "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku", 143 "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku",
122 "settings.app.buttonClearAllCache" : "Wyczyść pamięć podręczną (cache)", 144 "settings.app.buttonClearAllCache" : "Wyczyść pamięć podręczną (cache)",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Uwzględnij wersje beta", 151 "settings.app.form.beta" : "Uwzględnij wersje beta",
130 "settings.app.form.darkMode" : "Przejdź na Ciemną Stronę", 152 "settings.app.form.darkMode" : "Przejdź na Ciemną Stronę",
131 "settings.app.form.enableGPUAcceleration" : "WÅ‚Ä…cz akceleracjÄ™ GPU", 153 "settings.app.form.enableGPUAcceleration" : "WÅ‚Ä…cz akceleracjÄ™ GPU",
132 "settings.app.form.enableMenuBar" : "Pokaż Franz na pasku menu",
133 "settings.app.form.enableSpellchecking" : "WÅ‚Ä…cz sprawdzanie pisowni", 154 "settings.app.form.enableSpellchecking" : "WÅ‚Ä…cz sprawdzanie pisowni",
134 "settings.app.form.enableSystemTray" : "Pokaż Franza w obszarze powiadomień", 155 "settings.app.form.enableSystemTray" : "Pokaż Franza w obszarze powiadomień",
135 "settings.app.form.hideDockIcon" : "Ukrywaj ikonÄ™ Franz w zasobniku systemowym",
136 "settings.app.form.language" : "Język", 156 "settings.app.form.language" : "Język",
137 "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz", 157 "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz",
138 "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna", 158 "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna",
139 "settings.app.form.showDisabledServices" : "Wyłącz wyświetlanie zakładek z usługami", 159 "settings.app.form.showDisabledServices" : "Wyłącz wyświetlanie zakładek z usługami",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaż licznik nieprzeczytanych wiadomości gdy powiadomienia są wyłączone", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaż licznik nieprzeczytanych wiadomości gdy powiadomienia są wyłączone",
141 "settings.app.form.spellcheckerLanguage" : "Język słownika",
142 "settings.app.headline" : "Ustawienia", 161 "settings.app.headline" : "Ustawienia",
143 "settings.app.headlineAdvanced" : "Zaawansowane", 162 "settings.app.headlineAdvanced" : "Zaawansowane",
144 "settings.app.headlineAppearance" : "WyglÄ…d", 163 "settings.app.headlineAppearance" : "WyglÄ…d",
145 "settings.app.headlineGeneral" : "OgĂ³lne", 164 "settings.app.headlineGeneral" : "OgĂ³lne",
146 "settings.app.headlineLanguage" : "Język", 165 "settings.app.headlineLanguage" : "Język",
147 "settings.app.headlineUpdates" : "Aktualizacje", 166 "settings.app.headlineUpdates" : "Aktualizacje",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Zmiany. wymagajÄ… ponownego uruchomienia", 168 "settings.app.restartRequired" : "Zmiany. wymagajÄ… ponownego uruchomienia",
149 "settings.app.subheadlineCache" : "Pamięć podręczna", 169 "settings.app.subheadlineCache" : "Pamięć podręczna",
150 "settings.app.translationHelp" : "PomĂ³Å¼ nam tÅ‚umaczyć Franz na TwĂ³j jÄ™zyk.", 170 "settings.app.translationHelp" : "PomĂ³Å¼ nam tÅ‚umaczyć Franz na TwĂ³j jÄ™zyk.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "ZaproÅ› znajomych", 177 "settings.navigation.inviteFriends" : "ZaproÅ› znajomych",
158 "settings.navigation.logout" : "Wyloguj", 178 "settings.navigation.logout" : "Wyloguj",
159 "settings.navigation.settings" : "Ustawienia", 179 "settings.navigation.settings" : "Ustawienia",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Twoje usługi", 181 "settings.navigation.yourServices" : "Twoje usługi",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Wszystkie usługi", 183 "settings.recipes.all" : "Wszystkie usługi",
162 "settings.recipes.dev" : "Rozwojowe", 184 "settings.recipes.dev" : "Rozwojowe",
163 "settings.recipes.headline" : "Dostępne usługi", 185 "settings.recipes.headline" : "Dostępne usługi",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", 214 "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości",
193 "settings.service.form.isMutedInfo" : "Kiedy nieaktywne, wszystkie dźwięki powiadomień są wyciszone", 215 "settings.service.form.isMutedInfo" : "Kiedy nieaktywne, wszystkie dźwięki powiadomień są wyciszone",
194 "settings.service.form.name" : "Nazwa", 216 "settings.service.form.name" : "Nazwa",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "Ustawienia Proxy HTTP\/HTTPS",
196 "settings.service.form.proxy.host" : "Host Proxy\/IP", 218 "settings.service.form.proxy.host" : "Host Proxy\/IP",
197 "settings.service.form.proxy.info" : "Ustawienia proxy nie będą zsynchronizowane z serwerami Franza.", 219 "settings.service.form.proxy.info" : "Ustawienia proxy nie będą zsynchronizowane z serwerami Franza.",
198 "settings.service.form.proxy.isEnabled" : "Użyj Proxy", 220 "settings.service.form.proxy.isEnabled" : "Użyj Proxy",
199 "settings.service.form.proxy.password" : "Hasło (opcjonalnie)", 221 "settings.service.form.proxy.password" : "Hasło (opcjonalnie)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Port",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Uruchom ponownie Franz po zmianie ustawień proxy.",
202 "settings.service.form.proxy.user" : "Użytkownik (opcjonalnie)", 224 "settings.service.form.proxy.user" : "Użytkownik (opcjonalnie)",
203 "settings.service.form.saveButton" : "Zapisz usługę", 225 "settings.service.form.saveButton" : "Zapisz usługę",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Hostowane", 226 "settings.service.form.tabHosted" : "Hostowane",
207 "settings.service.form.tabOnPremise" : "Hostowane lokalnie â­ï¸", 227 "settings.service.form.tabOnPremise" : "Hostowane lokalnie â­ï¸",
208 "settings.service.form.team" : "ZespĂ³Å‚", 228 "settings.service.form.team" : "ZespĂ³Å‚",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Przeglądaj usługi", 232 "settings.services.discoverServices" : "Przeglądaj usługi",
213 "settings.services.headline" : "Twoje usługi", 233 "settings.services.headline" : "Twoje usługi",
214 "settings.services.noServicesAdded" : "Nie dodałeś jeszcze żadnych usług.", 234 "settings.services.noServicesAdded" : "Nie dodałeś jeszcze żadnych usług.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Usługa jest nieaktywna", 236 "settings.services.tooltip.isDisabled" : "Usługa jest nieaktywna",
216 "settings.services.tooltip.isMuted" : "Wszystkie dźwięki są wyciszone", 237 "settings.services.tooltip.isMuted" : "Wszystkie dźwięki są wyciszone",
217 "settings.services.tooltip.notificationsDisabled" : "Powiadomienia sÄ… nieaktywne", 238 "settings.services.tooltip.notificationsDisabled" : "Powiadomienia sÄ… nieaktywne",
218 "settings.services.updatedInfo" : "Zmiany zostały zapisane", 239 "settings.services.updatedInfo" : "Zmiany zostały zapisane",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "ZespĂ³Å‚",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Firma", 246 "settings.user.form.accountType.company" : "Firma",
220 "settings.user.form.accountType.individual" : "Prywatne", 247 "settings.user.form.accountType.individual" : "Prywatne",
221 "settings.user.form.accountType.label" : "Typ konta", 248 "settings.user.form.accountType.label" : "Typ konta",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "ImiÄ™", 252 "settings.user.form.firstname" : "ImiÄ™",
226 "settings.user.form.lastname" : "Nazwisko", 253 "settings.user.form.lastname" : "Nazwisko",
227 "settings.user.form.newPassword" : "Nowe hasło", 254 "settings.user.form.newPassword" : "Nowe hasło",
255 "settings.workspace.add.form.name" : "Name",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Name",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "SprĂ³buj ponownie",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Dodaj kolejną usługę", 270 "sidebar.addNewService" : "Dodaj kolejną usługę",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Wyłącz powiadomienia i dźwięki", 272 "sidebar.muteApp" : "Wyłącz powiadomienia i dźwięki",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Ustawienia", 274 "sidebar.settings" : "Ustawienia",
231 "sidebar.unmuteApp" : "Włącz powiadomienia i dźwięki", 275 "sidebar.unmuteApp" : "Włącz powiadomienia i dźwięki",
232 "signup.company.label" : "Firma", 276 "signup.company.label" : "Firma",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Rezydenci UE: lokalne stawki VAT mogą zostać zaaplikowane", 288 "subscription.euTaxInfo" : "Rezydenci UE: lokalne stawki VAT mogą zostać zaaplikowane",
245 "subscription.features.ads" : "Brak reklam, na zawsze!", 289 "subscription.features.ads" : "Brak reklam, na zawsze!",
246 "subscription.features.comingSoon" : "wkrĂ³tce dostÄ™pne", 290 "subscription.features.comingSoon" : "wkrĂ³tce dostÄ™pne",
247 "subscription.features.encryptedSync" : "Szyfrowana synchronizacja sesji", 291 "subscription.features.noInterruptions" : "Bez opĂ³ÅºnieÅ„ i przypominania o ulepszeniu licencji",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Dodaj prywatnie hostowane usługi takie jak Mattermost",
249 "subscription.features.onpremise" : "Dodawanie lokalnych\/hostowanych usług takich jak HipChat",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Obsługa proxy dla usług", 293 "subscription.features.proxy" : "Obsługa proxy dla usług",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Wsparcie dla sprawdzania pisowni",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "PÅ‚atne konto Franz Premium obejmuje", 296 "subscription.includedFeatures" : "PÅ‚atne konto Franz Premium obejmuje",
254 "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"", 297 "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"",
255 "subscription.submit.label" : "ChcÄ™ wspierać rozwĂ³j aplikacji Franz", 298 "subscription.submit.label" : "ChcÄ™ wspierać rozwĂ³j aplikacji Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Przeładuj", 312 "tabs.item.reload" : "Przeładuj",
270 "validation.email" : "Pole {field} nie jest poprawne", 313 "validation.email" : "Pole {field} nie jest poprawne",
271 "validation.minLength" : "Pole {field} powinno skÅ‚adać siÄ™ z co najmniej {length} znakĂ³w", 314 "validation.minLength" : "Pole {field} powinno skÅ‚adać siÄ™ z co najmniej {length} znakĂ³w",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "Pole {field} jest wymagane", 316 "validation.required" : "Pole {field} jest wymagane",
273 "validation.url" : "Pole {field} nie jest poprawnym ciÄ…giem URL.", 317 "validation.url" : "Pole {field} nie jest poprawnym ciÄ…giem URL.",
274 "welcome.loginButton" : "Zaloguj siÄ™ na swoje konto", 318 "welcome.loginButton" : "Zaloguj siÄ™ na swoje konto",
275 "welcome.signupButton" : "StwĂ³rz darmowe konto", 319 "welcome.signupButton" : "StwĂ³rz darmowe konto",
276 "welcome.slogan" : "Komunikator ktĂ³ry dziaÅ‚a" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Wszystkie usługi",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json
index c0cf0039f..4ad2fac08 100644
--- a/src/i18n/locales/pt-BR.json
+++ b/src/i18n/locales/pt-BR.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Recarregar", 2 "app.errorHandler.action" : "Recarregar",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Alguma coisa deu errado",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Adquira uma licença Franz Supporter", 5 "feature.delayApp.action" : "Adquira uma licença Franz Supporter",
5 "feature.delayApp.headline" : "Por favor, adquira uma licença Franz Supporter para pular o tempo de espera", 6 "feature.delayApp.headline" : "Por favor, adquira uma licença Franz Supporter para pular o tempo de espera",
6 "feature.delayApp.text" : "Franz continuarĂ¡ em {seconds} segundos.", 7 "feature.delayApp.text" : "Franz continuarĂ¡ em {seconds} segundos.",
8 "feature.shareFranz.action.email" : "Enviar como e-mail",
9 "feature.shareFranz.action.facebook" : "Compartilhar no Facebook",
10 "feature.shareFranz.action.twitter" : "Compartilhar no Twitter",
11 "feature.shareFranz.headline" : "Franz Ă© melhor em grupo!",
12 "feature.shareFranz.shareText.email" : "Eu adicionei {count} serviços ao Franz! Adquira o aplicativo gratuito para WhatsApp, Messenger, Slack, Skype e mais em www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Conte aos seus amigos e colegas o quĂ£o incrĂ­vel Franz Ă© e nos ajude a espalhar a mensagem. ",
7 "global.api.unhealthy" : "NĂ£o foi possĂ­vel conectar-se aos serviços on-line do Franz.", 15 "global.api.unhealthy" : "NĂ£o foi possĂ­vel conectar-se aos serviços on-line do Franz.",
8 "global.notConnectedToTheInternet" : "VocĂª nĂ£o estĂ¡ conectado Ă  internet", 16 "global.notConnectedToTheInternet" : "VocĂª nĂ£o estĂ¡ conectado Ă  internet",
17 "global.spellchecker.useDefault" : "Use o padrĂ£o do sistema ({default})",
18 "global.spellchecking.autodetect" : "Detectar linguagem automaticamente.",
19 "global.spellchecking.autodetect.short" : "AutomĂ¡tico",
20 "global.spellchecking.language" : "Idioma de verificaĂ§Ă£o ortogrĂ¡fica",
9 "import.headline" : "Importe seus serviços do Franz 4 ", 21 "import.headline" : "Importe seus serviços do Franz 4 ",
10 "import.notSupportedHeadline" : "Serviços ainda nĂ£o suportados pelo Franz 5 ", 22 "import.notSupportedHeadline" : "Serviços ainda nĂ£o suportados pelo Franz 5 ",
11 "import.skip.label" : "Quero adicionar serviços manualmente", 23 "import.skip.label" : "Quero adicionar serviços manualmente",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Entrar", 44 "login.submit.label" : "Entrar",
33 "login.tokenExpired" : "Sua sessĂ£o expirou, faça o login novamente.", 45 "login.tokenExpired" : "Sua sessĂ£o expirou, faça o login novamente.",
34 "menu.app.about" : "Sobre Franz", 46 "menu.app.about" : "Sobre Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Ocultar", 48 "menu.app.hide" : "Ocultar",
36 "menu.app.hideOthers" : "Ocultar Outros", 49 "menu.app.hideOthers" : "Ocultar Outros",
37 "menu.app.quit" : "Sair", 50 "menu.app.quit" : "Sair",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Suporte", 72 "menu.help.support" : "Suporte",
60 "menu.help.tos" : "Termos de Serviço", 73 "menu.help.tos" : "Termos de Serviço",
61 "menu.services" : "Serviços", 74 "menu.services" : "Serviços",
75 "menu.services.activatePreviousService" : "Pular para serviço anterior",
62 "menu.services.addNewService" : "Adicionar Novo Serviço", 76 "menu.services.addNewService" : "Adicionar Novo Serviço",
77 "menu.services.setNextServiceActive" : "Pular para prĂ³ximo serviço",
63 "menu.view" : "Visualizar ", 78 "menu.view" : "Visualizar ",
64 "menu.view.enterFullScreen" : "Modo Tela Cheia", 79 "menu.view.enterFullScreen" : "Modo Tela Cheia",
65 "menu.view.exitFullScreen" : "Sair da Tela Cheia", 80 "menu.view.exitFullScreen" : "Sair da Tela Cheia",
@@ -74,6 +89,11 @@
74 "menu.window" : "Modo Janela", 89 "menu.window" : "Modo Janela",
75 "menu.window.close" : "Fechar", 90 "menu.window.close" : "Fechar",
76 "menu.window.minimize" : "Minimizar", 91 "menu.window.minimize" : "Minimizar",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Todos os serviços",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "E-mail", 97 "password.email.label" : "E-mail",
78 "password.headline" : "Trocar senha", 98 "password.headline" : "Trocar senha",
79 "password.link.login" : "Fazer login na sua conta", 99 "password.link.login" : "Fazer login na sua conta",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Editar {name}", 116 "service.errorHandler.editAction" : "Editar {name}",
97 "service.errorHandler.headline" : "Ah, nĂ£o!", 117 "service.errorHandler.headline" : "Ah, nĂ£o!",
98 "service.errorHandler.message" : "Erro", 118 "service.errorHandler.message" : "Erro",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} nĂ£o pĂ´de ser carregado.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Iniciar", 121 "services.getStarted" : "Iniciar",
101 "services.welcome" : "Bem-vindo ao Franz!", 122 "services.welcome" : "Bem-vindo ao Franz!",
102 "settings.account.account.editButton" : "Editar conta", 123 "settings.account.account.editButton" : "Editar conta",
@@ -117,7 +138,8 @@
117 "settings.account.invoiceDownload" : "Baixar", 138 "settings.account.invoiceDownload" : "Baixar",
118 "settings.account.manageSubscription.label" : "Gerencie a sua assinatura", 139 "settings.account.manageSubscription.label" : "Gerencie a sua assinatura",
119 "settings.account.successInfo" : "Suas alterações foram gravadas", 140 "settings.account.successInfo" : "Suas alterações foram gravadas",
120 "settings.account.tryReloadUserInfoRequest" : "Tente novamente", 141 "settings.account.tryReloadServices" : "Tente novamente",
142 "settings.account.tryReloadUserInfoRequest" : "Tentar novamente",
121 "settings.account.userInfoRequestFailed" : "NĂ£o foi possĂ­vel carregar as informações do usuĂ¡rio", 143 "settings.account.userInfoRequestFailed" : "NĂ£o foi possĂ­vel carregar as informações do usuĂ¡rio",
122 "settings.app.buttonClearAllCache" : "Limpar cache", 144 "settings.app.buttonClearAllCache" : "Limpar cache",
123 "settings.app.buttonInstallUpdate" : "Reiniciar e instalar atualizaĂ§Ă£o", 145 "settings.app.buttonInstallUpdate" : "Reiniciar e instalar atualizaĂ§Ă£o",
@@ -129,24 +151,22 @@
129 "settings.app.form.beta" : "Incluir versões beta", 151 "settings.app.form.beta" : "Incluir versões beta",
130 "settings.app.form.darkMode" : "Venha para o Lado Negro da força", 152 "settings.app.form.darkMode" : "Venha para o Lado Negro da força",
131 "settings.app.form.enableGPUAcceleration" : "Ativar AceleraĂ§Ă£o de GPU", 153 "settings.app.form.enableGPUAcceleration" : "Ativar AceleraĂ§Ă£o de GPU",
132 "settings.app.form.enableMenuBar" : "Mostrar Franz na Barra de Menu",
133 "settings.app.form.enableSpellchecking" : "Ativar correĂ§Ă£o ortogrĂ¡fica", 154 "settings.app.form.enableSpellchecking" : "Ativar correĂ§Ă£o ortogrĂ¡fica",
134 "settings.app.form.enableSystemTray" : "Exibir o Franz na barra de sistema", 155 "settings.app.form.enableSystemTray" : "Exibir o Franz na barra de sistema",
135 "settings.app.form.hideDockIcon" : "Ocultar Ă­cone do Franz no Dock",
136 "settings.app.form.language" : "Idioma", 156 "settings.app.form.language" : "Idioma",
137 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a Ă¡rea de sistema", 157 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a Ă¡rea de sistema",
138 "settings.app.form.runInBackground" : "Manter o Franz no fundo quando fechar a janela", 158 "settings.app.form.runInBackground" : "Manter o Franz no fundo quando fechar a janela",
139 "settings.app.form.showDisabledServices" : "Mostrar abas de serviços desativados", 159 "settings.app.form.showDisabledServices" : "Mostrar abas de serviços desativados",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar Ă­cone de mensagem nĂ£o lida quando as notificações estiverem desativadas", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar Ă­cone de mensagem nĂ£o lida quando as notificações estiverem desativadas",
141 "settings.app.form.spellcheckerLanguage" : "Idioma de verificaĂ§Ă£o ortogrĂ¡fica",
142 "settings.app.headline" : "Configurações", 161 "settings.app.headline" : "Configurações",
143 "settings.app.headlineAdvanced" : "Avançado", 162 "settings.app.headlineAdvanced" : "Avançado",
144 "settings.app.headlineAppearance" : "AparĂªncia", 163 "settings.app.headlineAppearance" : "AparĂªncia",
145 "settings.app.headlineGeneral" : "Geral", 164 "settings.app.headlineGeneral" : "Geral",
146 "settings.app.headlineLanguage" : "Idioma", 165 "settings.app.headlineLanguage" : "Idioma",
147 "settings.app.headlineUpdates" : "Atualizações", 166 "settings.app.headlineUpdates" : "Atualizações",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "As atualizações exigem reiniciar o sistema", 168 "settings.app.restartRequired" : "As atualizações exigem reiniciar o sistema",
149 "settings.app.subheadlineCache" : "CachĂª", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Ajude-nos a traduzir o Franz para seu idioma.", 170 "settings.app.translationHelp" : "Ajude-nos a traduzir o Franz para seu idioma.",
151 "settings.app.updateStatusAvailable" : "AtualizaĂ§Ă£o disponĂ­vel, baixando...", 171 "settings.app.updateStatusAvailable" : "AtualizaĂ§Ă£o disponĂ­vel, baixando...",
152 "settings.app.updateStatusSearching" : "Buscando atualizações", 172 "settings.app.updateStatusSearching" : "Buscando atualizações",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Convidar Amigos", 177 "settings.navigation.inviteFriends" : "Convidar Amigos",
158 "settings.navigation.logout" : "Sair", 178 "settings.navigation.logout" : "Sair",
159 "settings.navigation.settings" : "Ajustes", 179 "settings.navigation.settings" : "Ajustes",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Seus serviços", 181 "settings.navigation.yourServices" : "Seus serviços",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Todos os serviços", 183 "settings.recipes.all" : "Todos os serviços",
162 "settings.recipes.dev" : "Desenvolvimento", 184 "settings.recipes.dev" : "Desenvolvimento",
163 "settings.recipes.headline" : "Serviços disponíveis", 185 "settings.recipes.headline" : "Serviços disponíveis",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Mostrar avisos para todas as mensagens", 214 "settings.service.form.indirectMessages" : "Mostrar avisos para todas as mensagens",
193 "settings.service.form.isMutedInfo" : "Quando desativado, as notificações sonoras e Ă¡udios ficarĂ£o em silĂªncio", 215 "settings.service.form.isMutedInfo" : "Quando desativado, as notificações sonoras e Ă¡udios ficarĂ£o em silĂªncio",
194 "settings.service.form.name" : "Nome", 216 "settings.service.form.name" : "Nome",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "Configurações de HTTP\/HTTPS Proxy",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Host\/IP",
197 "settings.service.form.proxy.info" : "As configurações de proxy nĂ£o serĂ£o sincronizadas com os servidores do Franz.", 219 "settings.service.form.proxy.info" : "As configurações de proxy nĂ£o serĂ£o sincronizadas com os servidores do Franz.",
198 "settings.service.form.proxy.isEnabled" : "Usar o Proxy", 220 "settings.service.form.proxy.isEnabled" : "Usar o Proxy",
199 "settings.service.form.proxy.password" : "Senha (opcional)", 221 "settings.service.form.proxy.password" : "Senha (opcional)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Porta",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Por favor, reinicie o Franz apĂ³s alterar as configurações de proxy.",
202 "settings.service.form.proxy.user" : "UsuĂ¡rio (opcional)", 224 "settings.service.form.proxy.user" : "UsuĂ¡rio (opcional)",
203 "settings.service.form.saveButton" : "Salvar serviço", 225 "settings.service.form.saveButton" : "Salvar serviço",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Hospedado", 226 "settings.service.form.tabHosted" : "Hospedado",
207 "settings.service.form.tabOnPremise" : "Auto-hospedado â­ï¸", 227 "settings.service.form.tabOnPremise" : "Auto-hospedado â­ï¸",
208 "settings.service.form.team" : "Equipe", 228 "settings.service.form.team" : "Equipe",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Descobrir serviços", 232 "settings.services.discoverServices" : "Descobrir serviços",
213 "settings.services.headline" : "Seus serviços", 233 "settings.services.headline" : "Seus serviços",
214 "settings.services.noServicesAdded" : "VocĂª ainda nĂ£o adicionou nenhum serviço.", 234 "settings.services.noServicesAdded" : "VocĂª ainda nĂ£o adicionou nenhum serviço.",
235 "settings.services.servicesRequestFailed" : "NĂ£o foi possĂ­vel carregar os seus serviços",
215 "settings.services.tooltip.isDisabled" : "O serviço estĂ¡ desativado", 236 "settings.services.tooltip.isDisabled" : "O serviço estĂ¡ desativado",
216 "settings.services.tooltip.isMuted" : "Sem som", 237 "settings.services.tooltip.isMuted" : "Sem som",
217 "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas", 238 "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas",
218 "settings.services.updatedInfo" : "Suas mudanças foram gravadas", 239 "settings.services.updatedInfo" : "Suas mudanças foram gravadas",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Equipe",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Empresa", 246 "settings.user.form.accountType.company" : "Empresa",
220 "settings.user.form.accountType.individual" : "Pessoal", 247 "settings.user.form.accountType.individual" : "Pessoal",
221 "settings.user.form.accountType.label" : "Tipo de conta", 248 "settings.user.form.accountType.label" : "Tipo de conta",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Nome", 252 "settings.user.form.firstname" : "Nome",
226 "settings.user.form.lastname" : "Sobrenome", 253 "settings.user.form.lastname" : "Sobrenome",
227 "settings.user.form.newPassword" : "Nova senha", 254 "settings.user.form.newPassword" : "Nova senha",
255 "settings.workspace.add.form.name" : "Nome",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Nome",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Try again",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Adicionar novo serviço", 270 "sidebar.addNewService" : "Adicionar novo serviço",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Desativar notificações e Ă¡udio", 272 "sidebar.muteApp" : "Desativar notificações e Ă¡udio",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Ajustes", 274 "sidebar.settings" : "Ajustes",
231 "sidebar.unmuteApp" : "Ativar notificações e Ă¡udio", 275 "sidebar.unmuteApp" : "Ativar notificações e Ă¡udio",
232 "signup.company.label" : "Empresa", 276 "signup.company.label" : "Empresa",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Residentes na UniĂ£o Europeia: taxas locais serĂ£o aplicadas", 288 "subscription.euTaxInfo" : "Residentes na UniĂ£o Europeia: taxas locais serĂ£o aplicadas",
245 "subscription.features.ads" : "Sem anĂºncios, pra sempre!", 289 "subscription.features.ads" : "Sem anĂºncios, pra sempre!",
246 "subscription.features.comingSoon" : "em breve", 290 "subscription.features.comingSoon" : "em breve",
247 "subscription.features.encryptedSync" : "SincronizaĂ§Ă£o encriptada das sessões", 291 "subscription.features.noInterruptions" : "Sem demora e sem chateaĂ§Ă£o para comprar uma licença. ",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Adicionar serviços locais\/hospedados como o Mattermost",
249 "subscription.features.onpremise" : "Adicionar serviços locais\/hospedados como o HipChat",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Suporte de proxy para serviços", 293 "subscription.features.proxy" : "Suporte de proxy para serviços",
252 "subscription.features.spellchecker" : "Suporte para corretor ortogrĂ¡fico", 294 "subscription.features.spellchecker" : "Suporte para corretor ortogrĂ¡fico",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "A conta Apoiador Franz Premium inclui", 296 "subscription.includedFeatures" : "A conta Apoiador Franz Premium inclui",
254 "subscription.paymentSessionError" : "NĂ£o foi possĂ­vel abrir o formulĂ¡rio de pagamento", 297 "subscription.paymentSessionError" : "NĂ£o foi possĂ­vel abrir o formulĂ¡rio de pagamento",
255 "subscription.submit.label" : "Eu quero apoiar o desenvolvimento do Franz", 298 "subscription.submit.label" : "Eu quero apoiar o desenvolvimento do Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Recarregar", 312 "tabs.item.reload" : "Recarregar",
270 "validation.email" : "invĂ¡lido", 313 "validation.email" : "invĂ¡lido",
271 "validation.minLength" : "{campo} deve ter pelo menos {comprimento} mais caracteres ", 314 "validation.minLength" : "{campo} deve ter pelo menos {comprimento} mais caracteres ",
315 "validation.oneRequired" : "NecessĂ¡rio pelo menos um",
272 "validation.required" : "{campo} obrigatĂ³rio", 316 "validation.required" : "{campo} obrigatĂ³rio",
273 "validation.url" : "{campo} essa URL nĂ£o Ă© vĂ¡lida", 317 "validation.url" : "{campo} essa URL nĂ£o Ă© vĂ¡lida",
274 "welcome.loginButton" : "Entrar na sua conta", 318 "welcome.loginButton" : "Entrar na sua conta",
275 "welcome.signupButton" : "Criar uma conta grĂ¡tis", 319 "welcome.signupButton" : "Criar uma conta grĂ¡tis",
276 "welcome.slogan" : "Mensagens que funcionam para vocĂª" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Todos os serviços",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index 80e8094f5..302284ab8 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -1,14 +1,26 @@
1{ 1{
2 "app.errorHandler.action" : "Recarregar", 2 "app.errorHandler.action" : "Recarregar",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Alguma coisa correu mal",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.action" : "Faz parte do grupo de apoio do Franz",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.headline" : "Por favor compre uma licença Franz Supporter para saltar a fila de espera",
7 "feature.delayApp.text" : "Franz irĂ¡ continuar em {seconds} segundos.",
8 "feature.shareFranz.action.email" : "Enviar por e-mail",
9 "feature.shareFranz.action.facebook" : "Compartilahr no Facebook",
10 "feature.shareFranz.action.twitter" : "Compartilhar no Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "NĂ£o foi possĂ­vel estabelecer ligaĂ§Ă£o aos serviços do Franz", 15 "global.api.unhealthy" : "NĂ£o foi possĂ­vel estabelecer ligaĂ§Ă£o aos serviços do Franz",
8 "global.notConnectedToTheInternet" : "NĂ£o existe ligaĂ§Ă£o Ă  Internet", 16 "global.notConnectedToTheInternet" : "NĂ£o estĂ¡s ligado Ă  Internet",
9 "import.headline" : "Importe os seus serviços do Franz 4", 17 "global.spellchecker.useDefault" : "Utilizar o Sistema por OmissĂ£o ({default})",
10 "import.notSupportedHeadline" : "Serviços ainda nĂ£o suportados pelo Franz 5", 18 "global.spellchecking.autodetect" : "Detect language automatically",
11 "import.skip.label" : "Pretendo adicionar serviços manualmente", 19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Linguagem para correĂ§Ă£o ortogrĂ¡fica",
21 "import.headline" : "Importa os teus serviços do Franz",
22 "import.notSupportedHeadline" : "Estes serviços ainda nĂ£o sĂ£o suportados pelo Franz 5",
23 "import.skip.label" : "Eu quero adicionar serviços manualmente",
12 "import.submit.label" : "Importar serviços", 24 "import.submit.label" : "Importar serviços",
13 "infobar.buttonChangelog" : "O que hĂ¡ de novo?", 25 "infobar.buttonChangelog" : "O que hĂ¡ de novo?",
14 "infobar.buttonInstallUpdate" : "Reiniciar e instalar atualizações", 26 "infobar.buttonInstallUpdate" : "Reiniciar e instalar atualizações",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Iniciar sessĂ£o", 44 "login.submit.label" : "Iniciar sessĂ£o",
33 "login.tokenExpired" : "A sua sessĂ£o expirou, inicie sessĂ£o novamente.", 45 "login.tokenExpired" : "A sua sessĂ£o expirou, inicie sessĂ£o novamente.",
34 "menu.app.about" : "Sobre o Franz", 46 "menu.app.about" : "Sobre o Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Ocultar", 48 "menu.app.hide" : "Ocultar",
36 "menu.app.hideOthers" : "Ocultar Outros", 49 "menu.app.hideOthers" : "Ocultar Outros",
37 "menu.app.quit" : "Sair", 50 "menu.app.quit" : "Sair",
@@ -59,14 +72,16 @@
59 "menu.help.support" : "Suporte", 72 "menu.help.support" : "Suporte",
60 "menu.help.tos" : "Termos do Serviço", 73 "menu.help.tos" : "Termos do Serviço",
61 "menu.services" : "Serviços", 74 "menu.services" : "Serviços",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Adicionar Novo Serviço...", 76 "menu.services.addNewService" : "Adicionar Novo Serviço...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "Ver", 78 "menu.view" : "Ver",
64 "menu.view.enterFullScreen" : "Ativar Modo de EcrĂ£ Completo", 79 "menu.view.enterFullScreen" : "Ativar Modo de EcrĂ£ Completo",
65 "menu.view.exitFullScreen" : "Sair do Modo de EcrĂ£ Completo", 80 "menu.view.exitFullScreen" : "Sair do Modo de EcrĂ£ Completo",
66 "menu.view.reloadFranz" : "Recarregar Franz", 81 "menu.view.reloadFranz" : "Recarregar Franz",
67 "menu.view.reloadService" : "Recarregar serviço", 82 "menu.view.reloadService" : "Recarregar serviço",
68 "menu.view.resetZoom" : "Tamanho Real", 83 "menu.view.resetZoom" : "Tamanho Real",
69 "menu.view.toggleDevTools" : "Activar\/Desativar Ferramentas de Desenvolvimento", 84 "menu.view.toggleDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento",
70 "menu.view.toggleFullScreen" : "Ativar\/Desativar EcrĂ£ Completo", 85 "menu.view.toggleFullScreen" : "Ativar\/Desativar EcrĂ£ Completo",
71 "menu.view.toggleServiceDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento de Serviços", 86 "menu.view.toggleServiceDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento de Serviços",
72 "menu.view.zoomIn" : "Aumentar", 87 "menu.view.zoomIn" : "Aumentar",
@@ -74,6 +89,11 @@
74 "menu.window" : "Janela", 89 "menu.window" : "Janela",
75 "menu.window.close" : "Fechar", 90 "menu.window.close" : "Fechar",
76 "menu.window.minimize" : "Minimizar", 91 "menu.window.minimize" : "Minimizar",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Todos os serviços",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Endereço de e-mail", 97 "password.email.label" : "Endereço de e-mail",
78 "password.headline" : "Repor a minha palavra-passe", 98 "password.headline" : "Repor a minha palavra-passe",
79 "password.link.login" : "Iniciar sessĂ£o", 99 "password.link.login" : "Iniciar sessĂ£o",
@@ -81,7 +101,7 @@
81 "password.noUser" : "NĂ£o existe nenhuma conta associada a esse endereço de e-mail", 101 "password.noUser" : "NĂ£o existe nenhuma conta associada a esse endereço de e-mail",
82 "password.submit.label" : "Submeter", 102 "password.submit.label" : "Submeter",
83 "password.successInfo" : "Por favor verifique o seu endereço de e-mail", 103 "password.successInfo" : "Por favor verifique o seu endereço de e-mail",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "Atualiza a tua conta",
85 "pricing.headline" : "Apoie o Franz", 105 "pricing.headline" : "Apoie o Franz",
86 "pricing.link.skipPayment" : "NĂ£o pretendo patrocinar o desenvolvimento do Franz", 106 "pricing.link.skipPayment" : "NĂ£o pretendo patrocinar o desenvolvimento do Franz",
87 "pricing.submit.label" : "Pretendo patrocinar o desenvolvimento do Franz", 107 "pricing.submit.label" : "Pretendo patrocinar o desenvolvimento do Franz",
@@ -96,11 +116,12 @@
96 "service.errorHandler.editAction" : "Editar {name}", 116 "service.errorHandler.editAction" : "Editar {name}",
97 "service.errorHandler.headline" : "Oh nĂ£o!", 117 "service.errorHandler.headline" : "Oh nĂ£o!",
98 "service.errorHandler.message" : "Erro", 118 "service.errorHandler.message" : "Erro",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} falhou o carregamento",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Vamos começar", 121 "services.getStarted" : "Vamos começar",
101 "services.welcome" : "Bem-vindo ao Franz", 122 "services.welcome" : "Bem-vindo ao Franz",
102 "settings.account.account.editButton" : "Editar conta", 123 "settings.account.account.editButton" : "Editar conta",
103 "settings.account.accountType.basic" : "Conta bĂ¡sica", 124 "settings.account.accountType.basic" : "Conta BĂ¡sica",
104 "settings.account.accountType.premium" : "Conta Premium", 125 "settings.account.accountType.premium" : "Conta Premium",
105 "settings.account.buttonSave" : "Atualizar o perfil", 126 "settings.account.buttonSave" : "Atualizar o perfil",
106 "settings.account.deleteAccount" : "Apagar conta", 127 "settings.account.deleteAccount" : "Apagar conta",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Transferir", 138 "settings.account.invoiceDownload" : "Transferir",
118 "settings.account.manageSubscription.label" : "Gerir as minhas subscrições", 139 "settings.account.manageSubscription.label" : "Gerir as minhas subscrições",
119 "settings.account.successInfo" : "As suas alterações foram efetuadas com sucesso", 140 "settings.account.successInfo" : "As suas alterações foram efetuadas com sucesso",
141 "settings.account.tryReloadServices" : "Tentar novamente",
120 "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", 142 "settings.account.tryReloadUserInfoRequest" : "Tentar novamente",
121 "settings.account.userInfoRequestFailed" : "NĂ£o Ă© possĂ­vel carregar a informaĂ§Ă£o do utilizador", 143 "settings.account.userInfoRequestFailed" : "NĂ£o Ă© possĂ­vel carregar a informaĂ§Ă£o do utilizador",
122 "settings.app.buttonClearAllCache" : "Limpar cache", 144 "settings.app.buttonClearAllCache" : "Limpar cache",
@@ -127,45 +149,45 @@
127 "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", 149 "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano",
128 "settings.app.form.autoLaunchOnStart" : "Iniciar o Franz apĂ³s iniciar o computador", 150 "settings.app.form.autoLaunchOnStart" : "Iniciar o Franz apĂ³s iniciar o computador",
129 "settings.app.form.beta" : "Incluir versões instĂ¡veis (beta)", 151 "settings.app.form.beta" : "Incluir versões instĂ¡veis (beta)",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Junta-te ao Lado Negro",
131 "settings.app.form.enableGPUAcceleration" : "Activar AceleraĂ§Ă£o de GPU", 153 "settings.app.form.enableGPUAcceleration" : "Activar AceleraĂ§Ă£o de GPU",
132 "settings.app.form.enableMenuBar" : "Mostrar Franz na Barra de Menu",
133 "settings.app.form.enableSpellchecking" : "Ativar verificaĂ§Ă£o ortogrĂ¡fica", 154 "settings.app.form.enableSpellchecking" : "Ativar verificaĂ§Ă£o ortogrĂ¡fica",
134 "settings.app.form.enableSystemTray" : "Mostrar o Franz na barra do sistema", 155 "settings.app.form.enableSystemTray" : "Mostrar o Franz na barra do sistema",
135 "settings.app.form.hideDockIcon" : "Esconder Ă­cone na Dock",
136 "settings.app.form.language" : "Idioma", 156 "settings.app.form.language" : "Idioma",
137 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a barra do sistema", 157 "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a barra do sistema",
138 "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela", 158 "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela",
139 "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desativados", 159 "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desativados",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar emblema com o nĂºmero de mensagens nĂ£o lidas quando as notificações estĂ£o desativadas", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar emblema com o nĂºmero de mensagens nĂ£o lidas quando as notificações estĂ£o desativadas",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Definições", 161 "settings.app.headline" : "Definições",
143 "settings.app.headlineAdvanced" : "Avançado", 162 "settings.app.headlineAdvanced" : "Avançado",
144 "settings.app.headlineAppearance" : "AparĂªncia", 163 "settings.app.headlineAppearance" : "AparĂªncia",
145 "settings.app.headlineGeneral" : "Geral", 164 "settings.app.headlineGeneral" : "Geral",
146 "settings.app.headlineLanguage" : "Idioma", 165 "settings.app.headlineLanguage" : "Idioma",
147 "settings.app.headlineUpdates" : "Atualizações", 166 "settings.app.headlineUpdates" : "Atualizações",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Alterações requerem reinício", 168 "settings.app.restartRequired" : "Alterações requerem reinício",
149 "settings.app.subheadlineCache" : "Cache", 169 "settings.app.subheadlineCache" : "Cache",
150 "settings.app.translationHelp" : "Ajude-nos a traduzir a Franz para a sua lĂ­ngua.", 170 "settings.app.translationHelp" : "Ajude-nos a traduzir a Franz para a sua lĂ­ngua.",
151 "settings.app.updateStatusAvailable" : "AtualizaĂ§Ă£o disponivel, a transferir...", 171 "settings.app.updateStatusAvailable" : "AtualizaĂ§Ă£o disponivel, a transferir...",
152 "settings.app.updateStatusSearching" : "A procurar atualizações", 172 "settings.app.updateStatusSearching" : "A procurar atualizações",
153 "settings.app.updateStatusUpToDate" : "EstĂ¡ a usar a versĂ£o mais recente do Franz", 173 "settings.app.updateStatusUpToDate" : "EstĂ¡ a usar a versĂ£o mais recente do Franz",
154 "settings.invite.headline" : "Convide amigos", 174 "settings.invite.headline" : "Convide Amigos",
155 "settings.navigation.account" : "Conta", 175 "settings.navigation.account" : "Conta",
156 "settings.navigation.availableServices" : "Serviços disponíveis", 176 "settings.navigation.availableServices" : "Serviços disponíveis",
157 "settings.navigation.inviteFriends" : "Convide amigos", 177 "settings.navigation.inviteFriends" : "Convide Amigos",
158 "settings.navigation.logout" : "Terminar sessĂ£o", 178 "settings.navigation.logout" : "Terminar sessĂ£o",
159 "settings.navigation.settings" : "Definições", 179 "settings.navigation.settings" : "Definições",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Os seus serviços", 181 "settings.navigation.yourServices" : "Os seus serviços",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Todos os serviços", 183 "settings.recipes.all" : "Todos os serviços",
162 "settings.recipes.dev" : "Desenvolvimento", 184 "settings.recipes.dev" : "Desenvolvimento",
163 "settings.recipes.headline" : "Serviços disponíveis", 185 "settings.recipes.headline" : "Serviços disponíveis",
164 "settings.recipes.missingService" : "Falta um serviço?", 186 "settings.recipes.missingService" : "Falta um serviço?",
165 "settings.recipes.mostPopular" : "Os mais populares", 187 "settings.recipes.mostPopular" : "Os mais populares",
166 "settings.recipes.nothingFound" : "Lamentamos, nenhum serviço corresponde ao pesquisado.", 188 "settings.recipes.nothingFound" : "Lamentamos, nenhum serviço corresponde ao termo pesquisado.",
167 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado", 189 "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado com sucesso",
168 "settings.searchService" : "Pesquisa de serviço", 190 "settings.searchService" : "Pesquisar erviço",
169 "settings.service.error.goBack" : "Voltar aos serviços", 191 "settings.service.error.goBack" : "Voltar aos serviços",
170 "settings.service.error.headline" : "Erro", 192 "settings.service.error.headline" : "Erro",
171 "settings.service.error.message" : "NĂ£o foi possĂ­vel carregar a receita do serviço.", 193 "settings.service.error.message" : "NĂ£o foi possĂ­vel carregar a receita do serviço.",
@@ -179,30 +201,28 @@
179 "settings.service.form.editServiceHeadline" : "Editar {name}", 201 "settings.service.form.editServiceHeadline" : "Editar {name}",
180 "settings.service.form.enableAudio" : "Ativar Ă¡udio", 202 "settings.service.form.enableAudio" : "Ativar Ă¡udio",
181 "settings.service.form.enableBadge" : "Mostrar emblemas de mensagens nĂ£o lidas", 203 "settings.service.form.enableBadge" : "Mostrar emblemas de mensagens nĂ£o lidas",
182 "settings.service.form.enableDarkMode" : "Enable Dark Mode", 204 "settings.service.form.enableDarkMode" : "Ativar o Tema Escuro",
183 "settings.service.form.enableNotification" : "Ativar notificações", 205 "settings.service.form.enableNotification" : "Ativar notificações",
184 "settings.service.form.enableService" : "Ativar serviço", 206 "settings.service.form.enableService" : "Ativar serviço",
185 "settings.service.form.headlineBadges" : "Emblema de mensagem nĂ£o lida", 207 "settings.service.form.headlineBadges" : "Emblema de mensagem nĂ£o lida",
186 "settings.service.form.headlineGeneral" : "Geral", 208 "settings.service.form.headlineGeneral" : "Geral",
187 "settings.service.form.headlineNotifications" : "Notificações", 209 "settings.service.form.headlineNotifications" : "Notificações",
188 "settings.service.form.icon" : "Personalizar Ă­cone", 210 "settings.service.form.icon" : "Ăcone personalizado",
189 "settings.service.form.iconDelete" : "Apagar", 211 "settings.service.form.iconDelete" : "Apagar",
190 "settings.service.form.iconUpload" : "Arraste a sua imagem, ou clique aqui", 212 "settings.service.form.iconUpload" : "Arraste a sua imagem, ou clique aqui",
191 "settings.service.form.indirectMessageInfo" : "SerĂ¡ notificado sobre todas as novas mensagens num canal, nĂ£o apenas @username, @channel, @here, ...", 213 "settings.service.form.indirectMessageInfo" : "SerĂ¡ notificado sobre todas as novas mensagens num canal, nĂ£o apenas @username, @channel, @here, ...",
192 "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens", 214 "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens",
193 "settings.service.form.isMutedInfo" : "Quando desativado, todos sons e reproduções de Ă¡udio serĂ£o silenciados", 215 "settings.service.form.isMutedInfo" : "Quando desativado, todos sons e reproduções de Ă¡udio serĂ£o silenciados",
194 "settings.service.form.name" : "Nome", 216 "settings.service.form.name" : "Nome",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "Definições HTTP\/HTTPS Proxy",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Host\/IP proxy",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "As definições do proxy nĂ£o serĂ£o guardadas nos servidores do Franz.",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Usar Proxy",
199 "settings.service.form.proxy.password" : "Password (optional)", 221 "settings.service.form.proxy.password" : "Palavra-chave (opcional)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Porta",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Reinicie, por favor, apĂ³s atualizar as definições do Franz",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "Utilizador (opcional)",
203 "settings.service.form.saveButton" : "Guardar serviço", 225 "settings.service.form.saveButton" : "Guardar serviço",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Com domĂ­nio", 226 "settings.service.form.tabHosted" : "Com domĂ­nio",
207 "settings.service.form.tabOnPremise" : "Com domĂ­nio prĂ³prio â­ï¸", 227 "settings.service.form.tabOnPremise" : "Com domĂ­nio prĂ³prio â­ï¸",
208 "settings.service.form.team" : "Equipa", 228 "settings.service.form.team" : "Equipa",
@@ -211,11 +231,18 @@
211 "settings.services.deletedInfo" : "O serviço foi apagado", 231 "settings.services.deletedInfo" : "O serviço foi apagado",
212 "settings.services.discoverServices" : "Descobrir serviços", 232 "settings.services.discoverServices" : "Descobrir serviços",
213 "settings.services.headline" : "Os seus serviços", 233 "settings.services.headline" : "Os seus serviços",
214 "settings.services.noServicesAdded" : "Ainda nĂ£o adicionou um serviço.", 234 "settings.services.noServicesAdded" : "Ainda nĂ£o adicionou nenhum serviço.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "O serviço estĂ¡ desativado", 236 "settings.services.tooltip.isDisabled" : "O serviço estĂ¡ desativado",
216 "settings.services.tooltip.isMuted" : "Todos os sons estĂ£o silenciados", 237 "settings.services.tooltip.isMuted" : "Todos os sons estĂ£o silenciados",
217 "settings.services.tooltip.notificationsDisabled" : "As notificações estĂ£o desativadas", 238 "settings.services.tooltip.notificationsDisabled" : "As notificações estĂ£o desativadas",
218 "settings.services.updatedInfo" : "As alterações foram guardadas", 239 "settings.services.updatedInfo" : "As alterações foram guardadas",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Equipa",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Empresa", 246 "settings.user.form.accountType.company" : "Empresa",
220 "settings.user.form.accountType.individual" : "IndivĂ­duo", 247 "settings.user.form.accountType.individual" : "IndivĂ­duo",
221 "settings.user.form.accountType.label" : "Tipo de conta", 248 "settings.user.form.accountType.label" : "Tipo de conta",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Primeiro Nome", 252 "settings.user.form.firstname" : "Primeiro Nome",
226 "settings.user.form.lastname" : "Ăltimo Nome", 253 "settings.user.form.lastname" : "Ăltimo Nome",
227 "settings.user.form.newPassword" : "Nova palavra-passe", 254 "settings.user.form.newPassword" : "Nova palavra-passe",
255 "settings.workspace.add.form.name" : "Nome",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Nome",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Tentar novamente",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Adicionar um novo serviço", 270 "sidebar.addNewService" : "Adicionar um novo serviço",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Desativar notificações e Ă¡udio", 272 "sidebar.muteApp" : "Desativar notificações e Ă¡udio",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Definições", 274 "sidebar.settings" : "Definições",
231 "sidebar.unmuteApp" : "Ativar notificações e Ă¡udio", 275 "sidebar.unmuteApp" : "Ativar notificações e Ă¡udio",
232 "signup.company.label" : "Empresa", 276 "signup.company.label" : "Empresa",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Residentes EU: Taxas locais podem ser aplicadas", 288 "subscription.euTaxInfo" : "Residentes EU: Taxas locais podem ser aplicadas",
245 "subscription.features.ads" : "Sem anĂºncios, para sempre!", 289 "subscription.features.ads" : "Sem anĂºncios, para sempre!",
246 "subscription.features.comingSoon" : "em breve", 290 "subscription.features.comingSoon" : "em breve",
247 "subscription.features.encryptedSync" : "SincronizaĂ§Ă£o encriptada de sessĂ£o", 291 "subscription.features.noInterruptions" : "Sem atrasos na aplicaĂ§Ă£o nem mensagens para comprar uma licença",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Adicione serviços como Mattermost no local ou online",
249 "subscription.features.onpremise" : "Adicionar serviços 'on-premise'\/hosted como o HipChat", 293 "subscription.features.proxy" : "Suporte Proxy para os serviços",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 294 "subscription.features.spellchecker" : "Suporte para correĂ§Ă£o ortogrĂ¡fica",
251 "subscription.features.proxy" : "Proxy support for services", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
252 "subscription.features.spellchecker" : "Support for spellchecker",
253 "subscription.includedFeatures" : "Ao subscrever uma Conta Premium, tem acesso a", 296 "subscription.includedFeatures" : "Ao subscrever uma Conta Premium, tem acesso a",
254 "subscription.paymentSessionError" : "Erro no serviço de pagamento", 297 "subscription.paymentSessionError" : "Erro no serviço de pagamento",
255 "subscription.submit.label" : "Pretendo ajudar o desenvolvimento do Franz", 298 "subscription.submit.label" : "Pretendo ajudar o desenvolvimento do Franz",
@@ -268,10 +311,21 @@
268 "tabs.item.enableService" : "Ativar serviço", 311 "tabs.item.enableService" : "Ativar serviço",
269 "tabs.item.reload" : "Recarregar", 312 "tabs.item.reload" : "Recarregar",
270 "validation.email" : "{field} nĂ£o Ă© vĂ¡lido", 313 "validation.email" : "{field} nĂ£o Ă© vĂ¡lido",
271 "validation.minLength" : "{field} deveria ter pelo menos {comprimento} caracteres", 314 "validation.minLength" : "{field} deveria ter pelo menos {length} caracteres",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} Ă© obrigatĂ³rio", 316 "validation.required" : "{field} Ă© obrigatĂ³rio",
273 "validation.url" : "{field} nĂ£o Ă© uma hiperligaĂ§Ă£o vĂ¡lida", 317 "validation.url" : "{field} nĂ£o Ă© uma hiperligaĂ§Ă£o vĂ¡lida",
274 "welcome.loginButton" : "Iniciar sessĂ£o", 318 "welcome.loginButton" : "Iniciar sessĂ£o",
275 "welcome.signupButton" : "Criar uma conta gratuita", 319 "welcome.signupButton" : "Criar uma conta gratuita",
276 "welcome.slogan" : "Sistema de mensagens feito para si" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Todos os serviços",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index b605afc4d..97ad98361 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ", 2 "app.errorHandler.action" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Đ§Ñ‚Đ¾-Ñ‚Đ¾ Đ¿Đ¾ÑˆĐ»Đ¾ Đ½Đµ Ñ‚Đ°Đº",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Đ˜Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Đ² Đ²ĐµÑ€Ñии Franz {version}",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.action" : "ĐŸĐ¾Đ»ÑƒÑ‡Đ¸Ñ‚Đµ Đ»Đ¸Ñ†ĐµĐ½Đ·Đ¸Ñ Franz Supporter",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.headline" : "ĐŸĐ¾Đ¶Đ°Đ»ÑƒĐ¹ÑÑ‚Đ° Đ¿Ñ€Đ¸Đ¾Đ±Ñ€ĐµÑ‚Đ¸Ñ‚Đµ Đ»Đ¸Ñ†ĐµĐ½Đ·Đ¸Ñ Franz Supporter Ñ‡Ñ‚Đ¾Đ±Ñ‹ ÑƒĐ±Ñ€Đ°Ñ‚ÑŒ Đ¾Đ¶Đ¸Đ´Đ°Đ½Đ¸Đµ",
7 "feature.delayApp.text" : "Franz Đ¿Ñ€Đ¾Đ´Đ¾Đ»Đ¶Đ¸Ñ‚ Ñ€Đ°Đ±Đ¾Ñ‚Ñƒ Ñ‡ĐµÑ€ĐµĐ· {seconds} ÑĐµĐºÑƒĐ½Đ´.",
8 "feature.shareFranz.action.email" : "ĐÑ‚Đ¿Ñ€Đ°Đ²Đ¸Ñ‚ÑŒ email",
9 "feature.shareFranz.action.facebook" : "ĐŸĐ¾Đ´ĐµĐ»Đ¸Ñ‚ÑŒÑÑ Đ½Đ° Facebook",
10 "feature.shareFranz.action.twitter" : "ĐŸĐ¾Đ´ĐµĐ»Đ¸Ñ‚ÑŒÑÑ Đ² Twitter",
11 "feature.shareFranz.headline" : "Đ¡Đ´ĐµĐ»Đ°ĐµĐ¼ Franz Đ»ÑƒÑ‡ÑˆĐµ Đ²Đ¼ĐµÑÑ‚Đµ!",
12 "feature.shareFranz.shareText.email" : "Đ¯ Đ´Đ¾Đ±Đ°Đ²Đ¸Đ» {count} ÑĐµÑ€Đ²Đ¸ÑĐ¾Đ² Đ²Đ¾ Franz! Đ¢ĐµĐ¿ĐµÑ€ÑŒ Đ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Ñ‹ Ñ‚Đ°ĐºĐ¸Đµ Đ¼ĐµÑÑĐµĐ½Đ´Đ¶ĐµÑ€Ñ‹ ĐºĐ°Đº WhatsApp, Messenger, Slack, Skype и Đ´Ñ€ÑƒĐ³Đ¸Đµ. ĐŸĐ¾Đ»Ñ‹Đ¹ ÑĐ¿Đ¸ÑĐ¾Đº Đ²Ñ‹ Đ½Đ°Đ¹Đ´ĐµÑ‚Đµ Đ½Đ° www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "Đ¯ Đ´Đ¾Đ±Đ°Đ²Đ¸Đ» {count} ÑĐµÑ€Đ²Đ¸Ñ(Đ¾Đ²) Đ² Franz! Đ¡ĐºĐ°Ñ‡Đ°Đ¹ беÑĐ¿Đ»Đ°Ñ‚Đ½ÑƒÑ Đ°Đ¿Đ¿ĐºÑƒ Đ´Đ»Ñ WhatsApp, Messenger, Slack, Skype и иже Đ½Đ° www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Đ Đ°ÑÑĐºĐ°Đ¶Đ¸ ÑĐ²Đ¾Đ¸Đ¼ Đ´Ñ€ÑƒĐ·ÑŒÑĐ¼ и ĐºĐ¾Đ»Đ»ĐµĐ³Đ°Đ¼ Đ½Đ°ÑĐºĐ¾Đ»ÑŒĐºĐ¾ Đ¿Ñ€ĐµĐ»ĐµÑÑ‚ĐµĐ½ Franz и Đ¿Đ¾Đ¼Đ¾Đ³Đ¸ Đ½Đ°Đ¼ Ñ€Đ°Đ·Đ²Đ¸Ñ‚ÑŒÑÑ",
7 "global.api.unhealthy" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒÑÑ Đº Đ¾Đ½Đ»Đ°Đ¹Đ½-ÑĐµÑ€Đ²Đ¸ÑĐ°Đ¼ Franz", 15 "global.api.unhealthy" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒÑÑ Đº Đ¾Đ½Đ»Đ°Đ¹Đ½-ÑĐµÑ€Đ²Đ¸ÑĐ°Đ¼ Franz",
8 "global.notConnectedToTheInternet" : "Đ’Ñ‹ Đ½Đµ Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹ Đº ÑĐµÑ‚Đ¸ Đ˜Đ½Ñ‚ĐµÑ€Đ½ĐµÑ‚", 16 "global.notConnectedToTheInternet" : "Đ’Ñ‹ Đ½Đµ Đ¿Đ¾Đ´ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹ Đº ÑĐµÑ‚Đ¸ Đ˜Đ½Ñ‚ĐµÑ€Đ½ĐµÑ‚",
17 "global.spellchecker.useDefault" : "Đ˜ÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ÑŒ ÑиÑÑ‚ĐµĐ¼Đ½Ñ‹Đµ Đ¿Đ°Ñ€Đ°Đ¼ĐµÑ‚Ñ€Ñ‹ Đ¿Đ¾ ÑƒĐ¼Đ¾Đ»Ñ‡Đ°Đ½Đ¸Ñ ({default})",
18 "global.spellchecking.autodetect" : "ĐĐ°Đ¹Ñ‚Đ¸ ÑĐ·Ñ‹Đº Đ°Đ²Ñ‚Đ¾Đ¼Đ°Ñ‚Đ¸Ñ‡ĐµÑĐºĐ¸",
19 "global.spellchecking.autodetect.short" : "ĐĐ²Ñ‚Đ¾",
20 "global.spellchecking.language" : "ĐŸÑ€Đ¾Đ²ĐµÑ€ĐºĐ° Đ¿Ñ€Đ°Đ²Đ¾Đ¿Đ¸ÑĐ°Đ½Đ¸Ñ",
9 "import.headline" : "Đ˜Đ¼Đ¿Đ¾Ñ€Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ Đ²Đ°ÑˆĐ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹ из Franz 4", 21 "import.headline" : "Đ˜Đ¼Đ¿Đ¾Ñ€Ñ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ Đ²Đ°ÑˆĐ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹ из Franz 4",
10 "import.notSupportedHeadline" : "Đ¡ĐµÑ€Đ²Đ¸ÑÑ‹ Đ¿Đ¾ĐºĐ° ĐµÑ‰Ñ‘ Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ÑÑ‚ÑÑ Đ² Franz 5", 22 "import.notSupportedHeadline" : "Đ¡ĐµÑ€Đ²Đ¸ÑÑ‹ Đ¿Đ¾ĐºĐ° ĐµÑ‰Ñ‘ Đ½Đµ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°ÑÑ‚ÑÑ Đ² Franz 5",
11 "import.skip.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ´Đ¾Đ±Đ°Đ²Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸ÑÑ‹ Đ²Ñ€ÑƒÑ‡Đ½ÑƒÑ", 23 "import.skip.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ´Đ¾Đ±Đ°Đ²Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸ÑÑ‹ Đ²Ñ€ÑƒÑ‡Đ½ÑƒÑ",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Đ’Ñ…Đ¾Đ´", 44 "login.submit.label" : "Đ’Ñ…Đ¾Đ´",
33 "login.tokenExpired" : "Đ¡ĐµÑÑĐ¸Ñ ÑƒÑÑ‚Đ°Ñ€ĐµĐ»Đ°, Đ¿Đ¾Đ¶Đ°Đ»ÑƒĐ¹ÑÑ‚Đ°, Đ²Đ¾Đ¹Đ´Đ¸Ñ‚Đµ ÑĐ½Đ¾Đ²Đ°.", 45 "login.tokenExpired" : "Đ¡ĐµÑÑĐ¸Ñ ÑƒÑÑ‚Đ°Ñ€ĐµĐ»Đ°, Đ¿Đ¾Đ¶Đ°Đ»ÑƒĐ¹ÑÑ‚Đ°, Đ²Đ¾Đ¹Đ´Đ¸Ñ‚Đµ ÑĐ½Đ¾Đ²Đ°.",
34 "menu.app.about" : "Đ Franz", 46 "menu.app.about" : "Đ Franz",
47 "menu.app.announcement" : "Đ§Ñ‚Đ¾ Đ½Đ¾Đ²Đ¾Đ³Đ¾?",
35 "menu.app.hide" : "Đ¡ĐºÑ€Ñ‹Ñ‚ÑŒ", 48 "menu.app.hide" : "Đ¡ĐºÑ€Ñ‹Ñ‚ÑŒ",
36 "menu.app.hideOthers" : "Đ¡ĐºÑ€Ñ‹Ñ‚ÑŒ Đ¾ÑÑ‚Đ°Đ»ÑŒĐ½Ñ‹Đµ", 49 "menu.app.hideOthers" : "Đ¡ĐºÑ€Ñ‹Ñ‚ÑŒ Đ¾ÑÑ‚Đ°Đ»ÑŒĐ½Ñ‹Đµ",
37 "menu.app.quit" : "Đ’Ñ‹Đ¹Ñ‚Đ¸", 50 "menu.app.quit" : "Đ’Ñ‹Đ¹Ñ‚Đ¸",
@@ -58,8 +71,10 @@
58 "menu.help.privacy" : "ĐŸĐ¾Đ»Đ¸Ñ‚Đ¸ĐºĐ° ĐºĐ¾Đ½Ñ„Đ¸Đ´ĐµĐ½Ñ†Đ¸Đ°Đ»ÑŒĐ½Đ¾ÑÑ‚Đ¸", 71 "menu.help.privacy" : "ĐŸĐ¾Đ»Đ¸Ñ‚Đ¸ĐºĐ° ĐºĐ¾Đ½Ñ„Đ¸Đ´ĐµĐ½Ñ†Đ¸Đ°Đ»ÑŒĐ½Đ¾ÑÑ‚Đ¸",
59 "menu.help.support" : "ĐŸĐ¾Đ´Đ´ĐµÑ€Đ¶ĐºĐ°", 72 "menu.help.support" : "ĐŸĐ¾Đ´Đ´ĐµÑ€Đ¶ĐºĐ°",
60 "menu.help.tos" : "Đ£ÑĐ»Đ¾Đ²Đ¸Ñ Đ¸ÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Đ½Đ¸Ñ", 73 "menu.help.tos" : "Đ£ÑĐ»Đ¾Đ²Đ¸Ñ Đ¸ÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Đ½Đ¸Ñ",
61 "menu.services" : "Đ¡Đ»ÑƒĐ¶Đ±Ñ‹", 74 "menu.services" : "Đ¡ĐµÑ€Đ²Đ¸Ñ",
75 "menu.services.activatePreviousService" : "ĐĐºÑ‚Đ¸Đ²Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ Đ¿Ñ€ĐµĐ´Ñ‹Đ´ÑƒÑ‰Đ¸Đ¹ ÑĐµÑ€Đ²Đ¸Ñ‡",
62 "menu.services.addNewService" : "Đ”Đ¾Đ±Đ°Đ²Đ¸Ñ‚ÑŒ Đ½Đ¾Đ²Ñ‹Đ¹ ÑĐµÑ€Đ²Đ¸Ñ...", 76 "menu.services.addNewService" : "Đ”Đ¾Đ±Đ°Đ²Đ¸Ñ‚ÑŒ Đ½Đ¾Đ²Ñ‹Đ¹ ÑĐµÑ€Đ²Đ¸Ñ...",
77 "menu.services.setNextServiceActive" : "ĐĐºÑ‚Đ¸Đ²Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ ÑĐ»ĐµĐ´ÑƒÑÑ‰Đ¸Đ¹ ÑĐµÑ€Đ²Đ¸Ñ",
63 "menu.view" : "Вид", 78 "menu.view" : "Вид",
64 "menu.view.enterFullScreen" : "ĐĐ° Đ²ĐµÑÑŒ ÑĐºÑ€Đ°Đ½", 79 "menu.view.enterFullScreen" : "ĐĐ° Đ²ĐµÑÑŒ ÑĐºÑ€Đ°Đ½",
65 "menu.view.exitFullScreen" : "Đ’ Đ¾ĐºĐ½Đµ", 80 "menu.view.exitFullScreen" : "Đ’ Đ¾ĐºĐ½Đµ",
@@ -74,6 +89,11 @@
74 "menu.window" : "ĐĐºĐ½Đ¾", 89 "menu.window" : "ĐĐºĐ½Đ¾",
75 "menu.window.close" : "Đ—Đ°ĐºÑ€Ñ‹Ñ‚ÑŒ", 90 "menu.window.close" : "Đ—Đ°ĐºÑ€Ñ‹Ñ‚ÑŒ",
76 "menu.window.minimize" : "Đ¡Đ²ĐµÑ€Đ½ÑƒÑ‚ÑŒ", 91 "menu.window.minimize" : "Đ¡Đ²ĐµÑ€Đ½ÑƒÑ‚ÑŒ",
92 "menu.workspaces" : "ĐĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đµ",
93 "menu.workspaces.addNewWorkspace" : "Đ”Đ¾Đ±Đ°Đ²Đ¸Ñ‚ÑŒ ĐĐ¾Đ²Đ¾Đµ ĐĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đµ...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Đ—Đ°ĐºÑ€Ñ‹Ñ‚ÑŒ Đ¼ĐµĐ½Ñ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đ¹",
95 "menu.workspaces.defaultWorkspace" : "Đ’Ñе ÑĐµÑ€Đ²Đ¸ÑÑ‹",
96 "menu.workspaces.openWorkspaceDrawer" : "ĐÑ‚ĐºÑ€Ñ‹Ñ‚ÑŒ Đ¼ĐµĐ½Ñ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đ¹",
77 "password.email.label" : "ĐĐ´Ñ€ĐµÑ ÑĐ»ĐµĐºÑ‚Ñ€Đ¾Đ½Đ½Đ¾Đ¹ Đ¿Đ¾Ñ‡Ñ‚Ñ‹", 97 "password.email.label" : "ĐĐ´Ñ€ĐµÑ ÑĐ»ĐµĐºÑ‚Ñ€Đ¾Đ½Đ½Đ¾Đ¹ Đ¿Đ¾Ñ‡Ñ‚Ñ‹",
78 "password.headline" : "Đ¡Đ±Ñ€Đ¾ÑĐ¸Ñ‚ÑŒ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ", 98 "password.headline" : "Đ¡Đ±Ñ€Đ¾ÑĐ¸Ñ‚ÑŒ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ",
79 "password.link.login" : "Đ’Ñ…Đ¾Đ´", 99 "password.link.login" : "Đ’Ñ…Đ¾Đ´",
@@ -81,7 +101,7 @@
81 "password.noUser" : "Đе Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ Ñ Ñ‚Đ°ĐºĐ¸Đ¼ Đ°Đ´Ñ€ĐµÑĐ¾Đ¼ ÑĐ»ĐµĐºÑ‚Ñ€Đ¾Đ½Đ½Đ¾Đ¹ Đ¿Đ¾Ñ‡Ñ‚Ñ‹", 101 "password.noUser" : "Đе Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ Ñ Ñ‚Đ°ĐºĐ¸Đ¼ Đ°Đ´Ñ€ĐµÑĐ¾Đ¼ ÑĐ»ĐµĐºÑ‚Ñ€Đ¾Đ½Đ½Đ¾Đ¹ Đ¿Đ¾Ñ‡Ñ‚Ñ‹",
82 "password.submit.label" : "ĐŸÑ€Đ¸Đ½ÑÑ‚ÑŒ", 102 "password.submit.label" : "ĐŸÑ€Đ¸Đ½ÑÑ‚ÑŒ",
83 "password.successInfo" : "ĐŸÑ€Đ¾Đ²ĐµÑ€ÑŒÑ‚Đµ Đ²Đ°ÑˆÑƒ ÑĐ»ĐµĐºÑ‚Ñ€Đ¾Đ½Đ½ÑƒÑ Đ¿Đ¾Ñ‡Ñ‚Ñƒ", 103 "password.successInfo" : "ĐŸÑ€Đ¾Đ²ĐµÑ€ÑŒÑ‚Đµ Đ²Đ°ÑˆÑƒ ÑĐ»ĐµĐºÑ‚Ñ€Đ¾Đ½Đ½ÑƒÑ Đ¿Đ¾Ñ‡Ñ‚Ñƒ",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "ĐŸĐµÑ€ĐµĐ¹Ñ‚Đ¸ Đ½Đ° Đ¿Đ»Đ°Ñ‚Đ½ÑƒÑ Đ¿Đ¾Đ´Đ¿Đ¸ÑĐºÑƒ",
85 "pricing.headline" : "ĐŸĐ¾Đ´Đ´ĐµÑ€Đ¶Đ°Ñ‚ÑŒ Franz", 105 "pricing.headline" : "ĐŸĐ¾Đ´Đ´ĐµÑ€Đ¶Đ°Ñ‚ÑŒ Franz",
86 "pricing.link.skipPayment" : "Đ¯ Đ½Đµ Ñ…Đ¾Ñ‡Ñƒ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°Ñ‚ÑŒ Ñ€Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºÑƒ Franz.", 106 "pricing.link.skipPayment" : "Đ¯ Đ½Đµ Ñ…Đ¾Ñ‡Ñƒ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ¸Đ²Đ°Ñ‚ÑŒ Ñ€Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºÑƒ Franz.",
87 "pricing.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ°Ñ‚ÑŒ Ñ€Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºÑƒ Franz", 107 "pricing.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ°Ñ‚ÑŒ Ñ€Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºÑƒ Franz",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Đ ĐµĐ´Đ°ĐºÑ‚Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ {name}", 116 "service.errorHandler.editAction" : "Đ ĐµĐ´Đ°ĐºÑ‚Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ {name}",
97 "service.errorHandler.headline" : "Đ, Đ½ĐµÑ‚!", 117 "service.errorHandler.headline" : "Đ, Đ½ĐµÑ‚!",
98 "service.errorHandler.message" : "ĐÑˆĐ¸Đ±ĐºĐ°", 118 "service.errorHandler.message" : "ĐÑˆĐ¸Đ±ĐºĐ°",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} Đ½Đµ ÑĐ¼Đ¾Đ³ Đ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒÑÑ.",
120 "service.webviewLoader.loading" : "Đ—Đ°Đ³Ñ€ÑƒĐ·ĐºĐ°",
100 "services.getStarted" : "ĐĐ°Ñ‡Đ°Ñ‚ÑŒ Ñ€Đ°Đ±Đ¾Ñ‚Ñƒ", 121 "services.getStarted" : "ĐĐ°Ñ‡Đ°Ñ‚ÑŒ Ñ€Đ°Đ±Đ¾Ñ‚Ñƒ",
101 "services.welcome" : "Đ”Đ¾Đ±Ñ€Đ¾ Đ¿Đ¾Đ¶Đ°Đ»Đ¾Đ²Đ°Ñ‚ÑŒ Đ²Đ¾ Franz", 122 "services.welcome" : "Đ”Đ¾Đ±Ñ€Đ¾ Đ¿Đ¾Đ¶Đ°Đ»Đ¾Đ²Đ°Ñ‚ÑŒ Đ²Đ¾ Franz",
102 "settings.account.account.editButton" : "Đ ĐµĐ´Đ°ĐºÑ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚", 123 "settings.account.account.editButton" : "Đ ĐµĐ´Đ°ĐºÑ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚",
@@ -108,7 +129,7 @@
108 "settings.account.deleteInfo" : "Đ•Ñли Đ²Đ°Đ¼ Đ±Đ¾Đ»ÑŒÑˆĐµ Đ½Đµ Đ½ÑƒĐ¶Đ½Đ° Đ²Đ°ÑˆĐ° ÑƒÑ‡ĐµÑ‚Đ½Đ°Ñ Đ·Đ°Đ¿Đ¸ÑÑŒ Đ² Franz, Đ²Ñ‹ Đ¼Đ¾Đ¶ĐµÑ‚Đµ ÑƒĐ´Đ°Đ»Đ¸Ñ‚ÑŒ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚ и Đ²ÑÑ ÑĐ²ÑĐ·Đ°Đ½Đ½ÑƒÑ Ñ Đ½ĐµĐ¹ Đ¸Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Đ¸Ñ.", 129 "settings.account.deleteInfo" : "Đ•Ñли Đ²Đ°Đ¼ Đ±Đ¾Đ»ÑŒÑˆĐµ Đ½Đµ Đ½ÑƒĐ¶Đ½Đ° Đ²Đ°ÑˆĐ° ÑƒÑ‡ĐµÑ‚Đ½Đ°Ñ Đ·Đ°Đ¿Đ¸ÑÑŒ Đ² Franz, Đ²Ñ‹ Đ¼Đ¾Đ¶ĐµÑ‚Đµ ÑƒĐ´Đ°Đ»Đ¸Ñ‚ÑŒ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚ и Đ²ÑÑ ÑĐ²ÑĐ·Đ°Đ½Đ½ÑƒÑ Ñ Đ½ĐµĐ¹ Đ¸Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Đ¸Ñ.",
109 "settings.account.headline" : "ĐĐºĐºĐ°ÑƒĐ½Ñ‚", 130 "settings.account.headline" : "ĐĐºĐºĐ°ÑƒĐ½Ñ‚",
110 "settings.account.headlineAccount" : "Đ˜Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Đ¸Ñ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚Đ°", 131 "settings.account.headlineAccount" : "Đ˜Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Đ¸Ñ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚Đ°",
111 "settings.account.headlineDangerZone" : "ĐĐ¿Đ°ÑĐ½Đ°Ñ Đ—Đ¾Đ½Đ°", 132 "settings.account.headlineDangerZone" : "ĐĐ°Đ¿Ñ€ĐµÑĐ½Đ°Ñ Đ—Đ¾Đ½Đ°",
112 "settings.account.headlineInvoices" : "Đ¡Ñ‡ĐµÑ‚Đ°", 133 "settings.account.headlineInvoices" : "Đ¡Ñ‡ĐµÑ‚Đ°",
113 "settings.account.headlinePassword" : "Đ¡Đ¼ĐµĐ½Đ¸Ñ‚ÑŒ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ", 134 "settings.account.headlinePassword" : "Đ¡Đ¼ĐµĐ½Đ¸Ñ‚ÑŒ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ",
114 "settings.account.headlineProfile" : "ĐĐ±Đ½Đ¾Đ²Đ¸Ñ‚ÑŒ Đ¿Ñ€Đ¾Ñ„Đ¸Đ»ÑŒ", 135 "settings.account.headlineProfile" : "ĐĐ±Đ½Đ¾Đ²Đ¸Ñ‚ÑŒ Đ¿Ñ€Đ¾Ñ„Đ¸Đ»ÑŒ",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Đ¡ĐºĐ°Ñ‡Đ°Ñ‚ÑŒ", 138 "settings.account.invoiceDownload" : "Đ¡ĐºĐ°Ñ‡Đ°Ñ‚ÑŒ",
118 "settings.account.manageSubscription.label" : "Đ£Đ¿Ñ€Đ°Đ²Đ»ĐµĐ½Đ¸Đµ Đ²Đ°ÑˆĐµĐ¹ Đ¿Đ¾Đ´Đ¿Đ¸ÑĐºĐ¾Đ¹", 139 "settings.account.manageSubscription.label" : "Đ£Đ¿Ñ€Đ°Đ²Đ»ĐµĐ½Đ¸Đµ Đ²Đ°ÑˆĐµĐ¹ Đ¿Đ¾Đ´Đ¿Đ¸ÑĐºĐ¾Đ¹",
119 "settings.account.successInfo" : "Đ’Đ°ÑˆĐ¸ Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Đ±Ñ‹Đ»Đ¸ ÑĐ¾Ñ…Ñ€Đ°Đ½ĐµĐ½Ñ‹", 140 "settings.account.successInfo" : "Đ’Đ°ÑˆĐ¸ Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Đ±Ñ‹Đ»Đ¸ ÑĐ¾Ñ…Ñ€Đ°Đ½ĐµĐ½Ñ‹",
141 "settings.account.tryReloadServices" : "ĐŸĐ¾Đ¿Ñ€Đ¾Đ±Đ¾Đ²Đ°Ñ‚ÑŒ ÑĐ½Đ¾Đ²Đ°",
120 "settings.account.tryReloadUserInfoRequest" : "ĐŸĐ¾Đ¿Ñ€Đ¾Đ±Đ¾Đ²Đ°Ñ‚ÑŒ ÑĐ½Đ¾Đ²Đ°", 142 "settings.account.tryReloadUserInfoRequest" : "ĐŸĐ¾Đ¿Ñ€Đ¾Đ±Đ¾Đ²Đ°Ñ‚ÑŒ ÑĐ½Đ¾Đ²Đ°",
121 "settings.account.userInfoRequestFailed" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ Đ¸Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Đ¸Ñ Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ", 143 "settings.account.userInfoRequestFailed" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ Đ¸Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Đ¸Ñ Đ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»Ñ",
122 "settings.app.buttonClearAllCache" : "ĐÑ‡Đ¸ÑÑ‚Đ¸Ñ‚ÑŒ ĐºÑш", 144 "settings.app.buttonClearAllCache" : "ĐÑ‡Đ¸ÑÑ‚Đ¸Ñ‚ÑŒ ĐºÑш",
@@ -127,24 +149,22 @@
127 "settings.app.form.autoLaunchInBackground" : "ĐÑ‚ĐºÑ€Ñ‹Đ²Đ°Ñ‚ÑŒ Đ² Ñ„Đ¾Đ½Đµ", 149 "settings.app.form.autoLaunchInBackground" : "ĐÑ‚ĐºÑ€Ñ‹Đ²Đ°Ñ‚ÑŒ Đ² Ñ„Đ¾Đ½Đµ",
128 "settings.app.form.autoLaunchOnStart" : "Đ—Đ°Đ¿ÑƒÑĐºĐ°Ñ‚ÑŒ Franz Đ¿Ñ€Đ¸ ÑÑ‚Đ°Ñ€Ñ‚Đµ", 150 "settings.app.form.autoLaunchOnStart" : "Đ—Đ°Đ¿ÑƒÑĐºĐ°Ñ‚ÑŒ Franz Đ¿Ñ€Đ¸ ÑÑ‚Đ°Ñ€Ñ‚Đµ",
129 "settings.app.form.beta" : "Đ’ĐºĐ»ÑÑ‡Đ°Ñ Đ±ĐµÑ‚Đ° Đ²ĐµÑ€Ñии", 151 "settings.app.form.beta" : "Đ’ĐºĐ»ÑÑ‡Đ°Ñ Đ±ĐµÑ‚Đ° Đ²ĐµÑ€Ñии",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "ĐŸĐµÑ€ĐµĐ¹Ñ‚Đ¸ Đ½Đ° Đ¢Ñ‘Đ¼Đ½ÑƒÑ ÑÑ‚Đ¾Ñ€Đ¾Đ½Ñƒ",
131 "settings.app.form.enableGPUAcceleration" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ уÑĐºĐ¾Ñ€ĐµĐ½Đ¸Đµ GPU", 153 "settings.app.form.enableGPUAcceleration" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ уÑĐºĐ¾Ñ€ĐµĐ½Đ¸Đµ GPU",
132 "settings.app.form.enableMenuBar" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Franz Đ½Đ° Đ¿Đ°Đ½ĐµĐ»Đ¸ Đ¼ĐµĐ½Ñ",
133 "settings.app.form.enableSpellchecking" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºÑƒ Đ¿Ñ€Đ°Đ²Đ¾Đ¿Đ¸ÑĐ°Đ½Đ¸Ñ", 154 "settings.app.form.enableSpellchecking" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºÑƒ Đ¿Ñ€Đ°Đ²Đ¾Đ¿Đ¸ÑĐ°Đ½Đ¸Ñ",
134 "settings.app.form.enableSystemTray" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Franz Đ² ÑиÑÑ‚ĐµĐ¼Đ½Đ¾Đ¼ Ñ‚Ñ€ĐµĐµ", 155 "settings.app.form.enableSystemTray" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Franz Đ² ÑиÑÑ‚ĐµĐ¼Đ½Đ¾Đ¼ Ñ‚Ñ€ĐµĐµ",
135 "settings.app.form.hideDockIcon" : "Đ¡Đ¿Ñ€ÑÑ‚Đ°Ñ‚ÑŒ Đ¸ĐºĐ¾Đ½ĐºÑƒ Franz Đ½Đ° Đ¿Đ°Đ½ĐµĐ»Đ¸",
136 "settings.app.form.language" : "Đ¯Đ·Ñ‹Đº", 156 "settings.app.form.language" : "Đ¯Đ·Ñ‹Đº",
137 "settings.app.form.minimizeToSystemTray" : "Đ¡Đ²Đ¾Ñ€Đ°Ñ‡Đ¸Đ²Đ°Ñ‚ÑŒ Franz Đ² ÑиÑÑ‚ĐµĐ¼Đ½Ñ‹Đ¹ Ñ‚Ñ€ĐµĐ¹", 157 "settings.app.form.minimizeToSystemTray" : "Đ¡Đ²Đ¾Ñ€Đ°Ñ‡Đ¸Đ²Đ°Ñ‚ÑŒ Franz Đ² ÑиÑÑ‚ĐµĐ¼Đ½Ñ‹Đ¹ Ñ‚Ñ€ĐµĐ¹",
138 "settings.app.form.runInBackground" : "ĐÑÑ‚Đ°Đ²Đ»ÑÑ‚ÑŒ Franz Đ² Ñ„Đ¾Đ½Đµ Đ¿Ñ€Đ¸ Đ·Đ°ĐºÑ€Ñ‹Ñ‚Đ¸Đ¸ Đ¾ĐºĐ½Đ°", 158 "settings.app.form.runInBackground" : "ĐÑÑ‚Đ°Đ²Đ»ÑÑ‚ÑŒ Franz Đ² Ñ„Đ¾Đ½Đµ Đ¿Ñ€Đ¸ Đ·Đ°ĐºÑ€Ñ‹Ñ‚Đ¸Đ¸ Đ¾ĐºĐ½Đ°",
139 "settings.app.form.showDisabledServices" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ²ĐºĐ»Đ°Đ´ĐºĐ¸ Đ¾Ñ‚ĐºĐ»ÑÑ‡Ñ‘Đ½Đ½Ñ‹Ñ… ÑĐ»ÑƒĐ¶Đ±", 159 "settings.app.form.showDisabledServices" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ²ĐºĐ»Đ°Đ´ĐºĐ¸ Đ¾Ñ‚ĐºĐ»ÑÑ‡Ñ‘Đ½Đ½Ñ‹Ñ… ÑĐ»ÑƒĐ¶Đ±",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ·Đ½Đ°Ñ‡Đ¾Đº Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ½Đ¾Đ³Đ¾ ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Ñ Đ¿Ñ€Đ¸ Đ¾Ñ‚ĐºĐ»ÑÑ‡Ñ‘Đ½Đ½Ñ‹Ñ… ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸ÑÑ…", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ·Đ½Đ°Ñ‡Đ¾Đº Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ½Đ¾Đ³Đ¾ ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Ñ Đ¿Ñ€Đ¸ Đ¾Ñ‚ĐºĐ»ÑÑ‡Ñ‘Đ½Đ½Ñ‹Ñ… ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸ÑÑ…",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸", 161 "settings.app.headline" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸",
143 "settings.app.headlineAdvanced" : "Đ”Đ¾Đ¿Đ¾Đ»Đ½Đ¸Ñ‚ĐµĐ»ÑŒĐ½Đ¾", 162 "settings.app.headlineAdvanced" : "Đ”Đ¾Đ¿Đ¾Đ»Đ½Đ¸Ñ‚ĐµĐ»ÑŒĐ½Đ¾",
144 "settings.app.headlineAppearance" : "Đ’Đ½ĐµÑˆĐ½Đ¸Đ¹ Đ²Đ¸Đ´", 163 "settings.app.headlineAppearance" : "Đ’Đ½ĐµÑˆĐ½Đ¸Đ¹ Đ²Đ¸Đ´",
145 "settings.app.headlineGeneral" : "ĐĐ±Ñ‰Đ¸Đµ", 164 "settings.app.headlineGeneral" : "ĐĐ±Ñ‰Đ¸Đµ",
146 "settings.app.headlineLanguage" : "Đ¯Đ·Ñ‹Đº", 165 "settings.app.headlineLanguage" : "Đ¯Đ·Ñ‹Đº",
147 "settings.app.headlineUpdates" : "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ", 166 "settings.app.headlineUpdates" : "ĐĐ±Đ½Đ¾Đ²Đ»ĐµĐ½Đ¸Ñ",
167 "settings.app.languageDisclaimer" : "ĐÑ„Đ¸Ñ†Đ¸Đ°Đ»ÑŒĐ½Đ°Ñ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶ĐºĐ° Ñ‚Đ¾Đ»ÑŒĐºĐ¾ Đ´Đ»Ñ Đ°Đ½Đ³Đ»Đ¸Đ¹ÑĐºĐ¾Đ³Đ¾ и Đ½ĐµĐ¼ĐµÑ†ĐºĐ¾Đ³Đ¾ ÑĐ·Ñ‹ĐºĐ¾Đ². ĐÑÑ‚Đ°Đ»ÑŒĐ½Ñ‹Đµ ÑĐ·Ñ‹ĐºĐ¸ Đ¿ĐµÑ€ĐµĐ²ĐµĐ´ĐµĐ½Ñ‹ ÑĐ¾Đ¾Đ±Ñ‰ĐµÑÑ‚Đ²Đ¾Đ¼.",
148 "settings.app.restartRequired" : "Đ˜Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Ñ‚Ñ€ĐµĐ±ÑƒÑÑ‚ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Đ¿Ñ€Đ¸Đ»Đ¾Đ¶ĐµĐ½Đ¸Ñ", 168 "settings.app.restartRequired" : "Đ˜Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Ñ‚Ñ€ĐµĐ±ÑƒÑÑ‚ Đ¿ĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ Đ¿Ñ€Đ¸Đ»Đ¾Đ¶ĐµĐ½Đ¸Ñ",
149 "settings.app.subheadlineCache" : "ĐÑш", 169 "settings.app.subheadlineCache" : "ĐÑш",
150 "settings.app.translationHelp" : "ĐŸĐ¾Đ¼Đ¾Đ³Đ¸Ñ‚Đµ Đ½Đ°Đ¼ Đ¿ĐµÑ€ĐµĐ²ĐµÑÑ‚Đ¸ Franz Đ½Đ° Đ²Đ°Ñˆ ÑĐ·Ñ‹Đº.", 170 "settings.app.translationHelp" : "ĐŸĐ¾Đ¼Đ¾Đ³Đ¸Ñ‚Đµ Đ½Đ°Đ¼ Đ¿ĐµÑ€ĐµĐ²ĐµÑÑ‚Đ¸ Franz Đ½Đ° Đ²Đ°Ñˆ ÑĐ·Ñ‹Đº.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "ĐŸÑ€Đ¸Đ³Đ»Đ°ÑĐ¸Ñ‚ÑŒ Đ´Ñ€ÑƒĐ·ĐµĐ¹", 177 "settings.navigation.inviteFriends" : "ĐŸÑ€Đ¸Đ³Đ»Đ°ÑĐ¸Ñ‚ÑŒ Đ´Ñ€ÑƒĐ·ĐµĐ¹",
158 "settings.navigation.logout" : "Đ’Ñ‹Ñ…Đ¾Đ´", 178 "settings.navigation.logout" : "Đ’Ñ‹Ñ…Đ¾Đ´",
159 "settings.navigation.settings" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸", 179 "settings.navigation.settings" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸",
180 "settings.navigation.team" : "Đ£Đ¿Ñ€Đ°Đ²Đ»ĐµĐ½Đ¸Đµ ĐĐ¾Đ¼Đ°Đ½Đ´Đ¾Đ¹",
160 "settings.navigation.yourServices" : "Đ’Đ°ÑˆĐ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹", 181 "settings.navigation.yourServices" : "Đ’Đ°ÑˆĐ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹",
182 "settings.navigation.yourWorkspaces" : "Đ’Đ°ÑˆĐ¸ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Ñ",
161 "settings.recipes.all" : "Đ’Ñе ÑĐµÑ€Đ²Đ¸ÑÑ‹", 183 "settings.recipes.all" : "Đ’Ñе ÑĐµÑ€Đ²Đ¸ÑÑ‹",
162 "settings.recipes.dev" : "Đ Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºĐ°", 184 "settings.recipes.dev" : "Đ Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºĐ°",
163 "settings.recipes.headline" : "Đ”Đ¾ÑÑ‚ÑƒĐ¿Đ½Ñ‹Đµ ÑĐµÑ€Đ²Đ¸ÑÑ‹", 185 "settings.recipes.headline" : "Đ”Đ¾ÑÑ‚ÑƒĐ¿Đ½Ñ‹Đµ ÑĐµÑ€Đ²Đ¸ÑÑ‹",
@@ -176,10 +198,10 @@
176 "settings.service.form.customUrlUpgradeAccount" : "Đ£Đ»ÑƒÑ‡ÑˆĐ¸Ñ‚ÑŒ Đ²Đ°Ñˆ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚", 198 "settings.service.form.customUrlUpgradeAccount" : "Đ£Đ»ÑƒÑ‡ÑˆĐ¸Ñ‚ÑŒ Đ²Đ°Ñˆ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚",
177 "settings.service.form.customUrlValidationError" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Ñ€Đ¾Đ²ĐµÑ€Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²ĐµÑ€ {name}.", 199 "settings.service.form.customUrlValidationError" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ¿Ñ€Đ¾Đ²ĐµÑ€Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²ĐµÑ€ {name}.",
178 "settings.service.form.deleteButton" : "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸Ñ", 200 "settings.service.form.deleteButton" : "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸Ñ",
179 "settings.service.form.editServiceHeadline" : "Đ ĐµĐ´Đ°ĐºÑ‚Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ¸Đµ {name}", 201 "settings.service.form.editServiceHeadline" : "Đ ĐµĐ´Đ°ĐºÑ‚Đ¸Ñ€Đ¾Đ²Đ°Ñ‚ÑŒ {name}",
180 "settings.service.form.enableAudio" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Đ·Đ²ÑƒĐº", 202 "settings.service.form.enableAudio" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Đ·Đ²ÑƒĐº",
181 "settings.service.form.enableBadge" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ¸ĐºĐ¾Đ½ĐºÑƒ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ½Ñ‹Ñ… ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Đ¹", 203 "settings.service.form.enableBadge" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ¸ĐºĐ¾Đ½ĐºÑƒ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ½Ñ‹Ñ… ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Đ¹",
182 "settings.service.form.enableDarkMode" : "Enable Dark Mode", 204 "settings.service.form.enableDarkMode" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ Đ¢Ñ‘Đ¼Đ½Ñ‹Đ¹ Ñ€ĐµĐ¶Đ¸Đ¼",
183 "settings.service.form.enableNotification" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ", 205 "settings.service.form.enableNotification" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ",
184 "settings.service.form.enableService" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸Ñ", 206 "settings.service.form.enableService" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸Ñ",
185 "settings.service.form.headlineBadges" : "Đ—Đ½Đ°Ñ‡ĐºĐ¸ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ½Ñ‹Ñ… ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Đ¹", 207 "settings.service.form.headlineBadges" : "Đ—Đ½Đ°Ñ‡ĐºĐ¸ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ½Ñ‹Ñ… ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Đ¹",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ·Đ½Đ°Ñ‡Đ¾Đº ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Đ¹ Đ´Đ»Ñ Đ²ÑĐµÑ… Đ½Đ¾Đ²Ñ‹Ñ… ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Đ¹", 214 "settings.service.form.indirectMessages" : "ĐŸĐ¾ĐºĐ°Đ·Ñ‹Đ²Đ°Ñ‚ÑŒ Đ·Đ½Đ°Ñ‡Đ¾Đº ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Đ¹ Đ´Đ»Ñ Đ²ÑĐµÑ… Đ½Đ¾Đ²Ñ‹Ñ… ÑĐ¾Đ¾Đ±Ñ‰ĐµĐ½Đ¸Đ¹",
193 "settings.service.form.isMutedInfo" : "ĐĐ¾Đ³Đ´Đ° Đ²Ñ‹ĐºĐ»ÑÑ‡ĐµĐ½Đ¾, Đ²Ñе Đ·Đ²ÑƒĐºĐ¾Đ²Ñ‹Đµ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ±ÑƒĐ´ÑƒÑ‚ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹", 215 "settings.service.form.isMutedInfo" : "ĐĐ¾Đ³Đ´Đ° Đ²Ñ‹ĐºĐ»ÑÑ‡ĐµĐ½Đ¾, Đ²Ñе Đ·Đ²ÑƒĐºĐ¾Đ²Ñ‹Đµ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ±ÑƒĐ´ÑƒÑ‚ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹",
194 "settings.service.form.name" : "ĐĐ°Đ·Đ²Đ°Đ½Đ¸Đµ", 216 "settings.service.form.name" : "ĐĐ°Đ·Đ²Đ°Đ½Đ¸Đµ",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸ ĐŸÑ€Đ¾ĐºÑи HTTP\/HTTPS",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "ĐŸÑ€Đ¾ĐºÑи Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸ Đ¿Ñ€Đ¾ĐºÑи Đ½Đµ Đ±ÑƒĐ´ÑƒÑ‚ ÑĐ¸Đ½Ñ…Ñ€Đ¾Đ½Đ¸Đ·Đ¸Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹ Ñ ÑĐµÑ€Đ²ĐµÑ€Đ°Đ¼Đ¸ Franz",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Đ˜ÑĐ¿Đ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ÑŒ Đ¿Ñ€Đ¾ĐºÑи",
199 "settings.service.form.proxy.password" : "Password (optional)", 221 "settings.service.form.proxy.password" : "ĐŸĐ°Ñ€Đ¾Đ»ÑŒ (Đ¾Đ¿Ñ†Đ¸Đ¾Đ½Đ°Đ»ÑŒĐ½Đ¾)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "ĐŸĐ¾Ñ€Ñ‚",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "ĐŸĐ¾Đ¶Đ°Đ»ÑƒĐ¹ÑÑ‚Đ° Đ¿ĐµÑ€ĐµĐ·Đ°Đ¿ÑƒÑÑ‚Đ¸Ñ‚Đµ Franz Đ¿Đ¾Ñле Đ¸Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ Đ½Đ°ÑÑ‚Ñ€Đ¾ĐµĐº Đ¿Ñ€Đ¾ĐºÑи.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "ĐŸĐ¾Đ»ÑŒĐ·Đ¾Đ²Đ°Ñ‚ĐµĐ»ÑŒ (Đ¾Đ¿Ñ†Đ¸Đ¾Đ½Đ°Đ»ÑŒĐ½Đ¾)",
203 "settings.service.form.saveButton" : "Đ¡Đ¾Ñ…Ñ€Đ°Đ½Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸Ñ", 225 "settings.service.form.saveButton" : "Đ¡Đ¾Ñ…Ñ€Đ°Đ½Đ¸Ñ‚ÑŒ ÑĐµÑ€Đ²Đ¸Ñ",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Đ Đ°Đ·Đ¼ĐµÑ‰ĐµĐ½Đ¾", 226 "settings.service.form.tabHosted" : "Đ Đ°Đ·Đ¼ĐµÑ‰ĐµĐ½Đ¾",
207 "settings.service.form.tabOnPremise" : "Đ¡Đ²Đ¾Đ¹ Ñ…Đ¾ÑÑ‚Đ¸Đ½Đ³ â­ï¸", 227 "settings.service.form.tabOnPremise" : "Đ¡Đ²Đ¾Đ¹ Ñ…Đ¾ÑÑ‚Đ¸Đ½Đ³ â­ï¸",
208 "settings.service.form.team" : "ĐĐ¾Đ¼Đ°Đ½Đ´Đ°", 228 "settings.service.form.team" : "ĐĐ¾Đ¼Đ°Đ½Đ´Đ°",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "ĐĐ°Đ¹Ñ‚Đ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹", 232 "settings.services.discoverServices" : "ĐĐ°Đ¹Ñ‚Đ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹",
213 "settings.services.headline" : "Đ’Đ°ÑˆĐ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹", 233 "settings.services.headline" : "Đ’Đ°ÑˆĐ¸ ÑĐµÑ€Đ²Đ¸ÑÑ‹",
214 "settings.services.noServicesAdded" : "Đ’Ñ‹ Đ¿Đ¾ĐºĐ° Đ½Đµ Đ´Đ¾Đ±Đ°Đ²Đ¸Đ»Đ¸ Đ½Đ¸ĐºĐ°ĐºĐ¸Ñ… ÑĐµÑ€Đ²Đ¸ÑĐ¾Đ².", 234 "settings.services.noServicesAdded" : "Đ’Ñ‹ Đ¿Đ¾ĐºĐ° Đ½Đµ Đ´Đ¾Đ±Đ°Đ²Đ¸Đ»Đ¸ Đ½Đ¸ĐºĐ°ĐºĐ¸Ñ… ÑĐµÑ€Đ²Đ¸ÑĐ¾Đ².",
235 "settings.services.servicesRequestFailed" : "ĐÑˆĐ¸Đ±ĐºĐ° Đ·Đ°Đ³Ñ€ÑƒĐ·ĐºĐ¸ ÑĐµÑ€Đ²Đ¸ÑĐ¾Đ²",
215 "settings.services.tooltip.isDisabled" : "Đ¡ĐµÑ€Đ²Đ¸Ñ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½", 236 "settings.services.tooltip.isDisabled" : "Đ¡ĐµÑ€Đ²Đ¸Ñ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½",
216 "settings.services.tooltip.isMuted" : "Đ’Ñе Đ·Đ²ÑƒĐºĐ¸ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹", 237 "settings.services.tooltip.isMuted" : "Đ’Ñе Đ·Đ²ÑƒĐºĐ¸ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹",
217 "settings.services.tooltip.notificationsDisabled" : "Đ£Đ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹", 238 "settings.services.tooltip.notificationsDisabled" : "Đ£Đ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ¾Ñ‚ĐºĐ»ÑÑ‡ĐµĐ½Ñ‹",
218 "settings.services.updatedInfo" : "Đ˜Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ ÑĐ¾Ñ…Ñ€Đ°Đ½ĐµĐ½Ñ‹", 239 "settings.services.updatedInfo" : "Đ˜Đ·Đ¼ĐµĐ½ĐµĐ½Đ¸Ñ ÑĐ¾Ñ…Ñ€Đ°Đ½ĐµĐ½Ñ‹",
240 "settings.team.contentHeadline" : "Franz Đ´Đ»Ñ ĐĐ¾Đ¼Đ°Đ½Đ´",
241 "settings.team.copy" : "Franz Đ´Đ»Ñ ĐĐ¾Đ¼Đ°Đ½Đ´ Đ¿Đ¾Đ·Đ²Đ¾Đ»ÑĐµÑ‚ Đ¿Ñ€Đ¸Đ³Đ»Đ°ÑĐ¸Ñ‚ÑŒ ĐºĐ¾Đ»Đ»ĐµĐ³ Đ² Đ²Đ°ÑˆÑƒ ĐºĐ¾Đ¼Đ°Đ½Đ´Ñƒ, Đ¾Ñ‚Đ¿Ñ€Đ°Đ²Đ¸Đ² Đ¸Đ¼ ĐµĐ¼Đ°Đ¹Đ» Ñ Đ¿Ñ€Đ¸Đ³Đ»Đ°ÑˆĐµĐ½Đ¸ĐµĐ¼, Đ° Ñ‚Đ°ĐºĐ¶Đµ ÑƒĐ¿Ñ€Đ°Đ²Đ»ÑÑ‚ÑŒ Đ¸Ñ… Đ¿Đ¾Đ´Đ¿Đ¸ÑĐºĐ°Đ¼Đ¸ Đ² Đ½Đ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ°Ñ… Đ²Đ°ÑˆĐµĐ³Đ¾ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚Đ°. Đе Ñ‚Ñ€Đ°Ñ‚ÑŒÑ‚Đµ Đ²Ñ€ĐµĐ¼Ñ Đ½Đ° Đ½Đ°ÑÑ‚Ñ€Đ¾Đ¹ĐºÑƒ Đ¿Đ¾Đ´Đ¿Đ¸ÑĐ¾Đº Đ´Đ»Ñ ĐºĐ°Đ¶Đ´Đ¾Đ³Đ¾ Ñ‡Đ»ĐµĐ½Đ° ĐºĐ¾Đ¼Đ°Đ½Đ´Ñ‹ Đ¸Đ½Đ´Đ¸Đ²Đ¸Đ´ÑƒĐ°Đ»ÑŒĐ½Đ¾, Đ·Đ°Đ±ÑƒĐ´ÑŒÑ‚Đµ Đ¾ Đ¼Đ½Đ¾Đ³Đ¾Ñ‡Đ¸ÑĐ»ĐµĐ½Đ½Ñ‹Ñ… Đ¿Đ»Đ°Ñ‚ĐµĐ¶ĐºĐ°Ñ… и Ñ€Đ°Đ·Đ½Ñ‹Ñ… Ñ†Đ¸ĐºĐ»Đ°Ñ… Đ¾Đ¿Đ»Đ°Ñ‚Ñ‹ - Đ¾Đ´Đ½Đ° ĐºĐ¾Đ¼Đ°Đ½Đ´Đ° Đ´Đ»Ñ ÑƒĐ¿Ñ€Đ°Đ²Đ»ĐµĐ½Đ¸Ñ Đ²ÑĐµĐ¼Đ¸!",
242 "settings.team.headline" : "ĐĐ¾Đ¼Đ°Đ½Đ´Đ°",
243 "settings.team.intro" : "Đ’Ñ‹ и Đ²Đ°ÑˆĐ° ĐºĐ¾Đ¼Đ°Đ½Đ´Đ° иÑĐ¿Đ»ÑŒĐ·ÑƒĐµÑ‚Đµ Franz? Đ’Ñ‹ Ñ‚ĐµĐ¿ĐµÑ€ÑŒ Đ¼Đ¾Đ¶ĐµÑ‚Đµ ÑƒĐ¿Ñ€Đ°Đ²Đ»ÑÑ‚ÑŒ ĐŸÑ€ĐµĐ¼Đ¸ÑƒĐ¼ Đ¿Đ¾Đ´Đ¿Đ¸ÑĐºĐ°Đ¼Đ¸ Đ»ÑĐ±Đ¾Đ³Đ¾ ĐºĐ¾Đ»Đ¸Ñ‡ĐµÑÑ‚Đ²Đ° ĐºĐ¾Đ»Đ»ĐµĐ³, Đ´Ñ€ÑƒĐ·ĐµĐ¹ и Ñ‡Đ»ĐµĐ½Đ¾Đ² ÑĐµĐ¼ÑŒĐ¸, из Đ¾Đ´Đ½Đ¾Đ³Đ¾ и Ñ‚Đ¾Đ³Đ¾ же Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚Đ°.",
244 "settings.team.manageAction" : "Đ£Đ¿Ñ€Đ°Đ²Đ»ÑĐ¹Ñ‚Đµ Đ²Đ°ÑˆĐµĐ¹ ĐĐ¾Đ¼Đ°Đ½Đ´Đ¾Đ¹ Đ½Đ° meetfranz.com",
245 "settings.team.upgradeAction" : "Đ£Đ»ÑƒÑ‡ÑˆĐ¸Ñ‚ÑŒ Đ²Đ°Ñˆ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚",
219 "settings.user.form.accountType.company" : "ĐĐ¾Đ¼Đ¿Đ°Đ½Đ¸Ñ", 246 "settings.user.form.accountType.company" : "ĐĐ¾Đ¼Đ¿Đ°Đ½Đ¸Ñ",
220 "settings.user.form.accountType.individual" : "Đ˜Đ½Đ´Đ¸Đ²Đ¸Đ´ÑƒĐ°Đ»ÑŒĐ½Ñ‹Đ¹", 247 "settings.user.form.accountType.individual" : "Đ˜Đ½Đ´Đ¸Đ²Đ¸Đ´ÑƒĐ°Đ»ÑŒĐ½Ñ‹Đ¹",
221 "settings.user.form.accountType.label" : "Đ¢Đ¸Đ¿ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚Đ°", 248 "settings.user.form.accountType.label" : "Đ¢Đ¸Đ¿ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚Đ°",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Đ˜Đ¼Ñ", 252 "settings.user.form.firstname" : "Đ˜Đ¼Ñ",
226 "settings.user.form.lastname" : "Đ¤Đ°Đ¼Đ¸Đ»Đ¸Ñ", 253 "settings.user.form.lastname" : "Đ¤Đ°Đ¼Đ¸Đ»Đ¸Ñ",
227 "settings.user.form.newPassword" : "ĐĐ¾Đ²Ñ‹Đ¹ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ", 254 "settings.user.form.newPassword" : "ĐĐ¾Đ²Ñ‹Đ¹ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ",
255 "settings.workspace.add.form.name" : "Đ˜Đ¼Ñ",
256 "settings.workspace.add.form.submitButton" : "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đµ",
257 "settings.workspace.form.buttonDelete" : "Đ£Đ´Đ°Đ»Đ¸Ñ‚ÑŒ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đµ",
258 "settings.workspace.form.buttonSave" : "Đ¡Đ¾Ñ…Ñ€Đ°Đ½Đ¸Ñ‚ÑŒ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đµ",
259 "settings.workspace.form.name" : "Đ˜Đ¼Ñ",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Đ’Đ°ÑˆĐ¸ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Ñ",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Đ’Đ°ÑˆĐ¸ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Ñ",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "ĐŸĐ¾Đ¿Ñ€Đ¾Đ±Đ¾Đ²Đ°Ñ‚ÑŒ ÑĐ½Đ¾Đ²Đ°",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Đ”Đ¾Đ±Đ°Đ²Đ¸Ñ‚ÑŒ Đ½Đ¾Đ²Ñ‹Đ¹ ÑĐµÑ€Đ²Đ¸Ñ", 270 "sidebar.addNewService" : "Đ”Đ¾Đ±Đ°Đ²Đ¸Ñ‚ÑŒ Đ½Đ¾Đ²Ñ‹Đ¹ ÑĐµÑ€Đ²Đ¸Ñ",
271 "sidebar.closeWorkspaceDrawer" : "Đ—Đ°ĐºÑ€Ñ‹Ñ‚ÑŒ Đ¼ĐµĐ½Ñ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đ¹",
229 "sidebar.muteApp" : "ĐÑ‚ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ¸ Đ·Đ²ÑƒĐº", 272 "sidebar.muteApp" : "ĐÑ‚ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ¸ Đ·Đ²ÑƒĐº",
273 "sidebar.openWorkspaceDrawer" : "ĐÑ‚ĐºÑ€Ñ‹Ñ‚ÑŒ Đ¼ĐµĐ½Ñ Đ¾ĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đ¹",
230 "sidebar.settings" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸", 274 "sidebar.settings" : "ĐĐ°ÑÑ‚Ñ€Đ¾Đ¹ĐºĐ¸",
231 "sidebar.unmuteApp" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ¸ Đ·Đ²ÑƒĐº", 275 "sidebar.unmuteApp" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚ÑŒ ÑƒĐ²ĐµĐ´Đ¾Đ¼Đ»ĐµĐ½Đ¸Ñ Đ¸ Đ·Đ²ÑƒĐº",
232 "signup.company.label" : "ĐÑ€Đ³Đ°Đ½Đ¸Đ·Đ°Ñ†Đ¸Ñ", 276 "signup.company.label" : "ĐÑ€Đ³Đ°Đ½Đ¸Đ·Đ°Ñ†Đ¸Ñ",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Đ ĐµĐ·Đ¸Đ´ĐµĐ½Ñ‚Đ°Đ¼ Đ•Đ²Ñ€Đ¾Đ¡Đ¾ÑĐ·Đ°: Đ¼Đ¾Đ³ÑƒÑ‚ Đ¿Ñ€Đ¸Đ¼ĐµĐ½ÑÑ‚ÑŒÑÑ Đ¼ĐµÑÑ‚Đ½Ñ‹Đµ Đ½Đ°Đ»Đ¾Đ³Đ¸", 288 "subscription.euTaxInfo" : "Đ ĐµĐ·Đ¸Đ´ĐµĐ½Ñ‚Đ°Đ¼ Đ•Đ²Ñ€Đ¾Đ¡Đ¾ÑĐ·Đ°: Đ¼Đ¾Đ³ÑƒÑ‚ Đ¿Ñ€Đ¸Đ¼ĐµĐ½ÑÑ‚ÑŒÑÑ Đ¼ĐµÑÑ‚Đ½Ñ‹Đµ Đ½Đ°Đ»Đ¾Đ³Đ¸",
245 "subscription.features.ads" : "Без Ñ€ĐµĐºĐ»Đ°Đ¼Ñ‹, Đ½Đ°Đ²ÑĐµĐ³Đ´Đ°!", 289 "subscription.features.ads" : "Без Ñ€ĐµĐºĐ»Đ°Đ¼Ñ‹, Đ½Đ°Đ²ÑĐµĐ³Đ´Đ°!",
246 "subscription.features.comingSoon" : "ÑĐºĐ¾Ñ€Đ¾", 290 "subscription.features.comingSoon" : "ÑĐºĐ¾Ñ€Đ¾",
247 "subscription.features.encryptedSync" : "Đ—Đ°ÑˆĐ¸Ñ„Ñ€Đ¾Đ²Đ°Đ½Đ½Ñ‹Đµ ÑеÑÑии ÑĐ¸Đ½Ñ…Ñ€Đ¾Đ½Đ¸Đ·Đ°Ñ†Đ¸Đ¸", 291 "subscription.features.noInterruptions" : "ĐĐ¸ĐºĐ°ĐºĐ¸Ñ… Đ·Đ°Đ´ĐµÑ€Đ¶ĐµĐº и Đ¿Ñ€ĐµĐ´Đ»Đ¾Đ¶ĐµĐ½Đ¸Đ¹ Đ¿ĐµÑ€ĐµĐ¹Ñ‚Đ¸ Đ½Đ° Đ¿Đ»Đ°Ñ‚Đ½ÑƒÑ Đ²ĐµÑ€ÑиÑ",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Đ›Đ¾ĐºĐ°Đ»ÑŒĐ½Ñ‹Đµ\/Ñ€Đ°Đ·Đ¼ĐµÑ‰ĐµĐ½Đ½Ñ‹Đµ Đ½Đ° Ñ…Đ¾ÑÑ‚Đ¸Đ½Đ³Đµ ÑĐµÑ€Đ²Đ¸ÑÑ‹, Ñ‚Đ°ĐºĐ¸Đµ ĐºĐ°Đº Mattermost",
249 "subscription.features.onpremise" : "Đ”Đ¾Đ±Đ°Đ²Đ»ĐµĐ½Đ¸Đµ Đ¾Đ±Đ»Đ°Ñ‡Đ½Ñ‹Ñ… ÑĐ»ÑƒĐ¶Đ± или ÑĐ»ÑƒĐ¶Đ± Đ½Đ° ÑĐ²Đ¾Ñ‘Đ¼ Ñ…Đ¾ÑÑ‚Đ¸Đ½Đ³Đµ Ñ‚Đ¸Đ¿Đ° HipChat", 293 "subscription.features.proxy" : "ĐŸĐ¾Đ´ĐµÑ€Đ¶ĐºĐ° Đ¿Ñ€Đ¾ĐºÑи Đ´Đ»Ñ ÑĐµÑ€Đ²Đ¸ÑĐ¾Đ²",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 294 "subscription.features.spellchecker" : "ĐŸĐ¾Đ´Đ´ĐµÑ€Đ¶ĐºĐ° Đ¿Ñ€Đ¾Đ²ĐµÑ€ĐºĐ¸ Đ¿Ñ€Đ°Đ²Đ¾Đ¿Đ¸ÑĐ°Đ½Đ¸Ñ",
251 "subscription.features.proxy" : "Proxy support for services", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
252 "subscription.features.spellchecker" : "Support for spellchecker",
253 "subscription.includedFeatures" : "ĐŸĐ»Đ°Ñ‚Đ½Ñ‹Đ¹ Đ¿Ñ€ĐµĐ¼Đ¸ÑƒĐ¼ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚ Franz Đ²ĐºĐ»ÑÑ‡Đ°ĐµÑ‚", 296 "subscription.includedFeatures" : "ĐŸĐ»Đ°Ñ‚Đ½Ñ‹Đ¹ Đ¿Ñ€ĐµĐ¼Đ¸ÑƒĐ¼ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚ Franz Đ²ĐºĐ»ÑÑ‡Đ°ĐµÑ‚",
254 "subscription.paymentSessionError" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ Ñ„Đ¾Ñ€Đ¼Ñƒ Đ¾Đ¿Đ»Đ°Ñ‚Ñ‹", 297 "subscription.paymentSessionError" : "ĐĐµĐ²Đ¾Đ·Đ¼Đ¾Đ¶Đ½Đ¾ Đ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ Ñ„Đ¾Ñ€Đ¼Ñƒ Đ¾Đ¿Đ»Đ°Ñ‚Ñ‹",
255 "subscription.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ°Ñ‚ÑŒ Ñ€Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºÑƒ Franz", 298 "subscription.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Đ¾Đ´Đ´ĐµÑ€Đ¶Đ°Ñ‚ÑŒ Ñ€Đ°Đ·Ñ€Đ°Đ±Đ¾Ñ‚ĐºÑƒ Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ", 312 "tabs.item.reload" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ³Ñ€ÑƒĐ·Đ¸Ñ‚ÑŒ",
270 "validation.email" : "{field} Đ½ĐµĐ´ĐµĐ¹ÑÑ‚Đ²Đ¸Ñ‚ĐµĐ»ÑŒĐ½Đ¾", 313 "validation.email" : "{field} Đ½ĐµĐ´ĐµĐ¹ÑÑ‚Đ²Đ¸Ñ‚ĐµĐ»ÑŒĐ½Đ¾",
271 "validation.minLength" : "{field} Đ´Đ¾Đ»Đ¶Đ½Đ¾ Đ±Ñ‹Ñ‚ÑŒ Đ½Đµ Đ¼ĐµĐ½ĐµĐµ {length} ÑĐ¸Đ¼Đ²Đ¾Đ»Đ¾Đ²", 314 "validation.minLength" : "{field} Đ´Đ¾Đ»Đ¶Đ½Đ¾ Đ±Ñ‹Ñ‚ÑŒ Đ½Đµ Đ¼ĐµĐ½ĐµĐµ {length} ÑĐ¸Đ¼Đ²Đ¾Đ»Đ¾Đ²",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} Đ¾Đ±ÑĐ·Đ°Ñ‚ĐµĐ»ÑŒĐ½Đ¾", 316 "validation.required" : "{field} Đ¾Đ±ÑĐ·Đ°Ñ‚ĐµĐ»ÑŒĐ½Đ¾",
273 "validation.url" : "{field} ÑĐ²Đ»ÑĐµÑ‚ÑÑ Đ½ĐµĐ´ĐµĐ¹ÑÑ‚Đ²Đ¸Ñ‚ĐµĐ»ÑŒĐ½Đ¾Đ¹ ÑÑÑ‹Đ»ĐºĐ¾Đ¹", 317 "validation.url" : "{field} ÑĐ²Đ»ÑĐµÑ‚ÑÑ Đ½ĐµĐ´ĐµĐ¹ÑÑ‚Đ²Đ¸Ñ‚ĐµĐ»ÑŒĐ½Đ¾Đ¹ ÑÑÑ‹Đ»ĐºĐ¾Đ¹",
274 "welcome.loginButton" : "Đ’Ñ…Đ¾Đ´", 318 "welcome.loginButton" : "Đ’Ñ…Đ¾Đ´",
275 "welcome.signupButton" : "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ беÑĐ¿Đ»Đ°Ñ‚Đ½Ñ‹Đ¹ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚", 319 "welcome.signupButton" : "Đ¡Đ¾Đ·Đ´Đ°Ñ‚ÑŒ беÑĐ¿Đ»Đ°Ñ‚Đ½Ñ‹Đ¹ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚",
276 "welcome.slogan" : "ĐĐ±Ñ‰ĐµĐ½Đ¸Đµ, ĐºĐ¾Ñ‚Đ¾Ñ€Đ¾Đµ Ñ€Đ°Đ±Đ¾Ñ‚Đ°ĐµÑ‚ Đ´Đ»Ñ Đ²Đ°Ñ" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Đ’Ñе ÑĐµÑ€Đ²Đ¸ÑÑ‹",
322 "workspaceDrawer.headline" : "ĐĐºÑ€ÑƒĐ¶ĐµĐ½Đ¸Đµ",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Đ’Đ¾ÑÑÑ‚Đ°Đ½Đ¾Đ²Đ¸Ñ‚ÑŒ Đ¿Ñ€ĐµĐ¼Đ¸ÑƒĐ¼ Đ°ĐºĐºĐ°ÑƒĐ½Ñ‚",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json
index ca7335fe9..7af29ef1c 100644
--- a/src/i18n/locales/sk.json
+++ b/src/i18n/locales/sk.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Obnoviť", 2 "app.errorHandler.action" : "Obnoviť",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Something went wrong",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 5 "feature.delayApp.action" : "Get a Franz Supporter License",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 6 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 7 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "NedĂ¡ sa pripojiÅ¥ k online službĂ¡m Franz", 15 "global.api.unhealthy" : "NedĂ¡ sa pripojiÅ¥ k online službĂ¡m Franz",
8 "global.notConnectedToTheInternet" : "Nie ste pripojenĂ­ k internetu.", 16 "global.notConnectedToTheInternet" : "Nie ste pripojenĂ­ k internetu.",
17 "global.spellchecker.useDefault" : "Use System Default ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Spell checking language",
9 "import.headline" : "Importovať vaše služby z Franz 4", 21 "import.headline" : "Importovať vaše služby z Franz 4",
10 "import.notSupportedHeadline" : "Služby zatiaľ nie sĂº podporovanĂ© vo verzii Franz 5", 22 "import.notSupportedHeadline" : "Služby zatiaľ nie sĂº podporovanĂ© vo verzii Franz 5",
11 "import.skip.label" : "Chcem pridaÅ¥ služby ruÄne", 23 "import.skip.label" : "Chcem pridaÅ¥ služby ruÄne",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "PrihlĂ¡siÅ¥ sa", 44 "login.submit.label" : "PrihlĂ¡siÅ¥ sa",
33 "login.tokenExpired" : "VaÅ¡a relĂ¡cia vyprÅ¡ala, prihlĂ¡ste sa prosĂ­m znovu.", 45 "login.tokenExpired" : "VaÅ¡a relĂ¡cia vyprÅ¡ala, prihlĂ¡ste sa prosĂ­m znovu.",
34 "menu.app.about" : "O aplikĂ¡cii", 46 "menu.app.about" : "O aplikĂ¡cii",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Skryť", 48 "menu.app.hide" : "Skryť",
36 "menu.app.hideOthers" : "SkryÅ¥ ostatnĂ©", 49 "menu.app.hideOthers" : "SkryÅ¥ ostatnĂ©",
37 "menu.app.quit" : "UkonÄiÅ¥", 50 "menu.app.quit" : "UkonÄiÅ¥",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Podpora", 72 "menu.help.support" : "Podpora",
60 "menu.help.tos" : "Podmienky použitia", 73 "menu.help.tos" : "Podmienky použitia",
61 "menu.services" : "Služby", 74 "menu.services" : "Služby",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "PridaÅ¥ novĂº službu...", 76 "menu.services.addNewService" : "PridaÅ¥ novĂº službu...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "Zobraziť", 78 "menu.view" : "Zobraziť",
64 "menu.view.enterFullScreen" : "Na celĂº obrazovku", 79 "menu.view.enterFullScreen" : "Na celĂº obrazovku",
65 "menu.view.exitFullScreen" : "UkonÄiÅ¥ režim na celĂº obrazovku", 80 "menu.view.exitFullScreen" : "UkonÄiÅ¥ režim na celĂº obrazovku",
@@ -74,6 +89,11 @@
74 "menu.window" : "Okno", 89 "menu.window" : "Okno",
75 "menu.window.close" : "Zatvoriť", 90 "menu.window.close" : "Zatvoriť",
76 "menu.window.minimize" : "Minimalizovať", 91 "menu.window.minimize" : "Minimalizovať",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Všetky služby",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "E-mailovĂ¡ adresa", 97 "password.email.label" : "E-mailovĂ¡ adresa",
78 "password.headline" : "Obnoviť heslo", 98 "password.headline" : "Obnoviť heslo",
79 "password.link.login" : "PrihlĂ¡siÅ¥ sa do vĂ¡Å¡ho ĂºÄtu", 99 "password.link.login" : "PrihlĂ¡siÅ¥ sa do vĂ¡Å¡ho ĂºÄtu",
@@ -97,6 +117,7 @@
97 "service.errorHandler.headline" : "Ale nie!", 117 "service.errorHandler.headline" : "Ale nie!",
98 "service.errorHandler.message" : "Chyba", 118 "service.errorHandler.message" : "Chyba",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} has failed to load.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "ZaÄĂ­name", 121 "services.getStarted" : "ZaÄĂ­name",
101 "services.welcome" : "VĂ­tajte v aplikĂ¡cii Franz", 122 "services.welcome" : "VĂ­tajte v aplikĂ¡cii Franz",
102 "settings.account.account.editButton" : "UpraviÅ¥ ĂºÄet", 123 "settings.account.account.editButton" : "UpraviÅ¥ ĂºÄet",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Prevziať", 138 "settings.account.invoiceDownload" : "Prevziať",
118 "settings.account.manageSubscription.label" : "Spravovať vaše odoberanie", 139 "settings.account.manageSubscription.label" : "Spravovať vaše odoberanie",
119 "settings.account.successInfo" : "VaÅ¡e zmeny boli uloženĂ©", 140 "settings.account.successInfo" : "VaÅ¡e zmeny boli uloženĂ©",
141 "settings.account.tryReloadServices" : "SkĂºsiÅ¥ znova",
120 "settings.account.tryReloadUserInfoRequest" : "SkĂºsiÅ¥ znova", 142 "settings.account.tryReloadUserInfoRequest" : "SkĂºsiÅ¥ znova",
121 "settings.account.userInfoRequestFailed" : "Nebolo možnĂ© naÄĂ­taÅ¥ informĂ¡cie o pouÅ¾Ă­vateľovi", 143 "settings.account.userInfoRequestFailed" : "Nebolo možnĂ© naÄĂ­taÅ¥ informĂ¡cie o pouÅ¾Ă­vateľovi",
122 "settings.app.buttonClearAllCache" : "VyÄistiÅ¥ vyrovnĂ¡vaciu pamĂ¤Å¥", 144 "settings.app.buttonClearAllCache" : "VyÄistiÅ¥ vyrovnĂ¡vaciu pamĂ¤Å¥",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "VrĂ¡tane beta verziĂ­", 151 "settings.app.form.beta" : "VrĂ¡tane beta verziĂ­",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Join the Dark Side",
131 "settings.app.form.enableGPUAcceleration" : "ZapnĂºÅ¥ GPU zrĂ½chlenie", 153 "settings.app.form.enableGPUAcceleration" : "ZapnĂºÅ¥ GPU zrĂ½chlenie",
132 "settings.app.form.enableMenuBar" : "Zobraziť Franz v ponuke menu",
133 "settings.app.form.enableSpellchecking" : "ZapnĂºÅ¥ kontrolu pravopisu", 154 "settings.app.form.enableSpellchecking" : "ZapnĂºÅ¥ kontrolu pravopisu",
134 "settings.app.form.enableSystemTray" : "ZobrazovaÅ¥ Franz v systĂ©movej liÅ¡te", 155 "settings.app.form.enableSystemTray" : "ZobrazovaÅ¥ Franz v systĂ©movej liÅ¡te",
135 "settings.app.form.hideDockIcon" : "Skryť ikonu Franz v doku",
136 "settings.app.form.language" : "Jazyk", 156 "settings.app.form.language" : "Jazyk",
137 "settings.app.form.minimizeToSystemTray" : "MinimalizovaÅ¥ Franz do systĂ©movej liÅ¡ty", 157 "settings.app.form.minimizeToSystemTray" : "MinimalizovaÅ¥ Franz do systĂ©movej liÅ¡ty",
138 "settings.app.form.runInBackground" : "Po zatvorenĂ­ okna ponechaÅ¥ Franz spustenĂ½ na pozadĂ­", 158 "settings.app.form.runInBackground" : "Po zatvorenĂ­ okna ponechaÅ¥ Franz spustenĂ½ na pozadĂ­",
139 "settings.app.form.showDisabledServices" : "ZobraziÅ¥ zĂ¡ložky vypnutĂ½ch služieb", 159 "settings.app.form.showDisabledServices" : "ZobraziÅ¥ zĂ¡ložky vypnutĂ½ch služieb",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "ZobraziÅ¥ symbol pre nepreÄĂ­tanĂ© sprĂ¡vy, keÄ sĂº vypnutĂ© upozornenia", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "ZobraziÅ¥ symbol pre nepreÄĂ­tanĂ© sprĂ¡vy, keÄ sĂº vypnutĂ© upozornenia",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Nastavenia", 161 "settings.app.headline" : "Nastavenia",
143 "settings.app.headlineAdvanced" : "PokroÄilĂ©", 162 "settings.app.headlineAdvanced" : "PokroÄilĂ©",
144 "settings.app.headlineAppearance" : "Vzhľad", 163 "settings.app.headlineAppearance" : "Vzhľad",
145 "settings.app.headlineGeneral" : "VÅ¡eobecnĂ©", 164 "settings.app.headlineGeneral" : "VÅ¡eobecnĂ©",
146 "settings.app.headlineLanguage" : "Jazyk", 165 "settings.app.headlineLanguage" : "Jazyk",
147 "settings.app.headlineUpdates" : "AktualizĂ¡cie", 166 "settings.app.headlineUpdates" : "AktualizĂ¡cie",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Zmeny vyžadujĂº reÅ¡tart", 168 "settings.app.restartRequired" : "Zmeny vyžadujĂº reÅ¡tart",
149 "settings.app.subheadlineCache" : "VyrovnĂ¡vacia pamĂ¤Å¥", 169 "settings.app.subheadlineCache" : "VyrovnĂ¡vacia pamĂ¤Å¥",
150 "settings.app.translationHelp" : "PomĂ´Å¾te nĂ¡m preložiÅ¥ Franz do svojho jazyka.", 170 "settings.app.translationHelp" : "PomĂ´Å¾te nĂ¡m preložiÅ¥ Franz do svojho jazyka.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Pozvať priateľov", 177 "settings.navigation.inviteFriends" : "Pozvať priateľov",
158 "settings.navigation.logout" : "OdhlĂ¡siÅ¥ sa", 178 "settings.navigation.logout" : "OdhlĂ¡siÅ¥ sa",
159 "settings.navigation.settings" : "Nastavenia", 179 "settings.navigation.settings" : "Nastavenia",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Vaše služby", 181 "settings.navigation.yourServices" : "Vaše služby",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Všetky služby", 183 "settings.recipes.all" : "Všetky služby",
162 "settings.recipes.dev" : "VĂ½voj", 184 "settings.recipes.dev" : "VĂ½voj",
163 "settings.recipes.headline" : "DostupnĂ© služby", 185 "settings.recipes.headline" : "DostupnĂ© služby",
@@ -201,8 +223,6 @@
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "User (optional)",
203 "settings.service.form.saveButton" : "Uložiť službu", 225 "settings.service.form.saveButton" : "Uložiť službu",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Hostované", 226 "settings.service.form.tabHosted" : "Hostované",
207 "settings.service.form.tabOnPremise" : "VlastnĂ© hostovanie â­ï¸", 227 "settings.service.form.tabOnPremise" : "VlastnĂ© hostovanie â­ï¸",
208 "settings.service.form.team" : "TĂ­m", 228 "settings.service.form.team" : "TĂ­m",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "PreskĂºmaÅ¥ služby", 232 "settings.services.discoverServices" : "PreskĂºmaÅ¥ služby",
213 "settings.services.headline" : "Vaše služby", 233 "settings.services.headline" : "Vaše služby",
214 "settings.services.noServicesAdded" : "Doposiaľ ste nepridali žiadne služby.", 234 "settings.services.noServicesAdded" : "Doposiaľ ste nepridali žiadne služby.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Služba je vypnutĂ¡", 236 "settings.services.tooltip.isDisabled" : "Služba je vypnutĂ¡",
216 "settings.services.tooltip.isMuted" : "VÅ¡etky zvuky sĂº stĂ­Å¡enĂ©", 237 "settings.services.tooltip.isMuted" : "VÅ¡etky zvuky sĂº stĂ­Å¡enĂ©",
217 "settings.services.tooltip.notificationsDisabled" : "OznĂ¡menia sĂº vypnutĂ©", 238 "settings.services.tooltip.notificationsDisabled" : "OznĂ¡menia sĂº vypnutĂ©",
218 "settings.services.updatedInfo" : "VaÅ¡e zmeny boli uloženĂ©", 239 "settings.services.updatedInfo" : "VaÅ¡e zmeny boli uloženĂ©",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "TĂ­m",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "SpoloÄnosÅ¥", 246 "settings.user.form.accountType.company" : "SpoloÄnosÅ¥",
220 "settings.user.form.accountType.individual" : "Osoba", 247 "settings.user.form.accountType.individual" : "Osoba",
221 "settings.user.form.accountType.label" : "Typ ĂºÄtu", 248 "settings.user.form.accountType.label" : "Typ ĂºÄtu",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Krstné meno", 252 "settings.user.form.firstname" : "Krstné meno",
226 "settings.user.form.lastname" : "Priezvisko", 253 "settings.user.form.lastname" : "Priezvisko",
227 "settings.user.form.newPassword" : "Nové heslo", 254 "settings.user.form.newPassword" : "Nové heslo",
255 "settings.workspace.add.form.name" : "Meno",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Meno",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "SkĂºsiÅ¥ znova",
266 "settings.workspaces.updatedInfo" : "VaÅ¡e zmeny boli uloženĂ©",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "PridaÅ¥ novĂº službu", 270 "sidebar.addNewService" : "PridaÅ¥ novĂº službu",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "VypnĂºÅ¥ upozornenia a zvuky", 272 "sidebar.muteApp" : "VypnĂºÅ¥ upozornenia a zvuky",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Nastavenia", 274 "sidebar.settings" : "Nastavenia",
231 "sidebar.unmuteApp" : "PovoliÅ¥ oznĂ¡menia a zvuky", 275 "sidebar.unmuteApp" : "PovoliÅ¥ oznĂ¡menia a zvuky",
232 "signup.company.label" : "SpoloÄnosÅ¥", 276 "signup.company.label" : "SpoloÄnosÅ¥",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Pre obyvateľov EĂ: mĂ´Å¾e byÅ¥ aplikovanĂ¡ miestna daň", 288 "subscription.euTaxInfo" : "Pre obyvateľov EĂ: mĂ´Å¾e byÅ¥ aplikovanĂ¡ miestna daň",
245 "subscription.features.ads" : "Žiadne reklamy, nikdy!", 289 "subscription.features.ads" : "Žiadne reklamy, nikdy!",
246 "subscription.features.comingSoon" : "už Äoskoro", 290 "subscription.features.comingSoon" : "už Äoskoro",
247 "subscription.features.encryptedSync" : "Å ifrovanĂ¡ synchronizĂ¡cia relĂ¡cie",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 291 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
249 "subscription.features.onpremise" : "PridaÅ¥ lokĂ¡lne hostovanĂ© služby, ako napr. HipChat",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services", 293 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Support for spellchecker",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "PlatenĂ½ ĂºÄet Premium Supporter Franz zahŕňa", 296 "subscription.includedFeatures" : "PlatenĂ½ ĂºÄet Premium Supporter Franz zahŕňa",
254 "subscription.paymentSessionError" : "Nepodarilo sa inicializovať platbu od", 297 "subscription.paymentSessionError" : "Nepodarilo sa inicializovať platbu od",
255 "subscription.submit.label" : "Chcem podporiÅ¥ vĂ½voj aplikĂ¡cie Franz", 298 "subscription.submit.label" : "Chcem podporiÅ¥ vĂ½voj aplikĂ¡cie Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Obnoviť", 312 "tabs.item.reload" : "Obnoviť",
270 "validation.email" : "{field} je neplatnĂ½", 313 "validation.email" : "{field} je neplatnĂ½",
271 "validation.minLength" : "{field} by malo byÅ¥ dlhĂ© aspoň {length} znakov", 314 "validation.minLength" : "{field} by malo byÅ¥ dlhĂ© aspoň {length} znakov",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} je povinné", 316 "validation.required" : "{field} je povinné",
273 "validation.url" : "{field} nie je platné URL", 317 "validation.url" : "{field} nie je platné URL",
274 "welcome.loginButton" : "PrihlĂ¡siÅ¥ sa do vĂ¡Å¡ho ĂºÄtu", 318 "welcome.loginButton" : "PrihlĂ¡siÅ¥ sa do vĂ¡Å¡ho ĂºÄtu",
275 "welcome.signupButton" : "VytvoriÅ¥ ĂºÄet zdarma", 319 "welcome.signupButton" : "VytvoriÅ¥ ĂºÄet zdarma",
276 "welcome.slogan" : "SprĂ¡vy, ktorĂ© pracujĂº pre vĂ¡s" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Všetky služby",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json
index df0b849c4..e5962566b 100644
--- a/src/i18n/locales/sr.json
+++ b/src/i18n/locales/sr.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "Ponovno uÄitavanje", 2 "app.errorHandler.action" : "Ponovno uÄitavanje",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Something went wrong",
4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 5 "feature.delayApp.action" : "Get a Franz Supporter License",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 6 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 7 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
7 "global.api.unhealthy" : "Nije moguće pristupiti Franz-ovim on-line servisima. ", 15 "global.api.unhealthy" : "Nije moguće pristupiti Franz-ovim on-line servisima. ",
8 "global.notConnectedToTheInternet" : "Niste povezani sa serverom.", 16 "global.notConnectedToTheInternet" : "Niste povezani sa serverom.",
17 "global.spellchecker.useDefault" : "Use System Default ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "Spell checking language",
9 "import.headline" : "Uvezite svoje Franz 4 servise", 21 "import.headline" : "Uvezite svoje Franz 4 servise",
10 "import.notSupportedHeadline" : "Servis trenutno nije podržan u Franz 5", 22 "import.notSupportedHeadline" : "Servis trenutno nije podržan u Franz 5",
11 "import.skip.label" : "Đ–ĐµĐ»Đ¸Đ¼ Đ´Đ° Đ´Đ¾Đ´Đ°Đ¼ уÑĐ»ÑƒĐ³Đµ Ñ€ÑƒÑ‡Đ½Đ¾", 23 "import.skip.label" : "Đ–ĐµĐ»Đ¸Đ¼ Đ´Đ° Đ´Đ¾Đ´Đ°Đ¼ уÑĐ»ÑƒĐ³Đµ Ñ€ÑƒÑ‡Đ½Đ¾",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Prijavite se", 44 "login.submit.label" : "Prijavite se",
33 "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", 45 "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.",
34 "menu.app.about" : "O Francu", 46 "menu.app.about" : "O Francu",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Sakrij", 48 "menu.app.hide" : "Sakrij",
36 "menu.app.hideOthers" : "Sakrij ostale", 49 "menu.app.hideOthers" : "Sakrij ostale",
37 "menu.app.quit" : "Izađi", 50 "menu.app.quit" : "Izađi",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "ĐŸĐ¾Đ´Ñ€ÑˆĐºĐ°", 72 "menu.help.support" : "ĐŸĐ¾Đ´Ñ€ÑˆĐºĐ°",
60 "menu.help.tos" : "Đ£ÑĐ»Đ¾Đ²Đ¸ ĐºĐ¾Ñ€Đ¸ÑˆÑ›ĐµÑĐ° уÑĐ»ÑƒĐ³Đµ", 73 "menu.help.tos" : "Đ£ÑĐ»Đ¾Đ²Đ¸ ĐºĐ¾Ñ€Đ¸ÑˆÑ›ĐµÑĐ° уÑĐ»ÑƒĐ³Đµ",
61 "menu.services" : "Usluge", 74 "menu.services" : "Usluge",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Đ”Đ¾Đ´Đ°Ñ˜ Đ½Đ¾Đ²Ñƒ уÑĐ»ÑƒĐ³Ñƒ", 76 "menu.services.addNewService" : "Đ”Đ¾Đ´Đ°Ñ˜ Đ½Đ¾Đ²Ñƒ уÑĐ»ÑƒĐ³Ñƒ",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "ĐŸÑ€ĐµĐ³Đ»ĐµĐ´", 78 "menu.view" : "ĐŸÑ€ĐµĐ³Đ»ĐµĐ´",
64 "menu.view.enterFullScreen" : "ĐÑ‚Đ²Đ¾Ñ€Đ¸ у Ñ†ĐµĐ»Đ¾Đ¼ ĐµĐºÑ€Đ°Đ½Ñƒ", 79 "menu.view.enterFullScreen" : "ĐÑ‚Đ²Đ¾Ñ€Đ¸ у Ñ†ĐµĐ»Đ¾Đ¼ ĐµĐºÑ€Đ°Đ½Ñƒ",
65 "menu.view.exitFullScreen" : "ĐĐ°Đ¿ÑƒÑÑ‚Đ¸ Ñ†ĐµĐ¾ ĐµĐºÑ€Đ°Đ½", 80 "menu.view.exitFullScreen" : "ĐĐ°Đ¿ÑƒÑÑ‚Đ¸ Ñ†ĐµĐ¾ ĐµĐºÑ€Đ°Đ½",
@@ -74,6 +89,11 @@
74 "menu.window" : "Đ£ Đ¿Ñ€Đ¾Đ·Đ¾Ñ€Ñƒ", 89 "menu.window" : "Đ£ Đ¿Ñ€Đ¾Đ·Đ¾Ñ€Ñƒ",
75 "menu.window.close" : "Đ—Đ°Ñ‚Đ²Đ¾Ñ€Đ¸", 90 "menu.window.close" : "Đ—Đ°Ñ‚Đ²Đ¾Ñ€Đ¸",
76 "menu.window.minimize" : "Đ£Đ¼Đ°Ñи", 91 "menu.window.minimize" : "Đ£Đ¼Đ°Ñи",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Sve usluge",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Vaša e-adresa", 97 "password.email.label" : "Vaša e-adresa",
78 "password.headline" : "Stvorite novu zaporku", 98 "password.headline" : "Stvorite novu zaporku",
79 "password.link.login" : "Prijavite se na VaÅ¡ raÄun", 99 "password.link.login" : "Prijavite se na VaÅ¡ raÄun",
@@ -97,6 +117,7 @@
97 "service.errorHandler.headline" : "O, ne! ", 117 "service.errorHandler.headline" : "O, ne! ",
98 "service.errorHandler.message" : "Greška ", 118 "service.errorHandler.message" : "Greška ",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} has failed to load.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "ZapoÄnimo! ", 121 "services.getStarted" : "ZapoÄnimo! ",
101 "services.welcome" : "Dobrodošli u Franz", 122 "services.welcome" : "Dobrodošli u Franz",
102 "settings.account.account.editButton" : "Uredi raÄun", 123 "settings.account.account.editButton" : "Uredi raÄun",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Preuzmite", 138 "settings.account.invoiceDownload" : "Preuzmite",
118 "settings.account.manageSubscription.label" : "Upravljajte pretplatama", 139 "settings.account.manageSubscription.label" : "Upravljajte pretplatama",
119 "settings.account.successInfo" : "Vaše promjene su spremljene", 140 "settings.account.successInfo" : "Vaše promjene su spremljene",
141 "settings.account.tryReloadServices" : "Pokušajte ponovno",
120 "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno", 142 "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno",
121 "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku", 143 "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku",
122 "settings.app.buttonClearAllCache" : "ĐÑ‡Đ¸ÑÑ‚Đ¸ ĐºĐµÑˆ", 144 "settings.app.buttonClearAllCache" : "ĐÑ‡Đ¸ÑÑ‚Đ¸ ĐºĐµÑˆ",
@@ -129,22 +151,20 @@
129 "settings.app.form.beta" : "Obuhvati i beta verzije", 151 "settings.app.form.beta" : "Obuhvati i beta verzije",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Join the Dark Side",
131 "settings.app.form.enableGPUAcceleration" : "ĐĐ¼Đ¾Đ³ÑƒÑ›Đ¸ ÑƒĐ±Ñ€Đ·Đ°Ñе Đ³Ñ€Đ°Ñ„Đ¸Ñ‡ĐºĐµ Ñ˜ĐµĐ´Đ¸Đ½Đ¸Ñ†Đµ", 153 "settings.app.form.enableGPUAcceleration" : "ĐĐ¼Đ¾Đ³ÑƒÑ›Đ¸ ÑƒĐ±Ñ€Đ·Đ°Ñе Đ³Ñ€Đ°Ñ„Đ¸Ñ‡ĐºĐµ Ñ˜ĐµĐ´Đ¸Đ½Đ¸Ñ†Đµ",
132 "settings.app.form.enableMenuBar" : "ĐŸĐ¾ĐºĐ°Đ¶Đ¸ Đ¤Ñ€Đ°Đ½Đ· у Đ¼ĐµĐ½Đ¸Ñ˜Ñƒ",
133 "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", 154 "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa",
134 "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", 155 "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci",
135 "settings.app.form.hideDockIcon" : "Đ¡Đ°ĐºÑ€Đ¸Ñ˜ Đ¤Ñ€Đ°Đ½Đ· Đ¸ĐºĐ¾Đ½Đ¸Ñ†Ñƒ у Đ´Đ¾ĐºÑƒ",
136 "settings.app.form.language" : "Jezik", 156 "settings.app.form.language" : "Jezik",
137 "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku", 157 "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku",
138 "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren", 158 "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren",
139 "settings.app.form.showDisabledServices" : "Prikaži ploÄe s onemogućenim servisima", 159 "settings.app.form.showDisabledServices" : "Prikaži ploÄe s onemogućenim servisima",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "ĐŸĐ¾ĐºĐ°Đ¶Đ¸ Đ±ĐµÑŸ Đ·Đ° Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đµ Đ¿Đ¾Ñ€ÑƒĐºĐµ ĐºĐ°Đ´Đ° Ñу Đ¾Đ±Đ°Đ²ĐµÑˆÑ‚ĐµÑĐ° Đ¾Đ½ĐµĐ¼Đ¾Đ³ÑƒÑ›ĐµĐ½Đ°", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "ĐŸĐ¾ĐºĐ°Đ¶Đ¸ Đ±ĐµÑŸ Đ·Đ° Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đµ Đ¿Đ¾Ñ€ÑƒĐºĐµ ĐºĐ°Đ´Đ° Ñу Đ¾Đ±Đ°Đ²ĐµÑˆÑ‚ĐµÑĐ° Đ¾Đ½ĐµĐ¼Đ¾Đ³ÑƒÑ›ĐµĐ½Đ°",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "ĐŸĐ¾Đ´ĐµÑˆĐ°Đ²Đ°ÑĐ°", 161 "settings.app.headline" : "ĐŸĐ¾Đ´ĐµÑˆĐ°Đ²Đ°ÑĐ°",
143 "settings.app.headlineAdvanced" : "Napredne alatke", 162 "settings.app.headlineAdvanced" : "Napredne alatke",
144 "settings.app.headlineAppearance" : "Izgled", 163 "settings.app.headlineAppearance" : "Izgled",
145 "settings.app.headlineGeneral" : "Općenito", 164 "settings.app.headlineGeneral" : "Općenito",
146 "settings.app.headlineLanguage" : "Jezik", 165 "settings.app.headlineLanguage" : "Jezik",
147 "settings.app.headlineUpdates" : "Nadogradnje", 166 "settings.app.headlineUpdates" : "Nadogradnje",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni pogon", 168 "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni pogon",
149 "settings.app.subheadlineCache" : "ĐĐµÑˆ", 169 "settings.app.subheadlineCache" : "ĐĐµÑˆ",
150 "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ", 170 "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "ĐŸĐ¾Đ·Đ¾Đ²Đ¸ Đ¿Ñ€Đ¸Ñ˜Đ°Ñ‚ĐµÑ™Đµ", 177 "settings.navigation.inviteFriends" : "ĐŸĐ¾Đ·Đ¾Đ²Đ¸ Đ¿Ñ€Đ¸Ñ˜Đ°Ñ‚ĐµÑ™Đµ",
158 "settings.navigation.logout" : "Odjava", 178 "settings.navigation.logout" : "Odjava",
159 "settings.navigation.settings" : "Postavke", 179 "settings.navigation.settings" : "Postavke",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Vaše usluge", 181 "settings.navigation.yourServices" : "Vaše usluge",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Sve usluge", 183 "settings.recipes.all" : "Sve usluge",
162 "settings.recipes.dev" : "Razvoj", 184 "settings.recipes.dev" : "Razvoj",
163 "settings.recipes.headline" : "Dostupne usluge", 185 "settings.recipes.headline" : "Dostupne usluge",
@@ -201,8 +223,6 @@
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "User (optional)",
203 "settings.service.form.saveButton" : "SaÄuvaj uslugu\/e", 225 "settings.service.form.saveButton" : "SaÄuvaj uslugu\/e",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Hostovano", 226 "settings.service.form.tabHosted" : "Hostovano",
207 "settings.service.form.tabOnPremise" : "Samo-hostovano â­ï¸", 227 "settings.service.form.tabOnPremise" : "Samo-hostovano â­ï¸",
208 "settings.service.form.team" : "Tim", 228 "settings.service.form.team" : "Tim",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Pronađite usluge", 232 "settings.services.discoverServices" : "Pronađite usluge",
213 "settings.services.headline" : "Vaše usluge", 233 "settings.services.headline" : "Vaše usluge",
214 "settings.services.noServicesAdded" : "Još uvijek niste unijeli niti jednu uslugu.", 234 "settings.services.noServicesAdded" : "Još uvijek niste unijeli niti jednu uslugu.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Usluga je onemogućena.", 236 "settings.services.tooltip.isDisabled" : "Usluga je onemogućena.",
216 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni.", 237 "settings.services.tooltip.isMuted" : "Svi zvukovi su onemogućeni.",
217 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.", 238 "settings.services.tooltip.notificationsDisabled" : "Obavijesti su onemogućene.",
218 "settings.services.updatedInfo" : "Vaše promjene su pohranjene.", 239 "settings.services.updatedInfo" : "Vaše promjene su pohranjene.",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Tim",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Tvrtka", 246 "settings.user.form.accountType.company" : "Tvrtka",
220 "settings.user.form.accountType.individual" : "Pojedinac", 247 "settings.user.form.accountType.individual" : "Pojedinac",
221 "settings.user.form.accountType.label" : "Tip raÄuna", 248 "settings.user.form.accountType.label" : "Tip raÄuna",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Ime", 252 "settings.user.form.firstname" : "Ime",
226 "settings.user.form.lastname" : "Prezime", 253 "settings.user.form.lastname" : "Prezime",
227 "settings.user.form.newPassword" : "Nova lozinka", 254 "settings.user.form.newPassword" : "Nova lozinka",
255 "settings.workspace.add.form.name" : "Ime",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Ime",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Pokušajte ponovno",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Dodajte novu uslugu", 270 "sidebar.addNewService" : "Dodajte novu uslugu",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "ĐĐ½ĐµĐ¼Đ¾Đ³ÑƒÑ›Đ¸ Đ¾Đ±Đ°Đ²ĐµÑˆÑ‚ĐµÑĐ° и Đ·Đ²ÑƒĐºĐ¾Đ²Đµ", 272 "sidebar.muteApp" : "ĐĐ½ĐµĐ¼Đ¾Đ³ÑƒÑ›Đ¸ Đ¾Đ±Đ°Đ²ĐµÑˆÑ‚ĐµÑĐ° и Đ·Đ²ÑƒĐºĐ¾Đ²Đµ",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Postavke", 274 "sidebar.settings" : "Postavke",
231 "sidebar.unmuteApp" : "Đ˜ÑĐºÑ™ÑƒÑ‡Đ¸ Đ¾Đ±Đ°Đ²ĐµÑˆÑ‚ĐµÑĐ° и Đ·Đ²ÑƒĐºĐ¾Đ²Đµ", 275 "sidebar.unmuteApp" : "Đ˜ÑĐºÑ™ÑƒÑ‡Đ¸ Đ¾Đ±Đ°Đ²ĐµÑˆÑ‚ĐµÑĐ° и Đ·Đ²ÑƒĐºĐ¾Đ²Đµ",
232 "signup.company.label" : "Tvrtka", 276 "signup.company.label" : "Tvrtka",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje", 288 "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje",
245 "subscription.features.ads" : "Bez reklama, doživotno!", 289 "subscription.features.ads" : "Bez reklama, doživotno!",
246 "subscription.features.comingSoon" : "Dolazi uskoro", 290 "subscription.features.comingSoon" : "Dolazi uskoro",
247 "subscription.features.encryptedSync" : "Kodirano usklađivanje sesija.",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 291 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license",
249 "subscription.features.onpremise" : "Dodajte pretpostavljeni\/hostirani servis kao Å¡to ima usluga HipChat",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 292 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services", 293 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "Support for spellchecker", 294 "subscription.features.spellchecker" : "Support for spellchecker",
295 "subscription.features.workspaces" : "Organize your services in workspaces",
253 "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće:", 296 "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće:",
254 "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu", 297 "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu",
255 "subscription.submit.label" : "Želim da podržim razvoj Franca.", 298 "subscription.submit.label" : "Želim da podržim razvoj Franca.",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "Ponovno uÄitavanje", 312 "tabs.item.reload" : "Ponovno uÄitavanje",
270 "validation.email" : "{Đ¿Đ¾Ñ™Đµ} Đ½Đ¸Ñ˜Đµ Đ²Đ°Đ»Đ¸Đ´Đ½Đ¾", 313 "validation.email" : "{Đ¿Đ¾Ñ™Đµ} Đ½Đ¸Ñ˜Đµ Đ²Đ°Đ»Đ¸Đ´Đ½Đ¾",
271 "validation.minLength" : "{Đ¿Đ¾Ñ™Đµ} Ñ‚Ñ€ĐµĐ±Đ° Đ´Đ° Đ±ÑƒĐ´Đµ Đ½Đ°Ñ˜Đ¼Đ°Ñе {Đ´ÑƒĐ¶Đ¸Đ½Đ°} ĐºĐ°Ñ€Đ°ĐºÑ‚ĐµÑ€Đ° Đ´ÑƒĐ³Đ°Ñ‡ĐºĐ¾", 314 "validation.minLength" : "{Đ¿Đ¾Ñ™Đµ} Ñ‚Ñ€ĐµĐ±Đ° Đ´Đ° Đ±ÑƒĐ´Đµ Đ½Đ°Ñ˜Đ¼Đ°Ñе {Đ´ÑƒĐ¶Đ¸Đ½Đ°} ĐºĐ°Ñ€Đ°ĐºÑ‚ĐµÑ€Đ° Đ´ÑƒĐ³Đ°Ñ‡ĐºĐ¾",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{Đ¿Đ¾Ñ™Đµ} Ñ˜Đµ Đ½ĐµĐ¾Đ¿Ñ…Đ¾Đ´Đ½Đ¾", 316 "validation.required" : "{Đ¿Đ¾Ñ™Đµ} Ñ˜Đµ Đ½ĐµĐ¾Đ¿Ñ…Đ¾Đ´Đ½Đ¾",
273 "validation.url" : "{field} Đ½Đ¸Ñ˜Đµ Đ²Đ°Đ»Đ¸Đ´Đ°Đ½ Đ£Đ Đ›", 317 "validation.url" : "{field} Đ½Đ¸Ñ˜Đµ Đ²Đ°Đ»Đ¸Đ´Đ°Đ½ Đ£Đ Đ›",
274 "welcome.loginButton" : "Prijavite se na raÄun", 318 "welcome.loginButton" : "Prijavite se na raÄun",
275 "welcome.signupButton" : "Stvorite novi korisniÄki raÄun", 319 "welcome.signupButton" : "Stvorite novi korisniÄki raÄun",
276 "welcome.slogan" : "Poruke koje su stvorene za tebe" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Sve usluge",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json
index 9e7619454..69c5ede37 100644
--- a/src/i18n/locales/tr.json
+++ b/src/i18n/locales/tr.json
@@ -1,13 +1,25 @@
1{ 1{
2 "app.errorHandler.action" : "Yeniden YĂ¼kle", 2 "app.errorHandler.action" : "Tekrar YĂ¼kle",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Bir terslik çıktı",
4 "feature.delayApp.action" : "Franz Destek Lisansı'nı alın.", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Beklememek için Franz Destek Lisansı'nı satın alın.", 5 "feature.delayApp.action" : "Franz Destek Lisansı'nı alın",
6 "feature.delayApp.headline" : "Beklememek için Franz Destek Lisansı'nı satın alın",
6 "feature.delayApp.text" : "Franz {seconds} saniye sonra devam edecek.", 7 "feature.delayApp.text" : "Franz {seconds} saniye sonra devam edecek.",
7 "global.api.unhealthy" : "Franz hizmetlerine ÅŸu anda eriÅŸilemiyor.", 8 "feature.shareFranz.action.email" : "Mail olarak gönder",
9 "feature.shareFranz.action.facebook" : "Facebook'ta PaylaÅŸ",
10 "feature.shareFranz.action.twitter" : "Twitter'da PaylaÅŸ",
11 "feature.shareFranz.headline" : "Franz birlikte daha iyi!",
12 "feature.shareFranz.shareText.email" : "Franz'a {count} tane servis ekledim! WhatsApp, Messenger, Slack ve fazlasını içeren Ă¼cretsiz uygulamayı www.meetfranz.com adresinden edinin.",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "ArkadaÅŸlarına ve meslektaÅŸlarına Franz'ın ne kadar harika olduÄŸunu söyle ve bize bu kelimeyi yaymamızda yardım et.",
15 "global.api.unhealthy" : "Franz hizmetlerine ÅŸu anda eriÅŸilemiyor",
8 "global.notConnectedToTheInternet" : "İnternete bağlı değilsiniz.", 16 "global.notConnectedToTheInternet" : "İnternete bağlı değilsiniz.",
9 "import.headline" : "Franz 4 servislerinizi ekleyin.", 17 "global.spellchecker.useDefault" : "Sistem Dilini Kullan ({default})",
10 "import.notSupportedHeadline" : "Servisler henĂ¼z Franz 5'te desteklenmiyor.", 18 "global.spellchecking.autodetect" : "Dili otomatik tespit et",
19 "global.spellchecking.autodetect.short" : "Otomatik",
20 "global.spellchecking.language" : "Ä°mla kontrol dili",
21 "import.headline" : "Franz 4 servislerinizi içeri aktarın",
22 "import.notSupportedHeadline" : "HenĂ¼z Franz 5'te desteklenmeyen servisler",
11 "import.skip.label" : "Servisleri kendim eklemek istiyorum", 23 "import.skip.label" : "Servisleri kendim eklemek istiyorum",
12 "import.submit.label" : "Servisleri içe aktar", 24 "import.submit.label" : "Servisleri içe aktar",
13 "infobar.buttonChangelog" : "Yeni ne var?", 25 "infobar.buttonChangelog" : "Yeni ne var?",
@@ -15,7 +27,7 @@
15 "infobar.buttonReloadServices" : "Hizmetleri yeniden yĂ¼kle", 27 "infobar.buttonReloadServices" : "Hizmetleri yeniden yĂ¼kle",
16 "infobar.requiredRequestsFailed" : "Hizmetler ve kullanıcı bilgileri yĂ¼klenemedi", 28 "infobar.requiredRequestsFailed" : "Hizmetler ve kullanıcı bilgileri yĂ¼klenemedi",
17 "infobar.servicesUpdated" : "Hizmetleriniz gĂ¼ncellendi.", 29 "infobar.servicesUpdated" : "Hizmetleriniz gĂ¼ncellendi.",
18 "infobar.updateAvailable" : "Yeni Franz gĂ¼ncellemesi mevcut", 30 "infobar.updateAvailable" : "Yeni Franz gĂ¼ncellemesi mevcut.",
19 "invite.email.label" : "E-posta adresi", 31 "invite.email.label" : "E-posta adresi",
20 "invite.headline.friends" : "3 arkadaşını ya da çalışma arkadaşını davet et", 32 "invite.headline.friends" : "3 arkadaşını ya da çalışma arkadaşını davet et",
21 "invite.name.label" : "Ad", 33 "invite.name.label" : "Ad",
@@ -32,6 +44,7 @@
32 "login.submit.label" : "Oturum Aç", 44 "login.submit.label" : "Oturum Aç",
33 "login.tokenExpired" : "Oturum zaman aşımına uÄŸradı, lĂ¼tfen tekrar giriÅŸ yapın.", 45 "login.tokenExpired" : "Oturum zaman aşımına uÄŸradı, lĂ¼tfen tekrar giriÅŸ yapın.",
34 "menu.app.about" : "Franz Hakkında", 46 "menu.app.about" : "Franz Hakkında",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "Gizle", 48 "menu.app.hide" : "Gizle",
36 "menu.app.hideOthers" : "DiÄŸerlerini Gizle", 49 "menu.app.hideOthers" : "DiÄŸerlerini Gizle",
37 "menu.app.quit" : "Çıkış", 50 "menu.app.quit" : "Çıkış",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "Destek", 72 "menu.help.support" : "Destek",
60 "menu.help.tos" : "Kullanım Åartları", 73 "menu.help.tos" : "Kullanım Åartları",
61 "menu.services" : "Hizmetler", 74 "menu.services" : "Hizmetler",
62 "menu.services.addNewService" : "Yeni Servis Ekle", 75 "menu.services.activatePreviousService" : "Activate previous service",
76 "menu.services.addNewService" : "Yeni servis ekle...",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "GörĂ¼nĂ¼m", 78 "menu.view" : "GörĂ¼nĂ¼m",
64 "menu.view.enterFullScreen" : "Tam Ekrana Geç", 79 "menu.view.enterFullScreen" : "Tam Ekrana Geç",
65 "menu.view.exitFullScreen" : "Tam Ekrandan Çık", 80 "menu.view.exitFullScreen" : "Tam Ekrandan Çık",
@@ -74,6 +89,11 @@
74 "menu.window" : "Pencere", 89 "menu.window" : "Pencere",
75 "menu.window.close" : "Kapat", 90 "menu.window.close" : "Kapat",
76 "menu.window.minimize" : "Simge Durumuna KĂ¼Ă§Ă¼lt", 91 "menu.window.minimize" : "Simge Durumuna KĂ¼Ă§Ă¼lt",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "TĂ¼m servisler",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "E-posta adresi", 97 "password.email.label" : "E-posta adresi",
78 "password.headline" : "Parola sıfırla", 98 "password.headline" : "Parola sıfırla",
79 "password.link.login" : "Hesabına giriş yap", 99 "password.link.login" : "Hesabına giriş yap",
@@ -81,7 +101,7 @@
81 "password.noUser" : "Bu e-posta adresinde bir kullanıcı bulunamadı", 101 "password.noUser" : "Bu e-posta adresinde bir kullanıcı bulunamadı",
82 "password.submit.label" : "Gönder", 102 "password.submit.label" : "Gönder",
83 "password.successInfo" : "E-postanızı kontrol ediniz", 103 "password.successInfo" : "E-postanızı kontrol ediniz",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "Hesabı YĂ¼kselt",
85 "pricing.headline" : "Franz'ı Destekle", 105 "pricing.headline" : "Franz'ı Destekle",
86 "pricing.link.skipPayment" : "Franz'ın gelişimini desteklemek istemiyorum.", 106 "pricing.link.skipPayment" : "Franz'ın gelişimini desteklemek istemiyorum.",
87 "pricing.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", 107 "pricing.submit.label" : "Franz'ın gelişimini desteklemek istiyorum",
@@ -92,11 +112,12 @@
92 "service.crashHandler.text" : "{name} bir hataya neden oldu.", 112 "service.crashHandler.text" : "{name} bir hataya neden oldu.",
93 "service.disabledHandler.action" : "{name} aktif", 113 "service.disabledHandler.action" : "{name} aktif",
94 "service.disabledHandler.headline" : "{name} devredışı", 114 "service.disabledHandler.headline" : "{name} devredışı",
95 "service.errorHandler.action" : "{name} yeniden yĂ¼kle", 115 "service.errorHandler.action" : "{Ä°sim} Yeniden YĂ¼kle",
96 "service.errorHandler.editAction" : "{name} dĂ¼zenle", 116 "service.errorHandler.editAction" : "{name} dĂ¼zenle",
97 "service.errorHandler.headline" : "Aman Tanrım hayır!", 117 "service.errorHandler.headline" : "Hayııırrr!",
98 "service.errorHandler.message" : "Hata", 118 "service.errorHandler.message" : "Hata",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} yĂ¼klenemedi.",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "Haydi başlayalım", 121 "services.getStarted" : "Haydi başlayalım",
101 "services.welcome" : "Franz'a HoÅŸgeldiniz", 122 "services.welcome" : "Franz'a HoÅŸgeldiniz",
102 "settings.account.account.editButton" : "Hesabı dĂ¼zenle", 123 "settings.account.account.editButton" : "Hesabı dĂ¼zenle",
@@ -117,8 +138,9 @@
117 "settings.account.invoiceDownload" : "Ä°ndir", 138 "settings.account.invoiceDownload" : "Ä°ndir",
118 "settings.account.manageSubscription.label" : "AboneliÄŸini yönet", 139 "settings.account.manageSubscription.label" : "AboneliÄŸini yönet",
119 "settings.account.successInfo" : "DeÄŸiÅŸikliklerin kaydedildi", 140 "settings.account.successInfo" : "DeÄŸiÅŸikliklerin kaydedildi",
141 "settings.account.tryReloadServices" : "Tekrar deneyin",
120 "settings.account.tryReloadUserInfoRequest" : "Tekrar deneyin", 142 "settings.account.tryReloadUserInfoRequest" : "Tekrar deneyin",
121 "settings.account.userInfoRequestFailed" : "Kullanıcı bilgisi yĂ¼klenemedi.", 143 "settings.account.userInfoRequestFailed" : "Kullanıcı bilgisi yĂ¼klenemedi",
122 "settings.app.buttonClearAllCache" : "Ă–nbelleÄŸi temizle", 144 "settings.app.buttonClearAllCache" : "Ă–nbelleÄŸi temizle",
123 "settings.app.buttonInstallUpdate" : "Yeniden BaÅŸlat ve GĂ¼ncelleÅŸtirmeleri Kur", 145 "settings.app.buttonInstallUpdate" : "Yeniden BaÅŸlat ve GĂ¼ncelleÅŸtirmeleri Kur",
124 "settings.app.buttonSearchForUpdate" : "GĂ¼ncellemeleri kontrol et", 146 "settings.app.buttonSearchForUpdate" : "GĂ¼ncellemeleri kontrol et",
@@ -127,24 +149,22 @@
127 "settings.app.form.autoLaunchInBackground" : "Arka planda aç", 149 "settings.app.form.autoLaunchInBackground" : "Arka planda aç",
128 "settings.app.form.autoLaunchOnStart" : "Franz'ı baÅŸlangıçta aç", 150 "settings.app.form.autoLaunchOnStart" : "Franz'ı baÅŸlangıçta aç",
129 "settings.app.form.beta" : "Beta versiyonları dahil et", 151 "settings.app.form.beta" : "Beta versiyonları dahil et",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "Karanlık tarafa katıl",
131 "settings.app.form.enableGPUAcceleration" : "Grafik Ä°ÅŸlemci Ăœnitesi (GPU) Hızlandırıcısını Aktif et", 153 "settings.app.form.enableGPUAcceleration" : "Grafik Ä°ÅŸlemci Ăœnitesi (GPU) Hızlandırıcısını Aktif et",
132 "settings.app.form.enableMenuBar" : "MenĂ¼ çubuÄŸunda Franz'ı göster",
133 "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir", 154 "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir",
134 "settings.app.form.enableSystemTray" : "Franz'ı sistem tepsisinde göster", 155 "settings.app.form.enableSystemTray" : "Franz'ı sistem tepsisinde göster",
135 "settings.app.form.hideDockIcon" : "Franz Simgesini Gösterme",
136 "settings.app.form.language" : "Dil", 156 "settings.app.form.language" : "Dil",
137 "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine kĂ¼Ă§Ă¼lt", 157 "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine kĂ¼Ă§Ă¼lt",
138 "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut", 158 "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut",
139 "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster", 159 "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "Ayarlar", 161 "settings.app.headline" : "Ayarlar",
143 "settings.app.headlineAdvanced" : "GeliÅŸmiÅŸ", 162 "settings.app.headlineAdvanced" : "GeliÅŸmiÅŸ",
144 "settings.app.headlineAppearance" : "GörĂ¼nĂ¼m", 163 "settings.app.headlineAppearance" : "GörĂ¼nĂ¼m",
145 "settings.app.headlineGeneral" : "Genel", 164 "settings.app.headlineGeneral" : "Genel",
146 "settings.app.headlineLanguage" : "Dil", 165 "settings.app.headlineLanguage" : "Dil",
147 "settings.app.headlineUpdates" : "GĂ¼ncellemeler", 166 "settings.app.headlineUpdates" : "GĂ¼ncellemeler",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Değişiklikler yeniden başlatmayı gerektiriyor", 168 "settings.app.restartRequired" : "Değişiklikler yeniden başlatmayı gerektiriyor",
149 "settings.app.subheadlineCache" : "Ă–nbellek", 169 "settings.app.subheadlineCache" : "Ă–nbellek",
150 "settings.app.translationHelp" : "Franz'ı senin diline tercĂ¼me etmemiz için yardım et.", 170 "settings.app.translationHelp" : "Franz'ı senin diline tercĂ¼me etmemiz için yardım et.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Arkadaşlarını Davet Et", 177 "settings.navigation.inviteFriends" : "Arkadaşlarını Davet Et",
158 "settings.navigation.logout" : "Çıkış", 178 "settings.navigation.logout" : "Çıkış",
159 "settings.navigation.settings" : "Ayarlar", 179 "settings.navigation.settings" : "Ayarlar",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Servislerin", 181 "settings.navigation.yourServices" : "Servislerin",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "TĂ¼m servisler", 183 "settings.recipes.all" : "TĂ¼m servisler",
162 "settings.recipes.dev" : "GeliÅŸtirme", 184 "settings.recipes.dev" : "GeliÅŸtirme",
163 "settings.recipes.headline" : "Mevcut servisler", 185 "settings.recipes.headline" : "Mevcut servisler",
@@ -168,7 +190,7 @@
168 "settings.searchService" : "Hizmeti ara", 190 "settings.searchService" : "Hizmeti ara",
169 "settings.service.error.goBack" : "Servislere geri dön", 191 "settings.service.error.goBack" : "Servislere geri dön",
170 "settings.service.error.headline" : "Hata", 192 "settings.service.error.headline" : "Hata",
171 "settings.service.error.message" : "Servis tarifi yĂ¼klenemedi", 193 "settings.service.error.message" : "Servis tarifi yĂ¼klenemedi.",
172 "settings.service.form.addServiceHeadline" : "{name} Ekle", 194 "settings.service.form.addServiceHeadline" : "{name} Ekle",
173 "settings.service.form.availableServices" : "Mevcut servisler", 195 "settings.service.form.availableServices" : "Mevcut servisler",
174 "settings.service.form.customUrl" : "Ă–zel sunucu", 196 "settings.service.form.customUrl" : "Ă–zel sunucu",
@@ -176,10 +198,10 @@
176 "settings.service.form.customUrlUpgradeAccount" : "Hesabını yĂ¼kselt", 198 "settings.service.form.customUrlUpgradeAccount" : "Hesabını yĂ¼kselt",
177 "settings.service.form.customUrlValidationError" : "{name} özel sunucu doÄŸrulanamadı.", 199 "settings.service.form.customUrlValidationError" : "{name} özel sunucu doÄŸrulanamadı.",
178 "settings.service.form.deleteButton" : "Servisi sil", 200 "settings.service.form.deleteButton" : "Servisi sil",
179 "settings.service.form.editServiceHeadline" : "{name} dĂ¼zenle", 201 "settings.service.form.editServiceHeadline" : "{Ä°sim} DĂ¼zenle",
180 "settings.service.form.enableAudio" : "Sesi etkinleÅŸtirin", 202 "settings.service.form.enableAudio" : "Sesi etkinleÅŸtirin",
181 "settings.service.form.enableBadge" : "Okunmamış mesajları göster", 203 "settings.service.form.enableBadge" : "Okunmamış mesajları göster",
182 "settings.service.form.enableDarkMode" : "Enable Dark Mode", 204 "settings.service.form.enableDarkMode" : "Karanlık modu aç",
183 "settings.service.form.enableNotification" : "Bildirimleri etkinleÅŸtir", 205 "settings.service.form.enableNotification" : "Bildirimleri etkinleÅŸtir",
184 "settings.service.form.enableService" : "Servisi etkinleÅŸtir", 206 "settings.service.form.enableService" : "Servisi etkinleÅŸtir",
185 "settings.service.form.headlineBadges" : "Okunmamış mesajlar", 207 "settings.service.form.headlineBadges" : "Okunmamış mesajlar",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "Mesaj rozetini tĂ¼m yeni mesajlar için göster", 214 "settings.service.form.indirectMessages" : "Mesaj rozetini tĂ¼m yeni mesajlar için göster",
193 "settings.service.form.isMutedInfo" : "Devre dışı bırakıldığında, tĂ¼m bildirim sesleri sessize alınır", 215 "settings.service.form.isMutedInfo" : "Devre dışı bırakıldığında, tĂ¼m bildirim sesleri sessize alınır",
194 "settings.service.form.name" : "Ä°sim", 216 "settings.service.form.name" : "Ä°sim",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Ayarları",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "Proxy Sunucusu\/IP",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "Proxy ayarları Franz serverlarına yĂ¼klenmeyecektir.",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Proxy Kullan",
199 "settings.service.form.proxy.password" : "Password (optional)", 221 "settings.service.form.proxy.password" : "Parola (opsiyonel)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "Port",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Proxy ayarlarını değiştirdikten sonra Franz'ı yeniden başlatınız.",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "Kullanıcı (opsiyonel)",
203 "settings.service.form.saveButton" : "Servisi kaydet", 225 "settings.service.form.saveButton" : "Servisi kaydet",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Barındırılan", 226 "settings.service.form.tabHosted" : "Barındırılan",
207 "settings.service.form.tabOnPremise" : "Kendi barındırılan", 227 "settings.service.form.tabOnPremise" : "Kendi barındırılan",
208 "settings.service.form.team" : "Takım", 228 "settings.service.form.team" : "Takım",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Servisleri keÅŸfet", 232 "settings.services.discoverServices" : "Servisleri keÅŸfet",
213 "settings.services.headline" : "Servislerin", 233 "settings.services.headline" : "Servislerin",
214 "settings.services.noServicesAdded" : "HenĂ¼z hiç servis eklemedin.", 234 "settings.services.noServicesAdded" : "HenĂ¼z hiç servis eklemedin.",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Servis devre dışı", 236 "settings.services.tooltip.isDisabled" : "Servis devre dışı",
216 "settings.services.tooltip.isMuted" : "TĂ¼m sesler kapalı", 237 "settings.services.tooltip.isMuted" : "TĂ¼m sesler kapalı",
217 "settings.services.tooltip.notificationsDisabled" : "Bildirimler devre dışı", 238 "settings.services.tooltip.notificationsDisabled" : "Bildirimler devre dışı",
218 "settings.services.updatedInfo" : "DeÄŸiÅŸikliklerin kaydedildi", 239 "settings.services.updatedInfo" : "DeÄŸiÅŸikliklerin kaydedildi",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "Takım",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "Kurum", 246 "settings.user.form.accountType.company" : "Kurum",
220 "settings.user.form.accountType.individual" : "Bireysel", 247 "settings.user.form.accountType.individual" : "Bireysel",
221 "settings.user.form.accountType.label" : "Hesap tipi", 248 "settings.user.form.accountType.label" : "Hesap tipi",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Ad", 252 "settings.user.form.firstname" : "Ad",
226 "settings.user.form.lastname" : "Soyad", 253 "settings.user.form.lastname" : "Soyad",
227 "settings.user.form.newPassword" : "Yeni ÅŸifre", 254 "settings.user.form.newPassword" : "Yeni ÅŸifre",
255 "settings.workspace.add.form.name" : "Name",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Name",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Tekrar deneyin",
266 "settings.workspaces.updatedInfo" : "DeÄŸiÅŸikliklerin kaydedildi",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Yeni servis ekle", 270 "sidebar.addNewService" : "Yeni servis ekle",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Bildirimleri ve sesli uyarıları kapat", 272 "sidebar.muteApp" : "Bildirimleri ve sesli uyarıları kapat",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "Ayarlar", 274 "sidebar.settings" : "Ayarlar",
231 "sidebar.unmuteApp" : "Bildirimleri ve sesli uyarıları etkinleştir", 275 "sidebar.unmuteApp" : "Bildirimleri ve sesli uyarıları etkinleştir",
232 "signup.company.label" : "Kurum", 276 "signup.company.label" : "Kurum",
@@ -238,18 +282,17 @@
238 "signup.legal.info" : "Franz'ı hesabı oluşturark kabul ediyorsun", 282 "signup.legal.info" : "Franz'ı hesabı oluşturark kabul ediyorsun",
239 "signup.legal.privacy" : "Gizlilik SözleÅŸmesi", 283 "signup.legal.privacy" : "Gizlilik SözleÅŸmesi",
240 "signup.legal.terms" : "Kullanım Koşulları", 284 "signup.legal.terms" : "Kullanım Koşulları",
241 "signup.link.login" : "Mevcut hesabınla giriş yap.", 285 "signup.link.login" : "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?",
242 "signup.password.label" : "Åifre", 286 "signup.password.label" : "Åifre",
243 "signup.submit.label" : "Hesap oluÅŸtur", 287 "signup.submit.label" : "Hesap oluÅŸtur",
244 "subscription.euTaxInfo" : "AB vatandaşları: yerel satış vergileri uygulanabilir", 288 "subscription.euTaxInfo" : "AB vatandaşları: yerel satış vergileri uygulanabilir",
245 "subscription.features.ads" : "Reklam yok, asla!", 289 "subscription.features.ads" : "Reklam yok, asla!",
246 "subscription.features.comingSoon" : "yakında geliyor", 290 "subscription.features.comingSoon" : "yakında geliyor",
247 "subscription.features.encryptedSync" : "Åifreli oturum senkronizasyonu", 291 "subscription.features.noInterruptions" : "Uygulama gecikmeleri & yĂ¼kseltme lisanları için dırdır yok",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Mattermost gibi ÅŸirket-içi\/barındırılan servisler ekleyin",
249 "subscription.features.onpremise" : "HipChat gibi kurum içi\/barındırılan hizmetler ekle", 293 "subscription.features.proxy" : "Servisler için proxy desteÄŸi",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 294 "subscription.features.spellchecker" : "Yazım denetleyicisi desteği",
251 "subscription.features.proxy" : "Proxy support for services", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
252 "subscription.features.spellchecker" : "Support for spellchecker",
253 "subscription.includedFeatures" : "Ăœcretli Franz Premium Destekçi Hesabına dahil", 296 "subscription.includedFeatures" : "Ăœcretli Franz Premium Destekçi Hesabına dahil",
254 "subscription.paymentSessionError" : "Ă–deme formu baÅŸlatılamadı", 297 "subscription.paymentSessionError" : "Ă–deme formu baÅŸlatılamadı",
255 "subscription.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", 298 "subscription.submit.label" : "Franz'ın gelişimini desteklemek istiyorum",
@@ -266,12 +309,23 @@
266 "tabs.item.enableAudio" : "Sesi etkinleÅŸtir", 309 "tabs.item.enableAudio" : "Sesi etkinleÅŸtir",
267 "tabs.item.enableNotification" : "Bildirimleri etkinleÅŸtir", 310 "tabs.item.enableNotification" : "Bildirimleri etkinleÅŸtir",
268 "tabs.item.enableService" : "Servisi etkinleÅŸtir", 311 "tabs.item.enableService" : "Servisi etkinleÅŸtir",
269 "tabs.item.reload" : "Yeniden YĂ¼kle", 312 "tabs.item.reload" : "Tekrar yĂ¼kle",
270 "validation.email" : "{alan} geçerli deÄŸil", 313 "validation.email" : "{alan} geçerli deÄŸil",
271 "validation.minLength" : "{field} en az {length} karakter uzunluğunda olmalı", 314 "validation.minLength" : "{field} en az {length} karakter uzunluğunda olmalı",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} gereklidir", 316 "validation.required" : "{field} gereklidir",
273 "validation.url" : "{field} geçerli bir URL deÄŸil", 317 "validation.url" : "{field} geçerli bir URL deÄŸil",
274 "welcome.loginButton" : "Hesabına giriş yap", 318 "welcome.loginButton" : "Hesabına giriş yap",
275 "welcome.signupButton" : "Ăœcretsiz hesap oluÅŸtur", 319 "welcome.signupButton" : "Ăœcretsiz hesap oluÅŸtur",
276 "welcome.slogan" : "Sizin için çalışan mesajlaÅŸma" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "TĂ¼m servisler",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
index 7d51b380e..113665f5f 100644
--- a/src/i18n/locales/uk.json
+++ b/src/i18n/locales/uk.json
@@ -1,13 +1,25 @@
1{ 1{
2 "app.errorHandler.action" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸", 2 "app.errorHandler.action" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸",
3 "app.errorHandler.headline" : "Something went wrong", 3 "app.errorHandler.headline" : "Đ©Đ¾ÑÑŒ Đ¿Ñ–ÑˆĐ»Đ¾ Đ½Đµ Ñ‚Đ°Đº",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.action" : "ĐÑ‚Ñ€Đ¸Đ¼Đ°Ñ‚Đ¸ Đ»Ñ–Ñ†ĐµĐ½Đ·Ñ–Ñ Franz Supporter ",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.headline" : "Đ‘ÑƒĐ´ÑŒ лаÑĐºĐ°, Đ¿Ñ€Đ¸Đ´Đ±Đ°Đ¹Ñ‚Đµ Đ»Ñ–Ñ†ĐµĐ½Đ·Ñ–Ñ Franz Supporter аби Đ¿Ñ€Đ¾Đ¿ÑƒÑÑ‚Đ¸Ñ‚Đ¸ Đ¾Ñ‡Ñ–ĐºÑƒĐ²Đ°Đ½Đ½Ñ",
7 "global.api.unhealthy" : "Đе Đ¼Đ¾Đ¶Đ½Đ° Đ¿Ñ–Đ´ĐºĐ»ÑÑ‡Đ¸Ñ‚Đ¸ÑÑŒ Đ´Đ¾ Đ¾Đ½Đ»Đ°Đ¹Đ½ ÑĐµÑ€Đ²Ñ–ÑÑ–Đ² Franz", 7 "feature.delayApp.text" : "Franz Đ²Ñ–Đ´Đ½Đ¾Đ²Đ¸Ñ‚ÑŒ Ñ€Đ¾Đ±Đ¾Ñ‚Ñƒ Đ·Đ° {seconds} ÑĐµĐºÑƒĐ½Đ´",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
15 "global.api.unhealthy" : "Đе Đ¼Đ¾Đ¶Đ»Đ¸Đ²Đ¾ Đ¿Ñ–Đ´ĐºĐ»ÑÑ‡Đ¸Ñ‚Đ¸ÑÑŒ Đ´Đ¾ Đ¾Đ½Đ»Đ°Đ¹Đ½ ÑĐµÑ€Đ²Ñ–ÑÑ–Đ² Franz",
8 "global.notConnectedToTheInternet" : "Ви Đ½Đµ Đ¿Ñ–Đ´ĐºĐ»ÑÑ‡ĐµĐ½Ñ– Đ´Đ¾ Đ†Đ½Ñ‚ĐµÑ€Đ½ĐµÑ‚Ñƒ.", 16 "global.notConnectedToTheInternet" : "Ви Đ½Đµ Đ¿Ñ–Đ´ĐºĐ»ÑÑ‡ĐµĐ½Ñ– Đ´Đ¾ Đ†Đ½Ñ‚ĐµÑ€Đ½ĐµÑ‚Ñƒ.",
17 "global.spellchecker.useDefault" : "Đ’Đ¸ĐºĐ¾Ñ€Đ¸ÑÑ‚Đ¾Đ²ÑƒĐ²Đ°Ñ‚Đ¸ ÑиÑÑ‚ĐµĐ¼Đ½Ñ– Đ¿Đ°Ñ€Đ°Đ¼ĐµÑ‚Ñ€Đ¸ Đ·Đ° Đ·Đ¼Đ¾Đ²Ñ‡ÑƒĐ²Đ°Đ½Đ½ÑĐ¼ ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "ĐœĐ¾Đ²Đ° Đ¿ĐµÑ€ĐµĐ²Ñ–Ñ€ĐºĐ¸ Đ¿Ñ€Đ°Đ²Đ¾Đ¿Đ¸Ñу",
9 "import.headline" : "Đ†Đ¼Đ¿Đ¾Ñ€Ñ‚ÑƒĐ²Đ°Ñ‚Đ¸ Đ²Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи Đ· Franz 4", 21 "import.headline" : "Đ†Đ¼Đ¿Đ¾Ñ€Ñ‚ÑƒĐ²Đ°Ñ‚Đ¸ Đ²Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи Đ· Franz 4",
10 "import.notSupportedHeadline" : "Đ¡ĐµÑ€Đ²Ñ–Ñи Ñ‰Đµ Đ½Đµ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼ÑƒÑÑ‚ÑŒÑÑ Đ² Franz 5", 22 "import.notSupportedHeadline" : "ĐĐ°Ñ€Đ°Đ·Ñ– ÑĐµÑ€Đ²Ñ–Ñи Đ½Đµ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼ÑƒÑÑ‚ÑŒÑÑ Ñƒ Franz 5",
11 "import.skip.label" : "Đ¯ Đ±Đ°Đ¶Đ°Ñ Đ´Đ¾Đ´Đ°Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ Đ²Ñ€ÑƒÑ‡Đ½Ñƒ", 23 "import.skip.label" : "Đ¯ Đ±Đ°Đ¶Đ°Ñ Đ´Đ¾Đ´Đ°Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ Đ²Ñ€ÑƒÑ‡Đ½Ñƒ",
12 "import.submit.label" : "Đ†Đ¼Đ¿Đ¾Ñ€Ñ‚ÑƒĐ²Đ°Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñи", 24 "import.submit.label" : "Đ†Đ¼Đ¿Đ¾Ñ€Ñ‚ÑƒĐ²Đ°Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñи",
13 "infobar.buttonChangelog" : "Đ©Đ¾ Đ½Đ¾Đ²Đ¾Đ³Đ¾?", 25 "infobar.buttonChangelog" : "Đ©Đ¾ Đ½Đ¾Đ²Đ¾Đ³Đ¾?",
@@ -17,21 +29,22 @@
17 "infobar.servicesUpdated" : "Đ’Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи Đ±ÑƒĐ»Đ¾ Đ¾Đ½Đ¾Đ²Đ»ĐµĐ½Đ¾.", 29 "infobar.servicesUpdated" : "Đ’Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи Đ±ÑƒĐ»Đ¾ Đ¾Đ½Đ¾Đ²Đ»ĐµĐ½Đ¾.",
18 "infobar.updateAvailable" : "ĐĐ¾Đ²Đµ Đ¾Đ½Đ¾Đ²Đ»ĐµĐ½Đ½Ñ Đ´Đ»Ñ Franz Đ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Đµ.", 30 "infobar.updateAvailable" : "ĐĐ¾Đ²Đµ Đ¾Đ½Đ¾Đ²Đ»ĐµĐ½Đ½Ñ Đ´Đ»Ñ Franz Đ´Đ¾ÑÑ‚ÑƒĐ¿Đ½Đµ.",
19 "invite.email.label" : "Email Đ°Đ´Ñ€ĐµÑĐ°", 31 "invite.email.label" : "Email Đ°Đ´Ñ€ĐµÑĐ°",
20 "invite.headline.friends" : "Đ—Đ°Đ¿Ñ€Đ¾ÑÑ–Ñ‚ÑŒ 3 Đ²Đ°ÑˆĐ¸Ñ… Đ´Ñ€ÑƒĐ·Ñ–Đ² Đ°Đ±Đ¾ ĐºĐ¾Đ»ĐµĐ³", 32 "invite.headline.friends" : "Đ—Đ°Đ¿Ñ€Đ¾ÑÑ–Ñ‚ÑŒ 3-Ñ… Đ²Đ°ÑˆĐ¸Ñ… Đ´Ñ€ÑƒĐ·Ñ–Đ² Đ°Đ±Đ¾ ĐºĐ¾Đ»ĐµĐ³",
21 "invite.name.label" : "Đ†Đ¼'Ñ", 33 "invite.name.label" : "Đ†Đ¼'Ñ",
22 "invite.skip.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ·Ñ€Đ¾Đ±Đ¸Ñ‚Đ¸ Ñ†Đµ Đ¿Ñ–Đ·Đ½Ñ–ÑˆĐµ", 34 "invite.skip.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ·Ñ€Đ¾Đ±Đ¸Ñ‚Đ¸ Ñ†Đµ Đ¿Ñ–Đ·Đ½Ñ–ÑˆĐµ",
23 "invite.submit.label" : "Đ’Ñ–Đ´Đ¿Ñ€Đ°Đ²Đ¸Ñ‚Đ¸ Đ·Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Ñ", 35 "invite.submit.label" : "Đ’Ñ–Đ´Đ¿Ñ€Đ°Đ²Đ¸Ñ‚Đ¸ Đ·Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Ñ",
24 "invite.successInfo" : "Đ—Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Ñ ÑƒÑĐ¿Ñ–ÑˆĐ½Đ¾ Đ²Ñ–Đ´Đ¾ÑĐ»Đ°Đ½Ñ–", 36 "invite.successInfo" : "Đ—Đ°Đ¿Ñ€Đ¾ÑˆĐµĐ½Đ½Ñ ÑƒÑĐ¿Ñ–ÑˆĐ½Đ¾ Đ½Đ°Đ´Ñ–ÑĐ»Đ°Đ½Ñ–",
25 "login.email.label" : "Email Đ°Đ´Ñ€ĐµÑĐ°", 37 "login.email.label" : "Email Đ°Đ´Ñ€ĐµÑĐ°",
26 "login.headline" : "Đ£Đ²Ñ–Đ¹Ñ‚Đ¸", 38 "login.headline" : "Đ£Đ²Ñ–Đ¹Ñ‚Đ¸",
27 "login.invalidCredentials" : "Email Đ°Đ±Đ¾ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ Đ½ĐµĐºĐ¾Ñ€ĐµĐºÑ‚Đ½Ñ–", 39 "login.invalidCredentials" : "Email Đ°Đ±Đ¾ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ Đ½ĐµĐºĐ¾Ñ€ĐµĐºÑ‚Đ½Ñ–",
28 "login.link.password" : "Đ¡ĐºĐ¸Đ½ÑƒÑ‚Đ¸ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ", 40 "login.link.password" : "Đ¡ĐºĐ¸Đ½ÑƒÑ‚Đ¸ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ",
29 "login.link.signup" : "Đ¡Ñ‚Đ²Đ¾Ñ€Đ¸Ñ‚Đ¸ Đ±ĐµĐ·Đ¿Đ»Đ°Ñ‚Đ½Đ¸Đ¹ Đ°ĐºĐ°ÑƒĐ½Ñ‚", 41 "login.link.signup" : "Đ¡Ñ‚Đ²Đ¾Ñ€Đ¸Ñ‚Đ¸ Đ±ĐµĐ·Đ¿Đ»Đ°Ñ‚Đ½Đ¸Đ¹ Đ°ĐºĐ°ÑƒĐ½Ñ‚",
30 "login.password.label" : "ĐŸĐ°Ñ€Đ¾Đ»ÑŒ", 42 "login.password.label" : "ĐŸĐ°Ñ€Đ¾Đ»ÑŒ",
31 "login.serverLogout" : "Đ’Đ°ÑˆĐ° ÑеÑÑ–Ñ Đ·Đ°ĐºÑ–Đ½Ñ‡Đ¸Đ»Đ°ÑÑŒ, Đ±ÑƒĐ´ÑŒ лаÑĐºĐ°, Đ·Đ°Đ¹Đ´Ñ–Ñ‚ÑŒ Đ·Đ½Đ¾Đ²Ñƒ.", 43 "login.serverLogout" : "Đ’Đ°ÑˆĐ° ÑеÑÑ–Ñ Đ·Đ°ĐºÑ–Đ½Ñ‡Đ¸Đ»Đ°ÑÑŒ, Đ±ÑƒĐ´ÑŒ лаÑĐºĐ°, ÑƒĐ²Ñ–Đ¹Đ´Ñ–Ñ‚ÑŒ Đ·Đ½Đ¾Đ²Ñƒ.",
32 "login.submit.label" : "Đ£Đ²Ñ–Đ¹Ñ‚Đ¸", 44 "login.submit.label" : "Đ£Đ²Ñ–Đ¹Ñ‚Đ¸",
33 "login.tokenExpired" : "Đ’Đ°ÑˆĐ° ÑеÑÑ–Ñ Đ·Đ°ĐºÑ–Đ½Ñ‡Đ¸Đ»Đ°ÑÑŒ, Đ±ÑƒĐ´ÑŒ лаÑĐºĐ°, Đ·Đ°Đ¹Đ´Ñ–Ñ‚ÑŒ Đ·Đ½Đ¾Đ²Ñƒ.", 45 "login.tokenExpired" : "Đ’Đ°ÑˆĐ° ÑеÑÑ–Ñ Đ·Đ°ĐºÑ–Đ½Ñ‡Đ¸Đ»Đ°ÑÑŒ, Đ±ÑƒĐ´ÑŒ лаÑĐºĐ°, ÑƒĐ²Ñ–Đ¹Đ´Ñ–Ñ‚ÑŒ Đ·Đ½Đ¾Đ²Ñƒ.",
34 "menu.app.about" : "ĐŸÑ€Đ¾ Franz", 46 "menu.app.about" : "ĐŸÑ€Đ¾ Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "ĐŸÑ€Đ¸Ñ…Đ¾Đ²Đ°Ñ‚Đ¸", 48 "menu.app.hide" : "ĐŸÑ€Đ¸Ñ…Đ¾Đ²Đ°Ñ‚Đ¸",
36 "menu.app.hideOthers" : "ĐŸÑ€Đ¸Ñ…Đ¾Đ²Đ°Ñ‚Đ¸ Ñ–Đ½ÑˆÑ–", 49 "menu.app.hideOthers" : "ĐŸÑ€Đ¸Ñ…Đ¾Đ²Đ°Ñ‚Đ¸ Ñ–Đ½ÑˆÑ–",
37 "menu.app.quit" : "Đ’Đ¸Đ¹Ñ‚Đ¸", 50 "menu.app.quit" : "Đ’Đ¸Đ¹Ñ‚Đ¸",
@@ -59,7 +72,9 @@
59 "menu.help.support" : "ĐŸÑ–Đ´Ñ‚Ñ€Đ¸Đ¼ĐºĐ°", 72 "menu.help.support" : "ĐŸÑ–Đ´Ñ‚Ñ€Đ¸Đ¼ĐºĐ°",
60 "menu.help.tos" : "Đ£Đ¼Đ¾Đ²Đ¸ Đ²Đ¸ĐºĐ¾Ñ€Đ¸ÑÑ‚Đ°Đ½Đ½Ñ", 73 "menu.help.tos" : "Đ£Đ¼Đ¾Đ²Đ¸ Đ²Đ¸ĐºĐ¾Ñ€Đ¸ÑÑ‚Đ°Đ½Đ½Ñ",
61 "menu.services" : "Đ¡Đ»ÑƒĐ¶Đ±Đ¸", 74 "menu.services" : "Đ¡Đ»ÑƒĐ¶Đ±Đ¸",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "Đ”Đ¾Đ´Đ°Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ", 76 "menu.services.addNewService" : "Đ”Đ¾Đ´Đ°Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "Đ’Đ¸Đ³Đ»ÑĐ´", 78 "menu.view" : "Đ’Đ¸Đ³Đ»ÑĐ´",
64 "menu.view.enterFullScreen" : "Đ’Ñ–ĐºĐ½Đ¾ Đ½Đ° Đ¿Đ¾Đ²Đ½Đ¸Đ¹ ĐµĐºÑ€Đ°Đ½", 79 "menu.view.enterFullScreen" : "Đ’Ñ–ĐºĐ½Đ¾ Đ½Đ° Đ¿Đ¾Đ²Đ½Đ¸Đ¹ ĐµĐºÑ€Đ°Đ½",
65 "menu.view.exitFullScreen" : "Đ’Đ¸Đ¹Ñ‚Đ¸ Đ· Đ¿Đ¾Đ²Đ½Đ¾Đ³Đ¾ ĐµĐºÑ€Đ°Đ½Ñƒ", 80 "menu.view.exitFullScreen" : "Đ’Đ¸Đ¹Ñ‚Đ¸ Đ· Đ¿Đ¾Đ²Đ½Đ¾Đ³Đ¾ ĐµĐºÑ€Đ°Đ½Ñƒ",
@@ -74,6 +89,11 @@
74 "menu.window" : "Đ’Ñ–ĐºĐ½Đ¾", 89 "menu.window" : "Đ’Ñ–ĐºĐ½Đ¾",
75 "menu.window.close" : "Đ—Đ°ĐºÑ€Đ¸Ñ‚Đ¸", 90 "menu.window.close" : "Đ—Đ°ĐºÑ€Đ¸Ñ‚Đ¸",
76 "menu.window.minimize" : "Đ—Đ³Đ¾Ñ€Đ½ÑƒÑ‚Đ¸", 91 "menu.window.minimize" : "Đ—Đ³Đ¾Ñ€Đ½ÑƒÑ‚Đ¸",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "Đ’ÑÑ– ÑĐµÑ€Đ²Ñ–Ñи",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "Email Đ°Đ´Ñ€ĐµÑĐ°", 97 "password.email.label" : "Email Đ°Đ´Ñ€ĐµÑĐ°",
78 "password.headline" : "Đ¡ĐºĐ¸Đ½ÑƒÑ‚Đ¸ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ", 98 "password.headline" : "Đ¡ĐºĐ¸Đ½ÑƒÑ‚Đ¸ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ",
79 "password.link.login" : "Đ£Đ²Ñ–Đ¹Ñ‚Đ¸ Đ´Đ¾ Đ²Đ°ÑˆĐ¾Đ³Đ¾ Đ°ĐºĐ°ÑƒĐ½Ñ‚Ñƒ", 99 "password.link.login" : "Đ£Đ²Ñ–Đ¹Ñ‚Đ¸ Đ´Đ¾ Đ²Đ°ÑˆĐ¾Đ³Đ¾ Đ°ĐºĐ°ÑƒĐ½Ñ‚Ñƒ",
@@ -81,7 +101,7 @@
81 "password.noUser" : "Đе Đ·Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ¶Đ¾Đ´Đ½Đ¾Đ³Đ¾ ĐºĐ¾Ñ€Đ¸ÑÑ‚ÑƒĐ²Đ°Ñ‡Đ° Đ· Ñ†Ñ–Ñ”Ñ email Đ°Đ´Ñ€ĐµÑĐ¾Ñ", 101 "password.noUser" : "Đе Đ·Đ½Đ°Đ¹Đ´ĐµĐ½Đ¾ Đ¶Đ¾Đ´Đ½Đ¾Đ³Đ¾ ĐºĐ¾Ñ€Đ¸ÑÑ‚ÑƒĐ²Đ°Ñ‡Đ° Đ· Ñ†Ñ–Ñ”Ñ email Đ°Đ´Ñ€ĐµÑĐ¾Ñ",
82 "password.submit.label" : "ĐŸĐ¾Đ´Đ°Ñ‚Đ¸", 102 "password.submit.label" : "ĐŸĐ¾Đ´Đ°Ñ‚Đ¸",
83 "password.successInfo" : "Đ‘ÑƒĐ´ÑŒ лаÑĐºĐ°, Đ¿ĐµÑ€ĐµĐ²Ñ–Ñ€Ñ‚Đµ Đ²Đ°Ñˆ email", 103 "password.successInfo" : "Đ‘ÑƒĐ´ÑŒ лаÑĐºĐ°, Đ¿ĐµÑ€ĐµĐ²Ñ–Ñ€Ñ‚Đµ Đ²Đ°Ñˆ email",
84 "premiumFeature.button.upgradeAccount" : "Upgrade account", 104 "premiumFeature.button.upgradeAccount" : "ĐŸÑ€ĐµĐ¼Ñ–ÑƒĐ¼ Đ°ĐºĐ°ÑƒĐ½Ñ‚",
85 "pricing.headline" : "ĐŸÑ–Đ´Ñ‚Ñ€Đ¸Đ¼Đ°Đ¹Ñ‚Đµ Franz", 105 "pricing.headline" : "ĐŸÑ–Đ´Ñ‚Ñ€Đ¸Đ¼Đ°Đ¹Ñ‚Đµ Franz",
86 "pricing.link.skipPayment" : "Đ¯ Đ½Đµ Ñ…Đ¾Ñ‡Ñƒ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼ÑƒĐ²Đ°Ñ‚Đ¸ Ñ€Đ¾Đ·Ñ€Đ¾Đ±ĐºÑƒ Franz.", 106 "pricing.link.skipPayment" : "Đ¯ Đ½Đµ Ñ…Đ¾Ñ‡Ñƒ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼ÑƒĐ²Đ°Ñ‚Đ¸ Ñ€Đ¾Đ·Ñ€Đ¾Đ±ĐºÑƒ Franz.",
87 "pricing.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼Đ°Ñ‚Đ¸ Ñ€Đ¾Đ·Ñ€Đ¾Đ±ĐºÑƒ Franz", 107 "pricing.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼Đ°Ñ‚Đ¸ Ñ€Đ¾Đ·Ñ€Đ¾Đ±ĐºÑƒ Franz",
@@ -96,7 +116,8 @@
96 "service.errorHandler.editAction" : "Đ ĐµĐ´Đ°Đ³ÑƒĐ²Đ°Ñ‚Đ¸ {name}", 116 "service.errorHandler.editAction" : "Đ ĐµĐ´Đ°Đ³ÑƒĐ²Đ°Ñ‚Đ¸ {name}",
97 "service.errorHandler.headline" : "Đ, Đ½Ñ–!", 117 "service.errorHandler.headline" : "Đ, Đ½Ñ–!",
98 "service.errorHandler.message" : "ĐŸĐ¾Đ¼Đ¸Đ»ĐºĐ°", 118 "service.errorHandler.message" : "ĐŸĐ¾Đ¼Đ¸Đ»ĐºĐ°",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} Đ½Đµ Đ·Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶ĐµĐ½Đ¾",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "ĐŸĐ¾Ñ‡Đ°Ñ‚Đ¸", 121 "services.getStarted" : "ĐŸĐ¾Ñ‡Đ°Ñ‚Đ¸",
101 "services.welcome" : "ЛаÑĐºĐ°Đ²Đ¾ Đ¿Ñ€Đ¾ÑĐ¸Đ¼Đ¾ Đ² Franz", 122 "services.welcome" : "ЛаÑĐºĐ°Đ²Đ¾ Đ¿Ñ€Đ¾ÑĐ¸Đ¼Đ¾ Đ² Franz",
102 "settings.account.account.editButton" : "Đ ĐµĐ´Đ°Đ³ÑƒĐ²Đ°Ñ‚Đ¸ Đ°ĐºĐ°ÑƒĐ½Ñ‚", 123 "settings.account.account.editButton" : "Đ ĐµĐ´Đ°Đ³ÑƒĐ²Đ°Ñ‚Đ¸ Đ°ĐºĐ°ÑƒĐ½Ñ‚",
@@ -117,6 +138,7 @@
117 "settings.account.invoiceDownload" : "Đ—Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸", 138 "settings.account.invoiceDownload" : "Đ—Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸",
118 "settings.account.manageSubscription.label" : "ĐĐµÑ€ÑƒĐ²Đ°Đ½Đ½Ñ Đ²Đ°ÑˆĐ¾Ñ Đ¿Ñ–Đ´Đ¿Đ¸ÑĐºĐ¾Ñ", 139 "settings.account.manageSubscription.label" : "ĐĐµÑ€ÑƒĐ²Đ°Đ½Đ½Ñ Đ²Đ°ÑˆĐ¾Ñ Đ¿Ñ–Đ´Đ¿Đ¸ÑĐºĐ¾Ñ",
119 "settings.account.successInfo" : "Đ’Đ°ÑˆÑ– Đ·Đ¼Ñ–Đ½Đ¸ Đ±ÑƒĐ»Đ¸ Đ·Đ±ĐµÑ€ĐµĐ¶ĐµĐ½Ñ–", 140 "settings.account.successInfo" : "Đ’Đ°ÑˆÑ– Đ·Đ¼Ñ–Đ½Đ¸ Đ±ÑƒĐ»Đ¸ Đ·Đ±ĐµÑ€ĐµĐ¶ĐµĐ½Ñ–",
141 "settings.account.tryReloadServices" : "Đ¡Đ¿Ñ€Đ¾Đ±ÑƒĐ¹Ñ‚Đµ Ñ‰Đµ Ñ€Đ°Đ·",
120 "settings.account.tryReloadUserInfoRequest" : "Đ¡Đ¿Ñ€Đ¾Đ±ÑƒĐ¹Ñ‚Đµ Ñ‰Đµ Ñ€Đ°Đ·", 142 "settings.account.tryReloadUserInfoRequest" : "Đ¡Đ¿Ñ€Đ¾Đ±ÑƒĐ¹Ñ‚Đµ Ñ‰Đµ Ñ€Đ°Đ·",
121 "settings.account.userInfoRequestFailed" : "Đе Đ²Đ´Đ°Đ»Đ¾ÑÑ Đ·Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸ Ñ–Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Ñ–Ñ ĐºĐ¾Ñ€Đ¸ÑÑ‚ÑƒĐ²Đ°Ñ‡Đ°", 143 "settings.account.userInfoRequestFailed" : "Đе Đ²Đ´Đ°Đ»Đ¾ÑÑ Đ·Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸ Ñ–Đ½Ñ„Đ¾Ñ€Đ¼Đ°Ñ†Ñ–Ñ ĐºĐ¾Ñ€Đ¸ÑÑ‚ÑƒĐ²Đ°Ñ‡Đ°",
122 "settings.app.buttonClearAllCache" : "ĐÑ‡Đ¸ÑÑ‚Đ¸Ñ‚Đ¸ ĐºĐµÑˆ", 144 "settings.app.buttonClearAllCache" : "ĐÑ‡Đ¸ÑÑ‚Đ¸Ñ‚Đ¸ ĐºĐµÑˆ",
@@ -127,24 +149,22 @@
127 "settings.app.form.autoLaunchInBackground" : "Đ’Ñ–Đ´ĐºÑ€Đ¸Ñ‚Đ¸ у Ñ„Đ¾Đ½Đ¾Đ²Đ¾Đ¼Ñƒ Ñ€ĐµĐ¶Đ¸Đ¼Ñ–", 149 "settings.app.form.autoLaunchInBackground" : "Đ’Ñ–Đ´ĐºÑ€Đ¸Ñ‚Đ¸ у Ñ„Đ¾Đ½Đ¾Đ²Đ¾Đ¼Ñƒ Ñ€ĐµĐ¶Đ¸Đ¼Ñ–",
128 "settings.app.form.autoLaunchOnStart" : "Đ—Đ°Đ¿ÑƒÑĐºĐ°Ñ‚Đ¸ Franz Đ½Đ° Đ¿Đ¾Ñ‡Đ°Ñ‚ĐºÑƒ", 150 "settings.app.form.autoLaunchOnStart" : "Đ—Đ°Đ¿ÑƒÑĐºĐ°Ñ‚Đ¸ Franz Đ½Đ° Đ¿Đ¾Ñ‡Đ°Ñ‚ĐºÑƒ",
129 "settings.app.form.beta" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚Đ¸ Đ±ĐµÑ‚Đ°-Đ²ĐµÑ€ÑÑ–Ñ—", 151 "settings.app.form.beta" : "Đ’ĐºĐ»ÑÑ‡Đ¸Ñ‚Đ¸ Đ±ĐµÑ‚Đ°-Đ²ĐµÑ€ÑÑ–Ñ—",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "ĐŸĐµÑ€ĐµÑ…Đ¾Đ´ÑŒ Đ½Đ° Đ¢ĐµĐ¼Đ½Ñƒ Đ¡Ñ‚Đ¾Ñ€Đ¾Đ½Ñƒ",
131 "settings.app.form.enableGPUAcceleration" : "Đ’Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ Đ¿Ñ€Đ¸ÑĐºĐ¾Ñ€ĐµĐ½Đ½Ñ GPU", 153 "settings.app.form.enableGPUAcceleration" : "Đ’Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ Đ¿Ñ€Đ¸ÑĐºĐ¾Ñ€ĐµĐ½Đ½Ñ GPU",
132 "settings.app.form.enableMenuBar" : "Đ’Ñ–Đ´Đ¾Đ±Ñ€Đ°Đ¶Đ°Ñ‚Đ¸ Franz Đ² Đ¿Đ°Đ½ĐµĐ»Ñ– Đ³Đ¾Đ»Đ¾Đ²Đ½Đ¾Đ³Đ¾ Đ¼ĐµĐ½Ñ",
133 "settings.app.form.enableSpellchecking" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ Đ¿ĐµÑ€ĐµĐ²Ñ–Ñ€ĐºÑƒ Đ¾Ñ€Ñ„Đ¾Đ³Ñ€Đ°Ñ„Ñ–Ñ—", 154 "settings.app.form.enableSpellchecking" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ Đ¿ĐµÑ€ĐµĐ²Ñ–Ñ€ĐºÑƒ Đ¾Ñ€Ñ„Đ¾Đ³Ñ€Đ°Ñ„Ñ–Ñ—",
134 "settings.app.form.enableSystemTray" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Franz у ÑиÑÑ‚ĐµĐ¼Đ½Đ¾Đ¼Ñƒ Đ»Đ¾Ñ‚ĐºÑƒ", 155 "settings.app.form.enableSystemTray" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Franz у ÑиÑÑ‚ĐµĐ¼Đ½Đ¾Đ¼Ñƒ Đ»Đ¾Ñ‚ĐºÑƒ",
135 "settings.app.form.hideDockIcon" : "Đ¡Ñ…Đ¾Đ²Đ°Ñ‚Đ¸ Đ·Đ½Đ°Ñ‡Đ¾Đº Franz Đ² Dock",
136 "settings.app.form.language" : "ĐœĐ¾Đ²Đ°", 156 "settings.app.form.language" : "ĐœĐ¾Đ²Đ°",
137 "settings.app.form.minimizeToSystemTray" : "ĐœÑ–Đ½Ñ–Đ¼Ñ–Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Franz Đ´Đ¾ ÑиÑÑ‚ĐµĐ¼Đ½Đ¾Đ³Đ¾ Đ»Đ¾Ñ‚ĐºĐ°", 157 "settings.app.form.minimizeToSystemTray" : "ĐœÑ–Đ½Ñ–Đ¼Ñ–Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Franz Đ´Đ¾ ÑиÑÑ‚ĐµĐ¼Đ½Đ¾Đ³Đ¾ Đ»Đ¾Ñ‚ĐºĐ°",
138 "settings.app.form.runInBackground" : "Đ¢Ñ€Đ¸Đ¼Đ°Ñ‚Đ¸ Franz Đ² Ñ„Đ¾Đ½Ñ– Đ¿Ñ€Đ¸ Đ·Đ°ĐºÑ€Đ¸Ñ‚Ñ‚Ñ– Đ²Ñ–ĐºĐ½Đ°", 158 "settings.app.form.runInBackground" : "Đ¢Ñ€Đ¸Đ¼Đ°Ñ‚Đ¸ Franz Đ² Ñ„Đ¾Đ½Ñ– Đ¿Ñ€Đ¸ Đ·Đ°ĐºÑ€Đ¸Ñ‚Ñ‚Ñ– Đ²Ñ–ĐºĐ½Đ°",
139 "settings.app.form.showDisabledServices" : "ĐŸĐ¾ĐºĐ°Đ·Đ°Ñ‚Đ¸ Đ²ĐºĐ»Đ°Đ´ĐºÑƒ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Đ¸Ñ… ÑĐµÑ€Đ²Ñ–ÑÑ–Đ²", 159 "settings.app.form.showDisabledServices" : "ĐŸĐ¾ĐºĐ°Đ·Đ°Ñ‚Đ¸ Đ²ĐºĐ»Đ°Đ´ĐºÑƒ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Đ¸Ñ… ÑĐµÑ€Đ²Ñ–ÑÑ–Đ²",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Đ·Đ½Đ°Ñ‡Đ¾Đº Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ¸Ñ… Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ ĐºĐ¾Đ»Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Ñ–", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Đ·Đ½Đ°Ñ‡Đ¾Đº Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ¸Ñ… Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ ĐºĐ¾Đ»Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Ñ–",
141 "settings.app.form.spellcheckerLanguage" : "Spell checking language",
142 "settings.app.headline" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ", 161 "settings.app.headline" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ",
143 "settings.app.headlineAdvanced" : "Đ”Đ¾Đ´Đ°Ñ‚ĐºĐ¾Đ²Ñ– Đ½Đ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ", 162 "settings.app.headlineAdvanced" : "Đ”Đ¾Đ´Đ°Ñ‚ĐºĐ¾Đ²Ñ– Đ½Đ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ",
144 "settings.app.headlineAppearance" : "Đ’Đ¸Đ³Đ»ÑĐ´", 163 "settings.app.headlineAppearance" : "Đ’Đ¸Đ³Đ»ÑĐ´",
145 "settings.app.headlineGeneral" : "Đ—Đ°Đ³Đ°Đ»ÑŒĐ½Ñ–", 164 "settings.app.headlineGeneral" : "Đ—Đ°Đ³Đ°Đ»ÑŒĐ½Ñ–",
146 "settings.app.headlineLanguage" : "ĐœĐ¾Đ²Đ°", 165 "settings.app.headlineLanguage" : "ĐœĐ¾Đ²Đ°",
147 "settings.app.headlineUpdates" : "ĐĐ½Đ¾Đ²Đ»ĐµĐ½Đ½Ñ", 166 "settings.app.headlineUpdates" : "ĐĐ½Đ¾Đ²Đ»ĐµĐ½Đ½Ñ",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "Đ—Đ¼Ñ–Đ½Đ¸ Đ¿Đ¾Ñ‚Ñ€ĐµĐ±ÑƒÑÑ‚ÑŒ Đ¿ĐµÑ€ĐµĐ·Đ°Đ¿ÑƒÑĐºÑƒ", 168 "settings.app.restartRequired" : "Đ—Đ¼Ñ–Đ½Đ¸ Đ¿Đ¾Ñ‚Ñ€ĐµĐ±ÑƒÑÑ‚ÑŒ Đ¿ĐµÑ€ĐµĐ·Đ°Đ¿ÑƒÑĐºÑƒ",
149 "settings.app.subheadlineCache" : "ĐĐµÑˆ", 169 "settings.app.subheadlineCache" : "ĐĐµÑˆ",
150 "settings.app.translationHelp" : "Đ”Đ¾Đ¿Đ¾Đ¼Đ¾Đ¶Ñ–Ñ‚ÑŒ Đ¿ĐµÑ€ĐµĐºĐ»Đ°ÑÑ‚Đ¸ Franz Đ½Đ° Đ’Đ°ÑˆÑƒ Đ¼Đ¾Đ²Ñƒ.", 170 "settings.app.translationHelp" : "Đ”Đ¾Đ¿Đ¾Đ¼Đ¾Đ¶Ñ–Ñ‚ÑŒ Đ¿ĐµÑ€ĐµĐºĐ»Đ°ÑÑ‚Đ¸ Franz Đ½Đ° Đ’Đ°ÑˆÑƒ Đ¼Đ¾Đ²Ñƒ.",
@@ -157,7 +177,9 @@
157 "settings.navigation.inviteFriends" : "Đ—Đ°Đ¿Ñ€Đ¾ÑĐ¸Ñ‚Đ¸ Đ´Ñ€ÑƒĐ·Ñ–Đ²", 177 "settings.navigation.inviteFriends" : "Đ—Đ°Đ¿Ñ€Đ¾ÑĐ¸Ñ‚Đ¸ Đ´Ñ€ÑƒĐ·Ñ–Đ²",
158 "settings.navigation.logout" : "Đ’Đ¸Đ¹Ñ‚Đ¸", 178 "settings.navigation.logout" : "Đ’Đ¸Đ¹Ñ‚Đ¸",
159 "settings.navigation.settings" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ", 179 "settings.navigation.settings" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "Đ’Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи", 181 "settings.navigation.yourServices" : "Đ’Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "Đ’ÑÑ– ÑĐµÑ€Đ²Ñ–Ñи", 183 "settings.recipes.all" : "Đ’ÑÑ– ÑĐµÑ€Đ²Ñ–Ñи",
162 "settings.recipes.dev" : "Đ Đ¾Đ·Ñ€Đ¾Đ±ĐºĐ°", 184 "settings.recipes.dev" : "Đ Đ¾Đ·Ñ€Đ¾Đ±ĐºĐ°",
163 "settings.recipes.headline" : "Đ”Đ¾ÑÑ‚ÑƒĐ¿Đ½Ñ– ÑĐµÑ€Đ²Ñ–Ñи", 185 "settings.recipes.headline" : "Đ”Đ¾ÑÑ‚ÑƒĐ¿Đ½Ñ– ÑĐµÑ€Đ²Ñ–Ñи",
@@ -179,7 +201,7 @@
179 "settings.service.form.editServiceHeadline" : "Đ ĐµĐ´Đ°Đ³ÑƒĐ²Đ°Ñ‚Đ¸ {name}", 201 "settings.service.form.editServiceHeadline" : "Đ ĐµĐ´Đ°Đ³ÑƒĐ²Đ°Ñ‚Đ¸ {name}",
180 "settings.service.form.enableAudio" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ Đ·Đ²ÑƒĐº", 202 "settings.service.form.enableAudio" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ Đ·Đ²ÑƒĐº",
181 "settings.service.form.enableBadge" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Ñ– Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½Đ½Ñ", 203 "settings.service.form.enableBadge" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Ñ– Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½Đ½Ñ",
182 "settings.service.form.enableDarkMode" : "Enable Dark Mode", 204 "settings.service.form.enableDarkMode" : "ĐŸĐµÑ€ĐµÑ…Đ¾Đ´ÑŒ Đ½Đ° Đ¢ĐµĐ¼Đ½Ñƒ Đ¡Ñ‚Đ¾Ñ€Đ¾Đ½Ñƒ",
183 "settings.service.form.enableNotification" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ", 205 "settings.service.form.enableNotification" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ",
184 "settings.service.form.enableService" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ", 206 "settings.service.form.enableService" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ",
185 "settings.service.form.headlineBadges" : "Đ—Đ½Đ°Ñ‡ĐºĐ¸ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ¸Ñ… Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ", 207 "settings.service.form.headlineBadges" : "Đ—Đ½Đ°Ñ‡ĐºĐ¸ Đ½ĐµĐ¿Ñ€Đ¾Ñ‡Đ¸Ñ‚Đ°Đ½Đ¸Ñ… Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Đ·Đ½Đ°Ñ‡Đ¾Đº Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½Đ½Ñ Đ´Đ»Ñ Đ²ÑÑ–Ñ… Đ½Đ¾Đ²Đ¸Ñ… Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ", 214 "settings.service.form.indirectMessages" : "ĐŸĐ¾ĐºĐ°Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Đ·Đ½Đ°Ñ‡Đ¾Đº Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½Đ½Ñ Đ´Đ»Ñ Đ²ÑÑ–Ñ… Đ½Đ¾Đ²Đ¸Ñ… Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½ÑŒ",
193 "settings.service.form.isMutedInfo" : "ĐĐ¾Đ»Đ¸ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Đ¾, Đ²ÑÑ– ÑĐ¿Đ¾Đ²Đ¸Ñ‰ĐµĐ½Đ½Ñ Ñ‚Đ° Đ²Ñ–Đ´Ñ‚Đ²Đ¾Ñ€ĐµĐ½Đ½Ñ Ñ–Đ³Đ½Đ¾Ñ€ÑƒÑÑ‚ÑŒÑÑ", 215 "settings.service.form.isMutedInfo" : "ĐĐ¾Đ»Đ¸ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Đ¾, Đ²ÑÑ– ÑĐ¿Đ¾Đ²Đ¸Ñ‰ĐµĐ½Đ½Ñ Ñ‚Đ° Đ²Ñ–Đ´Ñ‚Đ²Đ¾Ñ€ĐµĐ½Đ½Ñ Ñ–Đ³Đ½Đ¾Ñ€ÑƒÑÑ‚ÑŒÑÑ",
194 "settings.service.form.name" : "Đ†Đ¼'Ñ", 216 "settings.service.form.name" : "Đ†Đ¼'Ñ",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ HTTP\/HTTPS Đ¿Ñ€Đ¾ĐºÑÑ– ",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "ĐŸÑ€Đ¾ĐºÑÑ– Host\/IP",
197 "settings.service.form.proxy.info" : "Proxy settings will not synced with the Franz servers.", 219 "settings.service.form.proxy.info" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ Đ¿Ñ€Đ¾ĐºÑÑ– Đ½Đµ Đ±ÑƒĐ´ÑƒÑ‚ÑŒ ÑĐ¸Đ½Ñ…Ñ€Đ¾Đ½Ñ–Đ·Đ¾Đ²Đ°Đ½Ñ– Ñ–Đ· ÑĐµÑ€Đ²ĐµÑ€Đ°Đ¼Đ¸ Franz",
198 "settings.service.form.proxy.isEnabled" : "Use Proxy", 220 "settings.service.form.proxy.isEnabled" : "Đ’Đ¸ĐºĐ¾Ñ€Đ¸ÑÑ‚Đ¾Đ²ÑƒĐ²Đ°Ñ‚Đ¸ Đ¿Ñ€Đ¾ĐºÑÑ–",
199 "settings.service.form.proxy.password" : "Password (optional)", 221 "settings.service.form.proxy.password" : "ĐŸĐ°Ñ€Đ¾Đ»ÑŒ (Đ¾Đ¿Ñ†Ñ–Đ¹Đ½Đ¾)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "ĐŸĐ¾Ñ€Ñ‚",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "Đ‘ÑƒĐ´ÑŒ лаÑĐºĐ°, Đ¿ĐµÑ€ĐµĐ·Đ°Đ¿ÑƒÑÑ‚Ñ–Ñ‚ÑŒ Franz Đ¿Ñ–ÑĐ»Ñ Đ·Đ¼Ñ–Đ½Đ¸ Đ½Đ°Đ»ÑƒÑˆÑ‚ÑƒĐ²Đ°Đ½ÑŒ Đ¿Ñ€Đ¾ĐºÑÑ–",
202 "settings.service.form.proxy.user" : "User (optional)", 224 "settings.service.form.proxy.user" : "ĐĐ¾Ñ€Đ¸ÑÑ‚ÑƒĐ²Đ°Ñ‡ (Đ¾Đ¿Ñ†Ñ–Đ¹Đ½Đ¾)",
203 "settings.service.form.saveButton" : "Đ—Đ±ĐµÑ€ĐµĐ³Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ", 225 "settings.service.form.saveButton" : "Đ—Đ±ĐµÑ€ĐµĐ³Ñ‚Đ¸ ÑĐµÑ€Đ²Ñ–Ñ",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "Đ Đ¾Đ·Đ¼Ñ–Ñ‰ĐµĐ½Đ¸Đ¹", 226 "settings.service.form.tabHosted" : "Đ Đ¾Đ·Đ¼Ñ–Ñ‰ĐµĐ½Đ¸Đ¹",
207 "settings.service.form.tabOnPremise" : "Đ¡Đ°Đ¼Đ¾ÑÑ‚Ñ–Đ¹Đ½Đ¾ Ñ€Đ¾Đ·Đ¼Ñ–Ñ‰ĐµĐ½Đ¸Đ¹ â­ï¸", 227 "settings.service.form.tabOnPremise" : "Đ¡Đ°Đ¼Đ¾ÑÑ‚Ñ–Đ¹Đ½Đ¾ Ñ€Đ¾Đ·Đ¼Ñ–Ñ‰ĐµĐ½Đ¸Đ¹ â­ï¸",
208 "settings.service.form.team" : "ĐĐ¾Đ¼Đ°Đ½Đ´Đ°", 228 "settings.service.form.team" : "ĐĐ¾Đ¼Đ°Đ½Đ´Đ°",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "Đ’Ñ–Đ´ĐºÑ€Đ¸Đ¹Ñ‚Đµ Đ´Đ»Ñ Ñебе ÑĐµÑ€Đ²Ñ–Ñи", 232 "settings.services.discoverServices" : "Đ’Ñ–Đ´ĐºÑ€Đ¸Đ¹Ñ‚Đµ Đ´Đ»Ñ Ñебе ÑĐµÑ€Đ²Ñ–Ñи",
213 "settings.services.headline" : "Đ’Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи", 233 "settings.services.headline" : "Đ’Đ°ÑˆÑ– ÑĐµÑ€Đ²Ñ–Ñи",
214 "settings.services.noServicesAdded" : "Ви Ñ‰Đµ Đ½Đµ Đ´Đ¾Đ´Đ°Đ²Đ°Đ»Đ¸ Đ¶Đ¾Đ´Đ½Đ¸Ñ… ÑĐµÑ€Đ²Ñ–ÑÑ–Đ².", 234 "settings.services.noServicesAdded" : "Ви Ñ‰Đµ Đ½Đµ Đ´Đ¾Đ´Đ°Đ²Đ°Đ»Đ¸ Đ¶Đ¾Đ´Đ½Đ¸Ñ… ÑĐµÑ€Đ²Ñ–ÑÑ–Đ².",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "Đ¡ĐµÑ€Đ²Ñ–Ñ Đ²Ñ–Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đ¹", 236 "settings.services.tooltip.isDisabled" : "Đ¡ĐµÑ€Đ²Ñ–Ñ Đ²Ñ–Đ´ĐºĐ»ÑÑ‡ĐµĐ½Đ¸Đ¹",
216 "settings.services.tooltip.isMuted" : "Đ’ÑÑ– Đ·Đ²ÑƒĐºĐ¸ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Đ¾", 237 "settings.services.tooltip.isMuted" : "Đ’ÑÑ– Đ·Đ²ÑƒĐºĐ¸ Đ²Đ¸Đ¼ĐºĐ½ĐµĐ½Đ¾",
217 "settings.services.tooltip.notificationsDisabled" : "Đ¡Đ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Đ²Ñ–Đ´ĐºĐ»ÑÑ‡ĐµĐ½Ñ–", 238 "settings.services.tooltip.notificationsDisabled" : "Đ¡Đ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Đ²Ñ–Đ´ĐºĐ»ÑÑ‡ĐµĐ½Ñ–",
218 "settings.services.updatedInfo" : "Đ’Đ°ÑˆÑ– Đ·Đ¼Ñ–Đ½Đ¸ Đ±ÑƒĐ»Đ¸ Đ·Đ±ĐµÑ€ĐµĐ¶ĐµĐ½Ñ–", 239 "settings.services.updatedInfo" : "Đ’Đ°ÑˆÑ– Đ·Đ¼Ñ–Đ½Đ¸ Đ±ÑƒĐ»Đ¸ Đ·Đ±ĐµÑ€ĐµĐ¶ĐµĐ½Ñ–",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "ĐĐ¾Đ¼Đ°Đ½Đ´Đ°",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "ĐĐ¾Đ¼Đ¿Đ°Đ½Ñ–Ñ", 246 "settings.user.form.accountType.company" : "ĐĐ¾Đ¼Đ¿Đ°Đ½Ñ–Ñ",
220 "settings.user.form.accountType.individual" : "Đ†Đ½Đ´Đ¸Đ²Ñ–Đ´ÑƒĐ°Đ»ÑŒĐ½Đ¸Đ¹", 247 "settings.user.form.accountType.individual" : "Đ†Đ½Đ´Đ¸Đ²Ñ–Đ´ÑƒĐ°Đ»ÑŒĐ½Đ¸Đ¹",
221 "settings.user.form.accountType.label" : "Đ¢Đ¸Đ¿ Đ°ĐºĐ°ÑƒĐ½Ñ‚Ñƒ", 248 "settings.user.form.accountType.label" : "Đ¢Đ¸Đ¿ Đ°ĐºĐ°ÑƒĐ½Ñ‚Ñƒ",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "Đ†Đ¼`Ñ", 252 "settings.user.form.firstname" : "Đ†Đ¼`Ñ",
226 "settings.user.form.lastname" : "ĐŸÑ€Ñ–Đ·Đ²Đ¸Ñ‰Đµ", 253 "settings.user.form.lastname" : "ĐŸÑ€Ñ–Đ·Đ²Đ¸Ñ‰Đµ",
227 "settings.user.form.newPassword" : "ĐĐ¾Đ²Đ¸Đ¹ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ", 254 "settings.user.form.newPassword" : "ĐĐ¾Đ²Đ¸Đ¹ Đ¿Đ°Ñ€Đ¾Đ»ÑŒ",
255 "settings.workspace.add.form.name" : "Đ†Đ¼'Ñ",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "Đ†Đ¼'Ñ",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "Đ¡Đ¿Ñ€Đ¾Đ±ÑƒĐ¹Ñ‚Đµ Ñ‰Đµ Ñ€Đ°Đ·",
266 "settings.workspaces.updatedInfo" : "Đ’Đ°ÑˆÑ– Đ·Đ¼Ñ–Đ½Đ¸ Đ±ÑƒĐ»Đ¸ Đ·Đ±ĐµÑ€ĐµĐ¶ĐµĐ½Ñ–",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "Đ”Đ¾Đ´Đ°Ñ‚Đ¸ Đ½Đ¾Đ²Đ¸Đ¹ ÑĐµÑ€Đ²Ñ–Ñ", 270 "sidebar.addNewService" : "Đ”Đ¾Đ´Đ°Ñ‚Đ¸ Đ½Đ¾Đ²Đ¸Đ¹ ÑĐµÑ€Đ²Ñ–Ñ",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "Đ’Đ¸Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Ñ‚Đ° Đ·Đ²ÑƒĐºĐ¸", 272 "sidebar.muteApp" : "Đ’Đ¸Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Ñ‚Đ° Đ·Đ²ÑƒĐºĐ¸",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ", 274 "sidebar.settings" : "ĐĐ°Đ»Đ°ÑˆÑ‚ÑƒĐ²Đ°Đ½Đ½Ñ",
231 "sidebar.unmuteApp" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Ñ‚Đ° Đ·Đ²ÑƒĐºĐ¸", 275 "sidebar.unmuteApp" : "Đ£Đ²Ñ–Đ¼ĐºĐ½ÑƒÑ‚Đ¸ ÑĐ¿Đ¾Đ²Ñ–Ñ‰ĐµĐ½Đ½Ñ Ñ‚Đ° Đ·Đ²ÑƒĐºĐ¸",
232 "signup.company.label" : "ĐĐ¾Đ¼Đ¿Đ°Đ½Ñ–Ñ", 276 "signup.company.label" : "ĐĐ¾Đ¼Đ¿Đ°Đ½Ñ–Ñ",
@@ -244,12 +288,11 @@
244 "subscription.euTaxInfo" : "Đ”Đ»Ñ Đ¶Đ¸Ñ‚ĐµĐ»Ñ–Đ² Đ„Đ¡: Đ¼Đ¾Đ¶ÑƒÑ‚ÑŒ Đ·Đ°ÑÑ‚Đ¾ÑĐ¾Đ²ÑƒĐ²Đ°Ñ‚Đ¸ÑÑ Đ¿Đ¾Đ´Đ°Ñ‚ĐºĐ¸", 288 "subscription.euTaxInfo" : "Đ”Đ»Ñ Đ¶Đ¸Ñ‚ĐµĐ»Ñ–Đ² Đ„Đ¡: Đ¼Đ¾Đ¶ÑƒÑ‚ÑŒ Đ·Đ°ÑÑ‚Đ¾ÑĐ¾Đ²ÑƒĐ²Đ°Ñ‚Đ¸ÑÑ Đ¿Đ¾Đ´Đ°Ñ‚ĐºĐ¸",
245 "subscription.features.ads" : "Đ–Đ¾Đ´Đ½Đ¾Ñ— Ñ€ĐµĐºĐ»Đ°Đ¼Đ¸!", 289 "subscription.features.ads" : "Đ–Đ¾Đ´Đ½Đ¾Ñ— Ñ€ĐµĐºĐ»Đ°Đ¼Đ¸!",
246 "subscription.features.comingSoon" : "Đ¾Ñ‡Ñ–ĐºÑƒĐ¹Ñ‚Đµ Đ½ĐµĐ·Đ°Đ±Đ°Ñ€Đ¾Đ¼", 290 "subscription.features.comingSoon" : "Đ¾Ñ‡Ñ–ĐºÑƒĐ¹Ñ‚Đµ Đ½ĐµĐ·Đ°Đ±Đ°Ñ€Đ¾Đ¼",
247 "subscription.features.encryptedSync" : "Đ¨Đ¸Ñ„Ñ€Đ¾Đ²Đ°Đ½Đ° ÑĐ¸Đ½Ñ…Ñ€Đ¾Đ½Ñ–Đ·Đ°Ñ†Ñ–Ñ ÑĐµĐ°Đ½Ñу", 291 "subscription.features.noInterruptions" : "ĐÑ–ÑĐºĐ¸Ñ… Đ·Đ°Ñ‚Ñ€Đ¸Đ¼Đ¾Đº Ñ‚Đ° Đ½Đ°Đ±Ñ€Đ¸Đ´Đ»Đ¸Đ²Đ¸Ñ… Đ¿Ñ€Đ¾Đ¿Đ¾Đ·Đ¸Ñ†Ñ–Đ¹ Đ· Đ¿Đ»Đ°Ñ‚Đ½Đ¸Ñ… Đ¿Ñ–Đ´Đ¿Đ¸ÑĐ¾Đº",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "Đ¡ĐµÑ€Đ²Ñ–Ñи, Ñ‰Đ¾ Đ²Đ¸ĐºĐ¾Đ½ÑƒÑÑ‚ÑŒÑÑ Đ»Đ¾ĐºĐ°Đ»ÑŒĐ½Đ¾\/Đ²Đ¸Đ¼Đ°Đ³Đ°ÑÑ‚ÑŒ Ñ…Đ¾ÑÑ‚Đ¸Đ½Đ³Ñƒ, Đ¿Ñ€Đ¸Đ¼Ñ–Ñ€Đ¾Đ¼ Mattermost",
249 "subscription.features.onpremise" : "Đ”Đ¾Đ´Đ°Đ¹Ñ‚Đµ on-premise \/ hosted ÑĐµÑ€Đ²Ñ–Ñи, Ñ‚Đ°ĐºÑ– ÑĐº Hipchat", 293 "subscription.features.proxy" : "ĐŸÑ–Đ´Ñ‚Ñ€Đ¸Đ¼ĐºĐ° Đ¿Ñ€Đ¾ĐºÑÑ– ",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", 294 "subscription.features.spellchecker" : "ĐŸÑ–Đ´Ñ‚Ñ€Đ¸Đ¼ĐºĐ° Đ¿ĐµÑ€ĐµĐ²Ñ–Ñ€ĐºĐ¸ Đ¿Ñ€Đ°Đ²Đ¾Đ¿Đ¸Ñу",
251 "subscription.features.proxy" : "Proxy support for services", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
252 "subscription.features.spellchecker" : "Support for spellchecker",
253 "subscription.includedFeatures" : "ĐŸĐ»Đ°Ñ‚Đ½Đ¸Đ¹ ĐŸÑ€ĐµĐ¼Ñ–Đ°Đ»ÑŒĐ½Đ¸Đ¹ ĐĐºĐ°ÑƒĐ½Ñ‚ ĐŸÑ€Đ¸Ñ…Đ¸Đ»ÑŒĐ½Đ¸ĐºĐ° Franz Đ²ĐºĐ»ÑÑ‡Đ°Ñ”", 296 "subscription.includedFeatures" : "ĐŸĐ»Đ°Ñ‚Đ½Đ¸Đ¹ ĐŸÑ€ĐµĐ¼Ñ–Đ°Đ»ÑŒĐ½Đ¸Đ¹ ĐĐºĐ°ÑƒĐ½Ñ‚ ĐŸÑ€Đ¸Ñ…Đ¸Đ»ÑŒĐ½Đ¸ĐºĐ° Franz Đ²ĐºĐ»ÑÑ‡Đ°Ñ”",
254 "subscription.paymentSessionError" : "Đе Đ²Đ´Đ°Đ»Đ¾ÑÑ Ñ–Đ½Ñ–Ñ†Ñ–Đ°Đ»Ñ–Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Ñ„Đ¾Ñ€Đ¼Ñƒ Đ¿Đ»Đ°Ñ‚ĐµĐ¶Ñƒ", 297 "subscription.paymentSessionError" : "Đе Đ²Đ´Đ°Đ»Đ¾ÑÑ Ñ–Đ½Ñ–Ñ†Ñ–Đ°Đ»Ñ–Đ·ÑƒĐ²Đ°Ñ‚Đ¸ Ñ„Đ¾Ñ€Đ¼Ñƒ Đ¿Đ»Đ°Ñ‚ĐµĐ¶Ñƒ",
255 "subscription.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼Đ°Ñ‚Đ¸ Ñ€Đ¾Đ·Ñ€Đ¾Đ±ĐºÑƒ Franz", 298 "subscription.submit.label" : "Đ¯ Ñ…Đ¾Ñ‡Ñƒ Đ¿Ñ–Đ´Ñ‚Ñ€Đ¸Đ¼Đ°Ñ‚Đ¸ Ñ€Đ¾Đ·Ñ€Đ¾Đ±ĐºÑƒ Franz",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸", 312 "tabs.item.reload" : "ĐŸĐµÑ€ĐµĐ·Đ°Đ²Đ°Đ½Ñ‚Đ°Đ¶Đ¸Ñ‚Đ¸",
270 "validation.email" : "{field} Đ½Đµ Đ²Đ°Đ»Ñ–Đ´Đ½Đµ", 313 "validation.email" : "{field} Đ½Đµ Đ²Đ°Đ»Ñ–Đ´Đ½Đµ",
271 "validation.minLength" : "ĐÑ–Đ»ÑŒĐºÑ–ÑÑ‚ÑŒ ÑĐ¸Đ¼Đ²Đ¾Đ»Ñ–Đ² Đ² {field} Đ¿Đ¾Đ²Đ¸Đ½Đ° Đ±ÑƒÑ‚Đ¸ Đ½Đµ Đ¼ĐµĐ½ÑŒÑˆĐµ {length} ", 314 "validation.minLength" : "ĐÑ–Đ»ÑŒĐºÑ–ÑÑ‚ÑŒ ÑĐ¸Đ¼Đ²Đ¾Đ»Ñ–Đ² Đ² {field} Đ¿Đ¾Đ²Đ¸Đ½Đ° Đ±ÑƒÑ‚Đ¸ Đ½Đµ Đ¼ĐµĐ½ÑŒÑˆĐµ {length} ",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field} Đ¾Đ±Đ¾Đ²'ÑĐ·Đ²Đ¾ĐºĐµ", 316 "validation.required" : "{field} Đ¾Đ±Đ¾Đ²'ÑĐ·Đ²Đ¾ĐºĐµ",
273 "validation.url" : "{field} Đ½Đµ Đ²Đ°Đ»Ñ–Đ´Đ½Đ¸Đ¹ URL", 317 "validation.url" : "{field} Đ½Đµ Đ²Đ°Đ»Ñ–Đ´Đ½Đ¸Đ¹ URL",
274 "welcome.loginButton" : "Đ£Đ²Ñ–Đ¹Đ´Ñ–Ñ‚ÑŒ Đ´Đ¾ ÑĐ²Đ¾Đ³Đ¾ Đ°ĐºĐ°ÑƒĐ½Ñ‚Ñƒ", 318 "welcome.loginButton" : "Đ£Đ²Ñ–Đ¹Đ´Ñ–Ñ‚ÑŒ Đ´Đ¾ ÑĐ²Đ¾Đ³Đ¾ Đ°ĐºĐ°ÑƒĐ½Ñ‚Ñƒ",
275 "welcome.signupButton" : "Đ¡Ñ‚Đ²Đ¾Ñ€Đ¸Ñ‚Đ¸ Đ±ĐµĐ·Đ¿Đ»Đ°Ñ‚Đ½Đ¸Đ¹ Đ°ĐºĐ°ÑƒĐ½Ñ‚", 319 "welcome.signupButton" : "Đ¡Ñ‚Đ²Đ¾Ñ€Đ¸Ñ‚Đ¸ Đ±ĐµĐ·Đ¿Đ»Đ°Ñ‚Đ½Đ¸Đ¹ Đ°ĐºĐ°ÑƒĐ½Ñ‚",
276 "welcome.slogan" : "ĐĐ±Đ¼Ñ–Đ½ Đ¿Đ¾Đ²Ñ–Đ´Đ¾Đ¼Đ»ĐµĐ½Đ½ÑĐ¼Đ¸, ÑĐºĐ¸Đ¹ Đ¿Ñ€Đ°Ñ†ÑÑ” Đ´Đ»Ñ Đ²Đ°Ñ" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "Đ’ÑÑ– ÑĐµÑ€Đ²Ñ–Ñи",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/locales/whitelist_en-US.json b/src/i18n/locales/whitelist_en-US.json
new file mode 100644
index 000000000..32960f8ce
--- /dev/null
+++ b/src/i18n/locales/whitelist_en-US.json
@@ -0,0 +1,2 @@
1[
2] \ No newline at end of file
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json
index cfb1d3dce..34bd2158c 100644
--- a/src/i18n/locales/zh-TW.json
+++ b/src/i18n/locales/zh-TW.json
@@ -1,11 +1,23 @@
1{ 1{
2 "app.errorHandler.action" : "é‡æ–°è¼‰å…¥", 2 "app.errorHandler.action" : "é‡æ–°è¼‰å…¥",
3 "app.errorHandler.headline" : "有些æ±è¥¿å‡ºéŒ¯äº†", 3 "app.errorHandler.headline" : "有些æ±è¥¿å‡ºéŒ¯äº†",
4 "feature.delayApp.action" : "Get a Franz Supporter License", 4 "feature.announcements.changelog.headline" : "Changes in Franz {version}",
5 "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", 5 "feature.delayApp.action" : "å–å¾— Franz 支æ´æˆæ¬",
6 "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", 6 "feature.delayApp.headline" : "請購買 Franz 支æ´æˆæ¬ä»¥è·³é等候",
7 "global.api.unhealthy" : "無法連ç·è‡³Franzç„伺æœå™¨ă€‚", 7 "feature.delayApp.text" : "Franz 會在 {seconds} ç§’å¾Œç¹¼çºŒă€‚",
8 "feature.shareFranz.action.email" : "Send as email",
9 "feature.shareFranz.action.facebook" : "Share on Facebook",
10 "feature.shareFranz.action.twitter" : "Share on Twitter",
11 "feature.shareFranz.headline" : "Franz is better together!",
12 "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
13 "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger",
14 "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
15 "global.api.unhealthy" : "無法連ç·è‡³ Franz ç„伺æœå™¨",
8 "global.notConnectedToTheInternet" : "你沒有連ä¸ç¶²è·¯ă€‚", 16 "global.notConnectedToTheInternet" : "你沒有連ä¸ç¶²è·¯ă€‚",
17 "global.spellchecker.useDefault" : "使用系統é è¨­ ({default})",
18 "global.spellchecking.autodetect" : "Detect language automatically",
19 "global.spellchecking.autodetect.short" : "Automatic",
20 "global.spellchecking.language" : "拼字檢查èªè¨€",
9 "import.headline" : "匯入 Franz 4 ç„æœå‹™", 21 "import.headline" : "匯入 Franz 4 ç„æœå‹™",
10 "import.notSupportedHeadline" : "Franz 5 å°æœªæ”¯æ´æ­¤æœå‹™", 22 "import.notSupportedHeadline" : "Franz 5 å°æœªæ”¯æ´æ­¤æœå‹™",
11 "import.skip.label" : "手動添å æœå‹™", 23 "import.skip.label" : "手動添å æœå‹™",
@@ -14,10 +26,10 @@
14 "infobar.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", 26 "infobar.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°",
15 "infobar.buttonReloadServices" : "é‡æ–°è¼‰å…¥æœå‹™", 27 "infobar.buttonReloadServices" : "é‡æ–°è¼‰å…¥æœå‹™",
16 "infobar.requiredRequestsFailed" : "無法載入æœå‹™å’Œä½¿ç”¨è€…資è¨", 28 "infobar.requiredRequestsFailed" : "無法載入æœå‹™å’Œä½¿ç”¨è€…資è¨",
17 "infobar.servicesUpdated" : "ä½ ç„æœå‹™å·²ç¶“被更新", 29 "infobar.servicesUpdated" : "已經更新你ç„æœå‹™",
18 "infobar.updateAvailable" : "Franz有å¯ç”¨ç„æ›´æ–°", 30 "infobar.updateAvailable" : "Franz 有å¯ç”¨ç„æ›´æ–°",
19 "invite.email.label" : "é›»å­éƒµä»¶åœ°å€", 31 "invite.email.label" : "é›»å­éƒµä»¶åœ°å€",
20 "invite.headline.friends" : "邀請3ä½ä½ ç„朋å‹æˆ–åŒäº‹", 32 "invite.headline.friends" : "邀請 3 ä½æœ‹å‹æˆ–åŒäº‹",
21 "invite.name.label" : "å稱", 33 "invite.name.label" : "å稱",
22 "invite.skip.label" : "我想ç¨å¾Œå†å", 34 "invite.skip.label" : "我想ç¨å¾Œå†å",
23 "invite.submit.label" : "é€å‡ºé‚€è«‹", 35 "invite.submit.label" : "é€å‡ºé‚€è«‹",
@@ -31,7 +43,8 @@
31 "login.serverLogout" : "您ç„登入期間已é期,請é‡æ–°ç™»éŒ„", 43 "login.serverLogout" : "您ç„登入期間已é期,請é‡æ–°ç™»éŒ„",
32 "login.submit.label" : "登入", 44 "login.submit.label" : "登入",
33 "login.tokenExpired" : "您ç„登入已é期,請é‡æ–°ç™»å…¥ă€‚", 45 "login.tokenExpired" : "您ç„登入已é期,請é‡æ–°ç™»å…¥ă€‚",
34 "menu.app.about" : "關於Franz", 46 "menu.app.about" : "關於 Franz",
47 "menu.app.announcement" : "What's new?",
35 "menu.app.hide" : "é±è—", 48 "menu.app.hide" : "é±è—",
36 "menu.app.hideOthers" : "é±è—其他", 49 "menu.app.hideOthers" : "é±è—其他",
37 "menu.app.quit" : "çµæŸ", 50 "menu.app.quit" : "çµæŸ",
@@ -59,11 +72,13 @@
59 "menu.help.support" : "支æ´", 72 "menu.help.support" : "支æ´",
60 "menu.help.tos" : "æœå‹™æ¢æ¬¾", 73 "menu.help.tos" : "æœå‹™æ¢æ¬¾",
61 "menu.services" : "æœå‹™", 74 "menu.services" : "æœå‹™",
75 "menu.services.activatePreviousService" : "Activate previous service",
62 "menu.services.addNewService" : "æ–°å¢æœå‹™", 76 "menu.services.addNewService" : "æ–°å¢æœå‹™",
77 "menu.services.setNextServiceActive" : "Activate next service",
63 "menu.view" : "檢視", 78 "menu.view" : "檢視",
64 "menu.view.enterFullScreen" : "進入全è¢å¹•æ¨¡å¼", 79 "menu.view.enterFullScreen" : "進入全è¢å¹•æ¨¡å¼",
65 "menu.view.exitFullScreen" : "離開全è¢å¹•æ¨¡å¼", 80 "menu.view.exitFullScreen" : "離開全è¢å¹•æ¨¡å¼",
66 "menu.view.reloadFranz" : "é‡æ–°è¼‰å…¥Franz", 81 "menu.view.reloadFranz" : "é‡æ–°è¼‰å…¥ Franz",
67 "menu.view.reloadService" : "é‡æ–°è¼‰å…¥æœå‹™", 82 "menu.view.reloadService" : "é‡æ–°è¼‰å…¥æœå‹™",
68 "menu.view.resetZoom" : "實é›å¤§å°", 83 "menu.view.resetZoom" : "實é›å¤§å°",
69 "menu.view.toggleDevTools" : "切æ›é–‹ç™¼è€…工具", 84 "menu.view.toggleDevTools" : "切æ›é–‹ç™¼è€…工具",
@@ -74,6 +89,11 @@
74 "menu.window" : "視窗", 89 "menu.window" : "視窗",
75 "menu.window.close" : "關閉", 90 "menu.window.close" : "關閉",
76 "menu.window.minimize" : "最å°åŒ–", 91 "menu.window.minimize" : "最å°åŒ–",
92 "menu.workspaces" : "Workspaces",
93 "menu.workspaces.addNewWorkspace" : "Add New Workspace...",
94 "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer",
95 "menu.workspaces.defaultWorkspace" : "所有æœå‹™",
96 "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer",
77 "password.email.label" : "é›»å­éƒµä»¶åœ°å€", 97 "password.email.label" : "é›»å­éƒµä»¶åœ°å€",
78 "password.headline" : "é‡è¨­å¯†ç¢¼", 98 "password.headline" : "é‡è¨­å¯†ç¢¼",
79 "password.link.login" : "登入您ç„帳號", 99 "password.link.login" : "登入您ç„帳號",
@@ -82,9 +102,9 @@
82 "password.submit.label" : "é€å‡º", 102 "password.submit.label" : "é€å‡º",
83 "password.successInfo" : "請檢查您ç„é›»å­éƒµä»¶", 103 "password.successInfo" : "請檢查您ç„é›»å­éƒµä»¶",
84 "premiumFeature.button.upgradeAccount" : "å‡ç´å¸³è™Ÿ", 104 "premiumFeature.button.upgradeAccount" : "å‡ç´å¸³è™Ÿ",
85 "pricing.headline" : "支æŒFranz", 105 "pricing.headline" : "æ”¯æŒ Franz",
86 "pricing.link.skipPayment" : "我ä¸æƒ³æ”¯æŒFranzç„é–‹ç™¼ă€‚", 106 "pricing.link.skipPayment" : "我ä¸æƒ³æ”¯æŒ Franz ç„é–‹ç™¼ă€‚",
87 "pricing.submit.label" : "我想支æŒFranzç„é–‹ç™¼ă€‚", 107 "pricing.submit.label" : "æˆ‘æƒ³æ”¯æŒ Franz ç„é–‹ç™¼ă€‚",
88 "pricing.support.label" : "é¸æ“‡æ‚¨æ”¯æŒç„計畫", 108 "pricing.support.label" : "é¸æ“‡æ‚¨æ”¯æŒç„計畫",
89 "service.crashHandler.action" : "é‡æ–°è¼‰å…¥{name}", 109 "service.crashHandler.action" : "é‡æ–°è¼‰å…¥{name}",
90 "service.crashHandler.autoReload" : "嘗試在{seconds}秒內自動æ¢å¾©{name}", 110 "service.crashHandler.autoReload" : "嘗試在{seconds}秒內自動æ¢å¾©{name}",
@@ -92,20 +112,21 @@
92 "service.crashHandler.text" : "{name}å°è‡´äº†ä¸€å€‹éŒ¯èª¤ă€‚", 112 "service.crashHandler.text" : "{name}å°è‡´äº†ä¸€å€‹éŒ¯èª¤ă€‚",
93 "service.disabledHandler.action" : "啟用{name}", 113 "service.disabledHandler.action" : "啟用{name}",
94 "service.disabledHandler.headline" : "{name}å·²åœç”¨", 114 "service.disabledHandler.headline" : "{name}å·²åœç”¨",
95 "service.errorHandler.action" : "é‡æ–°è¼‰å…¥{name}", 115 "service.errorHandler.action" : "é‡æ–°è¼‰å…¥ {name}",
96 "service.errorHandler.editAction" : "編輯{å稱}", 116 "service.errorHandler.editAction" : "編輯{å稱}",
97 "service.errorHandler.headline" : "噢ä¸!", 117 "service.errorHandler.headline" : "噢ä¸ï¼",
98 "service.errorHandler.message" : "錯誤", 118 "service.errorHandler.message" : "錯誤",
99 "service.errorHandler.text" : "{name} has failed to load.", 119 "service.errorHandler.text" : "{name} è¼‰å…¥å¤±æ•—ă€‚",
120 "service.webviewLoader.loading" : "Loading",
100 "services.getStarted" : "開始", 121 "services.getStarted" : "開始",
101 "services.welcome" : "æ­¡è¿ä½¿ç”¨Franz", 122 "services.welcome" : "æ­¡è¿ä½¿ç”¨ Franz",
102 "settings.account.account.editButton" : "編輯帳號", 123 "settings.account.account.editButton" : "編輯帳號",
103 "settings.account.accountType.basic" : "基ç¤å¸³è™Ÿ", 124 "settings.account.accountType.basic" : "基ç¤å¸³è™Ÿ",
104 "settings.account.accountType.premium" : "高ç´æ”¯æŒè€…帳戶", 125 "settings.account.accountType.premium" : "高ç´æ”¯æ´å¸³æˆ¶",
105 "settings.account.buttonSave" : "更新簡介", 126 "settings.account.buttonSave" : "更新簡介",
106 "settings.account.deleteAccount" : "移除帳號", 127 "settings.account.deleteAccount" : "移除帳號",
107 "settings.account.deleteEmailSent" : "移除帳號之確èªé›»éƒµå·²é€å‡ºă€‚ä½ ç„帳號å相關資料將無法æ¢å¾©ï¼", 128 "settings.account.deleteEmailSent" : "移除帳號之確èªé›»éƒµå·²é€å‡ºă€‚ä½ ç„帳號å相關資料將無法æ¢å¾©ï¼",
108 "settings.account.deleteInfo" : "如æœä¸å†éœ€è¦ä½ ç„帳號了,你å¯ä»¥åœ¨é€™è£¡åˆªé™¤å¸³è™Ÿå’Œç›¸é—œè³‡æ–™", 129 "settings.account.deleteInfo" : "如æœä¸å†éœ€è¦ä½ ç„帳號,你å¯ä»¥åœ¨é€™è£¡åˆªé™¤å¸³è™Ÿå’Œæ‰€æœ‰ç›¸é—œè³‡æ–™ă€‚",
109 "settings.account.headline" : "帳號", 130 "settings.account.headline" : "帳號",
110 "settings.account.headlineAccount" : "帳戶資è¨", 131 "settings.account.headlineAccount" : "帳戶資è¨",
111 "settings.account.headlineDangerZone" : "å±éªåœ°å¸¶", 132 "settings.account.headlineDangerZone" : "å±éªåœ°å¸¶",
@@ -113,51 +134,52 @@
113 "settings.account.headlinePassword" : "è®æ›´å¯†ç¢¼", 134 "settings.account.headlinePassword" : "è®æ›´å¯†ç¢¼",
114 "settings.account.headlineProfile" : "更新簡介", 135 "settings.account.headlineProfile" : "更新簡介",
115 "settings.account.headlineSubscription" : "您ç„訂閱", 136 "settings.account.headlineSubscription" : "您ç„訂閱",
116 "settings.account.headlineUpgrade" : "å‡ç´æ‚¨ç„帳戶&支æŒFranz", 137 "settings.account.headlineUpgrade" : "å‡ç´æ‚¨ç„å¸³æˆ¶ä¸¦æ”¯æŒ Franz",
117 "settings.account.invoiceDownload" : "下載", 138 "settings.account.invoiceDownload" : "下載",
118 "settings.account.manageSubscription.label" : "管ç†æ‚¨ç„訂閱", 139 "settings.account.manageSubscription.label" : "管ç†æ‚¨ç„訂閱",
119 "settings.account.successInfo" : "您ç„æ›´è®å·²ç¶“被儲存", 140 "settings.account.successInfo" : "您ç„æ›´è®å·²ç¶“被儲存",
141 "settings.account.tryReloadServices" : "å†è©¦ä¸€æ¬¡",
120 "settings.account.tryReloadUserInfoRequest" : "å†è©¦ä¸€æ¬¡", 142 "settings.account.tryReloadUserInfoRequest" : "å†è©¦ä¸€æ¬¡",
121 "settings.account.userInfoRequestFailed" : "無法載入使用者資è¨ă€‚", 143 "settings.account.userInfoRequestFailed" : "無法載入使用者資è¨ă€‚",
122 "settings.app.buttonClearAllCache" : "清除快å–", 144 "settings.app.buttonClearAllCache" : "清除快å–",
123 "settings.app.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", 145 "settings.app.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°",
124 "settings.app.buttonSearchForUpdate" : "檢查更新", 146 "settings.app.buttonSearchForUpdate" : "檢查更新",
125 "settings.app.cacheInfo" : "Franzå¿«å–ç›®å‰å ç”¨ç£ç¢Ÿç©ºé–“{大å°}。", 147 "settings.app.cacheInfo" : "Franz å¿«å–ç›®å‰å ç”¨ {size} ç„ç£ç¢Ÿç©ºé–“。",
126 "settings.app.currentVersion" : "ç›®å‰ç„版本", 148 "settings.app.currentVersion" : "ç›®å‰ç„版本",
127 "settings.app.form.autoLaunchInBackground" : "在背景開啟", 149 "settings.app.form.autoLaunchInBackground" : "在背景開啟",
128 "settings.app.form.autoLaunchOnStart" : "開機時啟動Franz", 150 "settings.app.form.autoLaunchOnStart" : "開機時啟動 Franz",
129 "settings.app.form.beta" : "包å«æ¸¬è©¦ç‰ˆ", 151 "settings.app.form.beta" : "包å«æ¸¬è©¦ç‰ˆ",
130 "settings.app.form.darkMode" : "Join the Dark Side", 152 "settings.app.form.darkMode" : "å å…¥é»‘æ—é¢",
131 "settings.app.form.enableGPUAcceleration" : "啟用GPUå é€Ÿ", 153 "settings.app.form.enableGPUAcceleration" : "啟用 GPU å é€Ÿ",
132 "settings.app.form.enableMenuBar" : "顯示Franz在é¸å–®åˆ—",
133 "settings.app.form.enableSpellchecking" : "啟用拼字檢查", 154 "settings.app.form.enableSpellchecking" : "啟用拼字檢查",
134 "settings.app.form.enableSystemTray" : "顯示Franz在系統列", 155 "settings.app.form.enableSystemTray" : "在系統列顯示 Franz",
135 "settings.app.form.hideDockIcon" : "在工作列中é±è—Franz圖示",
136 "settings.app.form.language" : "èªè¨€", 156 "settings.app.form.language" : "èªè¨€",
137 "settings.app.form.minimizeToSystemTray" : "最å°åŒ–Franz到系統列", 157 "settings.app.form.minimizeToSystemTray" : "最å°åŒ– Franz 到系統列",
138 "settings.app.form.runInBackground" : "當關閉視窗時ä¿æŒFranz在背景é‹ä½œ", 158 "settings.app.form.runInBackground" : "當關閉視窗時,ä¿æŒ Franz 在背景é‹ä½œ",
139 "settings.app.form.showDisabledServices" : "顯示åœç”¨ç„æœå‹™æ¨™ç±¤", 159 "settings.app.form.showDisabledServices" : "顯示åœç”¨ç„æœå‹™æ¨™ç±¤",
140 "settings.app.form.showMessagesBadgesWhenMuted" : "當é€çŸ¥é—œé–‰æ™‚,標記未讀ç„è¨æ¯", 160 "settings.app.form.showMessagesBadgesWhenMuted" : "當é€çŸ¥é—œé–‰æ™‚,標記未讀ç„è¨æ¯",
141 "settings.app.form.spellcheckerLanguage" : "拼字檢查èªè¨€",
142 "settings.app.headline" : "設å®", 161 "settings.app.headline" : "設å®",
143 "settings.app.headlineAdvanced" : "進é", 162 "settings.app.headlineAdvanced" : "進é",
144 "settings.app.headlineAppearance" : "外觀", 163 "settings.app.headlineAppearance" : "外觀",
145 "settings.app.headlineGeneral" : "一般", 164 "settings.app.headlineGeneral" : "一般",
146 "settings.app.headlineLanguage" : "èªè¨€", 165 "settings.app.headlineLanguage" : "èªè¨€",
147 "settings.app.headlineUpdates" : "æ›´æ–°", 166 "settings.app.headlineUpdates" : "æ›´æ–°",
167 "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.",
148 "settings.app.restartRequired" : "需è¦é‡å•Ÿä»¥æ›´è®", 168 "settings.app.restartRequired" : "需è¦é‡å•Ÿä»¥æ›´è®",
149 "settings.app.subheadlineCache" : "å¿«å–", 169 "settings.app.subheadlineCache" : "å¿«å–",
150 "settings.app.translationHelp" : "幫å©æˆ‘們將Franz翻譯æˆæ‚¨ç„èªè¨€ă€‚", 170 "settings.app.translationHelp" : "幫å©æˆ‘們將 Franz 翻譯æˆæ‚¨ç„èªè¨€ă€‚",
151 "settings.app.updateStatusAvailable" : "有å¯ç”¨æ›´æ–°ï¼Œä¸‹è¼‰ä¸­...", 171 "settings.app.updateStatusAvailable" : "有å¯ç”¨æ›´æ–°ï¼Œä¸‹è¼‰ä¸­...",
152 "settings.app.updateStatusSearching" : "正在æœå°‹æ›´æ–°", 172 "settings.app.updateStatusSearching" : "正在æœå°‹æ›´æ–°",
153 "settings.app.updateStatusUpToDate" : "您正在使用最新版本ç„Franz", 173 "settings.app.updateStatusUpToDate" : "æ‚¨æ­£åœ¨ä½¿ç”¨æœ€æ–°ç‰ˆæœ¬ç„ Franz",
154 "settings.invite.headline" : "邀請朋å‹", 174 "settings.invite.headline" : "邀請朋å‹",
155 "settings.navigation.account" : "帳號", 175 "settings.navigation.account" : "帳號",
156 "settings.navigation.availableServices" : "å¯ä½¿ç”¨ç„æœå‹™", 176 "settings.navigation.availableServices" : "å¯ä½¿ç”¨ç„æœå‹™",
157 "settings.navigation.inviteFriends" : "邀請朋å‹", 177 "settings.navigation.inviteFriends" : "邀請朋å‹",
158 "settings.navigation.logout" : "登出", 178 "settings.navigation.logout" : "登出",
159 "settings.navigation.settings" : "設å®", 179 "settings.navigation.settings" : "設å®",
180 "settings.navigation.team" : "Manage Team",
160 "settings.navigation.yourServices" : "您ç„æœå‹™", 181 "settings.navigation.yourServices" : "您ç„æœå‹™",
182 "settings.navigation.yourWorkspaces" : "Your workspaces",
161 "settings.recipes.all" : "所有æœå‹™", 183 "settings.recipes.all" : "所有æœå‹™",
162 "settings.recipes.dev" : "開發", 184 "settings.recipes.dev" : "開發",
163 "settings.recipes.headline" : "å¯ä½¿ç”¨ç„æœå‹™", 185 "settings.recipes.headline" : "å¯ä½¿ç”¨ç„æœå‹™",
@@ -172,11 +194,11 @@
172 "settings.service.form.addServiceHeadline" : "æ–°å¢{name}", 194 "settings.service.form.addServiceHeadline" : "æ–°å¢{name}",
173 "settings.service.form.availableServices" : "å¯ä½¿ç”¨ç„æœå‹™", 195 "settings.service.form.availableServices" : "å¯ä½¿ç”¨ç„æœå‹™",
174 "settings.service.form.customUrl" : "自訂伺æœå™¨", 196 "settings.service.form.customUrl" : "自訂伺æœå™¨",
175 "settings.service.form.customUrlPremiumInfo" : "è¦æ·»å è‡ªå·±è¨—管ç„æœå‹™ï¼Œæ‚¨éœ€è¦ä¸€å€‹Franz é¡å¤–支æŒè€…å¸³æˆ¶ă€‚", 197 "settings.service.form.customUrlPremiumInfo" : "è¦æ·»å è‡ªè¡Œè¨—管ç„æœå‹™ï¼Œæ‚¨éœ€è¦æ“有 Franz 高ç´æ”¯æ´å¸³æˆ¶ă€‚",
176 "settings.service.form.customUrlUpgradeAccount" : "å‡ç´æ‚¨ç„帳戶", 198 "settings.service.form.customUrlUpgradeAccount" : "å‡ç´æ‚¨ç„帳戶",
177 "settings.service.form.customUrlValidationError" : "無法驗證自å®ç¾©{name}æœå‹™å™¨ă€‚", 199 "settings.service.form.customUrlValidationError" : "無法驗證自å®ç¾©{name}æœå‹™å™¨ă€‚",
178 "settings.service.form.deleteButton" : "刪除æœå‹™", 200 "settings.service.form.deleteButton" : "刪除æœå‹™",
179 "settings.service.form.editServiceHeadline" : "編輯{å稱}", 201 "settings.service.form.editServiceHeadline" : "編輯 {å稱}",
180 "settings.service.form.enableAudio" : "啟用音è¨", 202 "settings.service.form.enableAudio" : "啟用音è¨",
181 "settings.service.form.enableBadge" : "顯示未讀è¨æ¯åœ–示", 203 "settings.service.form.enableBadge" : "顯示未讀è¨æ¯åœ–示",
182 "settings.service.form.enableDarkMode" : "開啟深色模å¼", 204 "settings.service.form.enableDarkMode" : "開啟深色模å¼",
@@ -192,17 +214,15 @@
192 "settings.service.form.indirectMessages" : "顯示所有新消æ¯ç„消æ¯æ¨™èªŒ", 214 "settings.service.form.indirectMessages" : "顯示所有新消æ¯ç„消æ¯æ¨™èªŒ",
193 "settings.service.form.isMutedInfo" : "åœç”¨æ™‚,所有é€çŸ¥è²å’Œè²éŸ³æ’­æ”¾éƒ½å°‡éœéŸ³", 215 "settings.service.form.isMutedInfo" : "åœç”¨æ™‚,所有é€çŸ¥è²å’Œè²éŸ³æ’­æ”¾éƒ½å°‡éœéŸ³",
194 "settings.service.form.name" : "å稱", 216 "settings.service.form.name" : "å稱",
195 "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy Settings", 217 "settings.service.form.proxy.headline" : "HTTP\/HTTPS 代ç†ä¼ºæœå™¨è¨­å®",
196 "settings.service.form.proxy.host" : "Proxy Host\/IP", 218 "settings.service.form.proxy.host" : "代ç†ä¼ºæœå™¨ç¶²åŸŸ \/ IP",
197 "settings.service.form.proxy.info" : "Proxy 設å®ä¸æœƒèˆ‡ Franz 伺æœå™¨åŒæ­¥", 219 "settings.service.form.proxy.info" : "Proxy 設å®ä¸æœƒèˆ‡ Franz 伺æœå™¨åŒæ­¥",
198 "settings.service.form.proxy.isEnabled" : "使用 Proxy", 220 "settings.service.form.proxy.isEnabled" : "使用 Proxy",
199 "settings.service.form.proxy.password" : "密碼 (é¸å¡«)", 221 "settings.service.form.proxy.password" : "密碼 (é¸å¡«)",
200 "settings.service.form.proxy.port" : "Port", 222 "settings.service.form.proxy.port" : "é€è¨é˜œ",
201 "settings.service.form.proxy.restartInfo" : "Please restart Franz after changing proxy Settings.", 223 "settings.service.form.proxy.restartInfo" : "在è®æ›´ Proxy 設å®å¾Œï¼Œè«‹é‡æ–°å•Ÿå‹• Franz",
202 "settings.service.form.proxy.user" : "使用者 (é¸å¡«)", 224 "settings.service.form.proxy.user" : "使用者 (é¸å¡«)",
203 "settings.service.form.saveButton" : "ä¿å­˜æœå‹™", 225 "settings.service.form.saveButton" : "ä¿å­˜æœå‹™",
204 "settings.service.form.spellcheckerLanguage" : "Spell checking Language",
205 "settings.service.form.spellcheckerLanguage.default" : "Use System Default ({default})",
206 "settings.service.form.tabHosted" : "託管", 226 "settings.service.form.tabHosted" : "託管",
207 "settings.service.form.tabOnPremise" : "自我託管â­ï¸", 227 "settings.service.form.tabOnPremise" : "自我託管â­ï¸",
208 "settings.service.form.team" : "團é", 228 "settings.service.form.team" : "團é",
@@ -212,10 +232,17 @@
212 "settings.services.discoverServices" : "發ç¾æœå‹™", 232 "settings.services.discoverServices" : "發ç¾æœå‹™",
213 "settings.services.headline" : "您ç„æœå‹™", 233 "settings.services.headline" : "您ç„æœå‹™",
214 "settings.services.noServicesAdded" : "ä½ å°æœªæ–°å¢ä»»ä½•æœå‹™", 234 "settings.services.noServicesAdded" : "ä½ å°æœªæ–°å¢ä»»ä½•æœå‹™",
235 "settings.services.servicesRequestFailed" : "Could not load your services",
215 "settings.services.tooltip.isDisabled" : "æœå‹™å·²åœç”¨", 236 "settings.services.tooltip.isDisabled" : "æœå‹™å·²åœç”¨",
216 "settings.services.tooltip.isMuted" : "所有ç„è²éŸ³éƒ½æ˜¯éœéŸ³", 237 "settings.services.tooltip.isMuted" : "所有ç„è²éŸ³éƒ½æ˜¯éœéŸ³",
217 "settings.services.tooltip.notificationsDisabled" : "é€çŸ¥å·²åœç”¨", 238 "settings.services.tooltip.notificationsDisabled" : "é€çŸ¥å·²åœç”¨",
218 "settings.services.updatedInfo" : "ä½ ç„æ›´è®å·²ç¶“儲存", 239 "settings.services.updatedInfo" : "已儲存你ç„è®æ›´",
240 "settings.team.contentHeadline" : "Franz for Teams",
241 "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
242 "settings.team.headline" : "團é",
243 "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
244 "settings.team.manageAction" : "Manage your Team on meetfranz.com",
245 "settings.team.upgradeAction" : "Upgrade your Account",
219 "settings.user.form.accountType.company" : "å…¬å¸", 246 "settings.user.form.accountType.company" : "å…¬å¸",
220 "settings.user.form.accountType.individual" : "個人", 247 "settings.user.form.accountType.individual" : "個人",
221 "settings.user.form.accountType.label" : "帳戶é¡å‹", 248 "settings.user.form.accountType.label" : "帳戶é¡å‹",
@@ -225,8 +252,25 @@
225 "settings.user.form.firstname" : "å", 252 "settings.user.form.firstname" : "å",
226 "settings.user.form.lastname" : "姓", 253 "settings.user.form.lastname" : "姓",
227 "settings.user.form.newPassword" : "新密碼", 254 "settings.user.form.newPassword" : "新密碼",
255 "settings.workspace.add.form.name" : "å稱",
256 "settings.workspace.add.form.submitButton" : "Create workspace",
257 "settings.workspace.form.buttonDelete" : "Delete workspace",
258 "settings.workspace.form.buttonSave" : "Save workspace",
259 "settings.workspace.form.name" : "å稱",
260 "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace",
261 "settings.workspace.form.yourWorkspaces" : "Your workspaces",
262 "settings.workspaces.deletedInfo" : "Workspace has been deleted",
263 "settings.workspaces.headline" : "Your workspaces",
264 "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.",
265 "settings.workspaces.tryReloadWorkspaces" : "å†è©¦ä¸€æ¬¡",
266 "settings.workspaces.updatedInfo" : "Your changes have been saved",
267 "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces",
268 "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
269 "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces",
228 "sidebar.addNewService" : "æ–°å¢æ–°ç„æœå‹™", 270 "sidebar.addNewService" : "æ–°å¢æ–°ç„æœå‹™",
271 "sidebar.closeWorkspaceDrawer" : "Close workspace drawer",
229 "sidebar.muteApp" : "關閉é€çŸ¥å’Œé€çŸ¥éŸ³æ•ˆ", 272 "sidebar.muteApp" : "關閉é€çŸ¥å’Œé€çŸ¥éŸ³æ•ˆ",
273 "sidebar.openWorkspaceDrawer" : "Open workspace drawer",
230 "sidebar.settings" : "設å®", 274 "sidebar.settings" : "設å®",
231 "sidebar.unmuteApp" : "é–‹å•Ÿé€çŸ¥å’Œé€çŸ¥éŸ³æ•ˆ", 275 "sidebar.unmuteApp" : "é–‹å•Ÿé€çŸ¥å’Œé€çŸ¥éŸ³æ•ˆ",
232 "signup.company.label" : "å…¬å¸", 276 "signup.company.label" : "å…¬å¸",
@@ -235,7 +279,7 @@
235 "signup.firstname.label" : "å", 279 "signup.firstname.label" : "å",
236 "signup.headline" : "註å†", 280 "signup.headline" : "註å†",
237 "signup.lastname.label" : "姓", 281 "signup.lastname.label" : "姓",
238 "signup.legal.info" : "ä½ æ¥å—é€é創建一個Franz帳戶", 282 "signup.legal.info" : "é€é創建一個 Franz 帳戶,你åŒæ„",
239 "signup.legal.privacy" : "é±ç§è²æ˜", 283 "signup.legal.privacy" : "é±ç§è²æ˜",
240 "signup.legal.terms" : "æœå‹™æ¢æ¬¾", 284 "signup.legal.terms" : "æœå‹™æ¢æ¬¾",
241 "signup.link.login" : "已經有一個帳戶,登入?", 285 "signup.link.login" : "已經有一個帳戶,登入?",
@@ -244,15 +288,14 @@
244 "subscription.euTaxInfo" : "æ­ç›Ÿå±…æ°‘ï¼å¯èƒ½æ¡ç”¨ç•¶åœ°é·å”®ç¨…", 288 "subscription.euTaxInfo" : "æ­ç›Ÿå±…æ°‘ï¼å¯èƒ½æ¡ç”¨ç•¶åœ°é·å”®ç¨…",
245 "subscription.features.ads" : "無廣å‘,永é !", 289 "subscription.features.ads" : "無廣å‘,永é !",
246 "subscription.features.comingSoon" : "å³å°‡æ¨å‡º", 290 "subscription.features.comingSoon" : "å³å°‡æ¨å‡º",
247 "subscription.features.encryptedSync" : "å å¯†ç„會話åŒæ­¥", 291 "subscription.features.noInterruptions" : "å‡ç´æˆæ¬æ²’有延é²èˆ‡æ‰“盹",
248 "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", 292 "subscription.features.onpremise.mattermost" : "å å…¥å¦‚ Mattermost 等已é å® \/ 託管ç„æœå‹™",
249 "subscription.features.onpremise" : "æ·»å æœ¬åœ°\/託管æœå‹™å¦‚HipChat", 293 "subscription.features.proxy" : "æœå‹™ç„代ç†ä¼ºæœå™¨æ”¯æ´",
250 "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost",
251 "subscription.features.proxy" : "Proxy support for services",
252 "subscription.features.spellchecker" : "支æ´æ‹¼å­—檢查", 294 "subscription.features.spellchecker" : "支æ´æ‹¼å­—檢查",
253 "subscription.includedFeatures" : "包å«é«˜ç´Franz付費帳戶", 295 "subscription.features.workspaces" : "Organize your services in workspaces",
296 "subscription.includedFeatures" : "Franz 高ç´æ”¯æ´å¸³æˆ¶åŒ…å«",
254 "subscription.paymentSessionError" : "無法åˆå§‹åŒ–付款表單", 297 "subscription.paymentSessionError" : "無法åˆå§‹åŒ–付款表單",
255 "subscription.submit.label" : "我想支æŒFranzç„開發", 298 "subscription.submit.label" : "æˆ‘æƒ³æ”¯æŒ Franz 開發",
256 "subscription.type.free" : "自由", 299 "subscription.type.free" : "自由",
257 "subscription.type.month" : "月", 300 "subscription.type.month" : "月",
258 "subscription.type.year" : "å¹´", 301 "subscription.type.year" : "å¹´",
@@ -269,9 +312,20 @@
269 "tabs.item.reload" : "é‡æ–°è¼‰å…¥", 312 "tabs.item.reload" : "é‡æ–°è¼‰å…¥",
270 "validation.email" : "{field}無效", 313 "validation.email" : "{field}無效",
271 "validation.minLength" : "{field}長度至少應為{length}個字", 314 "validation.minLength" : "{field}長度至少應為{length}個字",
315 "validation.oneRequired" : "At least one is required",
272 "validation.required" : "{field}為必填", 316 "validation.required" : "{field}為必填",
273 "validation.url" : "{field}ä¸æ˜¯å€‹æœ‰æ•ˆç„網å€", 317 "validation.url" : "{field}ä¸æ˜¯å€‹æœ‰æ•ˆç„網å€",
274 "welcome.loginButton" : "登入您ç„帳戶", 318 "welcome.loginButton" : "登入您ç„帳戶",
275 "welcome.signupButton" : "建立å…費帳號", 319 "welcome.signupButton" : "建立å…費帳號",
276 "welcome.slogan" : "為你é€ä¿¡" 320 "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace",
321 "workspaceDrawer.allServices" : "所有æœå‹™",
322 "workspaceDrawer.headline" : "Workspaces",
323 "workspaceDrawer.item.contextMenuEdit" : "edit",
324 "workspaceDrawer.item.noServicesAddedYet" : "No services added yet",
325 "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace",
326 "workspaceDrawer.proFeatureBadge" : "Premium feature",
327 "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account",
328 "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>",
329 "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings",
330 "workspaces.switchingIndicator.switchingTo" : "Switching to"
277} 331}
diff --git a/src/i18n/manage-translations.js b/src/i18n/manage-translations.js
new file mode 100644
index 000000000..ee64c9c09
--- /dev/null
+++ b/src/i18n/manage-translations.js
@@ -0,0 +1,9 @@
1require('@babel/register');
2const manageTranslations = require('react-intl-translations-manager').default;
3
4manageTranslations({
5 messagesDirectory: 'src/i18n/messages',
6 translationsDirectory: 'src/i18n/locales',
7 singleMessagesFile: true,
8 languages: ['en-US'],
9});
diff --git a/src/i18n/messages/src/components/auth/Import.json b/src/i18n/messages/src/components/auth/Import.json
new file mode 100644
index 000000000..264fc729b
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Import.json
@@ -0,0 +1,54 @@
1[
2 {
3 "id": "import.headline",
4 "defaultMessage": "!!!Import your Franz 4 services",
5 "file": "src/components/auth/Import.js",
6 "start": {
7 "line": 13,
8 "column": 12
9 },
10 "end": {
11 "line": 16,
12 "column": 3
13 }
14 },
15 {
16 "id": "import.notSupportedHeadline",
17 "defaultMessage": "!!!Services not yet supported in Franz 5",
18 "file": "src/components/auth/Import.js",
19 "start": {
20 "line": 17,
21 "column": 24
22 },
23 "end": {
24 "line": 20,
25 "column": 3
26 }
27 },
28 {
29 "id": "import.submit.label",
30 "defaultMessage": "!!!Import {count} services",
31 "file": "src/components/auth/Import.js",
32 "start": {
33 "line": 21,
34 "column": 21
35 },
36 "end": {
37 "line": 24,
38 "column": 3
39 }
40 },
41 {
42 "id": "import.skip.label",
43 "defaultMessage": "!!!I want to add services manually",
44 "file": "src/components/auth/Import.js",
45 "start": {
46 "line": 25,
47 "column": 19
48 },
49 "end": {
50 "line": 28,
51 "column": 3
52 }
53 }
54] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/auth/Invite.json b/src/i18n/messages/src/components/auth/Invite.json
new file mode 100644
index 000000000..57c9bddcf
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Invite.json
@@ -0,0 +1,93 @@
1[
2 {
3 "id": "settings.invite.headline",
4 "defaultMessage": "!!!Invite Friends",
5 "file": "src/components/auth/Invite.js",
6 "start": {
7 "line": 16,
8 "column": 20
9 },
10 "end": {
11 "line": 19,
12 "column": 3
13 }
14 },
15 {
16 "id": "invite.headline.friends",
17 "defaultMessage": "!!!Invite 3 of your friends or colleagues",
18 "file": "src/components/auth/Invite.js",
19 "start": {
20 "line": 20,
21 "column": 12
22 },
23 "end": {
24 "line": 23,
25 "column": 3
26 }
27 },
28 {
29 "id": "invite.name.label",
30 "defaultMessage": "!!!Name",
31 "file": "src/components/auth/Invite.js",
32 "start": {
33 "line": 24,
34 "column": 13
35 },
36 "end": {
37 "line": 27,
38 "column": 3
39 }
40 },
41 {
42 "id": "invite.email.label",
43 "defaultMessage": "!!!Email address",
44 "file": "src/components/auth/Invite.js",
45 "start": {
46 "line": 28,
47 "column": 14
48 },
49 "end": {
50 "line": 31,
51 "column": 3
52 }
53 },
54 {
55 "id": "invite.submit.label",
56 "defaultMessage": "!!!Send invites",
57 "file": "src/components/auth/Invite.js",
58 "start": {
59 "line": 32,
60 "column": 21
61 },
62 "end": {
63 "line": 35,
64 "column": 3
65 }
66 },
67 {
68 "id": "invite.skip.label",
69 "defaultMessage": "!!!I want to do this later",
70 "file": "src/components/auth/Invite.js",
71 "start": {
72 "line": 36,
73 "column": 19
74 },
75 "end": {
76 "line": 39,
77 "column": 3
78 }
79 },
80 {
81 "id": "invite.successInfo",
82 "defaultMessage": "!!!Invitations sent successfully",
83 "file": "src/components/auth/Invite.js",
84 "start": {
85 "line": 40,
86 "column": 21
87 },
88 "end": {
89 "line": 43,
90 "column": 3
91 }
92 }
93] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/auth/Login.json b/src/i18n/messages/src/components/auth/Login.json
new file mode 100644
index 000000000..177f6000b
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Login.json
@@ -0,0 +1,119 @@
1[
2 {
3 "id": "login.headline",
4 "defaultMessage": "!!!Sign in",
5 "file": "src/components/auth/Login.js",
6 "start": {
7 "line": 17,
8 "column": 12
9 },
10 "end": {
11 "line": 20,
12 "column": 3
13 }
14 },
15 {
16 "id": "login.email.label",
17 "defaultMessage": "!!!Email address",
18 "file": "src/components/auth/Login.js",
19 "start": {
20 "line": 21,
21 "column": 14
22 },
23 "end": {
24 "line": 24,
25 "column": 3
26 }
27 },
28 {
29 "id": "login.password.label",
30 "defaultMessage": "!!!Password",
31 "file": "src/components/auth/Login.js",
32 "start": {
33 "line": 25,
34 "column": 17
35 },
36 "end": {
37 "line": 28,
38 "column": 3
39 }
40 },
41 {
42 "id": "login.submit.label",
43 "defaultMessage": "!!!Sign in",
44 "file": "src/components/auth/Login.js",
45 "start": {
46 "line": 29,
47 "column": 21
48 },
49 "end": {
50 "line": 32,
51 "column": 3
52 }
53 },
54 {
55 "id": "login.invalidCredentials",
56 "defaultMessage": "!!!Email or password not valid",
57 "file": "src/components/auth/Login.js",
58 "start": {
59 "line": 33,
60 "column": 22
61 },
62 "end": {
63 "line": 36,
64 "column": 3
65 }
66 },
67 {
68 "id": "login.tokenExpired",
69 "defaultMessage": "!!!Your session expired, please login again.",
70 "file": "src/components/auth/Login.js",
71 "start": {
72 "line": 37,
73 "column": 16
74 },
75 "end": {
76 "line": 40,
77 "column": 3
78 }
79 },
80 {
81 "id": "login.serverLogout",
82 "defaultMessage": "!!!Your session expired, please login again.",
83 "file": "src/components/auth/Login.js",
84 "start": {
85 "line": 41,
86 "column": 16
87 },
88 "end": {
89 "line": 44,
90 "column": 3
91 }
92 },
93 {
94 "id": "login.link.signup",
95 "defaultMessage": "!!!Create a free account",
96 "file": "src/components/auth/Login.js",
97 "start": {
98 "line": 45,
99 "column": 14
100 },
101 "end": {
102 "line": 48,
103 "column": 3
104 }
105 },
106 {
107 "id": "login.link.password",
108 "defaultMessage": "!!!Forgot password",
109 "file": "src/components/auth/Login.js",
110 "start": {
111 "line": 49,
112 "column": 16
113 },
114 "end": {
115 "line": 52,
116 "column": 3
117 }
118 }
119] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/auth/Password.json b/src/i18n/messages/src/components/auth/Password.json
new file mode 100644
index 000000000..f335b3acb
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Password.json
@@ -0,0 +1,93 @@
1[
2 {
3 "id": "password.headline",
4 "defaultMessage": "!!!Forgot password",
5 "file": "src/components/auth/Password.js",
6 "start": {
7 "line": 14,
8 "column": 12
9 },
10 "end": {
11 "line": 17,
12 "column": 3
13 }
14 },
15 {
16 "id": "password.email.label",
17 "defaultMessage": "!!!Email address",
18 "file": "src/components/auth/Password.js",
19 "start": {
20 "line": 18,
21 "column": 14
22 },
23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "password.submit.label",
30 "defaultMessage": "!!!Submit",
31 "file": "src/components/auth/Password.js",
32 "start": {
33 "line": 22,
34 "column": 21
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "password.successInfo",
43 "defaultMessage": "!!!Your new password was sent to your email address",
44 "file": "src/components/auth/Password.js",
45 "start": {
46 "line": 26,
47 "column": 15
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
53 },
54 {
55 "id": "password.noUser",
56 "defaultMessage": "!!!No user affiliated with that email address",
57 "file": "src/components/auth/Password.js",
58 "start": {
59 "line": 30,
60 "column": 10
61 },
62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "password.link.signup",
69 "defaultMessage": "!!!Create a free account",
70 "file": "src/components/auth/Password.js",
71 "start": {
72 "line": 34,
73 "column": 14
74 },
75 "end": {
76 "line": 37,
77 "column": 3
78 }
79 },
80 {
81 "id": "password.link.login",
82 "defaultMessage": "!!!Sign in to your account",
83 "file": "src/components/auth/Password.js",
84 "start": {
85 "line": 38,
86 "column": 13
87 },
88 "end": {
89 "line": 41,
90 "column": 3
91 }
92 }
93] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json
new file mode 100644
index 000000000..f711a55b4
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Pricing.json
@@ -0,0 +1,54 @@
1[
2 {
3 "id": "pricing.headline",
4 "defaultMessage": "!!!Support Franz",
5 "file": "src/components/auth/Pricing.js",
6 "start": {
7 "line": 13,
8 "column": 12
9 },
10 "end": {
11 "line": 16,
12 "column": 3
13 }
14 },
15 {
16 "id": "pricing.support.label",
17 "defaultMessage": "!!!Select your support plan",
18 "file": "src/components/auth/Pricing.js",
19 "start": {
20 "line": 17,
21 "column": 23
22 },
23 "end": {
24 "line": 20,
25 "column": 3
26 }
27 },
28 {
29 "id": "pricing.submit.label",
30 "defaultMessage": "!!!Support the development of Franz",
31 "file": "src/components/auth/Pricing.js",
32 "start": {
33 "line": 21,
34 "column": 21
35 },
36 "end": {
37 "line": 24,
38 "column": 3
39 }
40 },
41 {
42 "id": "pricing.link.skipPayment",
43 "defaultMessage": "!!!I don't want to support the development of Franz.",
44 "file": "src/components/auth/Pricing.js",
45 "start": {
46 "line": 25,
47 "column": 15
48 },
49 "end": {
50 "line": 28,
51 "column": 3
52 }
53 }
54] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/auth/Signup.json b/src/i18n/messages/src/components/auth/Signup.json
new file mode 100644
index 000000000..a09745048
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Signup.json
@@ -0,0 +1,158 @@
1[
2 {
3 "id": "signup.headline",
4 "defaultMessage": "!!!Sign up",
5 "file": "src/components/auth/Signup.js",
6 "start": {
7 "line": 18,
8 "column": 12
9 },
10 "end": {
11 "line": 21,
12 "column": 3
13 }
14 },
15 {
16 "id": "signup.firstname.label",
17 "defaultMessage": "!!!Firstname",
18 "file": "src/components/auth/Signup.js",
19 "start": {
20 "line": 22,
21 "column": 18
22 },
23 "end": {
24 "line": 25,
25 "column": 3
26 }
27 },
28 {
29 "id": "signup.lastname.label",
30 "defaultMessage": "!!!Lastname",
31 "file": "src/components/auth/Signup.js",
32 "start": {
33 "line": 26,
34 "column": 17
35 },
36 "end": {
37 "line": 29,
38 "column": 3
39 }
40 },
41 {
42 "id": "signup.email.label",
43 "defaultMessage": "!!!Email address",
44 "file": "src/components/auth/Signup.js",
45 "start": {
46 "line": 30,
47 "column": 14
48 },
49 "end": {
50 "line": 33,
51 "column": 3
52 }
53 },
54 {
55 "id": "signup.company.label",
56 "defaultMessage": "!!!Company",
57 "file": "src/components/auth/Signup.js",
58 "start": {
59 "line": 34,
60 "column": 16
61 },
62 "end": {
63 "line": 37,
64 "column": 3
65 }
66 },
67 {
68 "id": "signup.password.label",
69 "defaultMessage": "!!!Password",
70 "file": "src/components/auth/Signup.js",
71 "start": {
72 "line": 38,
73 "column": 17
74 },
75 "end": {
76 "line": 41,
77 "column": 3
78 }
79 },
80 {
81 "id": "signup.legal.info",
82 "defaultMessage": "!!!By creating a Franz account you accept the",
83 "file": "src/components/auth/Signup.js",
84 "start": {
85 "line": 42,
86 "column": 13
87 },
88 "end": {
89 "line": 45,
90 "column": 3
91 }
92 },
93 {
94 "id": "signup.legal.terms",
95 "defaultMessage": "!!!Terms of service",
96 "file": "src/components/auth/Signup.js",
97 "start": {
98 "line": 46,
99 "column": 9
100 },
101 "end": {
102 "line": 49,
103 "column": 3
104 }
105 },
106 {
107 "id": "signup.legal.privacy",
108 "defaultMessage": "!!!Privacy Statement",
109 "file": "src/components/auth/Signup.js",
110 "start": {
111 "line": 50,
112 "column": 11
113 },
114 "end": {
115 "line": 53,
116 "column": 3
117 }
118 },
119 {
120 "id": "signup.submit.label",
121 "defaultMessage": "!!!Create account",
122 "file": "src/components/auth/Signup.js",
123 "start": {
124 "line": 54,
125 "column": 21
126 },
127 "end": {
128 "line": 57,
129 "column": 3
130 }
131 },
132 {
133 "id": "signup.link.login",
134 "defaultMessage": "!!!Already have an account, sign in?",
135 "file": "src/components/auth/Signup.js",
136 "start": {
137 "line": 58,
138 "column": 13
139 },
140 "end": {
141 "line": 61,
142 "column": 3
143 }
144 },
145 {
146 "id": "signup.emailDuplicate",
147 "defaultMessage": "!!!A user with that email address already exists",
148 "file": "src/components/auth/Signup.js",
149 "start": {
150 "line": 62,
151 "column": 18
152 },
153 "end": {
154 "line": 65,
155 "column": 3
156 }
157 }
158] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/auth/Welcome.json b/src/i18n/messages/src/components/auth/Welcome.json
new file mode 100644
index 000000000..b4d2ce689
--- /dev/null
+++ b/src/i18n/messages/src/components/auth/Welcome.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "welcome.signupButton",
4 "defaultMessage": "!!!Create a free account",
5 "file": "src/components/auth/Welcome.js",
6 "start": {
7 "line": 9,
8 "column": 16
9 },
10 "end": {
11 "line": 12,
12 "column": 3
13 }
14 },
15 {
16 "id": "welcome.loginButton",
17 "defaultMessage": "!!!Login to your account",
18 "file": "src/components/auth/Welcome.js",
19 "start": {
20 "line": 13,
21 "column": 15
22 },
23 "end": {
24 "line": 16,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json
new file mode 100644
index 000000000..26b8ce040
--- /dev/null
+++ b/src/i18n/messages/src/components/layout/AppLayout.json
@@ -0,0 +1,80 @@
1[
2 {
3 "id": "infobar.servicesUpdated",
4 "defaultMessage": "!!!Your services have been updated.",
5 "file": "src/components/layout/AppLayout.js",
6 "start": {
7 "line": 27,
8 "column": 19
9 },
10 "end": {
11 "line": 30,
12 "column": 3
13 }
14 },
15 {
16 "id": "infobar.updateAvailable",
17 "defaultMessage": "!!!A new update for Franz is available.",
18 "file": "src/components/layout/AppLayout.js",
19 "start": {
20 "line": 31,
21 "column": 19
22 },
23 "end": {
24 "line": 34,
25 "column": 3
26 }
27 },
28 {
29 "id": "infobar.buttonReloadServices",
30 "defaultMessage": "!!!Reload services",
31 "file": "src/components/layout/AppLayout.js",
32 "start": {
33 "line": 35,
34 "column": 24
35 },
36 "end": {
37 "line": 38,
38 "column": 3
39 }
40 },
41 {
42 "id": "infobar.buttonChangelog",
43 "defaultMessage": "!!!Changelog",
44 "file": "src/components/layout/AppLayout.js",
45 "start": {
46 "line": 39,
47 "column": 13
48 },
49 "end": {
50 "line": 42,
51 "column": 3
52 }
53 },
54 {
55 "id": "infobar.buttonInstallUpdate",
56 "defaultMessage": "!!!Restart & install update",
57 "file": "src/components/layout/AppLayout.js",
58 "start": {
59 "line": 43,
60 "column": 23
61 },
62 "end": {
63 "line": 46,
64 "column": 3
65 }
66 },
67 {
68 "id": "infobar.requiredRequestsFailed",
69 "defaultMessage": "!!!Could not load services and user information",
70 "file": "src/components/layout/AppLayout.js",
71 "start": {
72 "line": 47,
73 "column": 26
74 },
75 "end": {
76 "line": 50,
77 "column": 3
78 }
79 }
80] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json
new file mode 100644
index 000000000..d67adc96e
--- /dev/null
+++ b/src/i18n/messages/src/components/layout/Sidebar.json
@@ -0,0 +1,80 @@
1[
2 {
3 "id": "sidebar.settings",
4 "defaultMessage": "!!!Settings",
5 "file": "src/components/layout/Sidebar.js",
6 "start": {
7 "line": 13,
8 "column": 12
9 },
10 "end": {
11 "line": 16,
12 "column": 3
13 }
14 },
15 {
16 "id": "sidebar.addNewService",
17 "defaultMessage": "!!!Add new service",
18 "file": "src/components/layout/Sidebar.js",
19 "start": {
20 "line": 17,
21 "column": 17
22 },
23 "end": {
24 "line": 20,
25 "column": 3
26 }
27 },
28 {
29 "id": "sidebar.muteApp",
30 "defaultMessage": "!!!Disable notifications & audio",
31 "file": "src/components/layout/Sidebar.js",
32 "start": {
33 "line": 21,
34 "column": 8
35 },
36 "end": {
37 "line": 24,
38 "column": 3
39 }
40 },
41 {
42 "id": "sidebar.unmuteApp",
43 "defaultMessage": "!!!Enable notifications & audio",
44 "file": "src/components/layout/Sidebar.js",
45 "start": {
46 "line": 25,
47 "column": 10
48 },
49 "end": {
50 "line": 28,
51 "column": 3
52 }
53 },
54 {
55 "id": "sidebar.openWorkspaceDrawer",
56 "defaultMessage": "!!!Open workspace drawer",
57 "file": "src/components/layout/Sidebar.js",
58 "start": {
59 "line": 29,
60 "column": 23
61 },
62 "end": {
63 "line": 32,
64 "column": 3
65 }
66 },
67 {
68 "id": "sidebar.closeWorkspaceDrawer",
69 "defaultMessage": "!!!Close workspace drawer",
70 "file": "src/components/layout/Sidebar.js",
71 "start": {
72 "line": 33,
73 "column": 24
74 },
75 "end": {
76 "line": 36,
77 "column": 3
78 }
79 }
80] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json b/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json
new file mode 100644
index 000000000..c8fe802df
--- /dev/null
+++ b/src/i18n/messages/src/components/services/content/ErrorHandlers/WebviewErrorHandler.json
@@ -0,0 +1,67 @@
1[
2 {
3 "id": "service.errorHandler.headline",
4 "defaultMessage": "!!!Oh no!",
5 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
6 "start": {
7 "line": 12,
8 "column": 12
9 },
10 "end": {
11 "line": 15,
12 "column": 3
13 }
14 },
15 {
16 "id": "service.errorHandler.text",
17 "defaultMessage": "!!!{name} has failed to load.",
18 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
19 "start": {
20 "line": 16,
21 "column": 8
22 },
23 "end": {
24 "line": 19,
25 "column": 3
26 }
27 },
28 {
29 "id": "service.errorHandler.action",
30 "defaultMessage": "!!!Reload {name}",
31 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
32 "start": {
33 "line": 20,
34 "column": 10
35 },
36 "end": {
37 "line": 23,
38 "column": 3
39 }
40 },
41 {
42 "id": "service.errorHandler.editAction",
43 "defaultMessage": "!!!Edit {name}",
44 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
45 "start": {
46 "line": 24,
47 "column": 14
48 },
49 "end": {
50 "line": 27,
51 "column": 3
52 }
53 },
54 {
55 "id": "service.errorHandler.message",
56 "defaultMessage": "!!!Error:",
57 "file": "src/components/services/content/ErrorHandlers/WebviewErrorHandler.js",
58 "start": {
59 "line": 28,
60 "column": 16
61 },
62 "end": {
63 "line": 31,
64 "column": 3
65 }
66 }
67] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/services/content/ServiceDisabled.json b/src/i18n/messages/src/components/services/content/ServiceDisabled.json
new file mode 100644
index 000000000..8bfad28c7
--- /dev/null
+++ b/src/i18n/messages/src/components/services/content/ServiceDisabled.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "service.disabledHandler.headline",
4 "defaultMessage": "!!!{name} is disabled",
5 "file": "src/components/services/content/ServiceDisabled.js",
6 "start": {
7 "line": 9,
8 "column": 12
9 },
10 "end": {
11 "line": 12,
12 "column": 3
13 }
14 },
15 {
16 "id": "service.disabledHandler.action",
17 "defaultMessage": "!!!Enable {name}",
18 "file": "src/components/services/content/ServiceDisabled.js",
19 "start": {
20 "line": 13,
21 "column": 10
22 },
23 "end": {
24 "line": 16,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/services/content/Services.json b/src/i18n/messages/src/components/services/content/Services.json
new file mode 100644
index 000000000..884ab0c90
--- /dev/null
+++ b/src/i18n/messages/src/components/services/content/Services.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "services.welcome",
4 "defaultMessage": "!!!Welcome to Franz",
5 "file": "src/components/services/content/Services.js",
6 "start": {
7 "line": 11,
8 "column": 11
9 },
10 "end": {
11 "line": 14,
12 "column": 3
13 }
14 },
15 {
16 "id": "services.getStarted",
17 "defaultMessage": "!!!Get started",
18 "file": "src/components/services/content/Services.js",
19 "start": {
20 "line": 15,
21 "column": 14
22 },
23 "end": {
24 "line": 18,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json b/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json
new file mode 100644
index 000000000..c3d6c41a5
--- /dev/null
+++ b/src/i18n/messages/src/components/services/content/WebviewCrashHandler.json
@@ -0,0 +1,54 @@
1[
2 {
3 "id": "service.crashHandler.headline",
4 "defaultMessage": "!!!Oh no!",
5 "file": "src/components/services/content/WebviewCrashHandler.js",
6 "start": {
7 "line": 10,
8 "column": 12
9 },
10 "end": {
11 "line": 13,
12 "column": 3
13 }
14 },
15 {
16 "id": "service.crashHandler.text",
17 "defaultMessage": "!!!{name} has caused an error.",
18 "file": "src/components/services/content/WebviewCrashHandler.js",
19 "start": {
20 "line": 14,
21 "column": 8
22 },
23 "end": {
24 "line": 17,
25 "column": 3
26 }
27 },
28 {
29 "id": "service.crashHandler.action",
30 "defaultMessage": "!!!Reload {name}",
31 "file": "src/components/services/content/WebviewCrashHandler.js",
32 "start": {
33 "line": 18,
34 "column": 10
35 },
36 "end": {
37 "line": 21,
38 "column": 3
39 }
40 },
41 {
42 "id": "service.crashHandler.autoReload",
43 "defaultMessage": "!!!Trying to automatically restore {name} in {seconds} seconds",
44 "file": "src/components/services/content/WebviewCrashHandler.js",
45 "start": {
46 "line": 22,
47 "column": 14
48 },
49 "end": {
50 "line": 25,
51 "column": 3
52 }
53 }
54] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/services/tabs/TabItem.json b/src/i18n/messages/src/components/services/tabs/TabItem.json
new file mode 100644
index 000000000..08a07845c
--- /dev/null
+++ b/src/i18n/messages/src/components/services/tabs/TabItem.json
@@ -0,0 +1,119 @@
1[
2 {
3 "id": "tabs.item.reload",
4 "defaultMessage": "!!!Reload",
5 "file": "src/components/services/tabs/TabItem.js",
6 "start": {
7 "line": 15,
8 "column": 10
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "tabs.item.edit",
17 "defaultMessage": "!!!Edit",
18 "file": "src/components/services/tabs/TabItem.js",
19 "start": {
20 "line": 19,
21 "column": 8
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "tabs.item.disableNotifications",
30 "defaultMessage": "!!!Disable notifications",
31 "file": "src/components/services/tabs/TabItem.js",
32 "start": {
33 "line": 23,
34 "column": 24
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "tabs.item.enableNotification",
43 "defaultMessage": "!!!Enable notifications",
44 "file": "src/components/services/tabs/TabItem.js",
45 "start": {
46 "line": 27,
47 "column": 23
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
55 "id": "tabs.item.disableAudio",
56 "defaultMessage": "!!!Disable audio",
57 "file": "src/components/services/tabs/TabItem.js",
58 "start": {
59 "line": 31,
60 "column": 16
61 },
62 "end": {
63 "line": 34,
64 "column": 3
65 }
66 },
67 {
68 "id": "tabs.item.enableAudio",
69 "defaultMessage": "!!!Enable audio",
70 "file": "src/components/services/tabs/TabItem.js",
71 "start": {
72 "line": 35,
73 "column": 15
74 },
75 "end": {
76 "line": 38,
77 "column": 3
78 }
79 },
80 {
81 "id": "tabs.item.disableService",
82 "defaultMessage": "!!!Disable Service",
83 "file": "src/components/services/tabs/TabItem.js",
84 "start": {
85 "line": 39,
86 "column": 18
87 },
88 "end": {
89 "line": 42,
90 "column": 3
91 }
92 },
93 {
94 "id": "tabs.item.enableService",
95 "defaultMessage": "!!!Enable Service",
96 "file": "src/components/services/tabs/TabItem.js",
97 "start": {
98 "line": 43,
99 "column": 17
100 },
101 "end": {
102 "line": 46,
103 "column": 3
104 }
105 },
106 {
107 "id": "tabs.item.deleteService",
108 "defaultMessage": "!!!Delete Service",
109 "file": "src/components/services/tabs/TabItem.js",
110 "start": {
111 "line": 47,
112 "column": 17
113 },
114 "end": {
115 "line": 50,
116 "column": 3
117 }
118 }
119] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json
new file mode 100644
index 000000000..4969db910
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/account/AccountDashboard.json
@@ -0,0 +1,197 @@
1[
2 {
3 "id": "settings.account.headline",
4 "defaultMessage": "!!!Account",
5 "file": "src/components/settings/account/AccountDashboard.js",
6 "start": {
7 "line": 14,
8 "column": 12
9 },
10 "end": {
11 "line": 17,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.account.headlineSubscription",
17 "defaultMessage": "!!!Your Subscription",
18 "file": "src/components/settings/account/AccountDashboard.js",
19 "start": {
20 "line": 18,
21 "column": 24
22 },
23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.account.headlineUpgrade",
30 "defaultMessage": "!!!Upgrade your Account",
31 "file": "src/components/settings/account/AccountDashboard.js",
32 "start": {
33 "line": 22,
34 "column": 19
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.account.headlineDangerZone",
43 "defaultMessage": "!!Danger Zone",
44 "file": "src/components/settings/account/AccountDashboard.js",
45 "start": {
46 "line": 26,
47 "column": 22
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.account.manageSubscription.label",
56 "defaultMessage": "!!!Manage your subscription",
57 "file": "src/components/settings/account/AccountDashboard.js",
58 "start": {
59 "line": 30,
60 "column": 33
61 },
62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.account.accountType.basic",
69 "defaultMessage": "!!!Basic Account",
70 "file": "src/components/settings/account/AccountDashboard.js",
71 "start": {
72 "line": 34,
73 "column": 20
74 },
75 "end": {
76 "line": 37,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.account.accountType.premium",
82 "defaultMessage": "!!!Premium Supporter Account",
83 "file": "src/components/settings/account/AccountDashboard.js",
84 "start": {
85 "line": 38,
86 "column": 22
87 },
88 "end": {
89 "line": 41,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.account.account.editButton",
95 "defaultMessage": "!!!Edit Account",
96 "file": "src/components/settings/account/AccountDashboard.js",
97 "start": {
98 "line": 42,
99 "column": 21
100 },
101 "end": {
102 "line": 45,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.account.headlineInvoices",
108 "defaultMessage": "!!Invoices",
109 "file": "src/components/settings/account/AccountDashboard.js",
110 "start": {
111 "line": 46,
112 "column": 18
113 },
114 "end": {
115 "line": 49,
116 "column": 3
117 }
118 },
119 {
120 "id": "settings.account.invoiceDownload",
121 "defaultMessage": "!!!Download",
122 "file": "src/components/settings/account/AccountDashboard.js",
123 "start": {
124 "line": 50,
125 "column": 19
126 },
127 "end": {
128 "line": 53,
129 "column": 3
130 }
131 },
132 {
133 "id": "settings.account.userInfoRequestFailed",
134 "defaultMessage": "!!!Could not load user information",
135 "file": "src/components/settings/account/AccountDashboard.js",
136 "start": {
137 "line": 54,
138 "column": 25
139 },
140 "end": {
141 "line": 57,
142 "column": 3
143 }
144 },
145 {
146 "id": "settings.account.tryReloadUserInfoRequest",
147 "defaultMessage": "!!!Try again",
148 "file": "src/components/settings/account/AccountDashboard.js",
149 "start": {
150 "line": 58,
151 "column": 28
152 },
153 "end": {
154 "line": 61,
155 "column": 3
156 }
157 },
158 {
159 "id": "settings.account.deleteAccount",
160 "defaultMessage": "!!!Delete account",
161 "file": "src/components/settings/account/AccountDashboard.js",
162 "start": {
163 "line": 62,
164 "column": 17
165 },
166 "end": {
167 "line": 65,
168 "column": 3
169 }
170 },
171 {
172 "id": "settings.account.deleteInfo",
173 "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.",
174 "file": "src/components/settings/account/AccountDashboard.js",
175 "start": {
176 "line": 66,
177 "column": 14
178 },
179 "end": {
180 "line": 69,
181 "column": 3
182 }
183 },
184 {
185 "id": "settings.account.deleteEmailSent",
186 "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
187 "file": "src/components/settings/account/AccountDashboard.js",
188 "start": {
189 "line": 70,
190 "column": 19
191 },
192 "end": {
193 "line": 73,
194 "column": 3
195 }
196 }
197] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
new file mode 100644
index 000000000..70a989211
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
@@ -0,0 +1,106 @@
1[
2 {
3 "id": "settings.navigation.availableServices",
4 "defaultMessage": "!!!Available services",
5 "file": "src/components/settings/navigation/SettingsNavigation.js",
6 "start": {
7 "line": 13,
8 "column": 21
9 },
10 "end": {
11 "line": 16,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.navigation.yourServices",
17 "defaultMessage": "!!!Your services",
18 "file": "src/components/settings/navigation/SettingsNavigation.js",
19 "start": {
20 "line": 17,
21 "column": 16
22 },
23 "end": {
24 "line": 20,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.navigation.yourWorkspaces",
30 "defaultMessage": "!!!Your workspaces",
31 "file": "src/components/settings/navigation/SettingsNavigation.js",
32 "start": {
33 "line": 21,
34 "column": 18
35 },
36 "end": {
37 "line": 24,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.navigation.account",
43 "defaultMessage": "!!!Account",
44 "file": "src/components/settings/navigation/SettingsNavigation.js",
45 "start": {
46 "line": 25,
47 "column": 11
48 },
49 "end": {
50 "line": 28,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.navigation.team",
56 "defaultMessage": "!!!Manage Team",
57 "file": "src/components/settings/navigation/SettingsNavigation.js",
58 "start": {
59 "line": 29,
60 "column": 8
61 },
62 "end": {
63 "line": 32,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.navigation.settings",
69 "defaultMessage": "!!!Settings",
70 "file": "src/components/settings/navigation/SettingsNavigation.js",
71 "start": {
72 "line": 33,
73 "column": 12
74 },
75 "end": {
76 "line": 36,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.navigation.inviteFriends",
82 "defaultMessage": "!!!Invite Friends",
83 "file": "src/components/settings/navigation/SettingsNavigation.js",
84 "start": {
85 "line": 37,
86 "column": 17
87 },
88 "end": {
89 "line": 40,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.navigation.logout",
95 "defaultMessage": "!!!Logout",
96 "file": "src/components/settings/navigation/SettingsNavigation.js",
97 "start": {
98 "line": 41,
99 "column": 10
100 },
101 "end": {
102 "line": 44,
103 "column": 3
104 }
105 }
106] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json
new file mode 100644
index 000000000..7d9ed3283
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json
@@ -0,0 +1,106 @@
1[
2 {
3 "id": "settings.recipes.headline",
4 "defaultMessage": "!!!Available Services",
5 "file": "src/components/settings/recipes/RecipesDashboard.js",
6 "start": {
7 "line": 15,
8 "column": 12
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.searchService",
17 "defaultMessage": "!!!Search service",
18 "file": "src/components/settings/recipes/RecipesDashboard.js",
19 "start": {
20 "line": 19,
21 "column": 17
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.recipes.mostPopular",
30 "defaultMessage": "!!!Most popular",
31 "file": "src/components/settings/recipes/RecipesDashboard.js",
32 "start": {
33 "line": 23,
34 "column": 22
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.recipes.all",
43 "defaultMessage": "!!!All services",
44 "file": "src/components/settings/recipes/RecipesDashboard.js",
45 "start": {
46 "line": 27,
47 "column": 14
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.recipes.dev",
56 "defaultMessage": "!!!Development",
57 "file": "src/components/settings/recipes/RecipesDashboard.js",
58 "start": {
59 "line": 31,
60 "column": 14
61 },
62 "end": {
63 "line": 34,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.recipes.nothingFound",
69 "defaultMessage": "!!!Sorry, but no service matched your search term.",
70 "file": "src/components/settings/recipes/RecipesDashboard.js",
71 "start": {
72 "line": 35,
73 "column": 16
74 },
75 "end": {
76 "line": 38,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.recipes.servicesSuccessfulAddedInfo",
82 "defaultMessage": "!!!Service successfully added",
83 "file": "src/components/settings/recipes/RecipesDashboard.js",
84 "start": {
85 "line": 39,
86 "column": 31
87 },
88 "end": {
89 "line": 42,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.recipes.missingService",
95 "defaultMessage": "!!!Missing a service?",
96 "file": "src/components/settings/recipes/RecipesDashboard.js",
97 "start": {
98 "line": 43,
99 "column": 18
100 },
101 "end": {
102 "line": 46,
103 "column": 3
104 }
105 }
106] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/services/EditServiceForm.json b/src/i18n/messages/src/components/settings/services/EditServiceForm.json
new file mode 100644
index 000000000..42b741b7a
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/services/EditServiceForm.json
@@ -0,0 +1,288 @@
1[
2 {
3 "id": "settings.service.form.saveButton",
4 "defaultMessage": "!!!Save service",
5 "file": "src/components/settings/services/EditServiceForm.js",
6 "start": {
7 "line": 22,
8 "column": 15
9 },
10 "end": {
11 "line": 25,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.service.form.deleteButton",
17 "defaultMessage": "!!!Delete Service",
18 "file": "src/components/settings/services/EditServiceForm.js",
19 "start": {
20 "line": 26,
21 "column": 17
22 },
23 "end": {
24 "line": 29,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.service.form.availableServices",
30 "defaultMessage": "!!!Available services",
31 "file": "src/components/settings/services/EditServiceForm.js",
32 "start": {
33 "line": 30,
34 "column": 21
35 },
36 "end": {
37 "line": 33,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.service.form.yourServices",
43 "defaultMessage": "!!!Your services",
44 "file": "src/components/settings/services/EditServiceForm.js",
45 "start": {
46 "line": 34,
47 "column": 16
48 },
49 "end": {
50 "line": 37,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.service.form.addServiceHeadline",
56 "defaultMessage": "!!!Add {name}",
57 "file": "src/components/settings/services/EditServiceForm.js",
58 "start": {
59 "line": 38,
60 "column": 22
61 },
62 "end": {
63 "line": 41,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.service.form.editServiceHeadline",
69 "defaultMessage": "!!!Edit {name}",
70 "file": "src/components/settings/services/EditServiceForm.js",
71 "start": {
72 "line": 42,
73 "column": 23
74 },
75 "end": {
76 "line": 45,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.service.form.tabHosted",
82 "defaultMessage": "!!!Hosted",
83 "file": "src/components/settings/services/EditServiceForm.js",
84 "start": {
85 "line": 46,
86 "column": 13
87 },
88 "end": {
89 "line": 49,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.service.form.tabOnPremise",
95 "defaultMessage": "!!!Self hosted â­ï¸",
96 "file": "src/components/settings/services/EditServiceForm.js",
97 "start": {
98 "line": 50,
99 "column": 16
100 },
101 "end": {
102 "line": 53,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.service.form.useHostedService",
108 "defaultMessage": "!!!Use the hosted {name} service.",
109 "file": "src/components/settings/services/EditServiceForm.js",
110 "start": {
111 "line": 54,
112 "column": 20
113 },
114 "end": {
115 "line": 57,
116 "column": 3
117 }
118 },
119 {
120 "id": "settings.service.form.customUrlValidationError",
121 "defaultMessage": "!!!Could not validate custom {name} server.",
122 "file": "src/components/settings/services/EditServiceForm.js",
123 "start": {
124 "line": 58,
125 "column": 28
126 },
127 "end": {
128 "line": 61,
129 "column": 3
130 }
131 },
132 {
133 "id": "settings.service.form.customUrlPremiumInfo",
134 "defaultMessage": "!!!To add self hosted services, you need a Franz Premium Supporter Account.",
135 "file": "src/components/settings/services/EditServiceForm.js",
136 "start": {
137 "line": 62,
138 "column": 24
139 },
140 "end": {
141 "line": 65,
142 "column": 3
143 }
144 },
145 {
146 "id": "settings.service.form.customUrlUpgradeAccount",
147 "defaultMessage": "!!!Upgrade your account",
148 "file": "src/components/settings/services/EditServiceForm.js",
149 "start": {
150 "line": 66,
151 "column": 27
152 },
153 "end": {
154 "line": 69,
155 "column": 3
156 }
157 },
158 {
159 "id": "settings.service.form.indirectMessageInfo",
160 "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
161 "file": "src/components/settings/services/EditServiceForm.js",
162 "start": {
163 "line": 70,
164 "column": 23
165 },
166 "end": {
167 "line": 73,
168 "column": 3
169 }
170 },
171 {
172 "id": "settings.service.form.isMutedInfo",
173 "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted",
174 "file": "src/components/settings/services/EditServiceForm.js",
175 "start": {
176 "line": 74,
177 "column": 15
178 },
179 "end": {
180 "line": 77,
181 "column": 3
182 }
183 },
184 {
185 "id": "settings.service.form.headlineNotifications",
186 "defaultMessage": "!!!Notifications",
187 "file": "src/components/settings/services/EditServiceForm.js",
188 "start": {
189 "line": 78,
190 "column": 25
191 },
192 "end": {
193 "line": 81,
194 "column": 3
195 }
196 },
197 {
198 "id": "settings.service.form.headlineBadges",
199 "defaultMessage": "!!!Unread message badges",
200 "file": "src/components/settings/services/EditServiceForm.js",
201 "start": {
202 "line": 82,
203 "column": 18
204 },
205 "end": {
206 "line": 85,
207 "column": 3
208 }
209 },
210 {
211 "id": "settings.service.form.headlineGeneral",
212 "defaultMessage": "!!!General",
213 "file": "src/components/settings/services/EditServiceForm.js",
214 "start": {
215 "line": 86,
216 "column": 19
217 },
218 "end": {
219 "line": 89,
220 "column": 3
221 }
222 },
223 {
224 "id": "settings.service.form.iconDelete",
225 "defaultMessage": "!!!Delete",
226 "file": "src/components/settings/services/EditServiceForm.js",
227 "start": {
228 "line": 90,
229 "column": 14
230 },
231 "end": {
232 "line": 93,
233 "column": 3
234 }
235 },
236 {
237 "id": "settings.service.form.iconUpload",
238 "defaultMessage": "!!!Drop your image, or click here",
239 "file": "src/components/settings/services/EditServiceForm.js",
240 "start": {
241 "line": 94,
242 "column": 14
243 },
244 "end": {
245 "line": 97,
246 "column": 3
247 }
248 },
249 {
250 "id": "settings.service.form.proxy.headline",
251 "defaultMessage": "!!!HTTP/HTTPS Proxy Settings",
252 "file": "src/components/settings/services/EditServiceForm.js",
253 "start": {
254 "line": 98,
255 "column": 17
256 },
257 "end": {
258 "line": 101,
259 "column": 3
260 }
261 },
262 {
263 "id": "settings.service.form.proxy.restartInfo",
264 "defaultMessage": "!!!Please restart Franz after changing proxy Settings.",
265 "file": "src/components/settings/services/EditServiceForm.js",
266 "start": {
267 "line": 102,
268 "column": 20
269 },
270 "end": {
271 "line": 105,
272 "column": 3
273 }
274 },
275 {
276 "id": "settings.service.form.proxy.info",
277 "defaultMessage": "!!!Proxy settings will not be synchronized with the Franz servers.",
278 "file": "src/components/settings/services/EditServiceForm.js",
279 "start": {
280 "line": 106,
281 "column": 13
282 },
283 "end": {
284 "line": 109,
285 "column": 3
286 }
287 }
288] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/services/ServiceError.json b/src/i18n/messages/src/components/settings/services/ServiceError.json
new file mode 100644
index 000000000..648fc5b3e
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/services/ServiceError.json
@@ -0,0 +1,54 @@
1[
2 {
3 "id": "settings.service.error.headline",
4 "defaultMessage": "!!!Error",
5 "file": "src/components/settings/services/ServiceError.js",
6 "start": {
7 "line": 10,
8 "column": 12
9 },
10 "end": {
11 "line": 13,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.service.error.goBack",
17 "defaultMessage": "!!!Back to services",
18 "file": "src/components/settings/services/ServiceError.js",
19 "start": {
20 "line": 14,
21 "column": 10
22 },
23 "end": {
24 "line": 17,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.service.form.availableServices",
30 "defaultMessage": "!!!Available services",
31 "file": "src/components/settings/services/ServiceError.js",
32 "start": {
33 "line": 18,
34 "column": 21
35 },
36 "end": {
37 "line": 21,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.service.error.message",
43 "defaultMessage": "!!!Could not load service recipe.",
44 "file": "src/components/settings/services/ServiceError.js",
45 "start": {
46 "line": 22,
47 "column": 16
48 },
49 "end": {
50 "line": 25,
51 "column": 3
52 }
53 }
54] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/services/ServiceItem.json b/src/i18n/messages/src/components/settings/services/ServiceItem.json
new file mode 100644
index 000000000..ffea8b9e1
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/services/ServiceItem.json
@@ -0,0 +1,41 @@
1[
2 {
3 "id": "settings.services.tooltip.isDisabled",
4 "defaultMessage": "!!!Service is disabled",
5 "file": "src/components/settings/services/ServiceItem.js",
6 "start": {
7 "line": 11,
8 "column": 21
9 },
10 "end": {
11 "line": 14,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.services.tooltip.notificationsDisabled",
17 "defaultMessage": "!!!Notifications are disabled",
18 "file": "src/components/settings/services/ServiceItem.js",
19 "start": {
20 "line": 15,
21 "column": 32
22 },
23 "end": {
24 "line": 18,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.services.tooltip.isMuted",
30 "defaultMessage": "!!!All sounds are muted",
31 "file": "src/components/settings/services/ServiceItem.js",
32 "start": {
33 "line": 19,
34 "column": 18
35 },
36 "end": {
37 "line": 22,
38 "column": 3
39 }
40 }
41] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/services/ServicesDashboard.json b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json
new file mode 100644
index 000000000..3803c6512
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json
@@ -0,0 +1,119 @@
1[
2 {
3 "id": "settings.services.headline",
4 "defaultMessage": "!!!Your services",
5 "file": "src/components/settings/services/ServicesDashboard.js",
6 "start": {
7 "line": 14,
8 "column": 12
9 },
10 "end": {
11 "line": 17,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.searchService",
17 "defaultMessage": "!!!Search service",
18 "file": "src/components/settings/services/ServicesDashboard.js",
19 "start": {
20 "line": 18,
21 "column": 17
22 },
23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.services.noServicesAdded",
30 "defaultMessage": "!!!You haven't added any services yet.",
31 "file": "src/components/settings/services/ServicesDashboard.js",
32 "start": {
33 "line": 22,
34 "column": 19
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.recipes.nothingFound",
43 "defaultMessage": "!!!Sorry, but no service matched your search term.",
44 "file": "src/components/settings/services/ServicesDashboard.js",
45 "start": {
46 "line": 26,
47 "column": 18
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.services.discoverServices",
56 "defaultMessage": "!!!Discover services",
57 "file": "src/components/settings/services/ServicesDashboard.js",
58 "start": {
59 "line": 30,
60 "column": 20
61 },
62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.services.servicesRequestFailed",
69 "defaultMessage": "!!!Could not load your services",
70 "file": "src/components/settings/services/ServicesDashboard.js",
71 "start": {
72 "line": 34,
73 "column": 25
74 },
75 "end": {
76 "line": 37,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.account.tryReloadServices",
82 "defaultMessage": "!!!Try again",
83 "file": "src/components/settings/services/ServicesDashboard.js",
84 "start": {
85 "line": 38,
86 "column": 21
87 },
88 "end": {
89 "line": 41,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.services.updatedInfo",
95 "defaultMessage": "!!!Your changes have been saved",
96 "file": "src/components/settings/services/ServicesDashboard.js",
97 "start": {
98 "line": 42,
99 "column": 15
100 },
101 "end": {
102 "line": 45,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.services.deletedInfo",
108 "defaultMessage": "!!!Service has been deleted",
109 "file": "src/components/settings/services/ServicesDashboard.js",
110 "start": {
111 "line": 46,
112 "column": 15
113 },
114 "end": {
115 "line": 49,
116 "column": 3
117 }
118 }
119] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
new file mode 100644
index 000000000..fa21db10a
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
@@ -0,0 +1,236 @@
1[
2 {
3 "id": "settings.app.headline",
4 "defaultMessage": "!!!Settings",
5 "file": "src/components/settings/settings/EditSettingsForm.js",
6 "start": {
7 "line": 16,
8 "column": 12
9 },
10 "end": {
11 "line": 19,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.app.headlineGeneral",
17 "defaultMessage": "!!!General",
18 "file": "src/components/settings/settings/EditSettingsForm.js",
19 "start": {
20 "line": 20,
21 "column": 19
22 },
23 "end": {
24 "line": 23,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.app.headlineLanguage",
30 "defaultMessage": "!!!Language",
31 "file": "src/components/settings/settings/EditSettingsForm.js",
32 "start": {
33 "line": 24,
34 "column": 20
35 },
36 "end": {
37 "line": 27,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.app.headlineUpdates",
43 "defaultMessage": "!!!Updates",
44 "file": "src/components/settings/settings/EditSettingsForm.js",
45 "start": {
46 "line": 28,
47 "column": 19
48 },
49 "end": {
50 "line": 31,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.app.headlineAppearance",
56 "defaultMessage": "!!!Appearance",
57 "file": "src/components/settings/settings/EditSettingsForm.js",
58 "start": {
59 "line": 32,
60 "column": 22
61 },
62 "end": {
63 "line": 35,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.app.headlineAdvanced",
69 "defaultMessage": "!!!Advanced",
70 "file": "src/components/settings/settings/EditSettingsForm.js",
71 "start": {
72 "line": 36,
73 "column": 20
74 },
75 "end": {
76 "line": 39,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.app.translationHelp",
82 "defaultMessage": "!!!Help us to translate Franz into your language.",
83 "file": "src/components/settings/settings/EditSettingsForm.js",
84 "start": {
85 "line": 40,
86 "column": 19
87 },
88 "end": {
89 "line": 43,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.app.subheadlineCache",
95 "defaultMessage": "!!!Cache",
96 "file": "src/components/settings/settings/EditSettingsForm.js",
97 "start": {
98 "line": 44,
99 "column": 20
100 },
101 "end": {
102 "line": 47,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.app.cacheInfo",
108 "defaultMessage": "!!!Franz cache is currently using {size} of disk space.",
109 "file": "src/components/settings/settings/EditSettingsForm.js",
110 "start": {
111 "line": 48,
112 "column": 13
113 },
114 "end": {
115 "line": 51,
116 "column": 3
117 }
118 },
119 {
120 "id": "settings.app.buttonClearAllCache",
121 "defaultMessage": "!!!Clear cache",
122 "file": "src/components/settings/settings/EditSettingsForm.js",
123 "start": {
124 "line": 52,
125 "column": 23
126 },
127 "end": {
128 "line": 55,
129 "column": 3
130 }
131 },
132 {
133 "id": "settings.app.buttonSearchForUpdate",
134 "defaultMessage": "!!!Check for updates",
135 "file": "src/components/settings/settings/EditSettingsForm.js",
136 "start": {
137 "line": 56,
138 "column": 25
139 },
140 "end": {
141 "line": 59,
142 "column": 3
143 }
144 },
145 {
146 "id": "settings.app.buttonInstallUpdate",
147 "defaultMessage": "!!!Restart & install update",
148 "file": "src/components/settings/settings/EditSettingsForm.js",
149 "start": {
150 "line": 60,
151 "column": 23
152 },
153 "end": {
154 "line": 63,
155 "column": 3
156 }
157 },
158 {
159 "id": "settings.app.updateStatusSearching",
160 "defaultMessage": "!!!Is searching for update",
161 "file": "src/components/settings/settings/EditSettingsForm.js",
162 "start": {
163 "line": 64,
164 "column": 25
165 },
166 "end": {
167 "line": 67,
168 "column": 3
169 }
170 },
171 {
172 "id": "settings.app.updateStatusAvailable",
173 "defaultMessage": "!!!Update available, downloading...",
174 "file": "src/components/settings/settings/EditSettingsForm.js",
175 "start": {
176 "line": 68,
177 "column": 25
178 },
179 "end": {
180 "line": 71,
181 "column": 3
182 }
183 },
184 {
185 "id": "settings.app.updateStatusUpToDate",
186 "defaultMessage": "!!!You are using the latest version of Franz",
187 "file": "src/components/settings/settings/EditSettingsForm.js",
188 "start": {
189 "line": 72,
190 "column": 24
191 },
192 "end": {
193 "line": 75,
194 "column": 3
195 }
196 },
197 {
198 "id": "settings.app.currentVersion",
199 "defaultMessage": "!!!Current version:",
200 "file": "src/components/settings/settings/EditSettingsForm.js",
201 "start": {
202 "line": 76,
203 "column": 18
204 },
205 "end": {
206 "line": 79,
207 "column": 3
208 }
209 },
210 {
211 "id": "settings.app.restartRequired",
212 "defaultMessage": "!!!Changes require restart",
213 "file": "src/components/settings/settings/EditSettingsForm.js",
214 "start": {
215 "line": 80,
216 "column": 29
217 },
218 "end": {
219 "line": 83,
220 "column": 3
221 }
222 },
223 {
224 "id": "settings.app.languageDisclaimer",
225 "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.",
226 "file": "src/components/settings/settings/EditSettingsForm.js",
227 "start": {
228 "line": 84,
229 "column": 22
230 },
231 "end": {
232 "line": 87,
233 "column": 3
234 }
235 }
236] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/team/TeamDashboard.json b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
new file mode 100644
index 000000000..6bccc25ff
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
@@ -0,0 +1,80 @@
1[
2 {
3 "id": "settings.team.headline",
4 "defaultMessage": "!!!Team",
5 "file": "src/components/settings/team/TeamDashboard.js",
6 "start": {
7 "line": 14,
8 "column": 12
9 },
10 "end": {
11 "line": 17,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.team.contentHeadline",
17 "defaultMessage": "!!!Franz for Teams",
18 "file": "src/components/settings/team/TeamDashboard.js",
19 "start": {
20 "line": 18,
21 "column": 19
22 },
23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.team.intro",
30 "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
31 "file": "src/components/settings/team/TeamDashboard.js",
32 "start": {
33 "line": 22,
34 "column": 9
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.team.copy",
43 "defaultMessage": "!!!Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
44 "file": "src/components/settings/team/TeamDashboard.js",
45 "start": {
46 "line": 26,
47 "column": 8
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.team.manageAction",
56 "defaultMessage": "!!!Manage your Team on meetfranz.com",
57 "file": "src/components/settings/team/TeamDashboard.js",
58 "start": {
59 "line": 30,
60 "column": 16
61 },
62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.team.upgradeAction",
69 "defaultMessage": "!!!Upgrade your Account",
70 "file": "src/components/settings/team/TeamDashboard.js",
71 "start": {
72 "line": 34,
73 "column": 17
74 },
75 "end": {
76 "line": 37,
77 "column": 3
78 }
79 }
80] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/settings/user/EditUserForm.json b/src/i18n/messages/src/components/settings/user/EditUserForm.json
new file mode 100644
index 000000000..3a59f8681
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/user/EditUserForm.json
@@ -0,0 +1,80 @@
1[
2 {
3 "id": "settings.account.headline",
4 "defaultMessage": "!!!Account",
5 "file": "src/components/settings/user/EditUserForm.js",
6 "start": {
7 "line": 15,
8 "column": 12
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.account.headlineProfile",
17 "defaultMessage": "!!!Update Profile",
18 "file": "src/components/settings/user/EditUserForm.js",
19 "start": {
20 "line": 19,
21 "column": 19
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.account.headlineAccount",
30 "defaultMessage": "!!!Account Information",
31 "file": "src/components/settings/user/EditUserForm.js",
32 "start": {
33 "line": 23,
34 "column": 19
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.account.headlinePassword",
43 "defaultMessage": "!!!Change Password",
44 "file": "src/components/settings/user/EditUserForm.js",
45 "start": {
46 "line": 27,
47 "column": 20
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.account.successInfo",
56 "defaultMessage": "!!!Your changes have been saved",
57 "file": "src/components/settings/user/EditUserForm.js",
58 "start": {
59 "line": 31,
60 "column": 15
61 },
62 "end": {
63 "line": 34,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.account.buttonSave",
69 "defaultMessage": "!!!Update profile",
70 "file": "src/components/settings/user/EditUserForm.js",
71 "start": {
72 "line": 35,
73 "column": 14
74 },
75 "end": {
76 "line": 38,
77 "column": 3
78 }
79 }
80] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/subscription/SubscriptionForm.json b/src/i18n/messages/src/components/subscription/SubscriptionForm.json
new file mode 100644
index 000000000..f98eb986f
--- /dev/null
+++ b/src/i18n/messages/src/components/subscription/SubscriptionForm.json
@@ -0,0 +1,184 @@
1[
2 {
3 "id": "subscription.submit.label",
4 "defaultMessage": "!!!Support the development of Franz",
5 "file": "src/components/subscription/SubscriptionForm.js",
6 "start": {
7 "line": 14,
8 "column": 21
9 },
10 "end": {
11 "line": 17,
12 "column": 3
13 }
14 },
15 {
16 "id": "subscription.paymentSessionError",
17 "defaultMessage": "!!!Could not initialize payment form",
18 "file": "src/components/subscription/SubscriptionForm.js",
19 "start": {
20 "line": 18,
21 "column": 23
22 },
23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "subscription.type.free",
30 "defaultMessage": "!!!free",
31 "file": "src/components/subscription/SubscriptionForm.js",
32 "start": {
33 "line": 22,
34 "column": 12
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "subscription.type.month",
43 "defaultMessage": "!!!month",
44 "file": "src/components/subscription/SubscriptionForm.js",
45 "start": {
46 "line": 26,
47 "column": 15
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
53 },
54 {
55 "id": "subscription.type.year",
56 "defaultMessage": "!!!year",
57 "file": "src/components/subscription/SubscriptionForm.js",
58 "start": {
59 "line": 30,
60 "column": 14
61 },
62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "subscription.includedFeatures",
69 "defaultMessage": "!!!The Franz Premium Supporter Account includes",
70 "file": "src/components/subscription/SubscriptionForm.js",
71 "start": {
72 "line": 34,
73 "column": 20
74 },
75 "end": {
76 "line": 37,
77 "column": 3
78 }
79 },
80 {
81 "id": "subscription.features.onpremise.mattermost",
82 "defaultMessage": "!!!Add on-premise/hosted services like Mattermost",
83 "file": "src/components/subscription/SubscriptionForm.js",
84 "start": {
85 "line": 38,
86 "column": 13
87 },
88 "end": {
89 "line": 41,
90 "column": 3
91 }
92 },
93 {
94 "id": "subscription.features.noInterruptions",
95 "defaultMessage": "!!!No app delays & nagging to upgrade license",
96 "file": "src/components/subscription/SubscriptionForm.js",
97 "start": {
98 "line": 42,
99 "column": 19
100 },
101 "end": {
102 "line": 45,
103 "column": 3
104 }
105 },
106 {
107 "id": "subscription.features.proxy",
108 "defaultMessage": "!!!Proxy support for services",
109 "file": "src/components/subscription/SubscriptionForm.js",
110 "start": {
111 "line": 46,
112 "column": 9
113 },
114 "end": {
115 "line": 49,
116 "column": 3
117 }
118 },
119 {
120 "id": "subscription.features.spellchecker",
121 "defaultMessage": "!!!Support for Spellchecker",
122 "file": "src/components/subscription/SubscriptionForm.js",
123 "start": {
124 "line": 50,
125 "column": 16
126 },
127 "end": {
128 "line": 53,
129 "column": 3
130 }
131 },
132 {
133 "id": "subscription.features.workspaces",
134 "defaultMessage": "!!!Organize your services in workspaces",
135 "file": "src/components/subscription/SubscriptionForm.js",
136 "start": {
137 "line": 54,
138 "column": 14
139 },
140 "end": {
141 "line": 57,
142 "column": 3
143 }
144 },
145 {
146 "id": "subscription.features.ads",
147 "defaultMessage": "!!!No ads, ever!",
148 "file": "src/components/subscription/SubscriptionForm.js",
149 "start": {
150 "line": 58,
151 "column": 7
152 },
153 "end": {
154 "line": 61,
155 "column": 3
156 }
157 },
158 {
159 "id": "subscription.features.comingSoon",
160 "defaultMessage": "!!!coming soon",
161 "file": "src/components/subscription/SubscriptionForm.js",
162 "start": {
163 "line": 62,
164 "column": 14
165 },
166 "end": {
167 "line": 65,
168 "column": 3
169 }
170 },
171 {
172 "id": "subscription.euTaxInfo",
173 "defaultMessage": "!!!EU residents: local sales tax may apply",
174 "file": "src/components/subscription/SubscriptionForm.js",
175 "start": {
176 "line": 66,
177 "column": 13
178 },
179 "end": {
180 "line": 69,
181 "column": 3
182 }
183 }
184] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/subscription/SubscriptionPopup.json b/src/i18n/messages/src/components/subscription/SubscriptionPopup.json
new file mode 100644
index 000000000..c06da7531
--- /dev/null
+++ b/src/i18n/messages/src/components/subscription/SubscriptionPopup.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "subscriptionPopup.buttonCancel",
4 "defaultMessage": "!!!Cancel",
5 "file": "src/components/subscription/SubscriptionPopup.js",
6 "start": {
7 "line": 11,
8 "column": 16
9 },
10 "end": {
11 "line": 14,
12 "column": 3
13 }
14 },
15 {
16 "id": "subscriptionPopup.buttonDone",
17 "defaultMessage": "!!!Done",
18 "file": "src/components/subscription/SubscriptionPopup.js",
19 "start": {
20 "line": 15,
21 "column": 14
22 },
23 "end": {
24 "line": 18,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json
new file mode 100644
index 000000000..320d3ca3e
--- /dev/null
+++ b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json
@@ -0,0 +1,15 @@
1[
2 {
3 "id": "premiumFeature.button.upgradeAccount",
4 "defaultMessage": "!!!Upgrade account",
5 "file": "src/components/ui/PremiumFeatureContainer/index.js",
6 "start": {
7 "line": 15,
8 "column": 10
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 }
15] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/ui/WebviewLoader/index.json b/src/i18n/messages/src/components/ui/WebviewLoader/index.json
new file mode 100644
index 000000000..ef3e4b593
--- /dev/null
+++ b/src/i18n/messages/src/components/ui/WebviewLoader/index.json
@@ -0,0 +1,15 @@
1[
2 {
3 "id": "service.webviewLoader.loading",
4 "defaultMessage": "!!!Loading",
5 "file": "src/components/ui/WebviewLoader/index.js",
6 "start": {
7 "line": 11,
8 "column": 11
9 },
10 "end": {
11 "line": 14,
12 "column": 3
13 }
14 }
15] \ No newline at end of file
diff --git a/src/i18n/messages/src/components/util/ErrorBoundary/index.json b/src/i18n/messages/src/components/util/ErrorBoundary/index.json
new file mode 100644
index 000000000..43c323031
--- /dev/null
+++ b/src/i18n/messages/src/components/util/ErrorBoundary/index.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "app.errorHandler.headline",
4 "defaultMessage": "!!!Something went wrong.",
5 "file": "src/components/util/ErrorBoundary/index.js",
6 "start": {
7 "line": 11,
8 "column": 12
9 },
10 "end": {
11 "line": 14,
12 "column": 3
13 }
14 },
15 {
16 "id": "app.errorHandler.action",
17 "defaultMessage": "!!!Reload",
18 "file": "src/components/util/ErrorBoundary/index.js",
19 "start": {
20 "line": 15,
21 "column": 10
22 },
23 "end": {
24 "line": 18,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/containers/settings/EditServiceScreen.json b/src/i18n/messages/src/containers/settings/EditServiceScreen.json
new file mode 100644
index 000000000..42ca42125
--- /dev/null
+++ b/src/i18n/messages/src/containers/settings/EditServiceScreen.json
@@ -0,0 +1,197 @@
1[
2 {
3 "id": "settings.service.form.name",
4 "defaultMessage": "!!!Name",
5 "file": "src/containers/settings/EditServiceScreen.js",
6 "start": {
7 "line": 28,
8 "column": 8
9 },
10 "end": {
11 "line": 31,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.service.form.enableService",
17 "defaultMessage": "!!!Enable service",
18 "file": "src/containers/settings/EditServiceScreen.js",
19 "start": {
20 "line": 32,
21 "column": 17
22 },
23 "end": {
24 "line": 35,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.service.form.enableNotification",
30 "defaultMessage": "!!!Enable Notifications",
31 "file": "src/containers/settings/EditServiceScreen.js",
32 "start": {
33 "line": 36,
34 "column": 22
35 },
36 "end": {
37 "line": 39,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.service.form.enableBadge",
43 "defaultMessage": "!!!Show unread message badges",
44 "file": "src/containers/settings/EditServiceScreen.js",
45 "start": {
46 "line": 40,
47 "column": 15
48 },
49 "end": {
50 "line": 43,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.service.form.enableAudio",
56 "defaultMessage": "!!!Enable audio",
57 "file": "src/containers/settings/EditServiceScreen.js",
58 "start": {
59 "line": 44,
60 "column": 15
61 },
62 "end": {
63 "line": 47,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.service.form.team",
69 "defaultMessage": "!!!Team",
70 "file": "src/containers/settings/EditServiceScreen.js",
71 "start": {
72 "line": 48,
73 "column": 8
74 },
75 "end": {
76 "line": 51,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.service.form.customUrl",
82 "defaultMessage": "!!!Custom server",
83 "file": "src/containers/settings/EditServiceScreen.js",
84 "start": {
85 "line": 52,
86 "column": 13
87 },
88 "end": {
89 "line": 55,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.service.form.indirectMessages",
95 "defaultMessage": "!!!Show message badge for all new messages",
96 "file": "src/containers/settings/EditServiceScreen.js",
97 "start": {
98 "line": 56,
99 "column": 20
100 },
101 "end": {
102 "line": 59,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.service.form.icon",
108 "defaultMessage": "!!!Custom icon",
109 "file": "src/containers/settings/EditServiceScreen.js",
110 "start": {
111 "line": 60,
112 "column": 8
113 },
114 "end": {
115 "line": 63,
116 "column": 3
117 }
118 },
119 {
120 "id": "settings.service.form.enableDarkMode",
121 "defaultMessage": "!!!Enable Dark Mode",
122 "file": "src/containers/settings/EditServiceScreen.js",
123 "start": {
124 "line": 64,
125 "column": 18
126 },
127 "end": {
128 "line": 67,
129 "column": 3
130 }
131 },
132 {
133 "id": "settings.service.form.proxy.isEnabled",
134 "defaultMessage": "!!!Use Proxy",
135 "file": "src/containers/settings/EditServiceScreen.js",
136 "start": {
137 "line": 68,
138 "column": 15
139 },
140 "end": {
141 "line": 71,
142 "column": 3
143 }
144 },
145 {
146 "id": "settings.service.form.proxy.host",
147 "defaultMessage": "!!!Proxy Host/IP",
148 "file": "src/containers/settings/EditServiceScreen.js",
149 "start": {
150 "line": 72,
151 "column": 13
152 },
153 "end": {
154 "line": 75,
155 "column": 3
156 }
157 },
158 {
159 "id": "settings.service.form.proxy.port",
160 "defaultMessage": "!!!Port",
161 "file": "src/containers/settings/EditServiceScreen.js",
162 "start": {
163 "line": 76,
164 "column": 13
165 },
166 "end": {
167 "line": 79,
168 "column": 3
169 }
170 },
171 {
172 "id": "settings.service.form.proxy.user",
173 "defaultMessage": "!!!User",
174 "file": "src/containers/settings/EditServiceScreen.js",
175 "start": {
176 "line": 80,
177 "column": 13
178 },
179 "end": {
180 "line": 83,
181 "column": 3
182 }
183 },
184 {
185 "id": "settings.service.form.proxy.password",
186 "defaultMessage": "!!!Password",
187 "file": "src/containers/settings/EditServiceScreen.js",
188 "start": {
189 "line": 84,
190 "column": 17
191 },
192 "end": {
193 "line": 87,
194 "column": 3
195 }
196 }
197] \ No newline at end of file
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
new file mode 100644
index 000000000..d3b413540
--- /dev/null
+++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
@@ -0,0 +1,158 @@
1[
2 {
3 "id": "settings.app.form.autoLaunchOnStart",
4 "defaultMessage": "!!!Launch Franz on start",
5 "file": "src/containers/settings/EditSettingsScreen.js",
6 "start": {
7 "line": 22,
8 "column": 21
9 },
10 "end": {
11 "line": 25,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.app.form.autoLaunchInBackground",
17 "defaultMessage": "!!!Open in background",
18 "file": "src/containers/settings/EditSettingsScreen.js",
19 "start": {
20 "line": 26,
21 "column": 26
22 },
23 "end": {
24 "line": 29,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.app.form.runInBackground",
30 "defaultMessage": "!!!Keep Franz in background when closing the window",
31 "file": "src/containers/settings/EditSettingsScreen.js",
32 "start": {
33 "line": 30,
34 "column": 19
35 },
36 "end": {
37 "line": 33,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.app.form.enableSystemTray",
43 "defaultMessage": "!!!Show Franz in system tray",
44 "file": "src/containers/settings/EditSettingsScreen.js",
45 "start": {
46 "line": 34,
47 "column": 20
48 },
49 "end": {
50 "line": 37,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.app.form.minimizeToSystemTray",
56 "defaultMessage": "!!!Minimize Franz to system tray",
57 "file": "src/containers/settings/EditSettingsScreen.js",
58 "start": {
59 "line": 38,
60 "column": 24
61 },
62 "end": {
63 "line": 41,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.app.form.language",
69 "defaultMessage": "!!!Language",
70 "file": "src/containers/settings/EditSettingsScreen.js",
71 "start": {
72 "line": 42,
73 "column": 12
74 },
75 "end": {
76 "line": 45,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.app.form.darkMode",
82 "defaultMessage": "!!!Dark Mode",
83 "file": "src/containers/settings/EditSettingsScreen.js",
84 "start": {
85 "line": 46,
86 "column": 12
87 },
88 "end": {
89 "line": 49,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.app.form.showDisabledServices",
95 "defaultMessage": "!!!Display disabled services tabs",
96 "file": "src/containers/settings/EditSettingsScreen.js",
97 "start": {
98 "line": 50,
99 "column": 24
100 },
101 "end": {
102 "line": 53,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.app.form.showMessagesBadgesWhenMuted",
108 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
109 "file": "src/containers/settings/EditSettingsScreen.js",
110 "start": {
111 "line": 54,
112 "column": 29
113 },
114 "end": {
115 "line": 57,
116 "column": 3
117 }
118 },
119 {
120 "id": "settings.app.form.enableSpellchecking",
121 "defaultMessage": "!!!Enable spell checking",
122 "file": "src/containers/settings/EditSettingsScreen.js",
123 "start": {
124 "line": 58,
125 "column": 23
126 },
127 "end": {
128 "line": 61,
129 "column": 3
130 }
131 },
132 {
133 "id": "settings.app.form.enableGPUAcceleration",
134 "defaultMessage": "!!!Enable GPU Acceleration",
135 "file": "src/containers/settings/EditSettingsScreen.js",
136 "start": {
137 "line": 62,
138 "column": 25
139 },
140 "end": {
141 "line": 65,
142 "column": 3
143 }
144 },
145 {
146 "id": "settings.app.form.beta",
147 "defaultMessage": "!!!Include beta versions",
148 "file": "src/containers/settings/EditSettingsScreen.js",
149 "start": {
150 "line": 66,
151 "column": 8
152 },
153 "end": {
154 "line": 69,
155 "column": 3
156 }
157 }
158] \ No newline at end of file
diff --git a/src/i18n/messages/src/containers/settings/EditUserScreen.json b/src/i18n/messages/src/containers/settings/EditUserScreen.json
new file mode 100644
index 000000000..70ff29945
--- /dev/null
+++ b/src/i18n/messages/src/containers/settings/EditUserScreen.json
@@ -0,0 +1,119 @@
1[
2 {
3 "id": "settings.user.form.firstname",
4 "defaultMessage": "!!!Firstname",
5 "file": "src/containers/settings/EditUserScreen.js",
6 "start": {
7 "line": 14,
8 "column": 13
9 },
10 "end": {
11 "line": 17,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.user.form.lastname",
17 "defaultMessage": "!!!Lastname",
18 "file": "src/containers/settings/EditUserScreen.js",
19 "start": {
20 "line": 18,
21 "column": 12
22 },
23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.user.form.email",
30 "defaultMessage": "!!!Email",
31 "file": "src/containers/settings/EditUserScreen.js",
32 "start": {
33 "line": 22,
34 "column": 9
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.user.form.accountType.label",
43 "defaultMessage": "!!!Account type",
44 "file": "src/containers/settings/EditUserScreen.js",
45 "start": {
46 "line": 26,
47 "column": 20
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.user.form.accountType.individual",
56 "defaultMessage": "!!!Individual",
57 "file": "src/containers/settings/EditUserScreen.js",
58 "start": {
59 "line": 30,
60 "column": 25
61 },
62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.user.form.accountType.non-profit",
69 "defaultMessage": "!!!Non-Profit",
70 "file": "src/containers/settings/EditUserScreen.js",
71 "start": {
72 "line": 34,
73 "column": 24
74 },
75 "end": {
76 "line": 37,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.user.form.accountType.company",
82 "defaultMessage": "!!!Company",
83 "file": "src/containers/settings/EditUserScreen.js",
84 "start": {
85 "line": 38,
86 "column": 22
87 },
88 "end": {
89 "line": 41,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.user.form.currentPassword",
95 "defaultMessage": "!!!Current password",
96 "file": "src/containers/settings/EditUserScreen.js",
97 "start": {
98 "line": 42,
99 "column": 19
100 },
101 "end": {
102 "line": 45,
103 "column": 3
104 }
105 },
106 {
107 "id": "settings.user.form.newPassword",
108 "defaultMessage": "!!!New password",
109 "file": "src/containers/settings/EditUserScreen.js",
110 "start": {
111 "line": 46,
112 "column": 15
113 },
114 "end": {
115 "line": 49,
116 "column": 3
117 }
118 }
119] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json
new file mode 100644
index 000000000..eb1b66916
--- /dev/null
+++ b/src/i18n/messages/src/features/announcements/components/AnnouncementScreen.json
@@ -0,0 +1,15 @@
1[
2 {
3 "id": "feature.announcements.changelog.headline",
4 "defaultMessage": "!!!Changes in Franz {version}",
5 "file": "src/features/announcements/components/AnnouncementScreen.js",
6 "start": {
7 "line": 20,
8 "column": 12
9 },
10 "end": {
11 "line": 23,
12 "column": 3
13 }
14 }
15] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json
new file mode 100644
index 000000000..bacd9444a
--- /dev/null
+++ b/src/i18n/messages/src/features/delayApp/Component.json
@@ -0,0 +1,41 @@
1[
2 {
3 "id": "feature.delayApp.headline",
4 "defaultMessage": "!!!Please purchase license to skip waiting",
5 "file": "src/features/delayApp/Component.js",
6 "start": {
7 "line": 15,
8 "column": 12
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "feature.delayApp.action",
17 "defaultMessage": "!!!Get a Franz Supporter License",
18 "file": "src/features/delayApp/Component.js",
19 "start": {
20 "line": 19,
21 "column": 10
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "feature.delayApp.text",
30 "defaultMessage": "!!!Franz will continue in {seconds} seconds.",
31 "file": "src/features/delayApp/Component.js",
32 "start": {
33 "line": 23,
34 "column": 8
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 }
41] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/shareFranz/Component.json b/src/i18n/messages/src/features/shareFranz/Component.json
new file mode 100644
index 000000000..34a43d5a0
--- /dev/null
+++ b/src/i18n/messages/src/features/shareFranz/Component.json
@@ -0,0 +1,93 @@
1[
2 {
3 "id": "feature.shareFranz.headline",
4 "defaultMessage": "!!!Franz is better together!",
5 "file": "src/features/shareFranz/Component.js",
6 "start": {
7 "line": 15,
8 "column": 12
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "feature.shareFranz.text",
17 "defaultMessage": "!!!Tell your friends and colleagues how awesome Franz is and help us to spread the word.",
18 "file": "src/features/shareFranz/Component.js",
19 "start": {
20 "line": 19,
21 "column": 8
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "feature.shareFranz.action.email",
30 "defaultMessage": "!!!Share as email",
31 "file": "src/features/shareFranz/Component.js",
32 "start": {
33 "line": 23,
34 "column": 16
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "feature.shareFranz.action.facebook",
43 "defaultMessage": "!!!Share on Facebook",
44 "file": "src/features/shareFranz/Component.js",
45 "start": {
46 "line": 27,
47 "column": 19
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
55 "id": "feature.shareFranz.action.twitter",
56 "defaultMessage": "!!!Share on Twitter",
57 "file": "src/features/shareFranz/Component.js",
58 "start": {
59 "line": 31,
60 "column": 18
61 },
62 "end": {
63 "line": 34,
64 "column": 3
65 }
66 },
67 {
68 "id": "feature.shareFranz.shareText.email",
69 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com",
70 "file": "src/features/shareFranz/Component.js",
71 "start": {
72 "line": 35,
73 "column": 18
74 },
75 "end": {
76 "line": 38,
77 "column": 3
78 }
79 },
80 {
81 "id": "feature.shareFranz.shareText.twitter",
82 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger",
83 "file": "src/features/shareFranz/Component.js",
84 "start": {
85 "line": 39,
86 "column": 20
87 },
88 "end": {
89 "line": 42,
90 "column": 3
91 }
92 }
93] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json
new file mode 100644
index 000000000..f62bac42c
--- /dev/null
+++ b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "settings.workspace.add.form.submitButton",
4 "defaultMessage": "!!!Create workspace",
5 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
6 "start": {
7 "line": 13,
8 "column": 16
9 },
10 "end": {
11 "line": 16,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.workspace.add.form.name",
17 "defaultMessage": "!!!Name",
18 "file": "src/features/workspaces/components/CreateWorkspaceForm.js",
19 "start": {
20 "line": 17,
21 "column": 8
22 },
23 "end": {
24 "line": 20,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json
new file mode 100644
index 000000000..20ed99f8d
--- /dev/null
+++ b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json
@@ -0,0 +1,93 @@
1[
2 {
3 "id": "settings.workspace.form.buttonDelete",
4 "defaultMessage": "!!!Delete workspace",
5 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
6 "start": {
7 "line": 19,
8 "column": 16
9 },
10 "end": {
11 "line": 22,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.workspace.form.buttonSave",
17 "defaultMessage": "!!!Save workspace",
18 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
19 "start": {
20 "line": 23,
21 "column": 14
22 },
23 "end": {
24 "line": 26,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.workspace.form.name",
30 "defaultMessage": "!!!Name",
31 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
32 "start": {
33 "line": 27,
34 "column": 8
35 },
36 "end": {
37 "line": 30,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.workspace.form.yourWorkspaces",
43 "defaultMessage": "!!!Your workspaces",
44 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
45 "start": {
46 "line": 31,
47 "column": 18
48 },
49 "end": {
50 "line": 34,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.workspace.form.servicesInWorkspaceHeadline",
56 "defaultMessage": "!!!Services in this Workspace",
57 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
58 "start": {
59 "line": 35,
60 "column": 31
61 },
62 "end": {
63 "line": 38,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.services.noServicesAdded",
69 "defaultMessage": "!!!You haven't added any services yet.",
70 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
71 "start": {
72 "line": 39,
73 "column": 19
74 },
75 "end": {
76 "line": 42,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.services.discoverServices",
82 "defaultMessage": "!!!Discover services",
83 "file": "src/features/workspaces/components/EditWorkspaceForm.js",
84 "start": {
85 "line": 43,
86 "column": 20
87 },
88 "end": {
89 "line": 46,
90 "column": 3
91 }
92 }
93] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json
new file mode 100644
index 000000000..9f0935620
--- /dev/null
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json
@@ -0,0 +1,106 @@
1[
2 {
3 "id": "workspaceDrawer.headline",
4 "defaultMessage": "!!!Workspaces",
5 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
6 "start": {
7 "line": 16,
8 "column": 12
9 },
10 "end": {
11 "line": 19,
12 "column": 3
13 }
14 },
15 {
16 "id": "workspaceDrawer.allServices",
17 "defaultMessage": "!!!All services",
18 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
19 "start": {
20 "line": 20,
21 "column": 15
22 },
23 "end": {
24 "line": 23,
25 "column": 3
26 }
27 },
28 {
29 "id": "workspaceDrawer.workspacesSettingsTooltip",
30 "defaultMessage": "!!!Workspaces settings",
31 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
32 "start": {
33 "line": 24,
34 "column": 29
35 },
36 "end": {
37 "line": 27,
38 "column": 3
39 }
40 },
41 {
42 "id": "workspaceDrawer.workspaceFeatureInfo",
43 "defaultMessage": "!!!Info about workspace feature",
44 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
45 "start": {
46 "line": 28,
47 "column": 24
48 },
49 "end": {
50 "line": 31,
51 "column": 3
52 }
53 },
54 {
55 "id": "workspaceDrawer.premiumCtaButtonLabel",
56 "defaultMessage": "!!!Create your first workspace",
57 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
58 "start": {
59 "line": 32,
60 "column": 25
61 },
62 "end": {
63 "line": 35,
64 "column": 3
65 }
66 },
67 {
68 "id": "workspaceDrawer.reactivatePremiumAccountLabel",
69 "defaultMessage": "!!!Reactivate premium account",
70 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
71 "start": {
72 "line": 36,
73 "column": 28
74 },
75 "end": {
76 "line": 39,
77 "column": 3
78 }
79 },
80 {
81 "id": "workspaceDrawer.addNewWorkspaceLabel",
82 "defaultMessage": "!!!add new workspace",
83 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
84 "start": {
85 "line": 40,
86 "column": 24
87 },
88 "end": {
89 "line": 43,
90 "column": 3
91 }
92 },
93 {
94 "id": "workspaceDrawer.proFeatureBadge",
95 "defaultMessage": "!!!Premium feature",
96 "file": "src/features/workspaces/components/WorkspaceDrawer.js",
97 "start": {
98 "line": 44,
99 "column": 23
100 },
101 "end": {
102 "line": 47,
103 "column": 3
104 }
105 }
106] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json
new file mode 100644
index 000000000..4ff190606
--- /dev/null
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json
@@ -0,0 +1,28 @@
1[
2 {
3 "id": "workspaceDrawer.item.noServicesAddedYet",
4 "defaultMessage": "!!!No services added yet",
5 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js",
6 "start": {
7 "line": 12,
8 "column": 22
9 },
10 "end": {
11 "line": 15,
12 "column": 3
13 }
14 },
15 {
16 "id": "workspaceDrawer.item.contextMenuEdit",
17 "defaultMessage": "!!!edit",
18 "file": "src/features/workspaces/components/WorkspaceDrawerItem.js",
19 "start": {
20 "line": 16,
21 "column": 19
22 },
23 "end": {
24 "line": 19,
25 "column": 3
26 }
27 }
28] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json
new file mode 100644
index 000000000..4f3e6d55c
--- /dev/null
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceSwitchingIndicator.json
@@ -0,0 +1,15 @@
1[
2 {
3 "id": "workspaces.switchingIndicator.switchingTo",
4 "defaultMessage": "!!!Switching to",
5 "file": "src/features/workspaces/components/WorkspaceSwitchingIndicator.js",
6 "start": {
7 "line": 12,
8 "column": 15
9 },
10 "end": {
11 "line": 15,
12 "column": 3
13 }
14 }
15] \ No newline at end of file
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
new file mode 100644
index 000000000..ef8f1bebc
--- /dev/null
+++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json
@@ -0,0 +1,106 @@
1[
2 {
3 "id": "settings.workspaces.headline",
4 "defaultMessage": "!!!Your workspaces",
5 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
6 "start": {
7 "line": 17,
8 "column": 12
9 },
10 "end": {
11 "line": 20,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.workspaces.noWorkspacesAdded",
17 "defaultMessage": "!!!You haven't added any workspaces yet.",
18 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
19 "start": {
20 "line": 21,
21 "column": 19
22 },
23 "end": {
24 "line": 24,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.workspaces.workspacesRequestFailed",
30 "defaultMessage": "!!!Could not load your workspaces",
31 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
32 "start": {
33 "line": 25,
34 "column": 27
35 },
36 "end": {
37 "line": 28,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.workspaces.tryReloadWorkspaces",
43 "defaultMessage": "!!!Try again",
44 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
45 "start": {
46 "line": 29,
47 "column": 23
48 },
49 "end": {
50 "line": 32,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.workspaces.updatedInfo",
56 "defaultMessage": "!!!Your changes have been saved",
57 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
58 "start": {
59 "line": 33,
60 "column": 15
61 },
62 "end": {
63 "line": 36,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.workspaces.deletedInfo",
69 "defaultMessage": "!!!Workspace has been deleted",
70 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
71 "start": {
72 "line": 37,
73 "column": 15
74 },
75 "end": {
76 "line": 40,
77 "column": 3
78 }
79 },
80 {
81 "id": "settings.workspaces.workspaceFeatureInfo",
82 "defaultMessage": "!!!Info about workspace feature",
83 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
84 "start": {
85 "line": 41,
86 "column": 24
87 },
88 "end": {
89 "line": 44,
90 "column": 3
91 }
92 },
93 {
94 "id": "settings.workspaces.workspaceFeatureHeadline",
95 "defaultMessage": "!!!Less is More: Introducing Franz Workspaces",
96 "file": "src/features/workspaces/components/WorkspacesDashboard.js",
97 "start": {
98 "line": 45,
99 "column": 28
100 },
101 "end": {
102 "line": 48,
103 "column": 3
104 }
105 }
106] \ No newline at end of file
diff --git a/src/i18n/messages/src/helpers/validation-helpers.json b/src/i18n/messages/src/helpers/validation-helpers.json
new file mode 100644
index 000000000..86bfe1500
--- /dev/null
+++ b/src/i18n/messages/src/helpers/validation-helpers.json
@@ -0,0 +1,67 @@
1[
2 {
3 "id": "validation.required",
4 "defaultMessage": "!!!Field is required",
5 "file": "src/helpers/validation-helpers.js",
6 "start": {
7 "line": 4,
8 "column": 12
9 },
10 "end": {
11 "line": 7,
12 "column": 3
13 }
14 },
15 {
16 "id": "validation.email",
17 "defaultMessage": "!!!Email not valid",
18 "file": "src/helpers/validation-helpers.js",
19 "start": {
20 "line": 8,
21 "column": 9
22 },
23 "end": {
24 "line": 11,
25 "column": 3
26 }
27 },
28 {
29 "id": "validation.url",
30 "defaultMessage": "!!!Not a valid URL",
31 "file": "src/helpers/validation-helpers.js",
32 "start": {
33 "line": 12,
34 "column": 7
35 },
36 "end": {
37 "line": 15,
38 "column": 3
39 }
40 },
41 {
42 "id": "validation.minLength",
43 "defaultMessage": "!!!Too few characters",
44 "file": "src/helpers/validation-helpers.js",
45 "start": {
46 "line": 16,
47 "column": 13
48 },
49 "end": {
50 "line": 19,
51 "column": 3
52 }
53 },
54 {
55 "id": "validation.oneRequired",
56 "defaultMessage": "!!!At least one is required",
57 "file": "src/helpers/validation-helpers.js",
58 "start": {
59 "line": 20,
60 "column": 15
61 },
62 "end": {
63 "line": 23,
64 "column": 3
65 }
66 }
67] \ No newline at end of file
diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json
new file mode 100644
index 000000000..28001614f
--- /dev/null
+++ b/src/i18n/messages/src/i18n/globalMessages.json
@@ -0,0 +1,80 @@
1[
2 {
3 "id": "global.api.unhealthy",
4 "defaultMessage": "!!!Can't connect to Franz Online Services",
5 "file": "src/i18n/globalMessages.js",
6 "start": {
7 "line": 4,
8 "column": 16
9 },
10 "end": {
11 "line": 7,
12 "column": 3
13 }
14 },
15 {
16 "id": "global.notConnectedToTheInternet",
17 "defaultMessage": "!!!You are not connected to the internet.",
18 "file": "src/i18n/globalMessages.js",
19 "start": {
20 "line": 8,
21 "column": 29
22 },
23 "end": {
24 "line": 11,
25 "column": 3
26 }
27 },
28 {
29 "id": "global.spellchecking.language",
30 "defaultMessage": "!!!Spell checking language",
31 "file": "src/i18n/globalMessages.js",
32 "start": {
33 "line": 12,
34 "column": 24
35 },
36 "end": {
37 "line": 15,
38 "column": 3
39 }
40 },
41 {
42 "id": "global.spellchecker.useDefault",
43 "defaultMessage": "!!!Use System Default ({default})",
44 "file": "src/i18n/globalMessages.js",
45 "start": {
46 "line": 16,
47 "column": 29
48 },
49 "end": {
50 "line": 19,
51 "column": 3
52 }
53 },
54 {
55 "id": "global.spellchecking.autodetect",
56 "defaultMessage": "!!!Detect language automatically",
57 "file": "src/i18n/globalMessages.js",
58 "start": {
59 "line": 20,
60 "column": 34
61 },
62 "end": {
63 "line": 23,
64 "column": 3
65 }
66 },
67 {
68 "id": "global.spellchecking.autodetect.short",
69 "defaultMessage": "!!!Automatic",
70 "file": "src/i18n/globalMessages.js",
71 "start": {
72 "line": 24,
73 "column": 39
74 },
75 "end": {
76 "line": 27,
77 "column": 3
78 }
79 }
80] \ No newline at end of file
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json
new file mode 100644
index 000000000..2adf5b787
--- /dev/null
+++ b/src/i18n/messages/src/lib/Menu.json
@@ -0,0 +1,691 @@
1[
2 {
3 "id": "menu.edit",
4 "defaultMessage": "!!!Edit",
5 "file": "src/lib/Menu.js",
6 "start": {
7 "line": 15,
8 "column": 8
9 },
10 "end": {
11 "line": 18,
12 "column": 3
13 }
14 },
15 {
16 "id": "menu.edit.undo",
17 "defaultMessage": "!!!Undo",
18 "file": "src/lib/Menu.js",
19 "start": {
20 "line": 19,
21 "column": 8
22 },
23 "end": {
24 "line": 22,
25 "column": 3
26 }
27 },
28 {
29 "id": "menu.edit.redo",
30 "defaultMessage": "!!!Redo",
31 "file": "src/lib/Menu.js",
32 "start": {
33 "line": 23,
34 "column": 8
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "menu.edit.cut",
43 "defaultMessage": "!!!Cut",
44 "file": "src/lib/Menu.js",
45 "start": {
46 "line": 27,
47 "column": 7
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
55 "id": "menu.edit.copy",
56 "defaultMessage": "!!!Copy",
57 "file": "src/lib/Menu.js",
58 "start": {
59 "line": 31,
60 "column": 8
61 },
62 "end": {
63 "line": 34,
64 "column": 3
65 }
66 },
67 {
68 "id": "menu.edit.paste",
69 "defaultMessage": "!!!Paste",
70 "file": "src/lib/Menu.js",
71 "start": {
72 "line": 35,
73 "column": 9
74 },
75 "end": {
76 "line": 38,
77 "column": 3
78 }
79 },
80 {
81 "id": "menu.edit.pasteAndMatchStyle",
82 "defaultMessage": "!!!Paste And Match Style",
83 "file": "src/lib/Menu.js",
84 "start": {
85 "line": 39,
86 "column": 22
87 },
88 "end": {
89 "line": 42,
90 "column": 3
91 }
92 },
93 {
94 "id": "menu.edit.delete",
95 "defaultMessage": "!!!Delete",
96 "file": "src/lib/Menu.js",
97 "start": {
98 "line": 43,
99 "column": 10
100 },
101 "end": {
102 "line": 46,
103 "column": 3
104 }
105 },
106 {
107 "id": "menu.edit.selectAll",
108 "defaultMessage": "!!!Select All",
109 "file": "src/lib/Menu.js",
110 "start": {
111 "line": 47,
112 "column": 13
113 },
114 "end": {
115 "line": 50,
116 "column": 3
117 }
118 },
119 {
120 "id": "menu.edit.speech",
121 "defaultMessage": "!!!Speech",
122 "file": "src/lib/Menu.js",
123 "start": {
124 "line": 51,
125 "column": 10
126 },
127 "end": {
128 "line": 54,
129 "column": 3
130 }
131 },
132 {
133 "id": "menu.edit.startSpeaking",
134 "defaultMessage": "!!!Start Speaking",
135 "file": "src/lib/Menu.js",
136 "start": {
137 "line": 55,
138 "column": 17
139 },
140 "end": {
141 "line": 58,
142 "column": 3
143 }
144 },
145 {
146 "id": "menu.edit.stopSpeaking",
147 "defaultMessage": "!!!Stop Speaking",
148 "file": "src/lib/Menu.js",
149 "start": {
150 "line": 59,
151 "column": 16
152 },
153 "end": {
154 "line": 62,
155 "column": 3
156 }
157 },
158 {
159 "id": "menu.edit.startDictation",
160 "defaultMessage": "!!!Start Dictation",
161 "file": "src/lib/Menu.js",
162 "start": {
163 "line": 63,
164 "column": 18
165 },
166 "end": {
167 "line": 66,
168 "column": 3
169 }
170 },
171 {
172 "id": "menu.edit.emojiSymbols",
173 "defaultMessage": "!!!Emoji & Symbols",
174 "file": "src/lib/Menu.js",
175 "start": {
176 "line": 67,
177 "column": 16
178 },
179 "end": {
180 "line": 70,
181 "column": 3
182 }
183 },
184 {
185 "id": "menu.view.resetZoom",
186 "defaultMessage": "!!!Actual Size",
187 "file": "src/lib/Menu.js",
188 "start": {
189 "line": 71,
190 "column": 13
191 },
192 "end": {
193 "line": 74,
194 "column": 3
195 }
196 },
197 {
198 "id": "menu.view.zoomIn",
199 "defaultMessage": "!!!Zoom In",
200 "file": "src/lib/Menu.js",
201 "start": {
202 "line": 75,
203 "column": 10
204 },
205 "end": {
206 "line": 78,
207 "column": 3
208 }
209 },
210 {
211 "id": "menu.view.zoomOut",
212 "defaultMessage": "!!!Zoom Out",
213 "file": "src/lib/Menu.js",
214 "start": {
215 "line": 79,
216 "column": 11
217 },
218 "end": {
219 "line": 82,
220 "column": 3
221 }
222 },
223 {
224 "id": "menu.view.enterFullScreen",
225 "defaultMessage": "!!!Enter Full Screen",
226 "file": "src/lib/Menu.js",
227 "start": {
228 "line": 83,
229 "column": 19
230 },
231 "end": {
232 "line": 86,
233 "column": 3
234 }
235 },
236 {
237 "id": "menu.view.exitFullScreen",
238 "defaultMessage": "!!!Exit Full Screen",
239 "file": "src/lib/Menu.js",
240 "start": {
241 "line": 87,
242 "column": 18
243 },
244 "end": {
245 "line": 90,
246 "column": 3
247 }
248 },
249 {
250 "id": "menu.view.toggleFullScreen",
251 "defaultMessage": "!!!Toggle Full Screen",
252 "file": "src/lib/Menu.js",
253 "start": {
254 "line": 91,
255 "column": 20
256 },
257 "end": {
258 "line": 94,
259 "column": 3
260 }
261 },
262 {
263 "id": "menu.view.toggleDevTools",
264 "defaultMessage": "!!!Toggle Developer Tools",
265 "file": "src/lib/Menu.js",
266 "start": {
267 "line": 95,
268 "column": 18
269 },
270 "end": {
271 "line": 98,
272 "column": 3
273 }
274 },
275 {
276 "id": "menu.view.toggleServiceDevTools",
277 "defaultMessage": "!!!Toggle Service Developer Tools",
278 "file": "src/lib/Menu.js",
279 "start": {
280 "line": 99,
281 "column": 25
282 },
283 "end": {
284 "line": 102,
285 "column": 3
286 }
287 },
288 {
289 "id": "menu.view.reloadService",
290 "defaultMessage": "!!!Reload Service",
291 "file": "src/lib/Menu.js",
292 "start": {
293 "line": 103,
294 "column": 17
295 },
296 "end": {
297 "line": 106,
298 "column": 3
299 }
300 },
301 {
302 "id": "menu.view.reloadFranz",
303 "defaultMessage": "!!!Reload Franz",
304 "file": "src/lib/Menu.js",
305 "start": {
306 "line": 107,
307 "column": 15
308 },
309 "end": {
310 "line": 110,
311 "column": 3
312 }
313 },
314 {
315 "id": "menu.window.minimize",
316 "defaultMessage": "!!!Minimize",
317 "file": "src/lib/Menu.js",
318 "start": {
319 "line": 111,
320 "column": 12
321 },
322 "end": {
323 "line": 114,
324 "column": 3
325 }
326 },
327 {
328 "id": "menu.window.close",
329 "defaultMessage": "!!!Close",
330 "file": "src/lib/Menu.js",
331 "start": {
332 "line": 115,
333 "column": 9
334 },
335 "end": {
336 "line": 118,
337 "column": 3
338 }
339 },
340 {
341 "id": "menu.help.learnMore",
342 "defaultMessage": "!!!Learn More",
343 "file": "src/lib/Menu.js",
344 "start": {
345 "line": 119,
346 "column": 13
347 },
348 "end": {
349 "line": 122,
350 "column": 3
351 }
352 },
353 {
354 "id": "menu.help.changelog",
355 "defaultMessage": "!!!Changelog",
356 "file": "src/lib/Menu.js",
357 "start": {
358 "line": 123,
359 "column": 13
360 },
361 "end": {
362 "line": 126,
363 "column": 3
364 }
365 },
366 {
367 "id": "menu.help.support",
368 "defaultMessage": "!!!Support",
369 "file": "src/lib/Menu.js",
370 "start": {
371 "line": 127,
372 "column": 11
373 },
374 "end": {
375 "line": 130,
376 "column": 3
377 }
378 },
379 {
380 "id": "menu.help.tos",
381 "defaultMessage": "!!!Terms of Service",
382 "file": "src/lib/Menu.js",
383 "start": {
384 "line": 131,
385 "column": 7
386 },
387 "end": {
388 "line": 134,
389 "column": 3
390 }
391 },
392 {
393 "id": "menu.help.privacy",
394 "defaultMessage": "!!!Privacy Statement",
395 "file": "src/lib/Menu.js",
396 "start": {
397 "line": 135,
398 "column": 11
399 },
400 "end": {
401 "line": 138,
402 "column": 3
403 }
404 },
405 {
406 "id": "menu.file",
407 "defaultMessage": "!!!File",
408 "file": "src/lib/Menu.js",
409 "start": {
410 "line": 139,
411 "column": 8
412 },
413 "end": {
414 "line": 142,
415 "column": 3
416 }
417 },
418 {
419 "id": "menu.view",
420 "defaultMessage": "!!!View",
421 "file": "src/lib/Menu.js",
422 "start": {
423 "line": 143,
424 "column": 8
425 },
426 "end": {
427 "line": 146,
428 "column": 3
429 }
430 },
431 {
432 "id": "menu.services",
433 "defaultMessage": "!!!Services",
434 "file": "src/lib/Menu.js",
435 "start": {
436 "line": 147,
437 "column": 12
438 },
439 "end": {
440 "line": 150,
441 "column": 3
442 }
443 },
444 {
445 "id": "menu.window",
446 "defaultMessage": "!!!Window",
447 "file": "src/lib/Menu.js",
448 "start": {
449 "line": 151,
450 "column": 10
451 },
452 "end": {
453 "line": 154,
454 "column": 3
455 }
456 },
457 {
458 "id": "menu.help",
459 "defaultMessage": "!!!Help",
460 "file": "src/lib/Menu.js",
461 "start": {
462 "line": 155,
463 "column": 8
464 },
465 "end": {
466 "line": 158,
467 "column": 3
468 }
469 },
470 {
471 "id": "menu.app.about",
472 "defaultMessage": "!!!About Franz",
473 "file": "src/lib/Menu.js",
474 "start": {
475 "line": 159,
476 "column": 9
477 },
478 "end": {
479 "line": 162,
480 "column": 3
481 }
482 },
483 {
484 "id": "menu.app.announcement",
485 "defaultMessage": "!!!What's new?",
486 "file": "src/lib/Menu.js",
487 "start": {
488 "line": 163,
489 "column": 16
490 },
491 "end": {
492 "line": 166,
493 "column": 3
494 }
495 },
496 {
497 "id": "menu.app.settings",
498 "defaultMessage": "!!!Settings",
499 "file": "src/lib/Menu.js",
500 "start": {
501 "line": 167,
502 "column": 12
503 },
504 "end": {
505 "line": 170,
506 "column": 3
507 }
508 },
509 {
510 "id": "menu.app.hide",
511 "defaultMessage": "!!!Hide",
512 "file": "src/lib/Menu.js",
513 "start": {
514 "line": 171,
515 "column": 8
516 },
517 "end": {
518 "line": 174,
519 "column": 3
520 }
521 },
522 {
523 "id": "menu.app.hideOthers",
524 "defaultMessage": "!!!Hide Others",
525 "file": "src/lib/Menu.js",
526 "start": {
527 "line": 175,
528 "column": 14
529 },
530 "end": {
531 "line": 178,
532 "column": 3
533 }
534 },
535 {
536 "id": "menu.app.unhide",
537 "defaultMessage": "!!!Unhide",
538 "file": "src/lib/Menu.js",
539 "start": {
540 "line": 179,
541 "column": 10
542 },
543 "end": {
544 "line": 182,
545 "column": 3
546 }
547 },
548 {
549 "id": "menu.app.quit",
550 "defaultMessage": "!!!Quit",
551 "file": "src/lib/Menu.js",
552 "start": {
553 "line": 183,
554 "column": 8
555 },
556 "end": {
557 "line": 186,
558 "column": 3
559 }
560 },
561 {
562 "id": "menu.services.addNewService",
563 "defaultMessage": "!!!Add New Service...",
564 "file": "src/lib/Menu.js",
565 "start": {
566 "line": 187,
567 "column": 17
568 },
569 "end": {
570 "line": 190,
571 "column": 3
572 }
573 },
574 {
575 "id": "menu.workspaces.addNewWorkspace",
576 "defaultMessage": "!!!Add New Workspace...",
577 "file": "src/lib/Menu.js",
578 "start": {
579 "line": 191,
580 "column": 19
581 },
582 "end": {
583 "line": 194,
584 "column": 3
585 }
586 },
587 {
588 "id": "menu.workspaces.openWorkspaceDrawer",
589 "defaultMessage": "!!!Open workspace drawer",
590 "file": "src/lib/Menu.js",
591 "start": {
592 "line": 195,
593 "column": 23
594 },
595 "end": {
596 "line": 198,
597 "column": 3
598 }
599 },
600 {
601 "id": "menu.workspaces.closeWorkspaceDrawer",
602 "defaultMessage": "!!!Close workspace drawer",
603 "file": "src/lib/Menu.js",
604 "start": {
605 "line": 199,
606 "column": 24
607 },
608 "end": {
609 "line": 202,
610 "column": 3
611 }
612 },
613 {
614 "id": "menu.services.setNextServiceActive",
615 "defaultMessage": "!!!Activate next service...",
616 "file": "src/lib/Menu.js",
617 "start": {
618 "line": 203,
619 "column": 23
620 },
621 "end": {
622 "line": 206,
623 "column": 3
624 }
625 },
626 {
627 "id": "menu.services.activatePreviousService",
628 "defaultMessage": "!!!Activate previous service...",
629 "file": "src/lib/Menu.js",
630 "start": {
631 "line": 207,
632 "column": 27
633 },
634 "end": {
635 "line": 210,
636 "column": 3
637 }
638 },
639 {
640 "id": "sidebar.muteApp",
641 "defaultMessage": "!!!Disable notifications & audio",
642 "file": "src/lib/Menu.js",
643 "start": {
644 "line": 211,
645 "column": 11
646 },
647 "end": {
648 "line": 214,
649 "column": 3
650 }
651 },
652 {
653 "id": "sidebar.unmuteApp",
654 "defaultMessage": "!!!Enable notifications & audio",
655 "file": "src/lib/Menu.js",
656 "start": {
657 "line": 215,
658 "column": 13
659 },
660 "end": {
661 "line": 218,
662 "column": 3
663 }
664 },
665 {
666 "id": "menu.workspaces",
667 "defaultMessage": "!!!Workspaces",
668 "file": "src/lib/Menu.js",
669 "start": {
670 "line": 219,
671 "column": 14
672 },
673 "end": {
674 "line": 222,
675 "column": 3
676 }
677 },
678 {
679 "id": "menu.workspaces.defaultWorkspace",
680 "defaultMessage": "!!!Default",
681 "file": "src/lib/Menu.js",
682 "start": {
683 "line": 223,
684 "column": 20
685 },
686 "end": {
687 "line": 226,
688 "column": 3
689 }
690 }
691] \ No newline at end of file
diff --git a/src/index.js b/src/index.js
index f34df8c17..3fe996aa7 100644
--- a/src/index.js
+++ b/src/index.js
@@ -4,25 +4,23 @@ import {
4 shell, 4 shell,
5 ipcMain, 5 ipcMain,
6} from 'electron'; 6} from 'electron';
7 7import isDevMode from 'electron-is-dev';
8import fs from 'fs-extra'; 8import fs from 'fs-extra';
9import path from 'path'; 9import path from 'path';
10import windowStateKeeper from 'electron-window-state'; 10import windowStateKeeper from 'electron-window-state';
11 11
12// Set app directory before loading user modules
13if (isDevMode) {
14 app.setPath('userData', path.join(app.getPath('appData'), 'FranzDev'));
15}
16
17/* eslint-disable import/first */
12import { 18import {
13 isDevMode,
14 isMac, 19 isMac,
15 isWindows, 20 isWindows,
16 isLinux, 21 isLinux,
17} from './environment'; 22} from './environment';
18
19import { mainIpcHandler as basicAuthHandler } from './features/basicAuth'; 23import { mainIpcHandler as basicAuthHandler } from './features/basicAuth';
20
21// DEV MODE: Save user data into FranzDev
22if (isDevMode) {
23 app.setPath('userData', path.join(app.getPath('appData'), 'FranzDev'));
24}
25/* eslint-disable import/first */
26import ipcApi from './electron/ipc-api'; 24import ipcApi from './electron/ipc-api';
27import Tray from './lib/Tray'; 25import Tray from './lib/Tray';
28import Settings from './electron/Settings'; 26import Settings from './electron/Settings';
@@ -35,6 +33,8 @@ import {
35 DEFAULT_APP_SETTINGS, 33 DEFAULT_APP_SETTINGS,
36 DEFAULT_WINDOW_OPTIONS, 34 DEFAULT_WINDOW_OPTIONS,
37} from './config'; 35} from './config';
36import { asarPath } from './helpers/asar-helpers';
37import { isValidExternalURL } from './helpers/url-helpers';
38/* eslint-enable import/first */ 38/* eslint-enable import/first */
39 39
40const debug = require('debug')('Franz:App'); 40const debug = require('debug')('Franz:App');
@@ -44,6 +44,17 @@ const debug = require('debug')('Franz:App');
44let mainWindow; 44let mainWindow;
45let willQuitApp = false; 45let willQuitApp = false;
46 46
47// Register methods to be called once the window has been loaded.
48let onDidLoadFns = [];
49
50function onDidLoad(fn) {
51 if (onDidLoadFns) {
52 onDidLoadFns.push(fn);
53 } else if (mainWindow) {
54 fn(mainWindow);
55 }
56}
57
47// Ensure that the recipe directory exists 58// Ensure that the recipe directory exists
48fs.emptyDirSync(path.join(app.getPath('userData'), 'recipes', 'temp')); 59fs.emptyDirSync(path.join(app.getPath('userData'), 'recipes', 'temp'));
49fs.ensureFileSync(path.join(app.getPath('userData'), 'window-state.json')); 60fs.ensureFileSync(path.join(app.getPath('userData'), 'window-state.json'));
@@ -61,32 +72,38 @@ if (!gotTheLock) {
61 app.on('second-instance', (event, argv) => { 72 app.on('second-instance', (event, argv) => {
62 // Someone tried to run a second instance, we should focus our window. 73 // Someone tried to run a second instance, we should focus our window.
63 if (mainWindow) { 74 if (mainWindow) {
64 if (mainWindow.isMinimized()) mainWindow.restore(); 75 mainWindow.show();
76 if (mainWindow.isMinimized()) {
77 mainWindow.restore();
78 }
65 mainWindow.focus(); 79 mainWindow.focus();
66 80
67 if (isWindows) { 81 if (isWindows) {
68 // Keep only command line / deep linked arguments 82 onDidLoad((window) => {
69 const url = argv.slice(1); 83 // Keep only command line / deep linked arguments
70 84 const url = argv.slice(1);
71 if (url) { 85 if (url) {
72 handleDeepLink(mainWindow, url.toString()); 86 handleDeepLink(window, url.toString());
73 } 87 }
74 } 88
75 89 if (argv.includes('--reset-window')) {
76 if (argv.includes('--reset-window')) { 90 // Needs to be delayed to not interfere with mainWindow.restore();
77 // Needs to be delayed to not interfere with mainWindow.restore(); 91 setTimeout(() => {
78 setTimeout(() => { 92 debug('Resetting windows via Task');
79 debug('Resetting windows via Task'); 93 window.setPosition(DEFAULT_WINDOW_OPTIONS.x + 100, DEFAULT_WINDOW_OPTIONS.y + 100);
80 mainWindow.setPosition(DEFAULT_WINDOW_OPTIONS.x + 100, DEFAULT_WINDOW_OPTIONS.y + 100); 94 window.setSize(DEFAULT_WINDOW_OPTIONS.width, DEFAULT_WINDOW_OPTIONS.height);
81 mainWindow.setSize(DEFAULT_WINDOW_OPTIONS.width, DEFAULT_WINDOW_OPTIONS.height); 95 }, 1);
82 }, 1); 96 } else if (argv.includes('--quit')) {
97 // Needs to be delayed to not interfere with mainWindow.restore();
98 setTimeout(() => {
99 debug('Quitting Franz via Task');
100 app.quit();
101 }, 1);
102 }
103 });
83 } 104 }
84 } 105 }
85 }); 106 });
86
87 // Create myWindow, load the rest of the app, etc...
88 app.on('ready', () => {
89 });
90} 107}
91// const isSecondInstance = app.makeSingleInstance((argv) => { 108// const isSecondInstance = app.makeSingleInstance((argv) => {
92// if (mainWindow) { 109// if (mainWindow) {
@@ -166,6 +183,14 @@ const createWindow = () => {
166 }, 183 },
167 }); 184 });
168 185
186 mainWindow.webContents.on('did-finish-load', () => {
187 const fns = onDidLoadFns;
188 onDidLoadFns = null;
189 for (const fn of fns) {
190 fn(mainWindow);
191 }
192 });
193
169 // Initialize System Tray 194 // Initialize System Tray
170 const trayIcon = new Tray(); 195 const trayIcon = new Tray();
171 196
@@ -190,22 +215,36 @@ const createWindow = () => {
190 mainWindow.webContents.openDevTools(); 215 mainWindow.webContents.openDevTools();
191 } 216 }
192 217
218 // Windows deep linking handling on app launch
219 if (isWindows) {
220 onDidLoad((window) => {
221 const url = process.argv.slice(1);
222 if (url) {
223 handleDeepLink(window, url.toString());
224 }
225 });
226 }
227
193 // Emitted when the window is closed. 228 // Emitted when the window is closed.
194 mainWindow.on('close', (e) => { 229 mainWindow.on('close', (e) => {
230 debug('Window: close window');
195 // Dereference the window object, usually you would store windows 231 // Dereference the window object, usually you would store windows
196 // in an array if your app supports multi windows, this is the time 232 // in an array if your app supports multi windows, this is the time
197 // when you should delete the corresponding element. 233 // when you should delete the corresponding element.
198 if (!willQuitApp && (settings.get('runInBackground') === undefined || settings.get('runInBackground'))) { 234 if (!willQuitApp && (settings.get('runInBackground') === undefined || settings.get('runInBackground'))) {
199 e.preventDefault(); 235 e.preventDefault();
200 if (isWindows) { 236 if (isWindows) {
237 debug('Window: minimize');
201 mainWindow.minimize(); 238 mainWindow.minimize();
239
240 if (settings.get('minimizeToSystemTray')) {
241 debug('Skip taskbar: true');
242 mainWindow.setSkipTaskbar(true);
243 }
202 } else { 244 } else {
245 debug('Window: hide');
203 mainWindow.hide(); 246 mainWindow.hide();
204 } 247 }
205
206 if (isWindows) {
207 mainWindow.setSkipTaskbar(true);
208 }
209 } else { 248 } else {
210 app.quit(); 249 app.quit();
211 } 250 }
@@ -217,32 +256,39 @@ const createWindow = () => {
217 app.wasMaximized = app.isMaximized; 256 app.wasMaximized = app.isMaximized;
218 257
219 if (settings.get('minimizeToSystemTray')) { 258 if (settings.get('minimizeToSystemTray')) {
259 debug('Skip taskbar: true');
220 mainWindow.setSkipTaskbar(true); 260 mainWindow.setSkipTaskbar(true);
221 trayIcon.show(); 261 trayIcon.show();
222 } 262 }
223 }); 263 });
224 264
225 mainWindow.on('maximize', () => { 265 mainWindow.on('maximize', () => {
266 debug('Window: maximize');
226 app.isMaximized = true; 267 app.isMaximized = true;
227 }); 268 });
228 269
229 mainWindow.on('unmaximize', () => { 270 mainWindow.on('unmaximize', () => {
271 debug('Window: unmaximize');
230 app.isMaximized = false; 272 app.isMaximized = false;
231 }); 273 });
232 274
233 mainWindow.on('restore', () => { 275 mainWindow.on('restore', () => {
276 debug('Window: restore');
234 mainWindow.setSkipTaskbar(false); 277 mainWindow.setSkipTaskbar(false);
235 278
236 if (app.wasMaximized) { 279 if (app.wasMaximized) {
280 debug('Window: was maximized before, maximize window');
237 mainWindow.maximize(); 281 mainWindow.maximize();
238 } 282 }
239 283
240 if (!settings.get('enableSystemTray')) { 284 if (!settings.get('enableSystemTray')) {
285 debug('Tray: hiding tray icon');
241 trayIcon.hide(); 286 trayIcon.hide();
242 } 287 }
243 }); 288 });
244 289
245 mainWindow.on('show', () => { 290 mainWindow.on('show', () => {
291 debug('Skip taskbar: false');
246 mainWindow.setSkipTaskbar(false); 292 mainWindow.setSkipTaskbar(false);
247 }); 293 });
248 294
@@ -250,23 +296,53 @@ const createWindow = () => {
250 app.isMaximized = mainWindow.isMaximized(); 296 app.isMaximized = mainWindow.isMaximized();
251 297
252 mainWindow.webContents.on('new-window', (e, url) => { 298 mainWindow.webContents.on('new-window', (e, url) => {
299 debug('Open url', url);
253 e.preventDefault(); 300 e.preventDefault();
254 shell.openExternal(url); 301
302 if (isValidExternalURL(url)) {
303 shell.openExternal(url);
304 }
255 }); 305 });
256}; 306};
257 307
308// Allow passing command line parameters/switches to electron
309// https://electronjs.org/docs/api/chrome-command-line-switches
310// used for Kerberos support
311// Usage e.g. MACOS
312// $ Franz.app/Contents/MacOS/Franz --auth-server-whitelist *.mydomain.com --auth-negotiate-delegate-whitelist *.mydomain.com
313const argv = require('minimist')(process.argv.slice(1));
314
315if (argv['auth-server-whitelist']) {
316 app.commandLine.appendSwitch('auth-server-whitelist', argv['auth-server-whitelist']);
317}
318if (argv['auth-negotiate-delegate-whitelist']) {
319 app.commandLine.appendSwitch('auth-negotiate-delegate-whitelist', argv['auth-negotiate-delegate-whitelist']);
320}
321
258// This method will be called when Electron has finished 322// This method will be called when Electron has finished
259// initialization and is ready to create browser windows. 323// initialization and is ready to create browser windows.
260// Some APIs can only be used after this event occurs. 324// Some APIs can only be used after this event occurs.
261app.on('ready', () => { 325app.on('ready', () => {
326 // Register App URL
327 app.setAsDefaultProtocolClient('franz');
328
329 if (isDevMode) {
330 app.setAsDefaultProtocolClient('franz-dev');
331 }
332
262 if (process.platform === 'win32') { 333 if (process.platform === 'win32') {
263 app.setUserTasks([{ 334 app.setUserTasks([{
264 program: process.execPath, 335 program: process.execPath,
265 arguments: `${isDevMode ? `${__dirname} ` : ''}--reset-window`, 336 arguments: `${isDevMode ? `${__dirname} ` : ''}--reset-window`,
266 iconPath: path.join(`${__dirname}`, '../src/assets/images/taskbar/win32/display.ico'), 337 iconPath: asarPath(path.join(isDevMode ? `${__dirname}../src/` : __dirname, 'assets/images/taskbar/win32/display.ico')),
267 iconIndex: 0, 338 iconIndex: 0,
268 title: 'Move Franz to Current Display', 339 title: 'Move Franz to Current Display',
269 description: 'Restore the position and size of Franz', 340 description: 'Restore the position and size of Franz',
341 }, {
342 program: process.execPath,
343 arguments: `${isDevMode ? `${__dirname} ` : ''}--quit`,
344 iconIndex: 0,
345 title: 'Quit Franz',
270 }]); 346 }]);
271 } 347 }
272 348
@@ -317,7 +393,10 @@ app.on('window-all-closed', () => {
317 // to stay active until the user quits explicitly with Cmd + Q 393 // to stay active until the user quits explicitly with Cmd + Q
318 if (settings.get('runInBackground') === undefined 394 if (settings.get('runInBackground') === undefined
319 || settings.get('runInBackground')) { 395 || settings.get('runInBackground')) {
396 debug('Window: all windows closed, quit app');
320 app.quit(); 397 app.quit();
398 } else {
399 debug('Window: don\'t quit app');
321 } 400 }
322}); 401});
323 402
@@ -336,13 +415,13 @@ app.on('activate', () => {
336}); 415});
337 416
338app.on('will-finish-launching', () => { 417app.on('will-finish-launching', () => {
339 // Protocol handler for osx 418 // Protocol handler for macOS
340 app.on('open-url', (event, url) => { 419 app.on('open-url', (event, url) => {
341 event.preventDefault(); 420 event.preventDefault();
342 console.log(`open-url event: ${url}`); 421
343 handleDeepLink(mainWindow, url); 422 onDidLoad((window) => {
423 debug('open-url event', url);
424 handleDeepLink(window, url);
425 });
344 }); 426 });
345}); 427});
346
347// Register App URL
348app.setAsDefaultProtocolClient('franz');
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index c378619ad..da2540274 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -1,8 +1,13 @@
1import { remote, shell } from 'electron'; 1import { remote, shell } from 'electron';
2import { observable, autorun, computed } from 'mobx'; 2import { observable, autorun } from 'mobx';
3import { defineMessages } from 'react-intl'; 3import { defineMessages } from 'react-intl';
4 4
5import { isMac, ctrlKey, cmdKey } from '../environment'; 5import { isMac, ctrlKey, cmdKey } from '../environment';
6import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../features/workspaces/index';
7import { workspaceActions } from '../features/workspaces/actions';
8import { gaEvent } from './analytics';
9import { announcementActions } from '../features/announcements/actions';
10import { announcementsStore } from '../features/announcements';
6 11
7const { app, Menu, dialog } = remote; 12const { app, Menu, dialog } = remote;
8 13
@@ -155,6 +160,10 @@ const menuItems = defineMessages({
155 id: 'menu.app.about', 160 id: 'menu.app.about',
156 defaultMessage: '!!!About Franz', 161 defaultMessage: '!!!About Franz',
157 }, 162 },
163 announcement: {
164 id: 'menu.app.announcement',
165 defaultMessage: '!!!What\'s new?',
166 },
158 settings: { 167 settings: {
159 id: 'menu.app.settings', 168 id: 'menu.app.settings',
160 defaultMessage: '!!!Settings', 169 defaultMessage: '!!!Settings',
@@ -179,6 +188,42 @@ const menuItems = defineMessages({
179 id: 'menu.services.addNewService', 188 id: 'menu.services.addNewService',
180 defaultMessage: '!!!Add New Service...', 189 defaultMessage: '!!!Add New Service...',
181 }, 190 },
191 addNewWorkspace: {
192 id: 'menu.workspaces.addNewWorkspace',
193 defaultMessage: '!!!Add New Workspace...',
194 },
195 openWorkspaceDrawer: {
196 id: 'menu.workspaces.openWorkspaceDrawer',
197 defaultMessage: '!!!Open workspace drawer',
198 },
199 closeWorkspaceDrawer: {
200 id: 'menu.workspaces.closeWorkspaceDrawer',
201 defaultMessage: '!!!Close workspace drawer',
202 },
203 activateNextService: {
204 id: 'menu.services.setNextServiceActive',
205 defaultMessage: '!!!Activate next service...',
206 },
207 activatePreviousService: {
208 id: 'menu.services.activatePreviousService',
209 defaultMessage: '!!!Activate previous service...',
210 },
211 muteApp: {
212 id: 'sidebar.muteApp',
213 defaultMessage: '!!!Disable notifications & audio',
214 },
215 unmuteApp: {
216 id: 'sidebar.unmuteApp',
217 defaultMessage: '!!!Enable notifications & audio',
218 },
219 workspaces: {
220 id: 'menu.workspaces',
221 defaultMessage: '!!!Workspaces',
222 },
223 defaultWorkspace: {
224 id: 'menu.workspaces.defaultWorkspace',
225 defaultMessage: '!!!Default',
226 },
182}); 227});
183 228
184function getActiveWebview() { 229function getActiveWebview() {
@@ -239,16 +284,32 @@ const _templateFactory = intl => [
239 }, 284 },
240 { 285 {
241 label: intl.formatMessage(menuItems.resetZoom), 286 label: intl.formatMessage(menuItems.resetZoom),
242 role: 'resetzoom', 287 accelerator: 'Cmd+0',
288 click() {
289 getActiveWebview().setZoomLevel(0);
290 },
243 }, 291 },
244 { 292 {
245 label: intl.formatMessage(menuItems.zoomIn), 293 label: intl.formatMessage(menuItems.zoomIn),
246 // accelerator: 'Cmd+=', 294 accelerator: 'Cmd+plus',
247 role: 'zoomin', 295 click() {
296 const activeService = getActiveWebview();
297 activeService.getZoomLevel((level) => {
298 // level 9 =~ +300% and setZoomLevel wouldnt zoom in further
299 if (level < 9) activeService.setZoomLevel(level + 1);
300 });
301 },
248 }, 302 },
249 { 303 {
250 label: intl.formatMessage(menuItems.zoomOut), 304 label: intl.formatMessage(menuItems.zoomOut),
251 role: 'zoomout', 305 accelerator: 'Cmd+-',
306 click() {
307 const activeService = getActiveWebview();
308 activeService.getZoomLevel((level) => {
309 // level -9 =~ -50% and setZoomLevel wouldnt zoom out further
310 if (level > -9) activeService.setZoomLevel(level - 1);
311 });
312 },
252 }, 313 },
253 { 314 {
254 type: 'separator', 315 type: 'separator',
@@ -266,6 +327,11 @@ const _templateFactory = intl => [
266 submenu: [], 327 submenu: [],
267 }, 328 },
268 { 329 {
330 label: intl.formatMessage(menuItems.workspaces),
331 submenu: [],
332 visible: workspaceStore.isFeatureEnabled,
333 },
334 {
269 label: intl.formatMessage(menuItems.window), 335 label: intl.formatMessage(menuItems.window),
270 role: 'window', 336 role: 'window',
271 submenu: [ 337 submenu: [
@@ -288,8 +354,11 @@ const _templateFactory = intl => [
288 click() { shell.openExternal('https://meetfranz.com'); }, 354 click() { shell.openExternal('https://meetfranz.com'); },
289 }, 355 },
290 { 356 {
291 label: intl.formatMessage(menuItems.changelog), 357 label: intl.formatMessage(menuItems.announcement),
292 click() { shell.openExternal('https://github.com/meetfranz/franz/blob/master/CHANGELOG.md'); }, 358 click: () => {
359 announcementActions.show();
360 },
361 visible: window.franz.stores.user.isLoggedIn && announcementsStore.areNewsAvailable,
293 }, 362 },
294 { 363 {
295 type: 'separator', 364 type: 'separator',
@@ -392,10 +461,12 @@ const _titleBarTemplateFactory = intl => [
392 }, 461 },
393 { 462 {
394 label: intl.formatMessage(menuItems.zoomIn), 463 label: intl.formatMessage(menuItems.zoomIn),
395 accelerator: `${ctrlKey}+Plus`, 464 accelerator: `${ctrlKey}+=`,
396 click() { 465 click() {
397 getActiveWebview().getZoomLevel((zoomLevel) => { 466 const activeService = getActiveWebview();
398 getActiveWebview().setZoomLevel(zoomLevel === 5 ? zoomLevel : zoomLevel + 1); 467 activeService.getZoomLevel((level) => {
468 // level 9 =~ +300% and setZoomLevel wouldnt zoom in further
469 if (level < 9) activeService.setZoomLevel(level + 1);
399 }); 470 });
400 }, 471 },
401 }, 472 },
@@ -403,8 +474,10 @@ const _titleBarTemplateFactory = intl => [
403 label: intl.formatMessage(menuItems.zoomOut), 474 label: intl.formatMessage(menuItems.zoomOut),
404 accelerator: `${ctrlKey}+-`, 475 accelerator: `${ctrlKey}+-`,
405 click() { 476 click() {
406 getActiveWebview().getZoomLevel((zoomLevel) => { 477 const activeService = getActiveWebview();
407 getActiveWebview().setZoomLevel(zoomLevel === -5 ? zoomLevel : zoomLevel - 1); 478 activeService.getZoomLevel((level) => {
479 // level -9 =~ -50% and setZoomLevel wouldnt zoom out further
480 if (level > -9) activeService.setZoomLevel(level - 1);
408 }); 481 });
409 }, 482 },
410 }, 483 },
@@ -499,13 +572,14 @@ export default class FranzMenu {
499 } 572 }
500 573
501 _build() { 574 _build() {
502 const serviceTpl = Object.assign([], this.serviceTpl); // need to clone object so we don't modify computed (cached) object 575 // need to clone object so we don't modify computed (cached) object
576 const serviceTpl = Object.assign([], this.serviceTpl());
503 577
504 if (window.franz === undefined) { 578 if (window.franz === undefined) {
505 return; 579 return;
506 } 580 }
507 581
508 const intl = window.franz.intl; 582 const { intl } = window.franz;
509 const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl); 583 const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl);
510 584
511 tpl[1].submenu.push({ 585 tpl[1].submenu.push({
@@ -632,7 +706,7 @@ export default class FranzMenu {
632 }, 706 },
633 ); 707 );
634 708
635 tpl[4].submenu.unshift(about, { 709 tpl[5].submenu.unshift(about, {
636 type: 'separator', 710 type: 'separator',
637 }); 711 });
638 } else { 712 } else {
@@ -663,42 +737,122 @@ export default class FranzMenu {
663 }, about); 737 }, about);
664 } 738 }
665 739
666 serviceTpl.unshift({ 740 if (serviceTpl.length > 0) {
741 tpl[3].submenu = serviceTpl;
742 }
743
744 if (workspaceStore.isFeatureEnabled) {
745 tpl[4].submenu = this.workspacesMenu();
746 }
747
748 this.currentTemplate = tpl;
749 const menu = Menu.buildFromTemplate(tpl);
750 Menu.setApplicationMenu(menu);
751 }
752
753 serviceTpl() {
754 const { intl } = window.franz;
755 const { user, services, settings } = this.stores;
756 if (!user.isLoggedIn) return [];
757 const menu = [];
758
759 menu.push({
667 label: intl.formatMessage(menuItems.addNewService), 760 label: intl.formatMessage(menuItems.addNewService),
668 accelerator: `${cmdKey}+N`, 761 accelerator: `${cmdKey}+N`,
669 click: () => { 762 click: () => {
670 this.actions.ui.openSettings({ path: 'recipes' }); 763 this.actions.ui.openSettings({ path: 'recipes' });
671 }, 764 },
672 enabled: this.stores.user.isLoggedIn, 765 }, {
766 type: 'separator',
767 }, {
768 label: intl.formatMessage(menuItems.activateNextService),
769 accelerator: `${cmdKey}+alt+right`,
770 click: () => this.actions.service.setActiveNext(),
771 }, {
772 label: intl.formatMessage(menuItems.activatePreviousService),
773 accelerator: `${cmdKey}+alt+left`,
774 click: () => this.actions.service.setActivePrev(),
775 }, {
776 label: intl.formatMessage(
777 settings.all.app.isAppMuted ? menuItems.unmuteApp : menuItems.muteApp,
778 ).replace('&', '&&'),
779 accelerator: `${cmdKey}+shift+m`,
780 click: () => this.actions.app.toggleMuteApp(),
673 }, { 781 }, {
674 type: 'separator', 782 type: 'separator',
675 }); 783 });
676 784
677 if (serviceTpl.length > 0) { 785 services.allDisplayed.forEach((service, i) => (menu.push({
678 tpl[3].submenu = serviceTpl; 786 label: this._getServiceName(service),
679 } 787 accelerator: i < 9 ? `${cmdKey}+${i + 1}` : null,
788 type: 'radio',
789 checked: service.isActive,
790 click: () => {
791 this.actions.service.setActive({ serviceId: service.id });
792 },
793 })));
680 794
681 this.currentTemplate = tpl; 795 return menu;
682 const menu = Menu.buildFromTemplate(tpl);
683 Menu.setApplicationMenu(menu);
684 } 796 }
685 797
686 @computed get serviceTpl() { 798 workspacesMenu() {
687 const services = this.stores.services.allDisplayed; 799 const { workspaces, activeWorkspace, isWorkspaceDrawerOpen } = workspaceStore;
800 const { intl } = window.franz;
801 const menu = [];
802
803 // Add new workspace item:
804 menu.push({
805 label: intl.formatMessage(menuItems.addNewWorkspace),
806 accelerator: `${cmdKey}+Shift+N`,
807 click: () => {
808 workspaceActions.openWorkspaceSettings();
809 },
810 enabled: this.stores.user.isLoggedIn,
811 });
812
813 // Open workspace drawer:
814 const drawerLabel = (
815 isWorkspaceDrawerOpen ? menuItems.closeWorkspaceDrawer : menuItems.openWorkspaceDrawer
816 );
817 menu.push({
818 label: intl.formatMessage(drawerLabel),
819 accelerator: `${cmdKey}+D`,
820 click: () => {
821 workspaceActions.toggleWorkspaceDrawer();
822 gaEvent(GA_CATEGORY_WORKSPACES, 'toggleDrawer', 'menu');
823 },
824 enabled: this.stores.user.isLoggedIn,
825 }, {
826 type: 'separator',
827 });
828
829 // Default workspace
830 menu.push({
831 label: intl.formatMessage(menuItems.defaultWorkspace),
832 accelerator: `${cmdKey}+Alt+0`,
833 type: 'radio',
834 checked: !activeWorkspace,
835 click: () => {
836 workspaceActions.deactivate();
837 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'menu');
838 },
839 });
688 840
689 if (this.stores.user.isLoggedIn) { 841 // Workspace items
690 return services.map((service, i) => ({ 842 if (this.stores.user.isPremium) {
691 label: this._getServiceName(service), 843 workspaces.forEach((workspace, i) => menu.push({
692 accelerator: i < 9 ? `${cmdKey}+${i + 1}` : null, 844 label: workspace.name,
845 accelerator: i < 9 ? `${cmdKey}+Alt+${i + 1}` : null,
693 type: 'radio', 846 type: 'radio',
694 checked: service.isActive, 847 checked: activeWorkspace ? workspace.id === activeWorkspace.id : false,
695 click: () => { 848 click: () => {
696 this.actions.service.setActive({ serviceId: service.id }); 849 workspaceActions.activate({ workspace });
850 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'menu');
697 }, 851 },
698 })); 852 }));
699 } 853 }
700 854
701 return []; 855 return menu;
702 } 856 }
703 857
704 _getServiceName(service) { 858 _getServiceName(service) {
diff --git a/src/lib/Tray.js b/src/lib/Tray.js
index 669b02709..192e24796 100644
--- a/src/lib/Tray.js
+++ b/src/lib/Tray.js
@@ -22,7 +22,11 @@ export default class TrayIcon {
22 { 22 {
23 label: 'Show Franz', 23 label: 'Show Franz',
24 click() { 24 click() {
25 if (app.mainWindow.isMinimized()) {
26 app.mainWindow.restore();
27 }
25 app.mainWindow.show(); 28 app.mainWindow.show();
29 app.mainWindow.focus();
26 }, 30 },
27 }, { 31 }, {
28 label: 'Quit Franz', 32 label: 'Quit Franz',
@@ -36,7 +40,11 @@ export default class TrayIcon {
36 this.trayIcon.setContextMenu(trayMenu); 40 this.trayIcon.setContextMenu(trayMenu);
37 41
38 this.trayIcon.on('click', () => { 42 this.trayIcon.on('click', () => {
43 if (app.mainWindow.isMinimized()) {
44 app.mainWindow.restore();
45 }
39 app.mainWindow.show(); 46 app.mainWindow.show();
47 app.mainWindow.focus();
40 }); 48 });
41 49
42 if (process.platform === 'darwin') { 50 if (process.platform === 'darwin') {
diff --git a/src/lib/analytics.js b/src/lib/analytics.js
index 7044e5bb7..c305fdb00 100644
--- a/src/lib/analytics.js
+++ b/src/lib/analytics.js
@@ -1,5 +1,8 @@
1import { remote } from 'electron'; 1import { remote } from 'electron';
2import { GA_ID } from '../config'; 2import querystring from 'querystring';
3
4import { GA_ID, STATS_API } from '../config';
5import { isDevMode } from '../environment';
3 6
4const debug = require('debug')('Franz:Analytics'); 7const debug = require('debug')('Franz:Analytics');
5 8
@@ -28,16 +31,25 @@ ga('send', 'App');
28 31
29export function gaPage(page) { 32export function gaPage(page) {
30 ga('send', 'pageview', page); 33 ga('send', 'pageview', page);
31
32 debug('GA track page', page); 34 debug('GA track page', page);
33} 35}
34 36
35export function gaEvent(category, action, label) { 37export function gaEvent(category, action, label) {
36 ga('send', 'event', category, action, label); 38 ga('send', 'event', category, action, label);
37 39 debug('GA track event', category, action, label);
38 debug('GA track event', category, action);
39} 40}
40 41
41setTimeout(() => { 42export function statsEvent(key, value) {
42 ga('send', 'Ping'); 43 const params = {
43}, 1000 * 60 * 10); // Ping GA every 10 Minutes 44 key,
45 value: value || key,
46 platform: process.platform,
47 version: remote.app.getVersion(),
48 };
49
50 debug('Send Franz stats event', params);
51
52 if (!isDevMode) {
53 window.fetch(`${STATS_API}/event/?${querystring.stringify(params)}`);
54 }
55}
diff --git a/src/models/Service.js b/src/models/Service.js
index eee8df8ca..8a2a8d3d8 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -202,7 +202,7 @@ export default class Service {
202 202
203 this.webview.addEventListener('did-fail-load', (event) => { 203 this.webview.addEventListener('did-fail-load', (event) => {
204 debug('Service failed to load', this.name, event); 204 debug('Service failed to load', this.name, event);
205 if (event.isMainFrame && event.errorCode !== -27 && event.errorCode !== -3) { 205 if (event.isMainFrame && event.errorCode !== -21 && event.errorCode !== -3) {
206 this.isError = true; 206 this.isError = true;
207 this.errorMessage = event.errorDescription; 207 this.errorMessage = event.errorDescription;
208 this.isLoading = false; 208 this.isLoading = false;
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index dd4642d70..72c4b4d0b 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -1,21 +1,25 @@
1import { remote, ipcRenderer, shell } from 'electron'; 1import { remote, ipcRenderer, shell } from 'electron';
2import { action, computed, observable } from 'mobx'; 2import {
3 action, computed, observable, reaction,
4} from 'mobx';
3import moment from 'moment'; 5import moment from 'moment';
4import key from 'keymaster';
5import { getDoNotDisturb } from '@meetfranz/electron-notification-state'; 6import { getDoNotDisturb } from '@meetfranz/electron-notification-state';
6import AutoLaunch from 'auto-launch'; 7import AutoLaunch from 'auto-launch';
7import prettyBytes from 'pretty-bytes'; 8import prettyBytes from 'pretty-bytes';
9import ms from 'ms';
10import { URL } from 'url';
8 11
9import Store from './lib/Store'; 12import Store from './lib/Store';
10import Request from './lib/Request'; 13import Request from './lib/Request';
11import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config'; 14import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config';
12import { isMac, isLinux, isWindows } from '../environment'; 15import { isMac } from '../environment';
13import locales from '../i18n/translations'; 16import locales from '../i18n/translations';
14import { gaEvent } from '../lib/analytics'; 17import { gaEvent, gaPage, statsEvent } from '../lib/analytics';
15import { onVisibilityChange } from '../helpers/visibility-helper'; 18import { onVisibilityChange } from '../helpers/visibility-helper';
16import { getLocale } from '../helpers/i18n-helpers'; 19import { getLocale } from '../helpers/i18n-helpers';
17 20
18import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; 21import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js';
22import { isValidExternalURL } from '../helpers/url-helpers';
19 23
20const debug = require('debug')('Franz:AppStore'); 24const debug = require('debug')('Franz:AppStore');
21 25
@@ -63,6 +67,8 @@ export default class AppStore extends Store {
63 67
64 @observable isFocused = true; 68 @observable isFocused = true;
65 69
70 @observable nextAppReleaseVersion = null;
71
66 dictionaries = []; 72 dictionaries = [];
67 73
68 constructor(...args) { 74 constructor(...args) {
@@ -110,16 +116,16 @@ export default class AppStore extends Store {
110 // Check if system is muted 116 // Check if system is muted
111 // There are no events to subscribe so we need to poll everey 5s 117 // There are no events to subscribe so we need to poll everey 5s
112 this._systemDND(); 118 this._systemDND();
113 setInterval(() => this._systemDND(), 5000); 119 setInterval(() => this._systemDND(), ms('5s'));
114 120
115 // Check for updates once every 4 hours 121 // Check for updates once every 4 hours
116 setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); 122 setInterval(() => this._checkForUpdates(), CHECK_INTERVAL);
117 // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) 123 // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues)
118 setTimeout(() => this._checkForUpdates(), 30000); 124 setTimeout(() => this._checkForUpdates(), ms('30s'));
119 ipcRenderer.on('autoUpdate', (event, data) => { 125 ipcRenderer.on('autoUpdate', (event, data) => {
120 if (data.available) { 126 if (data.available) {
121 this.updateStatus = this.updateStatusTypes.AVAILABLE; 127 this.updateStatus = this.updateStatusTypes.AVAILABLE;
122 128 this.nextAppReleaseVersion = data.version;
123 if (isMac) { 129 if (isMac) {
124 app.dock.bounce(); 130 app.dock.bounce();
125 } 131 }
@@ -143,32 +149,14 @@ export default class AppStore extends Store {
143 149
144 // Handle deep linking (franz://) 150 // Handle deep linking (franz://)
145 ipcRenderer.on('navigateFromDeepLink', (event, data) => { 151 ipcRenderer.on('navigateFromDeepLink', (event, data) => {
146 const { url } = data; 152 debug('Navigate from deep link', data);
153 let { url } = data;
147 if (!url) return; 154 if (!url) return;
148 155
149 this.stores.router.push(data.url); 156 url = url.replace(/\/$/, '');
150 });
151
152 // Set active the next service
153 key(
154 '⌘+pagedown, ctrl+pagedown, ⌘+alt+right, ctrl+tab', () => {
155 this.actions.service.setActiveNext();
156 },
157 );
158 157
159 // Set active the prev service 158 this.stores.router.push(url);
160 key( 159 });
161 '⌘+pageup, ctrl+pageup, ⌘+alt+left, ctrl+shift+tab', () => {
162 this.actions.service.setActivePrev();
163 },
164 );
165
166 // Global Mute
167 key(
168 '⌘+shift+m ctrl+shift+m', () => {
169 this.actions.app.toggleMuteApp();
170 },
171 );
172 160
173 this.locale = this._getDefaultLocale(); 161 this.locale = this._getDefaultLocale();
174 162
@@ -181,6 +169,13 @@ export default class AppStore extends Store {
181 169
182 debug('Window is visible/focused', isVisible); 170 debug('Window is visible/focused', isVisible);
183 }); 171 });
172
173 // analytics autorun
174 reaction(() => this.stores.router.location.pathname, (pathname) => {
175 gaPage(pathname);
176 });
177
178 statsEvent('app-start');
184 } 179 }
185 180
186 @computed get cacheSize() { 181 @computed get cacheSize() {
@@ -193,7 +188,15 @@ export default class AppStore extends Store {
193 }) { 188 }) {
194 if (this.stores.settings.all.app.isAppMuted) return; 189 if (this.stores.settings.all.app.isAppMuted) return;
195 190
191 // TODO: is there a simple way to use blobs for notifications without storing them on disk?
192 if (options.icon.startsWith('blob:')) {
193 delete options.icon;
194 }
195
196 const notification = new window.Notification(title, options); 196 const notification = new window.Notification(title, options);
197
198 debug('New notification', title, options);
199
197 notification.onclick = (e) => { 200 notification.onclick = (e) => {
198 if (serviceId) { 201 if (serviceId) {
199 this.actions.service.sendIPCMessage({ 202 this.actions.service.sendIPCMessage({
@@ -203,12 +206,13 @@ export default class AppStore extends Store {
203 }); 206 });
204 207
205 this.actions.service.setActive({ serviceId }); 208 this.actions.service.setActive({ serviceId });
206 209 mainWindow.show();
207 if (isWindows) { 210 if (app.mainWindow.isMinimized()) {
208 mainWindow.restore(); 211 mainWindow.restore();
209 } else if (isLinux) {
210 mainWindow.show();
211 } 212 }
213 mainWindow.focus();
214
215 debug('Notification click handler');
212 } 216 }
213 }; 217 };
214 } 218 }
@@ -244,7 +248,14 @@ export default class AppStore extends Store {
244 } 248 }
245 249
246 @action _openExternalUrl({ url }) { 250 @action _openExternalUrl({ url }) {
247 shell.openExternal(url); 251 const parsedUrl = new URL(url);
252 debug('open external url', parsedUrl);
253
254 if (isValidExternalURL(url)) {
255 shell.openExternal(url);
256 }
257
258 gaEvent('External URL', 'open', parsedUrl.host);
248 } 259 }
249 260
250 @action _checkForUpdates() { 261 @action _checkForUpdates() {
@@ -268,7 +279,6 @@ export default class AppStore extends Store {
268 279
269 @action _muteApp({ isMuted, overrideSystemMute = true }) { 280 @action _muteApp({ isMuted, overrideSystemMute = true }) {
270 this.isSystemMuteOverridden = overrideSystemMute; 281 this.isSystemMuteOverridden = overrideSystemMute;
271
272 this.actions.settings.update({ 282 this.actions.settings.update({
273 type: 'app', 283 type: 'app',
274 data: { 284 data: {
@@ -305,7 +315,7 @@ export default class AppStore extends Store {
305 } else { 315 } else {
306 const deltaTime = moment().diff(this.timeOfflineStart); 316 const deltaTime = moment().diff(this.timeOfflineStart);
307 317
308 if (deltaTime > 30 * 60 * 1000) { 318 if (deltaTime > ms('30m')) {
309 this.actions.service.reloadAll(); 319 this.actions.service.reloadAll();
310 } 320 }
311 } 321 }
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
index 0adee6adf..e7832088b 100644
--- a/src/stores/FeaturesStore.js
+++ b/src/stores/FeaturesStore.js
@@ -1,4 +1,9 @@
1import { computed, observable, reaction } from 'mobx'; 1import {
2 computed,
3 observable,
4 reaction,
5 runInAction,
6} from 'mobx';
2 7
3import Store from './lib/Store'; 8import Store from './lib/Store';
4import CachedRequest from './lib/CachedRequest'; 9import CachedRequest from './lib/CachedRequest';
@@ -7,6 +12,10 @@ import delayApp from '../features/delayApp';
7import spellchecker from '../features/spellchecker'; 12import spellchecker from '../features/spellchecker';
8import serviceProxy from '../features/serviceProxy'; 13import serviceProxy from '../features/serviceProxy';
9import basicAuth from '../features/basicAuth'; 14import basicAuth from '../features/basicAuth';
15import workspaces from '../features/workspaces';
16import shareFranz from '../features/shareFranz';
17import announcements from '../features/announcements';
18import settingsWS from '../features/settingsWS';
10 19
11import { DEFAULT_FEATURES_CONFIG } from '../config'; 20import { DEFAULT_FEATURES_CONFIG } from '../config';
12 21
@@ -15,13 +24,16 @@ export default class FeaturesStore extends Store {
15 24
16 @observable featuresRequest = new CachedRequest(this.api.features, 'features'); 25 @observable featuresRequest = new CachedRequest(this.api.features, 'features');
17 26
27 @observable features = Object.assign({}, DEFAULT_FEATURES_CONFIG);
28
18 async setup() { 29 async setup() {
19 this.registerReactions([ 30 this.registerReactions([
31 this._updateFeatures,
20 this._monitorLoginStatus.bind(this), 32 this._monitorLoginStatus.bind(this),
21 ]); 33 ]);
22 34
23 await this.featuresRequest._promise; 35 await this.featuresRequest._promise;
24 setTimeout(this._enableFeatures.bind(this), 1); 36 setTimeout(this._setupFeatures.bind(this), 1);
25 37
26 // single key reaction 38 // single key reaction
27 reaction(() => this.stores.user.data.isPremium, () => { 39 reaction(() => this.stores.user.data.isPremium, () => {
@@ -35,13 +47,16 @@ export default class FeaturesStore extends Store {
35 return this.defaultFeaturesRequest.execute().result || DEFAULT_FEATURES_CONFIG; 47 return this.defaultFeaturesRequest.execute().result || DEFAULT_FEATURES_CONFIG;
36 } 48 }
37 49
38 @computed get features() { 50 _updateFeatures = () => {
51 const features = Object.assign({}, DEFAULT_FEATURES_CONFIG);
39 if (this.stores.user.isLoggedIn) { 52 if (this.stores.user.isLoggedIn) {
40 return this.featuresRequest.execute().result || DEFAULT_FEATURES_CONFIG; 53 const requestResult = this.featuresRequest.execute().result;
54 Object.assign(features, requestResult);
41 } 55 }
42 56 runInAction('FeaturesStore::_updateFeatures', () => {
43 return DEFAULT_FEATURES_CONFIG; 57 this.features = features;
44 } 58 });
59 };
45 60
46 _monitorLoginStatus() { 61 _monitorLoginStatus() {
47 if (this.stores.user.isLoggedIn) { 62 if (this.stores.user.isLoggedIn) {
@@ -51,10 +66,14 @@ export default class FeaturesStore extends Store {
51 } 66 }
52 } 67 }
53 68
54 _enableFeatures() { 69 _setupFeatures() {
55 delayApp(this.stores, this.actions); 70 delayApp(this.stores, this.actions);
56 spellchecker(this.stores, this.actions); 71 spellchecker(this.stores, this.actions);
57 serviceProxy(this.stores, this.actions); 72 serviceProxy(this.stores, this.actions);
58 basicAuth(this.stores, this.actions); 73 basicAuth(this.stores, this.actions);
74 workspaces(this.stores, this.actions);
75 shareFranz(this.stores, this.actions);
76 announcements(this.stores, this.actions);
77 settingsWS(this.stores, this.actions);
59 } 78 }
60} 79}
diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js
index 4cabee194..d4de476c8 100644
--- a/src/stores/PaymentStore.js
+++ b/src/stores/PaymentStore.js
@@ -10,15 +10,10 @@ export default class PaymentStore extends Store {
10 10
11 @observable createHostedPageRequest = new Request(this.api.payment, 'getHostedPage'); 11 @observable createHostedPageRequest = new Request(this.api.payment, 'getHostedPage');
12 12
13 @observable createDashboardUrlRequest = new Request(this.api.payment, 'getDashboardUrl');
14
15 @observable ordersDataRequest = new CachedRequest(this.api.payment, 'getOrders');
16
17 constructor(...args) { 13 constructor(...args) {
18 super(...args); 14 super(...args);
19 15
20 this.actions.payment.createHostedPage.listen(this._createHostedPage.bind(this)); 16 this.actions.payment.createHostedPage.listen(this._createHostedPage.bind(this));
21 this.actions.payment.createDashboardUrl.listen(this._createDashboardUrl.bind(this));
22 } 17 }
23 18
24 @computed get plan() { 19 @computed get plan() {
@@ -28,10 +23,6 @@ export default class PaymentStore extends Store {
28 return this.plansRequest.execute().result || {}; 23 return this.plansRequest.execute().result || {};
29 } 24 }
30 25
31 @computed get orders() {
32 return this.ordersDataRequest.execute().result || [];
33 }
34
35 @action _createHostedPage({ planId }) { 26 @action _createHostedPage({ planId }) {
36 const request = this.createHostedPageRequest.execute(planId); 27 const request = this.createHostedPageRequest.execute(planId);
37 28
@@ -39,12 +30,4 @@ export default class PaymentStore extends Store {
39 30
40 return request; 31 return request;
41 } 32 }
42
43 @action _createDashboardUrl() {
44 const request = this.createDashboardUrlRequest.execute();
45
46 gaEvent('Payment', 'createDashboardUrl');
47
48 return request;
49 }
50} 33}
diff --git a/src/stores/RecipePreviewsStore.js b/src/stores/RecipePreviewsStore.js
index 10b2928e3..382820d58 100644
--- a/src/stores/RecipePreviewsStore.js
+++ b/src/stores/RecipePreviewsStore.js
@@ -1,5 +1,6 @@
1import { action, computed, observable } from 'mobx'; 1import { action, computed, observable } from 'mobx';
2import { debounce } from 'lodash'; 2import { debounce } from 'lodash';
3import ms from 'ms';
3 4
4import Store from './lib/Store'; 5import Store from './lib/Store';
5import CachedRequest from './lib/CachedRequest'; 6import CachedRequest from './lib/CachedRequest';
@@ -48,5 +49,5 @@ export default class RecipePreviewsStore extends Store {
48 // Helper 49 // Helper
49 _analyticsSearch = debounce((needle) => { 50 _analyticsSearch = debounce((needle) => {
50 gaEvent('Recipe', 'search', needle); 51 gaEvent('Recipe', 'search', needle);
51 }, 3000); 52 }, ms('3s'));
52} 53}
diff --git a/src/stores/RequestStore.js b/src/stores/RequestStore.js
index 2629e0a38..9254e3223 100644
--- a/src/stores/RequestStore.js
+++ b/src/stores/RequestStore.js
@@ -1,4 +1,5 @@
1import { action, computed, observable } from 'mobx'; 1import { action, computed, observable } from 'mobx';
2import ms from 'ms';
2 3
3import Store from './lib/Store'; 4import Store from './lib/Store';
4 5
@@ -13,7 +14,7 @@ export default class RequestStore extends Store {
13 14
14 retries = 0; 15 retries = 0;
15 16
16 retryDelay = 2000; 17 retryDelay = ms('2s');
17 18
18 constructor(...args) { 19 constructor(...args) {
19 super(...args); 20 super(...args);
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index efd57a09d..13f929c2f 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -5,12 +5,14 @@ import {
5 observable, 5 observable,
6} from 'mobx'; 6} from 'mobx';
7import { debounce, remove } from 'lodash'; 7import { debounce, remove } from 'lodash';
8import ms from 'ms';
8 9
9import Store from './lib/Store'; 10import Store from './lib/Store';
10import Request from './lib/Request'; 11import Request from './lib/Request';
11import CachedRequest from './lib/CachedRequest'; 12import CachedRequest from './lib/CachedRequest';
12import { matchRoute } from '../helpers/routing-helpers'; 13import { matchRoute } from '../helpers/routing-helpers';
13import { gaEvent } from '../lib/analytics'; 14import { gaEvent, statsEvent } from '../lib/analytics';
15import { workspaceStore } from '../features/workspaces';
14 16
15const debug = require('debug')('Franz:ServiceStore'); 17const debug = require('debug')('Franz:ServiceStore');
16 18
@@ -34,6 +36,7 @@ export default class ServicesStore extends Store {
34 36
35 // Register action handlers 37 // Register action handlers
36 this.actions.service.setActive.listen(this._setActive.bind(this)); 38 this.actions.service.setActive.listen(this._setActive.bind(this));
39 this.actions.service.blurActive.listen(this._blurActive.bind(this));
37 this.actions.service.setActiveNext.listen(this._setActiveNext.bind(this)); 40 this.actions.service.setActiveNext.listen(this._setActiveNext.bind(this));
38 this.actions.service.setActivePrev.listen(this._setActivePrev.bind(this)); 41 this.actions.service.setActivePrev.listen(this._setActivePrev.bind(this));
39 this.actions.service.showAddServiceInterface.listen(this._showAddServiceInterface.bind(this)); 42 this.actions.service.showAddServiceInterface.listen(this._showAddServiceInterface.bind(this));
@@ -43,6 +46,7 @@ export default class ServicesStore extends Store {
43 this.actions.service.deleteService.listen(this._deleteService.bind(this)); 46 this.actions.service.deleteService.listen(this._deleteService.bind(this));
44 this.actions.service.clearCache.listen(this._clearCache.bind(this)); 47 this.actions.service.clearCache.listen(this._clearCache.bind(this));
45 this.actions.service.setWebviewReference.listen(this._setWebviewReference.bind(this)); 48 this.actions.service.setWebviewReference.listen(this._setWebviewReference.bind(this));
49 this.actions.service.detachService.listen(this._detachService.bind(this));
46 this.actions.service.focusService.listen(this._focusService.bind(this)); 50 this.actions.service.focusService.listen(this._focusService.bind(this));
47 this.actions.service.focusActiveService.listen(this._focusActiveService.bind(this)); 51 this.actions.service.focusActiveService.listen(this._focusActiveService.bind(this));
48 this.actions.service.toggleService.listen(this._toggleService.bind(this)); 52 this.actions.service.toggleService.listen(this._toggleService.bind(this));
@@ -97,7 +101,6 @@ export default class ServicesStore extends Store {
97 return observable(services.slice().slice().sort((a, b) => a.order - b.order)); 101 return observable(services.slice().slice().sort((a, b) => a.order - b.order));
98 } 102 }
99 } 103 }
100
101 return []; 104 return [];
102 } 105 }
103 106
@@ -106,13 +109,16 @@ export default class ServicesStore extends Store {
106 } 109 }
107 110
108 @computed get allDisplayed() { 111 @computed get allDisplayed() {
109 return this.stores.settings.all.app.showDisabledServices ? this.all : this.enabled; 112 const services = this.stores.settings.all.app.showDisabledServices ? this.all : this.enabled;
113 return workspaceStore.filterServicesByActiveWorkspace(services);
110 } 114 }
111 115
112 // This is just used to avoid unnecessary rerendering of resource-heavy webviews 116 // This is just used to avoid unnecessary rerendering of resource-heavy webviews
113 @computed get allDisplayedUnordered() { 117 @computed get allDisplayedUnordered() {
118 const { showDisabledServices } = this.stores.settings.all.app;
114 const services = this.allServicesRequest.execute().result || []; 119 const services = this.allServicesRequest.execute().result || [];
115 return this.stores.settings.all.app.showDisabledServices ? services : services.filter(service => service.isEnabled); 120 const filteredServices = showDisabledServices ? services : services.filter(service => service.isEnabled);
121 return workspaceStore.filterServicesByActiveWorkspace(filteredServices);
116 } 122 }
117 123
118 @computed get filtered() { 124 @computed get filtered() {
@@ -293,9 +299,16 @@ export default class ServicesStore extends Store {
293 }); 299 });
294 service.isActive = true; 300 service.isActive = true;
295 301
302 statsEvent('activate-service', service.recipe.id);
303
296 this._focusActiveService(); 304 this._focusActiveService();
297 } 305 }
298 306
307 @action _blurActive() {
308 if (!this.active) return;
309 this.active.isActive = false;
310 }
311
299 @action _setActiveNext() { 312 @action _setActiveNext() {
300 const nextIndex = this._wrapIndex(this.allDisplayed.findIndex(service => service.isActive), 1, this.allDisplayed.length); 313 const nextIndex = this._wrapIndex(this.allDisplayed.findIndex(service => service.isActive), 1, this.allDisplayed.length);
301 314
@@ -340,6 +353,11 @@ export default class ServicesStore extends Store {
340 service.isAttached = true; 353 service.isAttached = true;
341 } 354 }
342 355
356 @action _detachService({ service }) {
357 service.webview = null;
358 service.isAttached = false;
359 }
360
343 @action _focusService({ serviceId }) { 361 @action _focusService({ serviceId }) {
344 const service = this.one(serviceId); 362 const service = this.one(serviceId);
345 363
@@ -679,7 +697,7 @@ export default class ServicesStore extends Store {
679 _initRecipePolling(serviceId) { 697 _initRecipePolling(serviceId) {
680 const service = this.one(serviceId); 698 const service = this.one(serviceId);
681 699
682 const delay = 2000; 700 const delay = ms('2s');
683 701
684 if (service) { 702 if (service) {
685 if (service.timer !== null) { 703 if (service.timer !== null) {
@@ -700,7 +718,7 @@ export default class ServicesStore extends Store {
700 718
701 _reorderAnalytics = debounce(() => { 719 _reorderAnalytics = debounce(() => {
702 gaEvent('Service', 'order'); 720 gaEvent('Service', 'order');
703 }, 5000); 721 }, ms('5s'));
704 722
705 _wrapIndex(index, delta, size) { 723 _wrapIndex(index, delta, size) {
706 return (((index + delta) % size) + size) % size; 724 return (((index + delta) % size) + size) % size;
diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js
index d37ebe4c7..a95a8e1e0 100644
--- a/src/stores/UIStore.js
+++ b/src/stores/UIStore.js
@@ -1,8 +1,7 @@
1import { action, observable, computed } from 'mobx'; 1import { action, observable, computed } from 'mobx';
2import { theme } from '@meetfranz/theme';
2 3
3import Store from './lib/Store'; 4import Store from './lib/Store';
4import * as themeDefault from '../theme/default';
5import * as themeDark from '../theme/dark';
6 5
7export default class UIStore extends Store { 6export default class UIStore extends Store {
8 @observable showServicesUpdatedInfoBar = false; 7 @observable showServicesUpdatedInfoBar = false;
@@ -22,12 +21,13 @@ export default class UIStore extends Store {
22 return (settings.app.isAppMuted && settings.app.showMessageBadgeWhenMuted) || !settings.isAppMuted; 21 return (settings.app.isAppMuted && settings.app.showMessageBadgeWhenMuted) || !settings.isAppMuted;
23 } 22 }
24 23
25 @computed get theme() { 24 @computed get isDarkThemeActive() {
26 if (this.stores.settings.all.app.darkMode) { 25 return this.stores.settings.all.app.darkMode;
27 return Object.assign({}, themeDefault, themeDark); 26 }
28 }
29 27
30 return themeDefault; 28 @computed get theme() {
29 if (this.isDarkThemeActive) return theme('dark');
30 return theme('default');
31 } 31 }
32 32
33 // Actions 33 // Actions
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index 7addb5760..31555dd5c 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -129,10 +129,6 @@ export default class UserStore extends Store {
129 return Boolean(localStorage.getItem('authToken')); 129 return Boolean(localStorage.getItem('authToken'));
130 } 130 }
131 131
132 // @computed get isTokenValid() {
133 // return this.authToken !== null && moment(this.tokenExpiry).isAfter(moment());
134 // }
135
136 @computed get isTokenExpired() { 132 @computed get isTokenExpired() {
137 if (!this.authToken) return false; 133 if (!this.authToken) return false;
138 134
@@ -146,6 +142,10 @@ export default class UserStore extends Store {
146 return this.getUserInfoRequest.execute().result || {}; 142 return this.getUserInfoRequest.execute().result || {};
147 } 143 }
148 144
145 @computed get isPremium() {
146 return !!this.data.isPremium;
147 }
148
149 @computed get legacyServices() { 149 @computed get legacyServices() {
150 return this.getLegacyServicesRequest.execute() || {}; 150 return this.getLegacyServicesRequest.execute() || {};
151 } 151 }
@@ -160,6 +160,14 @@ export default class UserStore extends Store {
160 gaEvent('User', 'login'); 160 gaEvent('User', 'login');
161 } 161 }
162 162
163 @action _tokenLogin(authToken) {
164 this._setUserData(authToken);
165
166 this.stores.router.push('/');
167
168 gaEvent('User', 'tokenLogin');
169 }
170
163 @action async _signup({ 171 @action async _signup({
164 firstname, lastname, email, password, accountType, company, 172 firstname, lastname, email, password, accountType, company,
165 }) { 173 }) {
@@ -170,6 +178,7 @@ export default class UserStore extends Store {
170 password, 178 password,
171 accountType, 179 accountType,
172 company, 180 company,
181 locale: this.stores.app.locale,
173 }); 182 });
174 183
175 this.hasCompletedSignup = false; 184 this.hasCompletedSignup = false;
@@ -206,6 +215,8 @@ export default class UserStore extends Store {
206 } 215 }
207 216
208 @action async _update({ userData }) { 217 @action async _update({ userData }) {
218 if (!this.isLoggedIn) return;
219
209 const response = await this.updateUserInfoRequest.execute(userData)._promise; 220 const response = await this.updateUserInfoRequest.execute(userData)._promise;
210 221
211 this.getUserInfoRequest.patch(() => response.data); 222 this.getUserInfoRequest.patch(() => response.data);
@@ -222,6 +233,7 @@ export default class UserStore extends Store {
222 // workaround mobx issue 233 // workaround mobx issue
223 localStorage.removeItem('authToken'); 234 localStorage.removeItem('authToken');
224 window.localStorage.removeItem('authToken'); 235 window.localStorage.removeItem('authToken');
236
225 this.getUserInfoRequest.invalidate().reset(); 237 this.getUserInfoRequest.invalidate().reset();
226 this.authToken = null; 238 this.authToken = null;
227 } 239 }
@@ -262,6 +274,18 @@ export default class UserStore extends Store {
262 const { router } = this.stores; 274 const { router } = this.stores;
263 const currentRoute = router.location.pathname; 275 const currentRoute = router.location.pathname;
264 if (!this.isLoggedIn 276 if (!this.isLoggedIn
277 && currentRoute.includes('token=')) {
278 router.push(this.WELCOME_ROUTE);
279 const token = currentRoute.split('=')[1];
280
281 const data = this._parseToken(token);
282 if (data) {
283 // Give this some time to sink
284 setTimeout(() => {
285 this._tokenLogin(token);
286 }, 1000);
287 }
288 } else if (!this.isLoggedIn
265 && !currentRoute.includes(this.BASE_ROUTE)) { 289 && !currentRoute.includes(this.BASE_ROUTE)) {
266 router.push(this.WELCOME_ROUTE); 290 router.push(this.WELCOME_ROUTE);
267 } else if (this.isLoggedIn 291 } else if (this.isLoggedIn
diff --git a/src/stores/index.js b/src/stores/index.js
index 96b844c95..1912418a2 100644
--- a/src/stores/index.js
+++ b/src/stores/index.js
@@ -10,6 +10,8 @@ import PaymentStore from './PaymentStore';
10import NewsStore from './NewsStore'; 10import NewsStore from './NewsStore';
11import RequestStore from './RequestStore'; 11import RequestStore from './RequestStore';
12import GlobalErrorStore from './GlobalErrorStore'; 12import GlobalErrorStore from './GlobalErrorStore';
13import { workspaceStore } from '../features/workspaces';
14import { announcementsStore } from '../features/announcements';
13 15
14export default (api, actions, router) => { 16export default (api, actions, router) => {
15 const stores = {}; 17 const stores = {};
@@ -27,6 +29,8 @@ export default (api, actions, router) => {
27 news: new NewsStore(stores, api, actions), 29 news: new NewsStore(stores, api, actions),
28 requests: new RequestStore(stores, api, actions), 30 requests: new RequestStore(stores, api, actions),
29 globalError: new GlobalErrorStore(stores, api, actions), 31 globalError: new GlobalErrorStore(stores, api, actions),
32 workspaces: workspaceStore,
33 announcements: announcementsStore,
30 }); 34 });
31 // Initialize all stores 35 // Initialize all stores
32 Object.keys(stores).forEach((name) => { 36 Object.keys(stores).forEach((name) => {
diff --git a/src/stores/lib/Reaction.js b/src/stores/lib/Reaction.js
index 46aa4dae6..f2642908f 100644
--- a/src/stores/lib/Reaction.js
+++ b/src/stores/lib/Reaction.js
@@ -1,24 +1,31 @@
1// @flow
2import { autorun } from 'mobx'; 1import { autorun } from 'mobx';
3 2
4export default class Reaction { 3export default class Reaction {
5 reaction; 4 reaction;
6 5
7 hasBeenStarted; 6 isRunning = false;
8 7
9 dispose; 8 dispose;
10 9
11 constructor(reaction) { 10 constructor(reaction) {
12 this.reaction = reaction; 11 this.reaction = reaction;
13 this.hasBeenStarted = false;
14 } 12 }
15 13
16 start() { 14 start() {
17 this.dispose = autorun(() => this.reaction()); 15 if (!this.isRunning) {
18 this.hasBeenStarted = true; 16 this.dispose = autorun(() => this.reaction());
17 this.isActive = true;
18 }
19 } 19 }
20 20
21 stop() { 21 stop() {
22 if (this.hasBeenStarted) this.dispose(); 22 if (this.isRunning) {
23 this.dispose();
24 this.isActive = false;
25 }
23 } 26 }
24} 27}
28
29export const createReactions = reactions => (
30 reactions.map(r => new Reaction(r))
31);
diff --git a/src/stores/lib/Request.js b/src/stores/lib/Request.js
index 04f528156..486de8a49 100644
--- a/src/stores/lib/Request.js
+++ b/src/stores/lib/Request.js
@@ -85,6 +85,8 @@ export default class Request {
85 return this.execute(...this._currentApiCall.args); 85 return this.execute(...this._currentApiCall.args);
86 } 86 }
87 87
88 retry = () => this.reload();
89
88 isExecutingWithArgs(...args) { 90 isExecutingWithArgs(...args) {
89 return this.isExecuting && this._currentApiCall && isEqual(this._currentApiCall.args, args); 91 return this.isExecuting && this._currentApiCall && isEqual(this._currentApiCall.args, args);
90 } 92 }
@@ -107,7 +109,7 @@ export default class Request {
107 Request._hooks.forEach(hook => hook(this)); 109 Request._hooks.forEach(hook => hook(this));
108 } 110 }
109 111
110 reset() { 112 reset = () => {
111 this.result = null; 113 this.result = null;
112 this.isExecuting = false; 114 this.isExecuting = false;
113 this.isError = false; 115 this.isError = false;
@@ -116,5 +118,5 @@ export default class Request {
116 this._promise = Promise; 118 this._promise = Promise;
117 119
118 return this; 120 return this;
119 } 121 };
120} 122}
diff --git a/src/styles/auth.scss b/src/styles/auth.scss
index 817801982..0a075036a 100644
--- a/src/styles/auth.scss
+++ b/src/styles/auth.scss
@@ -107,7 +107,7 @@
107 &__scroll-container { 107 &__scroll-container {
108 max-height: 100vh; 108 max-height: 100vh;
109 padding: 80px 0; 109 padding: 80px 0;
110 overflow: scroll; 110 overflow: auto;
111 width: 100%; 111 width: 100%;
112 } 112 }
113 113
diff --git a/src/styles/badge.scss b/src/styles/badge.scss
index f9fac039a..69879de31 100644
--- a/src/styles/badge.scss
+++ b/src/styles/badge.scss
@@ -8,7 +8,7 @@
8 &.badge--primary, 8 &.badge--primary,
9 &.badge--premium { 9 &.badge--premium {
10 background: $theme-brand-primary; 10 background: $theme-brand-primary;
11 color: $dark-theme-gray-smoke; 11 color: $dark-theme-gray-lightest;
12 } 12 }
13} 13}
14 14
@@ -19,6 +19,7 @@
19 display: inline-block; 19 display: inline-block;
20 font-size: 14px; 20 font-size: 14px;
21 padding: 5px 10px; 21 padding: 5px 10px;
22 letter-spacing: 0;
22 23
23 &.badge--primary, 24 &.badge--primary,
24 &.badge--premium { 25 &.badge--premium {
diff --git a/src/styles/info-bar.scss b/src/styles/info-bar.scss
index fb4917358..d3010942f 100644
--- a/src/styles/info-bar.scss
+++ b/src/styles/info-bar.scss
@@ -43,6 +43,10 @@
43 } 43 }
44 } 44 }
45 45
46 .info-bar__inline-button {
47 color: white;
48 }
49
46 &.info-bar--bottom { order: 10; } 50 &.info-bar--bottom { order: 10; }
47 51
48 &.info-bar--primary { 52 &.info-bar--primary {
diff --git a/src/styles/layout.scss b/src/styles/layout.scss
index 8b7cc512a..e858b7904 100644
--- a/src/styles/layout.scss
+++ b/src/styles/layout.scss
@@ -18,8 +18,14 @@ html { overflow: hidden; }
18 font-size: 22px; 18 font-size: 22px;
19 19
20 &:hover, 20 &:hover,
21 &:active { color: $dark-theme-gray-smoke; } 21 &:active {
22 &.is-muted { color: $theme-brand-primary; } 22 color: $dark-theme-gray-smoke;
23 }
24
25 &.is-muted,
26 &.is-active {
27 color: $theme-brand-primary;
28 }
23 } 29 }
24 } 30 }
25 31
@@ -33,6 +39,7 @@ html { overflow: hidden; }
33 .app__content { display: flex; } 39 .app__content { display: flex; }
34 40
35 .app__service { 41 .app__service {
42 position: relative;
36 display: flex; 43 display: flex;
37 flex: 1; 44 flex: 1;
38 flex-direction: column; 45 flex-direction: column;
@@ -84,7 +91,7 @@ html { overflow: hidden; }
84 91
85 &:hover, 92 &:hover,
86 &:active { color: lighten($theme-gray-light, 10%); } 93 &:active { color: lighten($theme-gray-light, 10%); }
87 &.is-muted { color: $theme-brand-primary; } 94 &.is-muted, &.is-active { color: $theme-brand-primary; }
88 &--new-service { padding-bottom: 6px; } 95 &--new-service { padding-bottom: 6px; }
89 } 96 }
90 97
@@ -124,15 +131,14 @@ html { overflow: hidden; }
124 background: $theme-brand-warning; 131 background: $theme-brand-warning;
125 color: #FFF; 132 color: #FFF;
126 display: block; 133 display: block;
127 font-size: 10px; 134 font-size: 8px;
128 height: auto; 135 height: auto;
129 padding: 4px; 136 padding: 4px;
130 position: fixed; 137 position: fixed;
131 right: 5px; 138 left: 9px;
132 top: 5px; 139 bottom: 0px;
133 transition: opacity .5s ease; 140 transition: opacity .5s ease;
134 width: auto; 141 width: auto;
135 z-index: 999999999; 142 z-index: 999999999;
136 143 pointer-events: none;
137 &:hover { opacity: 0; }
138} 144}
diff --git a/src/styles/settings.scss b/src/styles/settings.scss
index 750b6bedd..1baff8b54 100644
--- a/src/styles/settings.scss
+++ b/src/styles/settings.scss
@@ -61,14 +61,9 @@
61 61
62 .account { 62 .account {
63 .account__box { background: $dark-theme-gray-darker; } 63 .account__box { background: $dark-theme-gray-darker; }
64
65 .invoices {
66 td { border-bottom: 1px solid $dark-theme-gray-darker; }
67 .invoices__action button { color: $theme-brand-primary; }
68 }
69 } 64 }
70 65
71 .premium-info { 66 .premium-info {
72 background: $dark-theme-gray-darker; 67 background: $dark-theme-gray-darker;
73 border: 2px solid $theme-brand-primary; 68 border: 2px solid $theme-brand-primary;
74 } 69 }
@@ -329,15 +324,6 @@
329 .account__avatar { 324 .account__avatar {
330 margin-right: 20px; 325 margin-right: 20px;
331 position: relative; 326 position: relative;
332
333 .emoji img { width: 30px; }
334 }
335
336 .account__avatar-premium {
337 font-size: 26px;
338 position: absolute;
339 right: 2px;
340 top: 2px;
341 } 327 }
342 328
343 .account__info { 329 .account__info {
@@ -345,6 +331,7 @@
345 331
346 h2 { margin-bottom: 5px; } 332 h2 { margin-bottom: 5px; }
347 .badge { margin-top: 5px; } 333 .badge { margin-top: 5px; }
334 .username { margin-right: 10 }
348 } 335 }
349 336
350 .account__subscription { 337 .account__subscription {
@@ -354,6 +341,22 @@
354 .badge { margin-left: 10px; } 341 .badge { margin-left: 10px; }
355 } 342 }
356 343
344 .badge--premium {
345 margin-left: 1px;
346 position: relative;
347 top: -3px;
348 padding-top: 4px;
349 color: #FFF;
350 border-radius: 3px;
351 }
352
353
354 .manage-user-links {
355 margin-top: 20px;
356 display: flex;
357 justify-content: space-between;
358 }
359
357 .account__subscription-button { margin-left: auto; } 360 .account__subscription-button { margin-left: auto; }
358 .franz-form__button { white-space: nowrap; } 361 .franz-form__button { white-space: nowrap; }
359 div { height: auto; } 362 div { height: auto; }
@@ -414,6 +417,7 @@
414 417
415 .settings-navigation__link { 418 .settings-navigation__link {
416 align-items: center; 419 align-items: center;
420 justify-content: space-between;
417 color: $theme-text-color; 421 color: $theme-text-color;
418 display: flex; 422 display: flex;
419 flex-shrink: 0; 423 flex-shrink: 0;
@@ -425,7 +429,9 @@
425 &:hover { 429 &:hover {
426 background: darken($theme-gray-lightest, 5%); 430 background: darken($theme-gray-lightest, 5%);
427 431
428 .badge { background: #FFF; } 432 .badge {
433 background: #FFF;
434 }
429 } 435 }
430 436
431 &.is-active { 437 &.is-active {
@@ -442,8 +448,8 @@
442 .settings-navigation__expander { flex: 1; } 448 .settings-navigation__expander { flex: 1; }
443 449
444 .badge { 450 .badge {
451
445 display: initial; 452 display: initial;
446 margin-left: 5px;
447 transition: background $theme-transition-time, color $theme-transition-time; 453 transition: background $theme-transition-time, color $theme-transition-time;
448 } 454 }
449 455
diff --git a/src/styles/toggle.scss b/src/styles/toggle.scss
index 0ce0c3379..52675ceed 100644
--- a/src/styles/toggle.scss
+++ b/src/styles/toggle.scss
@@ -41,7 +41,7 @@ $toggle-button-size: 22px;
41 41
42 &.is-active .franz-form__toggle-button { 42 &.is-active .franz-form__toggle-button {
43 background: $theme-brand-primary; 43 background: $theme-brand-primary;
44 left: $toggle-width - $toggle-size - 3;; 44 left: $toggle-width - $toggle-size - 3;
45 } 45 }
46 46
47 input { display: none; } 47 input { display: none; }
diff --git a/src/theme/dark/index.js b/src/theme/dark/index.js
deleted file mode 100644
index 8fdb321f3..000000000
--- a/src/theme/dark/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
1import hexToRgba from 'hex-to-rgba';
2
3import * as legacyStyles from '../default/legacy';
4
5export const colorBackground = legacyStyles.darkThemeGrayDarkest;
6export const colorBackgroundSubscriptionContainer = legacyStyles.themeBrandInfo;
7
8export const colorHeadline = legacyStyles.darkThemeTextColor;
9export const colorText = legacyStyles.darkThemeTextColor;
10
11// Error Handler
12export const colorWebviewErrorHandlerBackground = legacyStyles.darkThemeGrayDarkest;
13
14// Loader
15export const colorFullscreenLoaderSpinner = '#FFF';
16export const colorWebviewLoaderBackground = hexToRgba(legacyStyles.darkThemeGrayDarkest, 0.5);
17
18// Modal
19export const colorModalOverlayBackground = hexToRgba(legacyStyles.darkThemeGrayDarkest, 0.8);
diff --git a/src/theme/default/index.js b/src/theme/default/index.js
deleted file mode 100644
index 61410073d..000000000
--- a/src/theme/default/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
1import hexToRgba from 'hex-to-rgba';
2
3import * as legacyStyles from './legacy';
4
5export const brandPrimary = '#3498db';
6export const brandSuccess = '#5cb85c';
7export const brandInfo = '#5bc0de';
8export const brandWarning = '#FF9F00';
9export const brandDanger = '#d9534f';
10
11export const borderRadius = legacyStyles.themeBorderRadius;
12export const borderRadiusSmall = legacyStyles.themeBorderRadiusSmall;
13
14export const colorBackground = legacyStyles.themeGrayLighter;
15export const colorHeadline = legacyStyles.themeGrayDark;
16
17export const colorText = legacyStyles.themeTextColor;
18
19// Subscription Container Component
20export const colorSubscriptionContainerBackground = 'none';
21export const colorSubscriptionContainerBorder = [1, 'solid', brandPrimary];
22export const colorSubscriptionContainerTitle = brandPrimary;
23export const colorSubscriptionContainerActionButtonBackground = brandPrimary;
24export const colorSubscriptionContainerActionButtonColor = '#FFF';
25
26// Error Handler
27export const colorWebviewErrorHandlerBackground = legacyStyles.themeGrayLighter;
28
29// Loader
30export const colorAppLoaderSpinner = '#FFF';
31export const colorFullscreenLoaderSpinner = legacyStyles.themeGrayDark;
32export const colorWebviewLoaderBackground = hexToRgba(legacyStyles.themeGrayLighter, 0.8);
33
34// Modal
35export const colorModalOverlayBackground = hexToRgba(legacyStyles.themeGrayLighter, 0.8);
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js
index a76c03e5a..a4a6ab899 100644
--- a/src/webview/contextMenu.js
+++ b/src/webview/contextMenu.js
@@ -33,6 +33,8 @@ const buildMenuTpl = (props, suggestions, isSpellcheckEnabled, defaultSpellcheck
33 const canGoBack = webContents.canGoBack(); 33 const canGoBack = webContents.canGoBack();
34 const canGoForward = webContents.canGoForward(); 34 const canGoForward = webContents.canGoForward();
35 35
36 // @adlk: we can't use roles here due to a bug with electron where electron.remote.webContents.getFocusedWebContents() returns the first webview in DOM instead of the focused one
37 // Github issue creation is pending
36 let menuTpl = [ 38 let menuTpl = [
37 { 39 {
38 type: 'separator', 40 type: 'separator',
@@ -48,19 +50,32 @@ const buildMenuTpl = (props, suggestions, isSpellcheckEnabled, defaultSpellcheck
48 type: 'separator', 50 type: 'separator',
49 }, { 51 }, {
50 id: 'cut', 52 id: 'cut',
51 role: can('Cut') ? 'cut' : '', 53 label: 'Cut',
54 click() {
55 if (can('Cut')) {
56 webContents.cut();
57 }
58 },
52 enabled: can('Cut'), 59 enabled: can('Cut'),
53 visible: hasText && props.isEditable, 60 visible: hasText && props.isEditable,
54 }, { 61 }, {
55 id: 'copy', 62 id: 'copy',
56 label: 'Copy', 63 label: 'Copy',
57 role: can('Copy') ? 'copy' : '', 64 click() {
65 if (can('Copy')) {
66 webContents.copy();
67 }
68 },
58 enabled: can('Copy'), 69 enabled: can('Copy'),
59 visible: props.isEditable || hasText, 70 visible: props.isEditable || hasText,
60 }, { 71 }, {
61 id: 'paste', 72 id: 'paste',
62 label: 'Paste', 73 label: 'Paste',
63 role: editFlags.canPaste ? 'paste' : '', 74 click() {
75 if (editFlags.canPaste) {
76 webContents.paste();
77 }
78 },
64 enabled: editFlags.canPaste, 79 enabled: editFlags.canPaste,
65 visible: props.isEditable, 80 visible: props.isEditable,
66 }, { 81 }, {
@@ -207,8 +222,6 @@ const buildMenuTpl = (props, suggestions, isSpellcheckEnabled, defaultSpellcheck
207 }); 222 });
208 }); 223 });
209 224
210 console.log('isSpellcheckEnabled', isSpellcheckEnabled);
211
212 menuTpl.push({ 225 menuTpl.push({
213 type: 'separator', 226 type: 'separator',
214 }, { 227 }, {
@@ -234,6 +247,16 @@ const buildMenuTpl = (props, suggestions, isSpellcheckEnabled, defaultSpellcheck
234 }, 247 },
235 }, 248 },
236 { 249 {
250 id: 'automaticDetection',
251 label: 'Automatic language detection',
252 type: 'radio',
253 checked: spellcheckerLanguage === 'automatic',
254 click() {
255 debug('Detect language automatically');
256 ipcRenderer.sendToHost('set-service-spellchecker-language', 'automatic');
257 },
258 },
259 {
237 type: 'separator', 260 type: 'separator',
238 visible: defaultSpellcheckerLanguage !== spellcheckerLanguage, 261 visible: defaultSpellcheckerLanguage !== spellcheckerLanguage,
239 }, 262 },
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index c718b348e..1e5d74b1f 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -1,10 +1,12 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import path from 'path'; 2import path from 'path';
3import { autorun, computed, observable } from 'mobx'; 3import { autorun, computed, observable } from 'mobx';
4import { loadModule } from 'cld3-asm';
5import { debounce } from 'lodash';
4 6
5import RecipeWebview from './lib/RecipeWebview'; 7import RecipeWebview from './lib/RecipeWebview';
6 8
7import spellchecker, { switchDict, disable as disableSpellchecker } from './spellchecker'; 9import spellchecker, { switchDict, disable as disableSpellchecker, getSpellcheckerLocaleByFuzzyIdentifier } from './spellchecker';
8import { injectDarkModeStyle, isDarkModeStyleInjected, removeDarkModeStyle } from './darkmode'; 10import { injectDarkModeStyle, isDarkModeStyleInjected, removeDarkModeStyle } from './darkmode';
9import contextMenu from './contextMenu'; 11import contextMenu from './contextMenu';
10import './notifications'; 12import './notifications';
@@ -40,6 +42,8 @@ class RecipeController {
40 return this.settings.service.spellcheckerLanguage || this.settings.app.spellcheckerLanguage; 42 return this.settings.service.spellcheckerLanguage || this.settings.app.spellcheckerLanguage;
41 } 43 }
42 44
45 cldIdentifier = null;
46
43 async initialize() { 47 async initialize() {
44 Object.keys(this.ipcEvents).forEach((channel) => { 48 Object.keys(this.ipcEvents).forEach((channel) => {
45 ipcRenderer.on(channel, (...args) => { 49 ipcRenderer.on(channel, (...args) => {
@@ -87,10 +91,22 @@ class RecipeController {
87 91
88 if (this.settings.app.enableSpellchecking) { 92 if (this.settings.app.enableSpellchecking) {
89 debug('Setting spellchecker language to', this.spellcheckerLanguage); 93 debug('Setting spellchecker language to', this.spellcheckerLanguage);
90 switchDict(this.spellcheckerLanguage); 94 let { spellcheckerLanguage } = this;
95 if (spellcheckerLanguage === 'automatic') {
96 this.automaticLanguageDetection();
97 debug('Found `automatic` locale, falling back to user locale until detected', this.settings.app.locale);
98 spellcheckerLanguage = this.settings.app.locale;
99 } else if (this.cldIdentifier) {
100 this.cldIdentifier.destroy();
101 }
102 switchDict(spellcheckerLanguage);
91 } else { 103 } else {
92 debug('Disable spellchecker'); 104 debug('Disable spellchecker');
93 disableSpellchecker(); 105 disableSpellchecker();
106
107 if (this.cldIdentifier) {
108 this.cldIdentifier.destroy();
109 }
94 } 110 }
95 111
96 if (this.settings.service.isDarkModeEnabled) { 112 if (this.settings.service.isDarkModeEnabled) {
@@ -113,6 +129,42 @@ class RecipeController {
113 serviceIdEcho(event) { 129 serviceIdEcho(event) {
114 event.sender.send('service-id', this.settings.service.id); 130 event.sender.send('service-id', this.settings.service.id);
115 } 131 }
132
133 async automaticLanguageDetection() {
134 const cldFactory = await loadModule();
135 this.cldIdentifier = cldFactory.create(0, 1000);
136
137 window.addEventListener('keyup', debounce((e) => {
138 const element = e.target;
139
140 console.log(element);
141
142 if (!element) return;
143
144 let value = '';
145 if (element.isContentEditable) {
146 value = element.textContent;
147 } else if (element.value) {
148 value = element.value;
149 }
150
151 // Force a minimum length to get better detection results
152 if (value.length < 30) return;
153
154 debug('Detecting language for', value);
155 const findResult = this.cldIdentifier.findLanguage(value);
156
157 debug('Language detection result', findResult);
158
159 if (findResult.is_reliable) {
160 const spellcheckerLocale = getSpellcheckerLocaleByFuzzyIdentifier(findResult.language);
161 debug('Language detected reliably, setting spellchecker language to', spellcheckerLocale);
162 if (spellcheckerLocale) {
163 switchDict(spellcheckerLocale);
164 }
165 }
166 }, 225));
167 }
116} 168}
117 169
118/* eslint-disable no-new */ 170/* eslint-disable no-new */
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js
index becaed449..9158b3b94 100644
--- a/src/webview/spellchecker.js
+++ b/src/webview/spellchecker.js
@@ -3,6 +3,7 @@ import { SpellCheckerProvider } from 'electron-hunspell';
3import path from 'path'; 3import path from 'path';
4 4
5import { DICTIONARY_PATH } from '../config'; 5import { DICTIONARY_PATH } from '../config';
6import { SPELLCHECKER_LOCALES } from '../i18n/languages';
6 7
7const debug = require('debug')('Franz:spellchecker'); 8const debug = require('debug')('Franz:spellchecker');
8 9
@@ -82,3 +83,13 @@ export function disable() {
82 currentDict = null; 83 currentDict = null;
83 } 84 }
84} 85}
86
87export function getSpellcheckerLocaleByFuzzyIdentifier(identifier) {
88 const locales = Object.keys(SPELLCHECKER_LOCALES).filter(key => key === identifier.toLowerCase() || key.split('-')[0] === identifier.toLowerCase());
89
90 if (locales.length >= 1) {
91 return locales[0];
92 }
93
94 return null;
95}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 000000000..46e0e6cfa
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,7 @@
1{
2 "extends": "./tsconfig.settings.json",
3 "compilerOptions": {
4 "outDir": ".tstmp",
5 "rootDir": "./"
6 },
7}
diff --git a/tsconfig.settings.json b/tsconfig.settings.json
new file mode 100644
index 000000000..19d0906d9
--- /dev/null
+++ b/tsconfig.settings.json
@@ -0,0 +1,24 @@
1{
2 "compilerOptions": {
3 "baseUrl": ".",
4 "target": "es5",
5 "module": "commonjs",
6 "lib": [
7 "es2015",
8 "es2017",
9 "dom"
10 ],
11 "jsx": "react",
12 "sourceMap": true,
13 "strict": true,
14 "allowSyntheticDefaultImports": true,
15 "experimentalDecorators": true,
16 "composite": true,
17 "esModuleInterop": true,
18 "typeRoots": ["packages/typings/types", "node_modules/@types"],
19 "paths": {
20 "@types/*": ["packages/typings/types/*.d.ts"],
21 "*": ["packages/typings/types/*.d.ts"]
22 }
23 }
24}
diff --git a/tslint.json b/tslint.json
new file mode 100644
index 000000000..975089ab0
--- /dev/null
+++ b/tslint.json
@@ -0,0 +1,12 @@
1{
2 "extends": ["tslint-config-airbnb"],
3 "rules": {
4 "import-name": false,
5 "variable-name": false,
6 "class-name": false,
7 "prefer-array-literal": false,
8 "semicolon": [true, "always"],
9 "max-line-length": false,
10 "ordered-imports": true
11 }
12}
diff --git a/uidev/src/app.html b/uidev/src/app.html
new file mode 100644
index 000000000..2557bf25e
--- /dev/null
+++ b/uidev/src/app.html
@@ -0,0 +1,12 @@
1<!DOCTYPE html>
2<html>
3
4<head>
5 <title>UIDev</title>
6 <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,800" rel="stylesheet">
7</head>
8
9<body>
10 <div id="root"></div>
11</body>
12</html>
diff --git a/uidev/src/app.tsx b/uidev/src/app.tsx
new file mode 100644
index 000000000..870911c2f
--- /dev/null
+++ b/uidev/src/app.tsx
@@ -0,0 +1,125 @@
1import CSS from 'csstype';
2import { Classes } from 'jss';
3import { observer } from 'mobx-react';
4import DevTools from 'mobx-react-devtools';
5import React, { Component } from 'react';
6import injectSheet from 'react-jss';
7
8import { WithTheme } from './withTheme';
9
10import './stories/badge.stories';
11import './stories/button.stories';
12import './stories/headline.stories';
13import './stories/icon.stories';
14import './stories/infobox.stories';
15import './stories/input.stories';
16import './stories/loader.stories';
17import './stories/select.stories';
18import './stories/toggle.stories';
19
20import { store } from './stores';
21
22import { theme, ThemeType } from '@meetfranz/theme';
23const defaultTheme = theme(ThemeType.default);
24
25const styles = {
26 '@global body': {
27 margin: 0,
28 fontSize: defaultTheme.uiFontSize,
29 fontFamily: '\'Open Sans\', sans-serif',
30 },
31 container: {
32 display: 'flex',
33 width: '100%',
34 },
35 menu: {
36 width: 300,
37 position: 'fixed' as CSS.PositionProperty,
38 listStyleType: 'none',
39 fontSize: 14,
40 overflow: 'scroll',
41 height: '100%',
42 },
43 storyList: {
44 paddingLeft: 18,
45 marginTop: 5,
46 marginBottom: 20,
47 },
48 stories: {
49 width: '100%',
50 marginLeft: 320,
51 paddingLeft: 40,
52 paddingRight: 40,
53 borderLeft: '1px solid #CFCFCF',
54 background: '#f7f7f7',
55 },
56 sectionHeadline: {
57 fontSize: 30,
58 },
59 storyHeadline: {
60 fontSize: 24,
61 },
62 story: {
63 paddingBottom: 40,
64 marginBottom: 40,
65 borderBottom: '1px solid #CFCFCF',
66 },
67 sectionLink: {
68 fontWeight: 'bold' as CSS.FontWeightProperty,
69 color: '#000',
70 textDecoration: 'none',
71 },
72 storyLink: {
73 color: '#000',
74 textDecoration: 'none',
75 },
76};
77
78export const App = injectSheet(styles)(observer(({ classes }: { classes: Classes }) => (
79 <div className={classes.container}>
80 <ul className={classes.menu}>
81 {store.stories.sections.map((section, key) => (
82 <li key={key}>
83 <a href={`#section-${key}`} className={classes.sectionLink}>{
84 section.name}
85 </a>
86 <ul className={classes.storyList}>
87 {section.stories.map((story, storyKey) => (
88 <li key={storyKey}>
89 <a href={`#section-${key}-story-${storyKey}`} className={classes.storyLink}>
90 {story.name}
91 </a>
92 </li>
93 ))}
94 </ul>
95 </li>
96 ))}
97 </ul>
98 <div className={classes.stories}>
99 {store.stories.sections.map((section, key) => (
100 <div key={key}>
101 <h1
102 id={`section-${key}`}
103 className={classes.sectionHeadline}
104 >
105 {section.name}
106 </h1>
107 {section.stories.map((story, storyKey) => (
108 <div className={classes.story} key={storyKey}>
109 <h2
110 id={`section-${key}-story-${storyKey}`}
111 className={classes.storyHeadline}
112 >
113 {story.name}
114 </h2>
115 <WithTheme>
116 <story.component />
117 </WithTheme>
118 </div>
119 ))}
120 </div>
121 ))}
122 </div>
123 <DevTools />
124 </div>
125)));
diff --git a/uidev/src/index.tsx b/uidev/src/index.tsx
new file mode 100644
index 000000000..99658b184
--- /dev/null
+++ b/uidev/src/index.tsx
@@ -0,0 +1,9 @@
1import React from 'react';
2import { render } from 'react-dom';
3import { App } from './app';
4
5const app = () => (
6 <App />
7);
8
9render(app(), document.getElementById('root'));
diff --git a/uidev/src/stores/index.ts b/uidev/src/stores/index.ts
new file mode 100644
index 000000000..276058ec4
--- /dev/null
+++ b/uidev/src/stores/index.ts
@@ -0,0 +1,5 @@
1import { storyStore } from './stories';
2
3export const store = {
4 stories: storyStore,
5};
diff --git a/uidev/src/stores/stories.ts b/uidev/src/stores/stories.ts
new file mode 100644
index 000000000..6a98c9fd3
--- /dev/null
+++ b/uidev/src/stores/stories.ts
@@ -0,0 +1,43 @@
1import { store } from './index';
2
3export type StorySectionName = string;
4export type StoryName = string;
5export type StoryComponent = () => JSX.Element;
6
7export interface IStories {
8 name: string;
9 component: StoryComponent;
10}
11
12export interface ISections {
13 name: StorySectionName;
14 stories: IStories[];
15}
16
17export interface IStoryStore {
18 sections: ISections[];
19}
20
21export const storyStore: IStoryStore = {
22 sections: [],
23};
24
25export const storiesOf = (name: StorySectionName) => {
26 const length = storyStore.sections.push({
27 name,
28 stories: [],
29 });
30
31 const actions = {
32 add: (name: StoryName, component: StoryComponent) => {
33 storyStore.sections[length - 1].stories.push({
34 name,
35 component,
36 });
37
38 return actions;
39 },
40 };
41
42 return actions;
43};
diff --git a/uidev/src/stories/badge.stories.tsx b/uidev/src/stories/badge.stories.tsx
new file mode 100644
index 000000000..d7b4d55b5
--- /dev/null
+++ b/uidev/src/stories/badge.stories.tsx
@@ -0,0 +1,31 @@
1import React from 'react';
2
3import { Badge, ProBadge } from '@meetfranz/ui';
4import { storiesOf } from '../stores/stories';
5
6storiesOf('Badge')
7 .add('Basic', () => (
8 <>
9 <Badge>New</Badge>
10 </>
11 ))
12 .add('Styles', () => (
13 <>
14 <Badge type="primary">Primary</Badge>
15 <Badge type="secondary">secondary</Badge>
16 <Badge type="success">success</Badge>
17 <Badge type="warning">warning</Badge>
18 <Badge type="danger">danger</Badge>
19 <Badge type="inverted">inverted</Badge>
20 </>
21 ))
22 .add('Pro Badge', () => (
23 <>
24 <ProBadge />
25 </>
26 ))
27 .add('Pro Badge inverted', () => (
28 <>
29 <ProBadge inverted />
30 </>
31 ));
diff --git a/uidev/src/stories/button.stories.tsx b/uidev/src/stories/button.stories.tsx
new file mode 100644
index 000000000..c8e9bcbf3
--- /dev/null
+++ b/uidev/src/stories/button.stories.tsx
@@ -0,0 +1,102 @@
1import { observable } from 'mobx';
2import { observer } from 'mobx-react';
3import React from 'react';
4
5import { Button } from '@meetfranz/forms';
6import { storiesOf } from '../stores/stories';
7
8const defaultProps = {
9 label: 'Button',
10 id: 'test1',
11 name: 'test1',
12 type: 'button',
13 disabled: false,
14};
15
16const createStore = (args?: any) => {
17 return observable(Object.assign({}, defaultProps, args));
18};
19
20const WithStoreButton = observer(({ store }: { store: any }) => (
21 <>
22 <Button
23 {...Object.assign({}, defaultProps, store)}
24 onClick={!store.onClick ? () => {
25 store.busy = !store.busy;
26
27 window.setTimeout(() => {
28 store.busy = !store.busy;
29 }, 1000);
30 } : store.onClick}
31 />
32 </>
33));
34
35storiesOf('Button')
36 .add('Basic', () => (
37 <WithStoreButton store={createStore()} />
38 ))
39 .add('Secondary', () => (
40 <WithStoreButton store={createStore({
41 buttonType: 'secondary',
42 })} />
43 ))
44 .add('Success', () => (
45 <WithStoreButton store={createStore({
46 buttonType: 'success',
47 })} />
48 ))
49 .add('Warning', () => (
50 <WithStoreButton store={createStore({
51 buttonType: 'warning',
52 })} />
53 ))
54 .add('Danger', () => (
55 <WithStoreButton store={createStore({
56 buttonType: 'danger',
57 })} />
58 ))
59 .add('Inverted', () => (
60 <WithStoreButton store={createStore({
61 buttonType: 'inverted',
62 })} />
63 ))
64 .add('Full width', () => (
65 <WithStoreButton store={createStore({
66 stretch: true,
67 })} />
68 ))
69 .add('Disabled', () => (
70 <WithStoreButton store={createStore({
71 disabled: true,
72 })} />
73 ))
74 .add('With loader', () => (
75 <WithStoreButton store={createStore({
76 busy: true,
77 })} />
78 ))
79 .add('With icon', () => (
80 <WithStoreButton store={createStore({
81 icon: 'mdiInformation',
82 })} />
83 ))
84 .add('As link', () => (
85 <WithStoreButton store={createStore({
86 href: 'https://meetfranz.com',
87 })} />
88 ))
89 .add('As link (target=_blank)', () => (
90 <WithStoreButton store={createStore({
91 href: 'https://meetfranz.com',
92 target: '_blank',
93 })} />
94 ))
95 .add('As link (with onClick)', () => (
96 <WithStoreButton store={createStore({
97 href: 'https://meetfranz.com',
98 onClick: (e: React.MouseEvent<HTMLAnchorElement>) => {
99 e.preventDefault();
100 alert('Click event');
101 },
102 })} />));
diff --git a/uidev/src/stories/headline.stories.tsx b/uidev/src/stories/headline.stories.tsx
new file mode 100644
index 000000000..f42771cae
--- /dev/null
+++ b/uidev/src/stories/headline.stories.tsx
@@ -0,0 +1,54 @@
1import { observable } from 'mobx';
2import { observer } from 'mobx-react';
3import React from 'react';
4import uuid from 'uuid/v4';
5
6import { H1, H2, H3, H4 } from '@meetfranz/ui';
7import { storiesOf } from '../stores/stories';
8
9// interface IStoreArgs {
10// value?: boolean;
11// checked?: boolean;
12// label?: string;
13// id?: string;
14// name?: string;
15// disabled?: boolean;
16// error?: string;
17// }
18
19// const createStore = (args?: IStoreArgs) => {
20// return observable(Object.assign({
21// id: `element-${uuid()}`,
22// name: 'toggle',
23// label: 'Label',
24// value: true,
25// checked: false,
26// disabled: false,
27// error: '',
28// }, args));
29// };
30
31// const WithStoreToggle = observer(({ store }: { store: any }) => (
32// <>
33// <Toggle
34// value={store.value}
35// checked={store.checked}
36// label={store.label}
37// id={store.id}
38// name={store.name}
39// disabled={store.disabled}
40// error={store.error}
41// onChange={() => store.checked = !store.checked}
42// />
43// </>
44// ));
45
46storiesOf('Typo')
47 .add('Headlines', () => (
48 <>
49 <H1>Welcome to the world of tomorrow</H1>
50 <H2>Welcome to the world of tomorrow</H2>
51 <H3>Welcome to the world of tomorrow</H3>
52 <H4>Welcome to the world of tomorrow</H4>
53 </>
54 ));
diff --git a/uidev/src/stories/icon.stories.tsx b/uidev/src/stories/icon.stories.tsx
new file mode 100644
index 000000000..c8e7f8ced
--- /dev/null
+++ b/uidev/src/stories/icon.stories.tsx
@@ -0,0 +1,53 @@
1import { observable } from 'mobx';
2import { observer } from 'mobx-react';
3import React from 'react';
4import uuid from 'uuid/v4';
5
6import { Icon } from '@meetfranz/ui';
7import { storiesOf } from '../stores/stories';
8
9// interface IStoreArgs {
10// value?: boolean;
11// checked?: boolean;
12// label?: string;
13// id?: string;
14// name?: string;
15// disabled?: boolean;
16// error?: string;
17// }
18
19// const createStore = (args?: IStoreArgs) => {
20// return observable(Object.assign({
21// id: `element-${uuid()}`,
22// name: 'toggle',
23// label: 'Label',
24// value: true,
25// checked: false,
26// disabled: false,
27// error: '',
28// }, args));
29// };
30
31// const WithStoreToggle = observer(({ store }: { store: any }) => (
32// <>
33// <Toggle
34// value={store.value}
35// checked={store.checked}
36// label={store.label}
37// id={store.id}
38// name={store.name}
39// disabled={store.disabled}
40// error={store.error}
41// onChange={() => store.checked = !store.checked}
42// />
43// </>
44// ));
45
46storiesOf('Icon')
47 .add('Basic', () => (
48 <>
49 <Icon icon="mdiAccountCircle" />
50 <Icon icon="mdiAccountCircle" size={2} />
51 <Icon icon="mdiAccountCircle" size={3} />
52 </>
53 ));
diff --git a/uidev/src/stories/infobox.stories.tsx b/uidev/src/stories/infobox.stories.tsx
new file mode 100644
index 000000000..144855376
--- /dev/null
+++ b/uidev/src/stories/infobox.stories.tsx
@@ -0,0 +1,135 @@
1import { observable } from 'mobx';
2import { observer } from 'mobx-react';
3import React from 'react';
4
5import { Infobox } from '@meetfranz/ui';
6import { storiesOf } from '../stores/stories';
7
8interface IStoreArgs {
9 icon?: string;
10 ctaLabel?: string;
11 type?: string;
12 dismissable?: boolean;
13 className?: string;
14}
15
16const createStore = (args?: IStoreArgs) => {
17 return observable(Object.assign({
18 type: 'primary',
19 ctaOnClick: () => {
20 alert('on click handler');
21 },
22 }, args));
23};
24
25const WithStoreInfobox = observer(({ store, children }: { store: any, children: string | React.ReactNode }) => (
26 <>
27 <Infobox
28 icon={store.icon}
29 ctaLabel={store.ctaLabel}
30 type={store.type}
31 ctaOnClick={store.ctaOnClick}
32 dismissable={store.dismissable}
33 className={store.className}
34 >
35 {children}
36 </Infobox>
37 </>
38));
39
40storiesOf('Infobox')
41 .add('Basic', () => (
42 <WithStoreInfobox store={createStore()}>Welcome to the world of tomorrow</WithStoreInfobox>
43 ))
44 .add('Icon + Dismissable', () => (
45 <WithStoreInfobox
46 store={createStore({
47 icon: 'mdiEarth',
48 dismissable: true,
49 })}
50 >
51 Welcome to the world of tomorrow
52 </WithStoreInfobox>
53 ))
54 .add('With CTA', () => (
55 <WithStoreInfobox
56 store={createStore({
57 icon: 'mdiEarth',
58 ctaLabel: 'Ok, hi!',
59 })}
60 >
61 Welcome to the world of tomorrow
62 </WithStoreInfobox>
63 ))
64 .add('With long text', () => (
65 <WithStoreInfobox
66 store={createStore({
67 icon: 'mdiEarth',
68 ctaLabel: 'Ok, hi!',
69 })}
70 >
71 Franz is your messaging app / former Emperor of Austria and combines chat & messaging services into one application. Franz currently supports Slack, WhatsApp, WeChat, HipChat, Facebook Messenger, Telegram, Google Hangouts,GroupMe, Skype and many more.
72 </WithStoreInfobox>
73 ))
74 .add('Secondary', () => (
75 <WithStoreInfobox
76 store={createStore({
77 icon: 'mdiEarth',
78 ctaLabel: 'Ok, hi!',
79 type: 'secondary',
80 })}
81 >
82 Welcome to the world of tomorrow
83 </WithStoreInfobox>
84 ))
85 .add('Success', () => (
86 <WithStoreInfobox
87 store={createStore({
88 icon: 'mdiEarth',
89 ctaLabel: 'Ok, hi!',
90 type: 'success',
91 })}
92 >
93 Welcome to the world of tomorrow
94 </WithStoreInfobox>
95 ))
96 .add('Warning', () => (
97 <WithStoreInfobox
98 store={createStore({
99 icon: 'mdiEarth',
100 ctaLabel: 'Ok, hi!',
101 type: 'warning',
102 })}
103 >
104 Welcome to the world of tomorrow
105 </WithStoreInfobox>
106 ))
107 .add('Danger', () => (
108 <WithStoreInfobox
109 store={createStore({
110 icon: 'mdiEarth',
111 ctaLabel: 'Ok, hi!',
112 type: 'danger',
113 })}
114 >
115 Welcome to the world of tomorrow
116 </WithStoreInfobox>
117 ))
118 .add('Inverted', () => (
119 <WithStoreInfobox
120 store={createStore({
121 icon: 'mdiEarth',
122 ctaLabel: 'Ok, hi!',
123 type: 'inverted',
124 })}
125 >
126 Welcome to the world of tomorrow
127 </WithStoreInfobox>
128 ))
129 .add('With className', () => (
130 <WithStoreInfobox store={createStore({
131 className: 'franz-is-awesome',
132 })}>
133 Welcome to the world of tomorrow
134 </WithStoreInfobox>
135 ));
diff --git a/uidev/src/stories/input.stories.tsx b/uidev/src/stories/input.stories.tsx
new file mode 100644
index 000000000..af5e791d0
--- /dev/null
+++ b/uidev/src/stories/input.stories.tsx
@@ -0,0 +1,105 @@
1import React from 'react';
2import uuid from 'uuid/v4';
3
4import { Input } from '@meetfranz/forms';
5import { storiesOf } from '../stores/stories';
6
7const defaultProps = () => {
8 const id = uuid();
9 return {
10 label: 'Label',
11 id: `test-${id}`,
12 name: `test-${id}`,
13 onChange: (e: React.ChangeEvent<HTMLInputElement>) => console.log('changed event', e),
14 };
15};
16
17const defaultPasswordProps = () => {
18 const id = uuid();
19 return {
20 label: 'Password',
21 id: `test-${id}`,
22 name: `test-${id}`,
23 type: 'password',
24 onChange: (e: React.ChangeEvent<HTMLInputElement>) => console.log('changed event', e),
25 };
26};
27
28storiesOf('Input')
29 .add('Basic', () => (
30 <Input
31 {...defaultProps()}
32 placeholder="Placeholder text"
33 />
34 ))
35 .add('Without Label', () => (
36 <Input
37 {...defaultProps()}
38 showLabel={false}
39 />
40 ))
41 .add('Disabled', () => (
42 <Input {...defaultProps()} disabled />
43 ))
44 .add('With prefix', () => (
45 <Input
46 {...defaultProps()}
47 prefix="https://"
48 />
49 ))
50 .add('With suffix', () => (
51 <Input
52 {...defaultProps()}
53 suffix=".meetfranz.com"
54 />
55 ))
56 .add('With pre-suffix', () => (
57 <Input
58 {...defaultProps()}
59 prefix="https://"
60 suffix=".meetfranz.com"
61 />
62 ))
63 .add('With error', () => (
64 <Input
65 {...defaultProps()}
66 value="faulty input"
67 error="This is a generic error message."
68 />
69 ))
70 .add('Type number with min & max', () => (
71 <Input
72 {...defaultProps()}
73 type="number"
74 min={1}
75 max={10}
76 />
77 ));
78
79storiesOf('Password')
80 .add('Basic', () => (
81 <Input
82 {...defaultPasswordProps()}
83 />
84 ))
85 .add('Show password toggle', () => (
86 <Input
87 {...defaultPasswordProps()}
88 showPasswordToggle
89 />
90 ))
91 .add('Score password', () => (
92 <Input
93 {...defaultPasswordProps()}
94 showPasswordToggle
95 scorePassword
96 />
97 ))
98 .add('Score password with error', () => (
99 <Input
100 {...defaultPasswordProps()}
101 error="Password is too short"
102 showPasswordToggle
103 scorePassword
104 />
105 ));
diff --git a/uidev/src/stories/loader.stories.tsx b/uidev/src/stories/loader.stories.tsx
new file mode 100644
index 000000000..84e813c04
--- /dev/null
+++ b/uidev/src/stories/loader.stories.tsx
@@ -0,0 +1,14 @@
1import { observable } from 'mobx';
2import { observer } from 'mobx-react';
3import React from 'react';
4import uuid from 'uuid/v4';
5
6import { Loader } from '@meetfranz/ui';
7import { storiesOf } from '../stores/stories';
8
9storiesOf('Loader')
10 .add('Basic', () => (
11 <>
12 <Loader />
13 </>
14 ));
diff --git a/uidev/src/stories/select.stories.tsx b/uidev/src/stories/select.stories.tsx
new file mode 100644
index 000000000..81f7f08a6
--- /dev/null
+++ b/uidev/src/stories/select.stories.tsx
@@ -0,0 +1,320 @@
1import React from 'react';
2import uuid from 'uuid/v4';
3
4import { Select } from '@meetfranz/forms';
5import { storiesOf } from '../stores/stories';
6
7const defaultProps = () => {
8 const id = uuid();
9 return {
10 label: 'Label',
11 id: `test-${id}`,
12 name: `test-${id}`,
13 options: {
14 AF: 'Afghanistan',
15 AL: 'Albania',
16 DZ: 'Algeria',
17 AS: 'American Samoa',
18 AD: 'Andorra',
19 AO: 'Angola',
20 AI: 'Anguilla',
21 AQ: 'Antarctica',
22 AG: 'Antigua and Barbuda',
23 AR: 'Argentina',
24 AM: 'Armenia',
25 AW: 'Aruba',
26 AC: 'Ascension Island',
27 AU: 'Australia',
28 AT: 'Austria',
29 AZ: 'Azerbaijan',
30 BS: 'Bahamas',
31 BH: 'Bahrain',
32 BD: 'Bangladesh',
33 BB: 'Barbados',
34 BY: 'Belarus',
35 BE: 'Belgium',
36 BZ: 'Belize',
37 BJ: 'Benin',
38 BM: 'Bermuda',
39 BT: 'Bhutan',
40 BO: 'Bolivia',
41 BA: 'Bosnia and Herzegovina',
42 BW: 'Botswana',
43 BV: 'Bouvet Island',
44 BR: 'Brazil',
45 BQ: 'British Antarctic Territory',
46 IO: 'British Indian Ocean Territory',
47 VG: 'British Virgin Islands',
48 BN: 'Brunei',
49 BG: 'Bulgaria',
50 BF: 'Burkina Faso',
51 BI: 'Burundi',
52 KH: 'Cambodia',
53 CM: 'Cameroon',
54 CA: 'Canada',
55 IC: 'Canary Islands',
56 CT: 'Canton and Enderbury Islands',
57 CV: 'Cape Verde',
58 KY: 'Cayman Islands',
59 CF: 'Central African Republic',
60 EA: 'Ceuta and Melilla',
61 TD: 'Chad',
62 CL: 'Chile',
63 CN: 'China',
64 CX: 'Christmas Island',
65 CP: 'Clipperton Island',
66 CC: 'Cocos [Keeling] Islands',
67 CO: 'Colombia',
68 KM: 'Comoros',
69 CD: 'Congo - Kinshasa',
70 CG: 'Congo [Republic]',
71 CK: 'Cook Islands',
72 CR: 'Costa Rica',
73 HR: 'Croatia',
74 CU: 'Cuba',
75 CY: 'Cyprus',
76 CZ: 'Czech Republic',
77 CI: 'Côte d’Ivoire',
78 DK: 'Denmark',
79 DG: 'Diego Garcia',
80 DJ: 'Djibouti',
81 DM: 'Dominica',
82 DO: 'Dominican Republic',
83 NQ: 'Dronning Maud Land',
84 TL: 'East Timor',
85 EC: 'Ecuador',
86 EG: 'Egypt',
87 SV: 'El Salvador',
88 GQ: 'Equatorial Guinea',
89 ER: 'Eritrea',
90 EE: 'Estonia',
91 ET: 'Ethiopia',
92 FK: 'Falkland Islands',
93 FO: 'Faroe Islands',
94 FJ: 'Fiji',
95 FI: 'Finland',
96 FR: 'France',
97 GF: 'French Guiana',
98 PF: 'French Polynesia',
99 TF: 'French Southern Territories',
100 FQ: 'French Southern and Antarctic Territories',
101 GA: 'Gabon',
102 GM: 'Gambia',
103 GE: 'Georgia',
104 DE: 'Germany',
105 GH: 'Ghana',
106 GI: 'Gibraltar',
107 GR: 'Greece',
108 GL: 'Greenland',
109 GD: 'Grenada',
110 GP: 'Guadeloupe',
111 GU: 'Guam',
112 GT: 'Guatemala',
113 GG: 'Guernsey',
114 GN: 'Guinea',
115 GW: 'Guinea-Bissau',
116 GY: 'Guyana',
117 HT: 'Haiti',
118 HM: 'Heard Island and McDonald Islands',
119 HN: 'Honduras',
120 HK: 'Hong Kong',
121 HU: 'Hungary',
122 IS: 'Iceland',
123 IN: 'India',
124 ID: 'Indonesia',
125 IR: 'Iran',
126 IQ: 'Iraq',
127 IE: 'Ireland',
128 IM: 'Isle of Man',
129 IL: 'Israel',
130 IT: 'Italy',
131 JM: 'Jamaica',
132 JP: 'Japan',
133 JE: 'Jersey',
134 JT: 'Johnston Island',
135 JO: 'Jordan',
136 KZ: 'Kazakhstan',
137 KE: 'Kenya',
138 KI: 'Kiribati',
139 XK: 'Kosovo',
140 KW: 'Kuwait',
141 KG: 'Kyrgyzstan',
142 LA: 'Laos',
143 LV: 'Latvia',
144 LB: 'Lebanon',
145 LS: 'Lesotho',
146 LR: 'Liberia',
147 LY: 'Libya',
148 LI: 'Liechtenstein',
149 LT: 'Lithuania',
150 LU: 'Luxembourg',
151 MO: 'Macau',
152 MK: 'Macedonia',
153 MG: 'Madagascar',
154 MW: 'Malawi',
155 MY: 'Malaysia',
156 MV: 'Maldives',
157 ML: 'Mali',
158 MT: 'Malta',
159 MH: 'Marshall Islands',
160 MQ: 'Martinique',
161 MR: 'Mauritania',
162 MU: 'Mauritius',
163 YT: 'Mayotte',
164 FX: 'Metropolitan France',
165 MX: 'Mexico',
166 FM: 'Micronesia',
167 MI: 'Midway Islands',
168 MD: 'Moldova',
169 MC: 'Monaco',
170 MN: 'Mongolia',
171 ME: 'Montenegro',
172 MS: 'Montserrat',
173 MA: 'Morocco',
174 MZ: 'Mozambique',
175 MM: 'Myanmar [Burma]',
176 NA: 'Namibia',
177 NR: 'Nauru',
178 NP: 'Nepal',
179 NL: 'Netherlands',
180 AN: 'Netherlands Antilles',
181 NC: 'New Caledonia',
182 NZ: 'New Zealand',
183 NI: 'Nicaragua',
184 NE: 'Niger',
185 NG: 'Nigeria',
186 NU: 'Niue',
187 NF: 'Norfolk Island',
188 KP: 'North Korea',
189 VD: 'North Vietnam',
190 MP: 'Northern Mariana Islands',
191 NO: 'Norway',
192 OM: 'Oman',
193 QO: 'Outlying Oceania',
194 PC: 'Pacific Islands Trust Territory',
195 PK: 'Pakistan',
196 PW: 'Palau',
197 PS: 'Palestinian Territories',
198 PA: 'Panama',
199 PZ: 'Panama Canal Zone',
200 PG: 'Papua New Guinea',
201 PY: 'Paraguay',
202 YD: 'Peoples Democratic Republic of Yemen',
203 PE: 'Peru',
204 PH: 'Philippines',
205 PN: 'Pitcairn Islands',
206 PL: 'Poland',
207 PT: 'Portugal',
208 PR: 'Puerto Rico',
209 QA: 'Qatar',
210 RO: 'Romania',
211 RU: 'Russia',
212 RW: 'Rwanda',
213 RE: 'RĂ©union',
214 BL: 'Saint Barthélemy',
215 SH: 'Saint Helena',
216 KN: 'Saint Kitts and Nevis',
217 LC: 'Saint Lucia',
218 MF: 'Saint Martin',
219 PM: 'Saint Pierre and Miquelon',
220 VC: 'Saint Vincent and the Grenadines',
221 WS: 'Samoa',
222 SM: 'San Marino',
223 SA: 'Saudi Arabia',
224 SN: 'Senegal',
225 RS: 'Serbia',
226 CS: 'Serbia and Montenegro',
227 SC: 'Seychelles',
228 SL: 'Sierra Leone',
229 SG: 'Singapore',
230 SK: 'Slovakia',
231 SI: 'Slovenia',
232 SB: 'Solomon Islands',
233 SO: 'Somalia',
234 ZA: 'South Africa',
235 GS: 'South Georgia and the South Sandwich Islands',
236 KR: 'South Korea',
237 ES: 'Spain',
238 LK: 'Sri Lanka',
239 SD: 'Sudan',
240 SR: 'Suriname',
241 SJ: 'Svalbard and Jan Mayen',
242 SZ: 'Swaziland',
243 SE: 'Sweden',
244 CH: 'Switzerland',
245 SY: 'Syria',
246 ST: 'SĂ£o TomĂ© and PrĂ­ncipe',
247 TW: 'Taiwan',
248 TJ: 'Tajikistan',
249 TZ: 'Tanzania',
250 TH: 'Thailand',
251 TG: 'Togo',
252 TK: 'Tokelau',
253 TO: 'Tonga',
254 TT: 'Trinidad and Tobago',
255 TA: 'Tristan da Cunha',
256 TN: 'Tunisia',
257 TR: 'Turkey',
258 TM: 'Turkmenistan',
259 TC: 'Turks and Caicos Islands',
260 TV: 'Tuvalu',
261 UM: 'U.S. Minor Outlying Islands',
262 PU: 'U.S. Miscellaneous Pacific Islands',
263 VI: 'U.S. Virgin Islands',
264 UG: 'Uganda',
265 UA: 'Ukraine',
266 AE: 'United Arab Emirates',
267 GB: 'United Kingdom',
268 US: 'United States',
269 UY: 'Uruguay',
270 UZ: 'Uzbekistan',
271 VU: 'Vanuatu',
272 VA: 'Vatican City',
273 VE: 'Venezuela',
274 VN: 'Vietnam',
275 WK: 'Wake Island',
276 WF: 'Wallis and Futuna',
277 EH: 'Western Sahara',
278 YE: 'Yemen',
279 ZM: 'Zambia',
280 ZW: 'Zimbabwe',
281 AX: 'Ă…land Islands',
282 },
283 actionText: 'Select country',
284 // defaultValue: 'AT',
285 onChange: (e: React.ChangeEvent<HTMLInputElement>) => console.log('changed event', e),
286 };
287};
288
289storiesOf('Select')
290 .add('Basic', () => (
291 <Select
292 {...defaultProps()}
293 />
294 ))
295 .add('With preselection', () => (
296 <Select
297 {...defaultProps()}
298 defaultValue="AT"
299 />
300 ))
301 .add('With search', () => (
302 <Select
303 {...defaultProps()}
304 showSearch
305 />
306 ))
307 .add('Disabled', () => (
308 <Select
309 {...defaultProps()}
310 showSearch
311 disabled
312 />
313 ))
314 .add('With error', () => (
315 <Select
316 {...defaultProps()}
317 showSearch
318 error="Your selection was a bit too funky for my taste"
319 />
320 ));
diff --git a/uidev/src/stories/toggle.stories.tsx b/uidev/src/stories/toggle.stories.tsx
new file mode 100644
index 000000000..091342496
--- /dev/null
+++ b/uidev/src/stories/toggle.stories.tsx
@@ -0,0 +1,70 @@
1import { observable } from 'mobx';
2import { observer } from 'mobx-react';
3import React from 'react';
4import uuid from 'uuid/v4';
5
6import { Toggle } from '@meetfranz/forms';
7import { storiesOf } from '../stores/stories';
8
9interface IStoreArgs {
10 value?: boolean;
11 checked?: boolean;
12 label?: string;
13 id?: string;
14 name?: string;
15 disabled?: boolean;
16 error?: string;
17}
18
19const createStore = (args?: IStoreArgs) => {
20 return observable(Object.assign({
21 id: `element-${uuid()}`,
22 name: 'toggle',
23 label: 'Label',
24 value: true,
25 checked: false,
26 disabled: false,
27 error: '',
28 }, args));
29};
30
31const WithStoreToggle = observer(({ store }: { store: any }) => (
32 <>
33 <Toggle
34 value={store.value}
35 checked={store.checked}
36 label={store.label}
37 id={store.id}
38 name={store.name}
39 disabled={store.disabled}
40 error={store.error}
41 onChange={() => store.checked = !store.checked}
42 />
43 </>
44));
45
46storiesOf('Toggle')
47 .add('Basic', () => (
48 <WithStoreToggle store={createStore()} />
49 ))
50 .add('Checked', () => (
51 <WithStoreToggle store={createStore({
52 checked: true,
53 })} />
54 ))
55 .add('Disabled', () => (
56 <WithStoreToggle store={createStore({
57 checked: true,
58 disabled: true,
59 })} />
60 ))
61 .add('Long label', () => (
62 <WithStoreToggle store={createStore({
63 label: 'Hello world, this is an insanely long label for this toggle. We need to make sure that it will be displayed correctly.',
64 })} />
65 ))
66 .add('With error', () => (
67 <WithStoreToggle store={createStore({
68 error: 'Something went wrong',
69 })} />
70 ));
diff --git a/uidev/src/withTheme/index.tsx b/uidev/src/withTheme/index.tsx
new file mode 100644
index 000000000..17a1074d3
--- /dev/null
+++ b/uidev/src/withTheme/index.tsx
@@ -0,0 +1,50 @@
1import { theme, Theme, ThemeType } from '@meetfranz/theme';
2import { Classes } from 'jss';
3import React from 'react';
4import injectSheet, { ThemeProvider } from 'react-jss';
5
6const defaultTheme = {
7 name: 'Default',
8 variables: theme(ThemeType.default),
9};
10
11const darkTheme = {
12 name: 'Dark Mode',
13 variables: theme(ThemeType.dark),
14};
15
16const themes = [defaultTheme, darkTheme];
17
18const styles = (theme: Theme) => ({
19 title: {
20 fontSize: 14,
21 },
22 container: {
23 border: theme.inputBorder,
24 borderRadius: theme.borderRadiusSmall,
25 marginBottom: 20,
26 padding: 20,
27 background: theme.colorContentBackground,
28 },
29});
30
31const Container = injectSheet(styles)(({ name, classes, story }: { name: string, classes: Classes, story: React.ReactNode }) => (
32 <article>
33 <h1 className={classes.title}>{name}</h1>
34 <div className={classes.container}>
35 {story}
36 </div>
37 </article>
38));
39
40export const WithTheme = ({ children }: {children: React.ReactChild}) => {
41 return (
42 <>
43 {themes.map((theme, key) => (
44 <ThemeProvider key={key} theme={theme.variables}>
45 <Container story={children} name={theme.name} />
46 </ThemeProvider>
47 ))}
48 </>
49 );
50};
diff --git a/uidev/tsconfig.json b/uidev/tsconfig.json
new file mode 100644
index 000000000..fb57639c8
--- /dev/null
+++ b/uidev/tsconfig.json
@@ -0,0 +1,14 @@
1{
2 "extends": "../tsconfig.settings.json",
3 "compilerOptions": {
4 "baseUrl": "..",
5 "outDir": "lib",
6 "rootDir": "src",
7 },
8 "references": [{
9 "path": "../packages/theme"
10 },
11 {
12 "path": "../packages/forms"
13 }]
14}
diff --git a/uidev/tslint.json b/uidev/tslint.json
new file mode 100644
index 000000000..ec365f164
--- /dev/null
+++ b/uidev/tslint.json
@@ -0,0 +1,3 @@
1{
2 "extends": "../tslint.json"
3}
diff --git a/uidev/webpack.config.js b/uidev/webpack.config.js
new file mode 100644
index 000000000..74ea870ef
--- /dev/null
+++ b/uidev/webpack.config.js
@@ -0,0 +1,29 @@
1const path = require('path');
2const HtmlWebpackPlugin = require('html-webpack-plugin');
3
4module.exports = {
5 entry: './src/index.tsx',
6 module: {
7 rules: [{
8 test: /\.tsx?$/,
9 use: 'ts-loader',
10 exclude: /node_modules/,
11 }],
12 },
13 resolve: {
14 extensions: ['.tsx', '.ts', '.js'],
15 alias: {
16 react: path.resolve('../node_modules/react'),
17 },
18 },
19 mode: 'none',
20 plugins: [
21 new HtmlWebpackPlugin({
22 template: path.join('src', 'app.html'),
23 }),
24 ],
25 devServer: {
26 inline: true,
27 port: 8008,
28 },
29};
diff --git a/webpack.config.base.js b/webpack.config.base.js
new file mode 100644
index 000000000..5f81713ce
--- /dev/null
+++ b/webpack.config.base.js
@@ -0,0 +1,24 @@
1const path = require('path');
2const TerserPlugin = require('terser-webpack-plugin');
3
4const IS_DEV = process.env.NODE_ENV === 'development';
5
6module.exports = dir => ({
7 context: dir,
8 entry: path.join(dir, '/src/index.ts'),
9 module: {
10 rules: [{
11 test: /\.tsx?$/,
12 loader: 'ts-loader',
13 exclude: /node_modules/,
14 }],
15 },
16 resolve: {
17 extensions: ['.tsx', '.ts', '.js'],
18 },
19 devtool: 'inline-source-map',
20 mode: IS_DEV ? 'development' : 'production',
21 optimization: {
22 minimizer: !IS_DEV ? [new TerserPlugin()] : [],
23 },
24});