diff options
52 files changed, 1970 insertions, 629 deletions
diff --git a/.travis.yml b/.travis.yml index b98db62a9..3ece585de 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -1,34 +1,26 @@ | |||
1 | language: node_js | 1 | language: node_js |
2 | |||
3 | before_script: | 2 | before_script: |
4 | - yarn add global gulp-cli@1.2.2 | 3 | - yarn add global gulp-cli@1.2.2 |
5 | - yarn add global gulpjs/gulp#4.0 | 4 | - yarn add global gulpjs/gulp#4.0 |
6 | - yarn add global node-sass | 5 | - yarn add global node-sass |
7 | - yarn install | 6 | - yarn install |
8 | |||
9 | script: | 7 | script: |
10 | - yarn lint | 8 | - yarn lint |
11 | - yarn build | 9 | - travis_wait yarn build |
12 | |||
13 | node_js: | 10 | node_js: |
14 | - '7' | 11 | - '7' |
15 | |||
16 | os: osx | 12 | os: osx |
17 | |||
18 | osx_image: xcode8.3 | 13 | osx_image: xcode8.3 |
19 | |||
20 | cache: yarn | 14 | cache: yarn |
21 | |||
22 | notifications: | 15 | notifications: |
23 | email: false | 16 | email: false |
24 | slack: | 17 | slack: |
25 | secure: 0rWztugXppPLIqup6cJ0QplJqtZ4XYzN+qgdyY2ARyPbJkjihfp0qWOiEZfNWIuUCxX2bZXODaEb1Jod6mNfiCQdIs3pW8EUD/cVSDul8jBwXSTwTyAAz4pLejXu3ckHVIiXlAriLC6qqedh2Rl9oAH6JumRmuyb0UTAG0O3Btm3lGM3Cwo3JKt0Zpvly2nBlUI1waSiG11QSx5olq+EDiYvMCzW5mpulwRwnXaOdoIWGBFqnYTFoeS/rLi5IE56yvrYODJPl1e0VhW8Zn4WXiVG+qjlREkDFm4qg2u1SQhZQHRBgveRjSxSAblcG5h58NlkijMKBASWMpj2DjAfiDkGMYoRu1IVyHcFlAI8a+wcR6HlQzVsu4e6EFMyzx33vVVUWovwO+BcxVpME25BZn96eC8P6XE2ruOHahKstEt310dieZZRE/gteBokGh3utA2DV6002GSFYlwqqJ9q/5c5wyhD6cefxYSpzivOqCoiUAq3HW1Nahb4l+EVikTydFkLY0et3f/eV/kD/9yJfZJcttVSTL5Gv6gK4ROjPTJ/UPUkqsVBUdxVrnXiXL8SBESFsRHdHnSHMTkHh74dCrbyqot4pW38yLOmVATCEukm4Cd5N5wOUTGRA0nKon7/pCWoJg0wIH8N9FEtZbrNrD2FrkQbVgCJLXrC9jFpr34= | 18 | secure: NjEDG+6YvJvFNwRT8t8XyVR145m+Pb1pmYgdBeuhqtJbMAr0IOb0lLLW9ixKEsL1NU+0R58QGiG9qqY+lLnMNpDYjzluFo0gQtl2NJrULT4xUFDSu65XTwoutKyvj+hoCsHiwrSrO2dHTx3ZK2vsSueg+8jM/xss7dTLA6BcTYl14wTOU37PqFQZk9JYR+Dfq1Jjhy/mq4BiAsb/1clNIulkjmRjSm6R0XT4ZsZZfj0ifXhL4cLGsUv2n+iePiX6bLwZPFjXV1COYTBafbCu17gw3nRMdNMMTDLbwrXXdJZFS/EjFOPgOhwF7CkZ3kSpB2ZIcAJxG7iAUl5j+jHBXc5dafRbjzE4oYve1vPexLoV3NjV76uANUFkcli6eHYD0uJoUJGBRbRGWp+8Bbw9EcBsn4s3vbf5XqHX3S46zvGgqX+LyhyMJQtEG/iv+9XOsOql18ryyejij0z1K7DxpI0gLV1ATZCphY1Fyz1yZDGlYN4ej/Rl2P1Q3yXilweJRF7Ts04w4U9iuP1u598/w++CKSu4q4EeEuqT/hIeFQUKUkwCEsO4xa39vhLPaxKrG9UEUH8OXN+NPZyTAK/LKuIX7C56O1kwvWNMWlPmTcvsq2RghvNTwgSGUIO0EKZKrQYAEG3Y/veSt5CgZoNzLgc/6Xj+g7daxUo9heLy26A= |
26 | |||
27 | deploy: | 19 | deploy: |
28 | provider: s3 | 20 | provider: s3 |
29 | access_key_id: AKIAI6ZWIP2OWZUCXIGA | 21 | access_key_id: AKIAIVRBS4YFL4ZBLCLA |
30 | secret_access_key: | 22 | secret_access_key: |
31 | secure: NSST9RjAG6v57MQgFKXckah7k2TMcbozpMN7IAdBmyIvwDlRN6ELAMCynknXDSLE6b6LKyhsQ/i6ykSuZxVoHzRyY9z28lJhLkGqCeABqSAhcwQ6gWxetFXGqIV7o/oxTVMS3cDrUdkfUPCQRUgMO1ew0oV7e4HfqIiDYQMMWJY/HGr/LUgNqolrSLGB2GI38/I1nrhPHm3gwa/xYgKUNsO6plPS/YzC6oF/edstM8oO51Lfpq6+XmDMTUl9qq8GkUaRE4BwdGPG97FOA6Y4ONCeJ3xURkElwcfWab7oW3Mox7hj0Z8vot10cieIWEQjpRP+zO5O2NwUzFRH25FuQf4bbvgH4iWXpLan+qnJ9Ow6cl0lg4+8ESemwDCnKtTGb3ujagTH0S4KqBlwJ6sXFb9U2Diut4cEIT4k3rainjk+8ugIssuJq2TWfB40X49ymPw5BPjJfq2T4fOjx8OKzrBHQ1X6KJd8RhfEoLD3V5eToO5/l13uYOBrjSfyo6afvvUIraVNijSlnqYxPmJYnrLWZUUsTiHZFwSF+x2ffcYKs/tep9zqkZpyV4GhH17HcfuQpx4FUIXqMFmGLRj2uN7FweSVdfbsODhgpIwlpV7gMKONeSmEiFcCMwcRik1UK9off7TE6ZJPzX21BJ8QGM5j7Ot2tif2eGvAv+hUaXc= | 23 | secure: LZ38b5DmVisSBfpuPN8IVNCe3C+hJYX88jV+/ifzlB6/h1VUU/w5B3xHNBoOC2P53D2htMtL7K1/JLxzKGmUsnOJe5boF0QmBPTXUVosurxwMPEuLotQucgqcOoFnJkq+BUziBy+uWsZnk6ECbI5hFHQJAM9iNjOcgrfK08NLYvtdwYKYXwhwSrN4dxBKkfRINgAqHCp6bMuH2Imgy9iM+Iy5ydMPUsKDRHj1ByJrhcb1nJTjWImH08IU970fEl0P2+bCV6nUTzc9x9mwaJAF6uaH9L44lLptHIhGgqAZGzwQ7z6ANJj3CJRWFbqW2/9/0+4YKhyBbE9TPIvWIXmVeoPm0nWLDfVDN2RwTGtv+oSgPS+UhcFTVanekKfrzMTVdi1jQ8LIL7Ur3DcXNhwTPuc7PjLPPuwTS2AQRkPMyyWLRAz40/YUepASRdqoVMYI+CZiwu2AZIoUr1HO1eXj/0rqC8t/mhUSOXTxNGRCP9SQTJ/FSaI5dZh3oY7bkz7uxDNbPvChcs7hPFqqhPUFIkX36DaDqjze6IqtZ6pDz7XTqzUET/Jgny9vGBypvGj5fJpYZJytqEs0SsPGQGaxSmAWjcPWQX56Tr98iwVvzAJ0hl7lJHVaEzuxoYmD0ijg2zysoZ7GPBXJg2n9W+QaS0KVuda1r+sQ6C2wY8yvi8= |
32 | bucket: franz-travis | 24 | bucket: franz-travis |
33 | region: eu-central-1 | 25 | region: eu-central-1 |
34 | local_dir: out | 26 | local_dir: out |
@@ -37,9 +29,8 @@ deploy: | |||
37 | acl: public_read | 29 | acl: public_read |
38 | on: | 30 | on: |
39 | all_branches: true | 31 | all_branches: true |
40 | |||
41 | env: | 32 | env: |
42 | global: | 33 | global: |
43 | - secure: izVSi10ahT32qqS+Bl0NcKwX2BoCOIJWa2wX3itw9kJvIS4k34OhnzIDhLCa6MEjDdE9eg8jcA9qHmE05qbirLDec623K5Z73zJ+QyD0QTEs7WKNm9C+lc3THtu4NkvIMF4fVS+6uMBpclkuiG5SMOg2bhlSwtccvCrNP/+9pwUUX215S1M53OjGiQNkconWLDMceL9DHnBZT2Q4QHq55w8EKfNnxFHE996TVTLcoLBt8dUp6VCdcmzCGYiWpkD7q5rApX5iy5d9v2dETcvr329/Qgdi5jFj9g6Fvl9h+uE/BpUNnIyWst1r5S7sSTR6pFt5HzJv30T4bmFGz+z2+v/x4Sdrqez4Aa9onGjDNNau8pez1gtopf8vwpKNp8cnRTnRGdMMPRc+7lswfY8Cwa50NV/fxZqbzokBlmTr/t1d3vaxaeHM56c/9POKdwD/I8RYGONc2jDzAmeAJ1gi6Nt6PixTZhhIRc/221mJ3lTlewKPbRZF42/+L0zF/yNxYMQ25mUU+gTkeQ5+XDsZXAD0bOzMSnZ58cAj7qKftu4VrKpB+DmwWwKplLLwnKEzYqUiAnJt+S9yO8S+XFGdhDJqtbuOOlOeA7h/wYPKxanp2dzemU5WffeIrt7lDlFQra1cLUritOqk132daaWwpnDOccwGYTpwmazTvbjSDEU= | 34 | - secure: fddJzSmNYVX024jnhnFXEuAK1spEYi3y3RZdWaBtjQnzoObAxkcRW263JNpXQy+b7egnp2hSy8FvlQU+L967911F5Y70Pe3An4oI72hnS3DL4Njp2Dw5PwviwMA+X2ddWhzK4+k/JU6r8jBv1FGQ6ZjwSeaO/t8UKOsE8wDBFLRhnHqoR7QbM7zmKjzh/1oofunGbHsPOHmN4f7jBwSuSFTZltEENcQg3ZP++0NHU8UJdlpfqZOkro8v4AJMngAHeHlNtjwaAHdVv+6+kkwc4E/0Cy6YNyyBkbzipyngNY3GwnwzmNzvsfICD1TGklksjBlMQq7ld7eCiaYRNvyHVEmXJ17qlq7HhxkYgNy32hPRwb5Cv6o4M4tv8qS8UUk4W1RvBJ5fcmfZGQwGXPyQ/m85RJtrNfbYtr84jYcprTnSeji/9PuZv0f87dxELYm3DYmNUa1cgJqEdLUsEd0bMwUYNLnCSfu4ea2zxwir6LSBtJJCbGKxX87s5IOTrHkrWDe+PWd52v+UjQks7MBRlJnntTWo69Yy+ayXV1TnGVOHA5znHvPOvFlAF+y8tLGd4AGvehK1SAkf0+idmc9Q9xKk0QypT3ibjJui4D50p7sSajkzz3P2pUqOS/9HmjMfPMPN+Nl+48GU0CvB2aBGhdmp9vu54VaFzUaAGNGj4WI= |
44 | - secure: ZOcObe290rPRqlt8v+l7rWvVcKx+0AxVBHMwxu/S9V/PNV3U6yHUZUe6Ur5Y5MAW7WCFLCaKUa3kgyf0g2A1SnTdlwdQ+6t4Y7FyKjHx+AjR0E8WTTl782h0CVqPlGgjeJOpcy1p8yQAppugDvQ6Ov442Yf9f1QhXOWwCB/DTI7WzJPTqq35W5oFRZm5skhyrhZxFujX4OcC+pN7INwWF+u1mh7C0XbzmrlGvl0TK048u4IqFJkBeGOdrRzg0y6eV+tLDk6Ah+O1F5OeOFkHEQhwFpXjcNZ8zDjf3R2xS28+4oCLq2Iin/xKVUlDRg/qG5cXxKPvFteecnor6S65GU80ppYDSdhUhaJMdB1wZGuCogzKJ1s2DmmUv2TE633l+1NXebnQ/nfpVqNr54YqkxDyIA0WaDSAwo496xujdGZfja5Nxv2Ssm8WAfDAgajLYyhSpw7jaIIEw8Ov11XC+BnILU+4CQEKthSyBvEjVO8DtxOl9mOHYy+XTgi67nNi5xv3u1/kUOz1r3VHMyEAKJf1pBpFoOM5S9fpUWeS7rsXh+0mUsoKMDf38SLnQpFMvrygRY9gxAUrYfwupvKUug+p8HkTURo1W3k5oqwZIW12IAxbus7i6uTk4gdnx9fFF/Ljz4irkPPhhuVikT7zF1hvvHQjyhbwvIPQcHu+Ufg= | 35 | - secure: AjJvKhQ1jIloxogMdtOzJqovPQUBSA0lfHcRsmGdP8HIRKSRi9tKxCCgicTMpMWfvY7qtdexXBbl2/zl6cOhjfTYeAhNwwCg+dw7OVcE8LUn4E+gYZCYIKbNmmkVKsSckQd4h2IcyvqdqLwzjrEzdF95MoUI8WqdLwvQJLkoIaXju6ZT76FslGSUVXk58ZN7p2nr3kW8V7KclIzn/yyyYXE4bjBmS4djuvCReeSfSViCuX5CGT8avBb/IF/M5S7hcQVybmmalysOrranzSx0o9PPUIT9hHqqRpXW6iss2qVj+kCaFiC3ftlApVgizBoGcNAMA8N7hX8kkEjJSpiy7Vswuev9mVN9X94VwVZGyNvdYD8cKKxqTsfFDZDgefnuSYUhymKSBgM4yScYF6IPNJWFWJTugtVeMJ8ivqZhwJuD20nt6x7gGB1FS6m7axxRWeyp7h0FqWU9l6ZfmwHcRziVKNTk9BB4XIqco9M2wjV/YH321IGVwtVR5y6zty10+xk38TthCOidgBurFlMKbFKH5g9K5+84dhsCW0avMlJ0+QkgId0uAVyho+09Wx4cKqXLfobpznkUX+S0Um6G/NbAaUAU+SqBsm+X9CKFsPd/YJoxLdF7eBCG/3Fy4roKg3J4mBYeXe3wVnGft8Eeg0aNpOArMSStMY337UpdV80= |
45 | - secure: dNpyF1AwYIj08pUwT40oSWStGOq9L5pYCuNhQnqIpj6sKgOXg+tkLC2N6mtH93TjeF2OXnTcumjikgNrB+amZhecsiHW94WkRH/mstfuU33GlUX+cAvjt0XPxLtH7YaJTM7xQwQ0dSFS5I0ptSEC57cOoF0MoAWY8ZpDtBR8EDGTfvX+nbVA2un0swWOhfJBLKFe3hv4ODYMi3KelyGmSB0n8DSHpcRpDsFzUNvPuUdxbOebKi46S6SLNWXsl0m9ft3RZLF45HM3qmB+Su5PSgibL/h4fKNMIe2YUpfoXdPbVMh5mlTYoFoLB3Xdi//HabcKoNHLE4aJNkW6RXgy7ZAQJRuXiBPPFktqAgBGnkAFrrS3dtb6b4qfxqoPeXoGMi5ctAVEPBiMaqwZsAIyffokYZyRUX3Qy7dtXCXR1C92WxQc9/Vnv3IJkjpXC4tK68uzady4E+BozoWtGgcZE/w68U/melFeoyLvIPMO93KwciaTIsx5Ck9MGBC8QOEqpH0L2dKntsrihoKB4hCQhGJmx5y2ash0UUWMA2eS7L+Wfp0vU6RbIkgEqHTkb70VuP7pTNYWasBPx+/k1xAJqi6nsGmB2BjC03VQToWfHaLgOVs2tbeolvMKzAdItg668tDGIsXfbKjxwkbexuBkhNKNiUmYd3Ub5Ki4cwg2ObU= | 36 | - secure: WNQBUyNvjTwMFm6pPzNXZYRvgLCTgEm93vLX/0amtr6gT6N8ZsTLL5+Ht3+v51MUOsjEe6tCM4cLSh4wSuwWcSEsUjK0jiqknlpgKKl6xLeo+1t8u6BKSgTpipWqrSD24TbvMrFUyeQrqCGRdZc3Ax/F1ERD81SXcsrg2evCL8g8zsYjxSMXc44drKrvYi68s/5ALrI+oH3t2PYsGuuP1ipj5CbaizUHEa5d8TukHRl96lxoEKCQ4Sa8UXRPNQsdb3TdkVmIEPIoioWU6AMPweBWR6Ky994aKwp0wWn1adWP49v8skMYWbirENniSxShtztF/NYqPQFyoyh0WD/C/ZJPh04HlMxnmQPUROq+LxBFz8WBY1eHDmz6GxH1lDYzneTtlRa5K8izvs2+ROhpVmmKeOgWHaL1ZRMy8Cn3V88kadF7i1K9NnqB6ZPyynJJctj7o0af6Os9/ZPqWfqIOWWeXgfXVzj17xJADfh6Z9epW95hdKZjnIf9IqGAI8aYTqhVL8DKTJ+PSGhJIOEX+ERm+0U9gMlwllwjHCDhBe42zCGuLaWZ239yD1eacM0Ko7yUM+xobiiF0FlB8VI/nBOpGdeUKNLeUfikLHILWd04AVRCNaQU67GMOHekfWdGR8tEh9I/5Y6GJR0IQL5eGmDUjSN0u/Ovss4jSEBOaXo= |
@@ -14,11 +14,8 @@ Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many mor | |||
14 | 14 | ||
15 | ### Preparations | 15 | ### Preparations |
16 | 16 | ||
17 | #### Install OS Dependencies | 17 | #### Install Linux OS dependencies |
18 | ##### Linux (Debian/Ubuntu) | 18 | [Guide: Linux distribution specific dependencies](docs/linux.md) |
19 | ```bash | ||
20 | $ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev | ||
21 | ``` | ||
22 | 19 | ||
23 | #### Install yarn | 20 | #### Install yarn |
24 | ##### MacOS | 21 | ##### MacOS |
diff --git a/docs/linux.md b/docs/linux.md new file mode 100644 index 000000000..bd70ad324 --- /dev/null +++ b/docs/linux.md | |||
@@ -0,0 +1,11 @@ | |||
1 | # Linux distribution specific dependencies | ||
2 | |||
3 | ## Debian/Ubuntu | ||
4 | ```bash | ||
5 | $ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev | ||
6 | ``` | ||
7 | |||
8 | ## Fedora | ||
9 | ```bash | ||
10 | $ dnf-install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel | ||
11 | ``` | ||
diff --git a/electron-builder.yml b/electron-builder.yml index 80ef5405e..0a01a03d8 100644 --- a/electron-builder.yml +++ b/electron-builder.yml | |||
@@ -2,7 +2,7 @@ directories: | |||
2 | app: ./build | 2 | app: ./build |
3 | output: ./out | 3 | output: ./out |
4 | 4 | ||
5 | forceCodeSigning: true | 5 | # forceCodeSigning: true |
6 | 6 | ||
7 | compression: maximum | 7 | compression: maximum |
8 | 8 | ||
diff --git a/package.json b/package.json index 6521432de..2457c05a9 100644 --- a/package.json +++ b/package.json | |||
@@ -18,6 +18,7 @@ | |||
18 | "prebuild": "gulp build", | 18 | "prebuild": "gulp build", |
19 | "build": "node_modules/.bin/electron-builder --publish onTag", | 19 | "build": "node_modules/.bin/electron-builder --publish onTag", |
20 | "rebuild": "node_modules/.bin/electron-rebuild", | 20 | "rebuild": "node_modules/.bin/electron-rebuild", |
21 | "precommit": "yarn lint", | ||
21 | "commit": "git-cz", | 22 | "commit": "git-cz", |
22 | "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" | 23 | "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" |
23 | }, | 24 | }, |
@@ -63,7 +64,7 @@ | |||
63 | "react-tooltip": "^3.2.7", | 64 | "react-tooltip": "^3.2.7", |
64 | "route-parser": "^0.0.5", | 65 | "route-parser": "^0.0.5", |
65 | "smoothscroll-polyfill": "^0.3.4", | 66 | "smoothscroll-polyfill": "^0.3.4", |
66 | "tar.gz": "^1.0.5", | 67 | "tar": "^4.0.2", |
67 | "uuid": "^3.0.1" | 68 | "uuid": "^3.0.1" |
68 | }, | 69 | }, |
69 | "devDependencies": { | 70 | "devDependencies": { |
@@ -82,7 +83,7 @@ | |||
82 | "cz-conventional-changelog": "^2.0.0", | 83 | "cz-conventional-changelog": "^2.0.0", |
83 | "del": "^2.2.2", | 84 | "del": "^2.2.2", |
84 | "dotenv": "^4.0.0", | 85 | "dotenv": "^4.0.0", |
85 | "electron": "^1.7.6", | 86 | "electron": "^1.7.9", |
86 | "electron-builder": "19.15.1", | 87 | "electron-builder": "19.15.1", |
87 | "electron-packager": "^8.7.0", | 88 | "electron-packager": "^8.7.0", |
88 | "electron-rebuild": "^1.6.0", | 89 | "electron-rebuild": "^1.6.0", |
diff --git a/src/actions/service.js b/src/actions/service.js index 7f429ca32..cdd4bbf16 100644 --- a/src/actions/service.js +++ b/src/actions/service.js | |||
@@ -4,6 +4,8 @@ export default { | |||
4 | setActive: { | 4 | setActive: { |
5 | serviceId: PropTypes.string.isRequired, | 5 | serviceId: PropTypes.string.isRequired, |
6 | }, | 6 | }, |
7 | setActiveNext: {}, | ||
8 | setActivePrev: {}, | ||
7 | showAddServiceInterface: { | 9 | showAddServiceInterface: { |
8 | recipeId: PropTypes.string.isRequired, | 10 | recipeId: PropTypes.string.isRequired, |
9 | }, | 11 | }, |
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js index 86f4c99e7..8b0b7563c 100644 --- a/src/api/server/ServerApi.js +++ b/src/api/server/ServerApi.js | |||
@@ -1,6 +1,6 @@ | |||
1 | import os from 'os'; | 1 | import os from 'os'; |
2 | import path from 'path'; | 2 | import path from 'path'; |
3 | import targz from 'tar.gz'; | 3 | import tar from 'tar'; |
4 | import fs from 'fs-extra'; | 4 | import fs from 'fs-extra'; |
5 | import { remote } from 'electron'; | 5 | import { remote } from 'electron'; |
6 | 6 | ||
@@ -293,7 +293,11 @@ export default class ServerApi { | |||
293 | const buffer = await res.buffer(); | 293 | const buffer = await res.buffer(); |
294 | fs.writeFileSync(archivePath, buffer); | 294 | fs.writeFileSync(archivePath, buffer); |
295 | 295 | ||
296 | await targz().extract(archivePath, recipeTempDirectory); | 296 | tar.x({ |
297 | file: archivePath, | ||
298 | cwd: recipeTempDirectory, | ||
299 | sync: true, | ||
300 | }); | ||
297 | 301 | ||
298 | const { id } = fs.readJsonSync(path.join(recipeTempDirectory, 'package.json')); | 302 | const { id } = fs.readJsonSync(path.join(recipeTempDirectory, 'package.json')); |
299 | const recipeDirectory = path.join(recipesDirectory, id); | 303 | const recipeDirectory = path.join(recipesDirectory, id); |
@@ -443,6 +447,10 @@ export default class ServerApi { | |||
443 | 447 | ||
444 | // Helper | 448 | // Helper |
445 | async _mapServiceModels(services) { | 449 | async _mapServiceModels(services) { |
450 | const recipes = services.map(s => s.recipeId); | ||
451 | |||
452 | await this._bulkRecipeCheck(recipes); | ||
453 | |||
446 | return Promise.all(services | 454 | return Promise.all(services |
447 | .map(async service => await this._prepareServiceModel(service)) // eslint-disable-line | 455 | .map(async service => await this._prepareServiceModel(service)) // eslint-disable-line |
448 | ); | 456 | ); |
@@ -454,19 +462,8 @@ export default class ServerApi { | |||
454 | recipe = this.recipes.find(r => r.id === service.recipeId); | 462 | recipe = this.recipes.find(r => r.id === service.recipeId); |
455 | 463 | ||
456 | if (!recipe) { | 464 | if (!recipe) { |
457 | console.warn(`Recipe '${service.recipeId}' not installed, trying to fetch from server`); | 465 | console.warn(`Recipe ${service.recipeId} not loaded`); |
458 | 466 | return null; | |
459 | await this.getRecipePackage(service.recipeId); | ||
460 | |||
461 | console.debug('Rerun ServerAPI::getInstalledRecipes'); | ||
462 | await this.getInstalledRecipes(); | ||
463 | |||
464 | recipe = this.recipes.find(r => r.id === service.recipeId); | ||
465 | |||
466 | if (!recipe) { | ||
467 | console.warn(`Could not load recipe ${service.recipeId}`); | ||
468 | return null; | ||
469 | } | ||
470 | } | 467 | } |
471 | 468 | ||
472 | return new ServiceModel(service, recipe); | 469 | return new ServiceModel(service, recipe); |
@@ -476,6 +473,35 @@ export default class ServerApi { | |||
476 | } | 473 | } |
477 | } | 474 | } |
478 | 475 | ||
476 | async _bulkRecipeCheck(unfilteredRecipes) { | ||
477 | // Filter recipe duplicates as we don't need to download 3 Slack recipes | ||
478 | const recipes = unfilteredRecipes.filter((elem, pos, arr) => arr.indexOf(elem) === pos); | ||
479 | |||
480 | return Promise.all(recipes | ||
481 | .map(async (recipeId) => { | ||
482 | let recipe = this.recipes.find(r => r.id === recipeId); | ||
483 | |||
484 | if (!recipe) { | ||
485 | console.warn(`Recipe '${recipeId}' not installed, trying to fetch from server`); | ||
486 | |||
487 | await this.getRecipePackage(recipeId); | ||
488 | |||
489 | console.debug('Rerun ServerAPI::getInstalledRecipes'); | ||
490 | await this.getInstalledRecipes(); | ||
491 | |||
492 | recipe = this.recipes.find(r => r.id === recipeId); | ||
493 | |||
494 | if (!recipe) { | ||
495 | console.warn(`Could not load recipe ${recipeId}`); | ||
496 | return null; | ||
497 | } | ||
498 | } | ||
499 | |||
500 | return recipe; | ||
501 | }), | ||
502 | ).catch(err => console.error(err)); | ||
503 | } | ||
504 | |||
479 | _mapRecipePreviewModel(recipes) { | 505 | _mapRecipePreviewModel(recipes) { |
480 | return recipes.map((recipe) => { | 506 | return recipes.map((recipe) => { |
481 | try { | 507 | try { |
diff --git a/src/assets/images/tray/darwin-dark/tray-active.png b/src/assets/images/tray/darwin-dark/tray-active.png new file mode 100644 index 000000000..489533dbf --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray-active.png | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/darwin-dark/tray-active@2x.png b/src/assets/images/tray/darwin-dark/tray-active@2x.png new file mode 100644 index 000000000..76f212b52 --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray-active@2x.png | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/darwin-dark/tray-unread-active.png b/src/assets/images/tray/darwin-dark/tray-unread-active.png new file mode 100644 index 000000000..e2fd1a822 --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray-unread-active.png | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/darwin-dark/tray-unread-active@2x.png b/src/assets/images/tray/darwin-dark/tray-unread-active@2x.png new file mode 100644 index 000000000..9a64b3ef8 --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray-unread-active@2x.png | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/darwin-dark/tray-unread.png b/src/assets/images/tray/darwin-dark/tray-unread.png new file mode 100644 index 000000000..e2fd1a822 --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray-unread.png | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/darwin-dark/tray-unread@2x.png b/src/assets/images/tray/darwin-dark/tray-unread@2x.png new file mode 100644 index 000000000..9a64b3ef8 --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray-unread@2x.png | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/darwin-dark/tray.png b/src/assets/images/tray/darwin-dark/tray.png new file mode 100644 index 000000000..489533dbf --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray.png | |||
Binary files differ | |||
diff --git a/src/assets/images/tray/darwin-dark/tray@2x.png b/src/assets/images/tray/darwin-dark/tray@2x.png new file mode 100644 index 000000000..76f212b52 --- /dev/null +++ b/src/assets/images/tray/darwin-dark/tray@2x.png | |||
Binary files differ | |||
diff --git a/src/components/auth/Import.js b/src/components/auth/Import.js index cf83aa9c8..06493a0fd 100644 --- a/src/components/auth/Import.js +++ b/src/components/auth/Import.js | |||
@@ -99,7 +99,6 @@ export default class Import extends Component { | |||
99 | <tr | 99 | <tr |
100 | key={service.id} | 100 | key={service.id} |
101 | className="service-table__row" | 101 | className="service-table__row" |
102 | onClick={() => service.$('add').set(!service.$('add').value)} | ||
103 | > | 102 | > |
104 | <td className="service-table__toggle"> | 103 | <td className="service-table__toggle"> |
105 | <Toggle | 104 | <Toggle |
diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js index 015079f02..67e92849d 100644 --- a/src/components/auth/Login.js +++ b/src/components/auth/Login.js | |||
@@ -3,11 +3,14 @@ import PropTypes from 'prop-types'; | |||
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | 5 | ||
6 | import { isDevMode, useLiveAPI } from '../../environment'; | ||
6 | import Form from '../../lib/Form'; | 7 | import Form from '../../lib/Form'; |
7 | import { required, email } from '../../helpers/validation-helpers'; | 8 | import { required, email } from '../../helpers/validation-helpers'; |
8 | import Input from '../ui/Input'; | 9 | import Input from '../ui/Input'; |
9 | import Button from '../ui/Button'; | 10 | import Button from '../ui/Button'; |
10 | import Link from '../ui/Link'; | 11 | import Link from '../ui/Link'; |
12 | import Infobox from '../ui/Infobox'; | ||
13 | |||
11 | 14 | ||
12 | import { globalError as globalErrorPropType } from '../../prop-types'; | 15 | import { globalError as globalErrorPropType } from '../../prop-types'; |
13 | 16 | ||
@@ -117,6 +120,11 @@ export default class Login extends Component { | |||
117 | alt="" | 120 | alt="" |
118 | /> | 121 | /> |
119 | <h1>{intl.formatMessage(messages.headline)}</h1> | 122 | <h1>{intl.formatMessage(messages.headline)}</h1> |
123 | {isDevMode && !useLiveAPI && ( | ||
124 | <Infobox type="warning"> | ||
125 | In Dev Mode your data is not persistent. Please use the live app for accesing the production API. | ||
126 | </Infobox> | ||
127 | )} | ||
120 | {isTokenExpired && ( | 128 | {isTokenExpired && ( |
121 | <p className="error-message center">{intl.formatMessage(messages.tokenExpired)}</p> | 129 | <p className="error-message center">{intl.formatMessage(messages.tokenExpired)}</p> |
122 | )} | 130 | )} |
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js index 71ca16111..a990a112e 100644 --- a/src/components/auth/Signup.js +++ b/src/components/auth/Signup.js | |||
@@ -3,12 +3,14 @@ import PropTypes from 'prop-types'; | |||
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | 5 | ||
6 | import { isDevMode, useLiveAPI } from '../../environment'; | ||
6 | import Form from '../../lib/Form'; | 7 | import Form from '../../lib/Form'; |
7 | import { required, email, minLength } from '../../helpers/validation-helpers'; | 8 | import { required, email, minLength } from '../../helpers/validation-helpers'; |
8 | import Input from '../ui/Input'; | 9 | import Input from '../ui/Input'; |
9 | import Radio from '../ui/Radio'; | 10 | import Radio from '../ui/Radio'; |
10 | import Button from '../ui/Button'; | 11 | import Button from '../ui/Button'; |
11 | import Link from '../ui/Link'; | 12 | import Link from '../ui/Link'; |
13 | import Infobox from '../ui/Infobox'; | ||
12 | 14 | ||
13 | import { globalError as globalErrorPropType } from '../../prop-types'; | 15 | import { globalError as globalErrorPropType } from '../../prop-types'; |
14 | 16 | ||
@@ -145,6 +147,11 @@ export default class Signup extends Component { | |||
145 | alt="" | 147 | alt="" |
146 | /> | 148 | /> |
147 | <h1>{intl.formatMessage(messages.headline)}</h1> | 149 | <h1>{intl.formatMessage(messages.headline)}</h1> |
150 | {isDevMode && !useLiveAPI && ( | ||
151 | <Infobox type="warning"> | ||
152 | In Dev Mode your data is not persistent. Please use the live app for accesing the production API. | ||
153 | </Infobox> | ||
154 | )} | ||
148 | <Radio field={form.$('accountType')} showLabel={false} /> | 155 | <Radio field={form.$('accountType')} showLabel={false} /> |
149 | <div className="grid__row"> | 156 | <div className="grid__row"> |
150 | <Input field={form.$('firstname')} focus /> | 157 | <Input field={form.$('firstname')} focus /> |
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js index 043ff42ea..3ee3155be 100644 --- a/src/components/services/content/ServiceWebview.js +++ b/src/components/services/content/ServiceWebview.js | |||
@@ -6,6 +6,7 @@ import Webview from 'react-electron-web-view'; | |||
6 | import classnames from 'classnames'; | 6 | import classnames from 'classnames'; |
7 | 7 | ||
8 | import ServiceModel from '../../../models/Service'; | 8 | import ServiceModel from '../../../models/Service'; |
9 | import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; | ||
9 | 10 | ||
10 | @observer | 11 | @observer |
11 | export default class ServiceWebview extends Component { | 12 | export default class ServiceWebview extends Component { |
@@ -20,6 +21,8 @@ export default class ServiceWebview extends Component { | |||
20 | 21 | ||
21 | state = { | 22 | state = { |
22 | forceRepaint: false, | 23 | forceRepaint: false, |
24 | targetUrl: '', | ||
25 | statusBarVisible: false, | ||
23 | }; | 26 | }; |
24 | 27 | ||
25 | componentDidMount() { | 28 | componentDidMount() { |
@@ -33,6 +36,17 @@ export default class ServiceWebview extends Component { | |||
33 | }); | 36 | }); |
34 | } | 37 | } |
35 | 38 | ||
39 | updateTargetUrl = (event) => { | ||
40 | let visible = true; | ||
41 | if (event.url === '' || event.url === '#') { | ||
42 | visible = false; | ||
43 | } | ||
44 | this.setState({ | ||
45 | targetUrl: event.url, | ||
46 | statusBarVisible: visible, | ||
47 | }); | ||
48 | } | ||
49 | |||
36 | webview = null; | 50 | webview = null; |
37 | 51 | ||
38 | render() { | 52 | render() { |
@@ -47,6 +61,13 @@ export default class ServiceWebview extends Component { | |||
47 | 'services__webview--force-repaint': this.state.forceRepaint, | 61 | 'services__webview--force-repaint': this.state.forceRepaint, |
48 | }); | 62 | }); |
49 | 63 | ||
64 | let statusBar = null; | ||
65 | if (this.state.statusBarVisible) { | ||
66 | statusBar = ( | ||
67 | <StatusBarTargetUrl text={this.state.targetUrl} /> | ||
68 | ); | ||
69 | } | ||
70 | |||
50 | return ( | 71 | return ( |
51 | <div className={webviewClasses}> | 72 | <div className={webviewClasses}> |
52 | <Webview | 73 | <Webview |
@@ -62,11 +83,14 @@ export default class ServiceWebview extends Component { | |||
62 | webview: this.webview.view, | 83 | webview: this.webview.view, |
63 | })} | 84 | })} |
64 | 85 | ||
86 | onUpdateTargetUrl={this.updateTargetUrl} | ||
87 | |||
65 | useragent={service.userAgent} | 88 | useragent={service.userAgent} |
66 | 89 | ||
67 | disablewebsecurity | 90 | disablewebsecurity |
68 | allowpopups | 91 | allowpopups |
69 | /> | 92 | /> |
93 | {statusBar} | ||
70 | </div> | 94 | </div> |
71 | ); | 95 | ); |
72 | } | 96 | } |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 02736dbb9..5675fecf4 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -115,6 +115,7 @@ export default class EditSettingsForm extends Component { | |||
115 | <h2>{intl.formatMessage(messages.headlineGeneral)}</h2> | 115 | <h2>{intl.formatMessage(messages.headlineGeneral)}</h2> |
116 | <Toggle field={form.$('autoLaunchOnStart')} /> | 116 | <Toggle field={form.$('autoLaunchOnStart')} /> |
117 | <Toggle field={form.$('runInBackground')} /> | 117 | <Toggle field={form.$('runInBackground')} /> |
118 | <Toggle field={form.$('enableSystemTray')} /> | ||
118 | {process.platform === 'win32' && ( | 119 | {process.platform === 'win32' && ( |
119 | <Toggle field={form.$('minimizeToSystemTray')} /> | 120 | <Toggle field={form.$('minimizeToSystemTray')} /> |
120 | )} | 121 | )} |
diff --git a/src/components/ui/StatusBarTargetUrl.js b/src/components/ui/StatusBarTargetUrl.js new file mode 100644 index 000000000..b7b198f42 --- /dev/null +++ b/src/components/ui/StatusBarTargetUrl.js | |||
@@ -0,0 +1,40 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import classnames from 'classnames'; | ||
5 | |||
6 | import Appear from '../ui/effects/Appear'; | ||
7 | |||
8 | @observer | ||
9 | export default class StatusBarTargetUrl extends Component { | ||
10 | static propTypes = { | ||
11 | className: PropTypes.string, | ||
12 | text: PropTypes.string, | ||
13 | }; | ||
14 | |||
15 | static defaultProps = { | ||
16 | className: '', | ||
17 | position: 'bottom', | ||
18 | text: '', | ||
19 | }; | ||
20 | |||
21 | render() { | ||
22 | const { | ||
23 | className, | ||
24 | text, | ||
25 | } = this.props; | ||
26 | |||
27 | return ( | ||
28 | <Appear | ||
29 | className={classnames({ | ||
30 | 'status-bar-target-url': true, | ||
31 | [`${className}`]: true, | ||
32 | })} | ||
33 | > | ||
34 | <div className="status-bar-target-url__content"> | ||
35 | {text} | ||
36 | </div> | ||
37 | </Appear> | ||
38 | ); | ||
39 | } | ||
40 | } | ||
diff --git a/src/components/ui/Subscription.js b/src/components/ui/Subscription.js index ada5cc3e0..fe0925a26 100644 --- a/src/components/ui/Subscription.js +++ b/src/components/ui/Subscription.js | |||
@@ -79,7 +79,7 @@ const messages = defineMessages({ | |||
79 | }, | 79 | }, |
80 | miningDetail1: { | 80 | miningDetail1: { |
81 | id: 'subscription.mining.line1', | 81 | id: 'subscription.mining.line1', |
82 | defaultMessage: '!!!By enabling "Support with processing power", Franz will use about 20-50% of your CPU to mine cryptocurrency Monero which equals approximately $ 5/year.', | 82 | defaultMessage: '!!!By enabling "Support with processing power", Franz will use about 20-50% of your CPU to mine cryptocurrency Monero which equals approximately € 5/year.', |
83 | }, | 83 | }, |
84 | miningDetail2: { | 84 | miningDetail2: { |
85 | id: 'subscription.mining.line2', | 85 | id: 'subscription.mining.line2', |
@@ -136,12 +136,12 @@ export default class SubscriptionForm extends Component { | |||
136 | validate: [required], | 136 | validate: [required], |
137 | options: [{ | 137 | options: [{ |
138 | value: 'month', | 138 | value: 'month', |
139 | label: `$ ${Object.hasOwnProperty.call(this.props.plan, 'month') | 139 | label: `€ ${Object.hasOwnProperty.call(this.props.plan, 'month') |
140 | ? `${this.props.plan.month.price} / ${intl.formatMessage(messages.typeMonthly)}` | 140 | ? `${this.props.plan.month.price} / ${intl.formatMessage(messages.typeMonthly)}` |
141 | : 'monthly'}`, | 141 | : 'monthly'}`, |
142 | }, { | 142 | }, { |
143 | value: 'year', | 143 | value: 'year', |
144 | label: `$ ${Object.hasOwnProperty.call(this.props.plan, 'year') | 144 | label: `€ ${Object.hasOwnProperty.call(this.props.plan, 'year') |
145 | ? `${this.props.plan.year.price} / ${intl.formatMessage(messages.typeYearly)}` | 145 | ? `${this.props.plan.year.price} / ${intl.formatMessage(messages.typeYearly)}` |
146 | : 'yearly'}`, | 146 | : 'yearly'}`, |
147 | }, { | 147 | }, { |
@@ -155,7 +155,7 @@ export default class SubscriptionForm extends Component { | |||
155 | if (this.props.showSkipOption) { | 155 | if (this.props.showSkipOption) { |
156 | form.fields.paymentTier.options.unshift({ | 156 | form.fields.paymentTier.options.unshift({ |
157 | value: 'skip', | 157 | value: 'skip', |
158 | label: `$ 0 / ${intl.formatMessage(messages.typeFree)}`, | 158 | label: `€ 0 / ${intl.formatMessage(messages.typeFree)}`, |
159 | }); | 159 | }); |
160 | } | 160 | } |
161 | 161 | ||
diff --git a/src/components/ui/SubscriptionPopup.js b/src/components/ui/SubscriptionPopup.js index 72b6ccd98..5aae2c47a 100644 --- a/src/components/ui/SubscriptionPopup.js +++ b/src/components/ui/SubscriptionPopup.js | |||
@@ -57,7 +57,7 @@ export default class SubscriptionPopup extends Component { | |||
57 | className="subscription-popup__webview" | 57 | className="subscription-popup__webview" |
58 | 58 | ||
59 | autosize | 59 | autosize |
60 | src={url} | 60 | src={encodeURI(url)} |
61 | disablewebsecurity | 61 | disablewebsecurity |
62 | onDidNavigate={completeCheck} | 62 | onDidNavigate={completeCheck} |
63 | // onNewWindow={(event, url, frameName, options) => | 63 | // onNewWindow={(event, url, frameName, options) => |
diff --git a/src/config.js b/src/config.js index acbf57f3c..0a4856ece 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -3,3 +3,13 @@ export const LOCAL_API = 'http://localhost:3000'; | |||
3 | export const DEV_API = 'https://dev.franzinfra.com'; | 3 | export const DEV_API = 'https://dev.franzinfra.com'; |
4 | export const LIVE_API = 'https://api.franzinfra.com'; | 4 | export const LIVE_API = 'https://api.franzinfra.com'; |
5 | export const GA_ID = 'UA-74126766-6'; | 5 | export const GA_ID = 'UA-74126766-6'; |
6 | |||
7 | export const DEFAULT_APP_SETTINGS = { | ||
8 | autoLaunchOnStart: true, | ||
9 | autoLaunchInBackground: false, | ||
10 | runInBackground: false, | ||
11 | enableSystemTray: true, | ||
12 | minimizeToSystemTray: false, | ||
13 | locale: 'en-us', // TODO: Replace with proper solution once translations are in | ||
14 | beta: false, | ||
15 | }; | ||
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 0e17cafce..6dc2175e1 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -9,6 +9,7 @@ import UserStore from '../../stores/UserStore'; | |||
9 | import Form from '../../lib/Form'; | 9 | import Form from '../../lib/Form'; |
10 | import languages from '../../i18n/languages'; | 10 | import languages from '../../i18n/languages'; |
11 | import { gaPage } from '../../lib/analytics'; | 11 | import { gaPage } from '../../lib/analytics'; |
12 | import { DEFAULT_APP_SETTINGS } from '../../config'; | ||
12 | 13 | ||
13 | 14 | ||
14 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; | 15 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; |
@@ -26,6 +27,10 @@ const messages = defineMessages({ | |||
26 | id: 'settings.app.form.runInBackground', | 27 | id: 'settings.app.form.runInBackground', |
27 | defaultMessage: '!!!Keep Franz in background when closing the window', | 28 | defaultMessage: '!!!Keep Franz in background when closing the window', |
28 | }, | 29 | }, |
30 | enableSystemTray: { | ||
31 | id: 'settings.app.form.enableSystemTray', | ||
32 | defaultMessage: '!!!Show Franz in system tray', | ||
33 | }, | ||
29 | minimizeToSystemTray: { | 34 | minimizeToSystemTray: { |
30 | id: 'settings.app.form.minimizeToSystemTray', | 35 | id: 'settings.app.form.minimizeToSystemTray', |
31 | defaultMessage: '!!!Minimize Franz to system tray', | 36 | defaultMessage: '!!!Minimize Franz to system tray', |
@@ -61,6 +66,7 @@ export default class EditSettingsScreen extends Component { | |||
61 | settings.update({ | 66 | settings.update({ |
62 | settings: { | 67 | settings: { |
63 | runInBackground: settingsData.runInBackground, | 68 | runInBackground: settingsData.runInBackground, |
69 | enableSystemTray: settingsData.enableSystemTray, | ||
64 | minimizeToSystemTray: settingsData.minimizeToSystemTray, | 70 | minimizeToSystemTray: settingsData.minimizeToSystemTray, |
65 | locale: settingsData.locale, | 71 | locale: settingsData.locale, |
66 | beta: settingsData.beta, | 72 | beta: settingsData.beta, |
@@ -91,33 +97,38 @@ export default class EditSettingsScreen extends Component { | |||
91 | autoLaunchOnStart: { | 97 | autoLaunchOnStart: { |
92 | label: intl.formatMessage(messages.autoLaunchOnStart), | 98 | label: intl.formatMessage(messages.autoLaunchOnStart), |
93 | value: app.autoLaunchOnStart, | 99 | value: app.autoLaunchOnStart, |
94 | default: true, | 100 | default: DEFAULT_APP_SETTINGS.autoLaunchOnStart, |
95 | }, | 101 | }, |
96 | autoLaunchInBackground: { | 102 | autoLaunchInBackground: { |
97 | label: intl.formatMessage(messages.autoLaunchInBackground), | 103 | label: intl.formatMessage(messages.autoLaunchInBackground), |
98 | value: app.launchInBackground, | 104 | value: app.launchInBackground, |
99 | default: false, | 105 | default: DEFAULT_APP_SETTINGS.autoLaunchInBackground, |
100 | }, | 106 | }, |
101 | runInBackground: { | 107 | runInBackground: { |
102 | label: intl.formatMessage(messages.runInBackground), | 108 | label: intl.formatMessage(messages.runInBackground), |
103 | value: settings.all.runInBackground, | 109 | value: settings.all.runInBackground, |
104 | default: true, | 110 | default: DEFAULT_APP_SETTINGS.runInBackground, |
111 | }, | ||
112 | enableSystemTray: { | ||
113 | label: intl.formatMessage(messages.enableSystemTray), | ||
114 | value: settings.all.enableSystemTray, | ||
115 | default: DEFAULT_APP_SETTINGS.enableSystemTray, | ||
105 | }, | 116 | }, |
106 | minimizeToSystemTray: { | 117 | minimizeToSystemTray: { |
107 | label: intl.formatMessage(messages.minimizeToSystemTray), | 118 | label: intl.formatMessage(messages.minimizeToSystemTray), |
108 | value: settings.all.minimizeToSystemTray, | 119 | value: settings.all.minimizeToSystemTray, |
109 | default: false, | 120 | default: DEFAULT_APP_SETTINGS.minimizeToSystemTray, |
110 | }, | 121 | }, |
111 | locale: { | 122 | locale: { |
112 | label: intl.formatMessage(messages.language), | 123 | label: intl.formatMessage(messages.language), |
113 | value: app.locale, | 124 | value: app.locale, |
114 | options, | 125 | options, |
115 | default: 'en-US', | 126 | default: DEFAULT_APP_SETTINGS.locale, |
116 | }, | 127 | }, |
117 | beta: { | 128 | beta: { |
118 | label: intl.formatMessage(messages.beta), | 129 | label: intl.formatMessage(messages.beta), |
119 | value: user.data.beta, | 130 | value: user.data.beta, |
120 | default: false, | 131 | default: DEFAULT_APP_SETTINGS.beta, |
121 | }, | 132 | }, |
122 | }, | 133 | }, |
123 | }; | 134 | }; |
diff --git a/src/containers/ui/SubscriptionPopupScreen.js b/src/containers/ui/SubscriptionPopupScreen.js index d17477b1d..0b6432e50 100644 --- a/src/containers/ui/SubscriptionPopupScreen.js +++ b/src/containers/ui/SubscriptionPopupScreen.js | |||
@@ -24,7 +24,7 @@ export default class SubscriptionPopupScreen extends Component { | |||
24 | render() { | 24 | render() { |
25 | return ( | 25 | return ( |
26 | <SubscriptionPopup | 26 | <SubscriptionPopup |
27 | url={decodeURIComponent(this.props.router.params.url)} | 27 | url={this.props.router.params.url} |
28 | closeWindow={() => window.close()} | 28 | closeWindow={() => window.close()} |
29 | completeCheck={e => this.completeCheck(e)} | 29 | completeCheck={e => this.completeCheck(e)} |
30 | isCompleted={this.state.complete} | 30 | isCompleted={this.state.complete} |
diff --git a/src/electron/Settings.js b/src/electron/Settings.js index 049a08296..824b4c20c 100644 --- a/src/electron/Settings.js +++ b/src/electron/Settings.js | |||
@@ -1,5 +1,17 @@ | |||
1 | import { observable } from 'mobx'; | ||
2 | |||
3 | import { DEFAULT_APP_SETTINGS } from '../config'; | ||
4 | |||
1 | export default class Settings { | 5 | export default class Settings { |
2 | store = {}; | 6 | @observable store = { |
7 | autoLaunchOnStart: DEFAULT_APP_SETTINGS.autoLaunchOnStart, | ||
8 | autoLaunchInBackground: DEFAULT_APP_SETTINGS.autoLaunchInBackground, | ||
9 | runInBackground: DEFAULT_APP_SETTINGS.runInBackground, | ||
10 | enableSystemTray: DEFAULT_APP_SETTINGS.enableSystemTray, | ||
11 | minimizeToSystemTray: DEFAULT_APP_SETTINGS.minimizeToSystemTray, | ||
12 | locale: DEFAULT_APP_SETTINGS.locale, | ||
13 | beta: DEFAULT_APP_SETTINGS.beta, | ||
14 | }; | ||
3 | 15 | ||
4 | set(settings) { | 16 | set(settings) { |
5 | this.store = Object.assign(this.store, settings); | 17 | this.store = Object.assign(this.store, settings); |
diff --git a/src/electron/ipc-api/appIndicator.js b/src/electron/ipc-api/appIndicator.js index 576234d25..d31819068 100644 --- a/src/electron/ipc-api/appIndicator.js +++ b/src/electron/ipc-api/appIndicator.js | |||
@@ -1,12 +1,11 @@ | |||
1 | import { app, ipcMain, Tray, Menu } from 'electron'; | 1 | import { app, ipcMain } from 'electron'; |
2 | import path from 'path'; | 2 | import path from 'path'; |
3 | import { autorun } from 'mobx'; | ||
3 | 4 | ||
4 | const INDICATOR_TRAY_PLAIN = 'tray'; | ||
5 | const INDICATOR_TRAY_UNREAD = 'tray-unread'; | ||
6 | const INDICATOR_TASKBAR = 'taskbar'; | 5 | const INDICATOR_TASKBAR = 'taskbar'; |
7 | |||
8 | const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; | 6 | const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; |
9 | let trayIcon; | 7 | |
8 | let isTrayIconEnabled; | ||
10 | 9 | ||
11 | function getAsset(type, asset) { | 10 | function getAsset(type, asset) { |
12 | return path.join( | 11 | return path.join( |
@@ -15,26 +14,14 @@ function getAsset(type, asset) { | |||
15 | } | 14 | } |
16 | 15 | ||
17 | export default (params) => { | 16 | export default (params) => { |
18 | trayIcon = new Tray(getAsset('tray', INDICATOR_TRAY_PLAIN)); | 17 | autorun(() => { |
19 | const trayMenuTemplate = [ | 18 | isTrayIconEnabled = params.settings.get('enableSystemTray'); |
20 | { | ||
21 | label: 'Show Franz', | ||
22 | click() { | ||
23 | params.mainWindow.show(); | ||
24 | }, | ||
25 | }, { | ||
26 | label: 'Quit Franz', | ||
27 | click() { | ||
28 | app.quit(); | ||
29 | }, | ||
30 | }, | ||
31 | ]; | ||
32 | |||
33 | const trayMenu = Menu.buildFromTemplate(trayMenuTemplate); | ||
34 | trayIcon.setContextMenu(trayMenu); | ||
35 | 19 | ||
36 | trayIcon.on('click', () => { | 20 | if (!isTrayIconEnabled) { |
37 | params.mainWindow.show(); | 21 | params.trayIcon.hide(); |
22 | } else if (isTrayIconEnabled) { | ||
23 | params.trayIcon.show(); | ||
24 | } | ||
38 | }); | 25 | }); |
39 | 26 | ||
40 | ipcMain.on('updateAppIndicator', (event, args) => { | 27 | ipcMain.on('updateAppIndicator', (event, args) => { |
@@ -68,13 +55,7 @@ export default (params) => { | |||
68 | } | 55 | } |
69 | } | 56 | } |
70 | 57 | ||
71 | // Update system tray | 58 | // Update Tray |
72 | trayIcon.setImage(getAsset('tray', args.indicator !== 0 ? INDICATOR_TRAY_UNREAD : INDICATOR_TRAY_PLAIN)); | 59 | params.trayIcon.setIndicator(args.indicator); |
73 | |||
74 | if (process.platform === 'darwin') { | ||
75 | trayIcon.setPressedImage( | ||
76 | getAsset('tray', `${args.indicator !== 0 ? INDICATOR_TRAY_UNREAD : INDICATOR_TRAY_PLAIN}-active`), | ||
77 | ); | ||
78 | } | ||
79 | }); | 60 | }); |
80 | }; | 61 | }; |
diff --git a/src/electron/ipc-api/settings.js b/src/electron/ipc-api/settings.js index 1d7eafa6c..995b28fbd 100644 --- a/src/electron/ipc-api/settings.js +++ b/src/electron/ipc-api/settings.js | |||
@@ -1,10 +1,7 @@ | |||
1 | import { ipcMain } from 'electron'; | 1 | import { ipcMain } from 'electron'; |
2 | 2 | ||
3 | export default (params) => { | 3 | export default (params) => { |
4 | if (process.platform === 'darwin' || process.platform === 'win32') { | 4 | ipcMain.on('settings', (event, args) => { |
5 | // eslint-disable-next-line | 5 | params.settings.set(args); |
6 | ipcMain.on('settings', (event, args) => { | 6 | }); |
7 | params.settings.set(args); | ||
8 | }); | ||
9 | } | ||
10 | }; | 7 | }; |
diff --git a/src/electron/ipc-api/tray.js b/src/electron/ipc-api/tray.js deleted file mode 100644 index 43364c0ed..000000000 --- a/src/electron/ipc-api/tray.js +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | import { Tray, Menu, ipcMain } from 'electron'; | ||
2 | import path from 'path'; | ||
3 | |||
4 | const INDICATOR_PLAIN = 'franz-taskbar'; | ||
5 | const INDICATOR_UNREAD = 'franz-taskbar-unread'; | ||
6 | |||
7 | const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; | ||
8 | |||
9 | let trayIcon; | ||
10 | |||
11 | function getAsset(asset) { | ||
12 | return path.join( | ||
13 | __dirname, '..', '..', 'assets', 'images', 'tray', process.platform, `${asset}.${FILE_EXTENSION}`, | ||
14 | ); | ||
15 | } | ||
16 | |||
17 | export default (params) => { | ||
18 | // if (process.platform === 'win32' || process.platform === 'linux') { | ||
19 | trayIcon = new Tray(getAsset(INDICATOR_PLAIN)); | ||
20 | const trayMenuTemplate = [ | ||
21 | { | ||
22 | label: 'Show Franz', | ||
23 | click() { | ||
24 | params.mainWindow.show(); | ||
25 | }, | ||
26 | }, { | ||
27 | label: 'Quit Franz', | ||
28 | click() { | ||
29 | params.app.quit(); | ||
30 | }, | ||
31 | }, | ||
32 | ]; | ||
33 | |||
34 | const trayMenu = Menu.buildFromTemplate(trayMenuTemplate); | ||
35 | trayIcon.setContextMenu(trayMenu); | ||
36 | |||
37 | trayIcon.on('click', () => { | ||
38 | params.mainWindow.show(); | ||
39 | }); | ||
40 | |||
41 | ipcMain.on('updateTrayIconIndicator', (event, args) => { | ||
42 | trayIcon.setImage(getAsset(args.count !== 0 ? INDICATOR_UNREAD : INDICATOR_PLAIN)); | ||
43 | |||
44 | if (process.platform === 'darwin') { | ||
45 | trayIcon.setPressedImage(getAsset(`${args.count !== 0 ? INDICATOR_UNREAD : INDICATOR_PLAIN}-active`)); | ||
46 | } | ||
47 | }); | ||
48 | }; | ||
diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 2d45ef43e..9860295b3 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js | |||
@@ -1,4 +1,13 @@ | |||
1 | module.exports = { | 1 | module.exports = { |
2 | 'en-US': 'English', | 2 | 'en-US': 'English', |
3 | 'pt-BR': 'Portuguese (Brazil)', | ||
4 | 'el-GR': 'Ελληνικά (Greece)', | ||
5 | nl: 'Nederlands', | ||
3 | 'nl-BE': 'Vlaams', | 6 | 'nl-BE': 'Vlaams', |
7 | de: 'Deutsch', | ||
8 | fr: 'French', | ||
9 | ja: 'Japanese', | ||
10 | pl: 'Polish', | ||
11 | ru: 'Русский', | ||
12 | ua: 'Українська', | ||
4 | }; | 13 | }; |
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json new file mode 100644 index 000000000..78de9903e --- /dev/null +++ b/src/i18n/locales/de.json | |||
@@ -0,0 +1,167 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Verbindung mit dem Franz Online Service fehlgeschlagen.", | ||
3 | "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.", | ||
4 | "welcome.signupButton": "Kostenloses Konto erstellen", | ||
5 | "welcome.loginButton": "Anmelden", | ||
6 | "welcome.slogan": "Kommunikation, die für Dich funktioniert", | ||
7 | "login.headline": "Anmelden", | ||
8 | "login.email.label": "E-Mail-Adresse", | ||
9 | "login.password.label": "Passwort", | ||
10 | "login.submit.label": "Anmelden", | ||
11 | "login.invalidCredentials": "E-Mail-Adresse oder Passwort ungültig", | ||
12 | "login.tokenExpired": "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", | ||
13 | "login.serverLogout": "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", | ||
14 | "login.link.signup": "Kostenloses Konto erstellen", | ||
15 | "login.link.password": "Passwort zurücksetzen", | ||
16 | "password.headline": "Passwort zurücksetzen", | ||
17 | "password.email.label": "E-Mail-Adresse", | ||
18 | "password.submit.label": "Absenden", | ||
19 | "password.noUser": "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden", | ||
20 | "password.successInfo": "Bitte überprüfe Deine E-Mail-Adresse", | ||
21 | "password.link.signup": "Kostenloses Konto erstellen", | ||
22 | "password.link.login": "Anmelden", | ||
23 | "signup.headline": "Registrierung", | ||
24 | "signup.firstname.label": "Vorname", | ||
25 | "signup.lastname.label": "Nachname", | ||
26 | "signup.email.label": "E-Mail-Adresse", | ||
27 | "signup.company.label": "Unternehmen", | ||
28 | "signup.password.label": "Passwort", | ||
29 | "signup.submit.label": "Konto erstellen", | ||
30 | "signup.link.login": "Du hast bereits ein Konto? Melde Dich an.", | ||
31 | "signup.emailDuplicate": "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.", | ||
32 | "signup.legal.info": "Mit der Erstellung eines Franz Kontos, akzeptierst Du die", | ||
33 | "signup.legal.terms": "Nutzungsbedingungen", | ||
34 | "signup.legal.privacy": "Datenschutzerklärung", | ||
35 | "pricing.headline": "Unterstütze Franz", | ||
36 | "pricing.support.label": "Wie möchtest Du Franz unterstützen?", | ||
37 | "pricing.submit.label": "Ich möchte die Entwicklung von Franz unterstützen.", | ||
38 | "pricing.link.skipPayment": "Ich möchte die Entwicklung von Franz nicht unterstützen.", | ||
39 | "import.headline": "Importiere Deine Franz 4 Dienste", | ||
40 | "import.notSupportedHeadline": "Dienste, die noch nicht von Franz 5 unterstützt werden", | ||
41 | "import.submit.label": "Dienste importieren", | ||
42 | "import.skip.label": "Ich möchte einen Dienst manuell hinzufügen", | ||
43 | "invite.submit.label": "Einladungen senden", | ||
44 | "invite.headline.friends": "Lade 3 Deiner Freund oder Kollegen ein", | ||
45 | "invite.name.label": "Name", | ||
46 | "invite.email.label": "E-Mail-Adresse", | ||
47 | "invite.skip.label": "Ich möchte das später tun", | ||
48 | "subscription.submit.label": "Ich möchte die Entwicklung von Franz unterstützen", | ||
49 | "subscription.paymentSessionError": "Das Zahlungs-Formular konnte nicht geladen werden.", | ||
50 | "subscription.includedFeatures": "Bezahlte Franz Premium Support Konten beinhalten", | ||
51 | "subscription.features.onpremise": "Integration von gehosteten Diensten, wie HipChat", | ||
52 | "subscription.features.customServices": "Private Dienste für Dich und Dein Team", | ||
53 | "subscription.features.encryptedSync": "Verschlüsselte Sitzungs-Synchronisation", | ||
54 | "subscription.features.vpn": "Proxy & VPN Unterstützung", | ||
55 | "subscription.features.ads": "Nie mehr Werbung!", | ||
56 | "subscription.features.comingSoon": "folgt bald", | ||
57 | "infobar.servicesUpdated": "Deine Dienste wurden aktualisiert.", | ||
58 | "infobar.updateAvailable": "Eine neue Version von Franz ist verfügbar.", | ||
59 | "infobar.buttonReloadServices": "Dienste neuladen", | ||
60 | "infobar.buttonInstallUpdate": "Neustarten & Aktualisierung installieren", | ||
61 | "infobar.requiredRequestsFailed": "Dienste und Benutzerinformationen konnten nicht geladen werden", | ||
62 | "sidebar.settings": "Einstellungen", | ||
63 | "services.welcome": "Willkommen bei Franz", | ||
64 | "services.getStarted": "Loslegen", | ||
65 | "settings.account.headline": "Konto", | ||
66 | "settings.account.headlineSubscription": "Dein Abonnement", | ||
67 | "settings.account.headlineUpgrade": "Erweitere Dein Konto & unterstütze Franz", | ||
68 | "settings.account.headlineInvoices": "Rechnungen", | ||
69 | "settings.account.manageSubscription.label": "Verwalte Dein Abonnement", | ||
70 | "settings.account.accountType.basic": "Basis Konto", | ||
71 | "settings.account.accountType.premium": "Premium-Supporter Konto", | ||
72 | "settings.account.account.editButton": "Konto bearbeiten", | ||
73 | "settings.account.invoiceDownload": "Herunterladen", | ||
74 | "settings.account.userInfoRequestFailed": "Benutzerinformationen konnten nicht geladen werden", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Erneut versuchen", | ||
76 | "settings.account.headlineProfile": "Profil aktualisieren", | ||
77 | "settings.account.headlineAccount": "Kontoinformationen", | ||
78 | "settings.account.headlinePassword": "Passwort ändern", | ||
79 | "settings.account.successInfo": "Deine Änderungen wurden gespeichert.", | ||
80 | "settings.account.buttonSave": "Profil aktualisieren", | ||
81 | "settings.account.mining.thankyou": "Vielen Dank, dass Du Franz mit Deiner Rechenleistung unterstützt.", | ||
82 | "settings.account.mining.active": "Du führst gerade {hashes} Berechnungen pro Sekunde aus.", | ||
83 | "settings.account.mining.moreInformation": "Weitere Informationen", | ||
84 | "settings.account.mining.cancel": "Mining abbrechen", | ||
85 | "settings.navigation.availableServices": "Verfügbare Dienste", | ||
86 | "settings.navigation.yourServices": "Deine Dienste", | ||
87 | "settings.navigation.account": "Konto", | ||
88 | "settings.navigation.settings": "Einstellungen", | ||
89 | "settings.navigation.logout": "Abmelden", | ||
90 | "settings.recipes.headline": "Verfügbare Dienste", | ||
91 | "settings.recipes.mostPopular": "Am beliebtesten", | ||
92 | "settings.recipes.all": "Alle Dienste", | ||
93 | "settings.recipes.dev": "Entwicklung", | ||
94 | "settings.recipes.nothingFound": "Entschuldigung, aber kein Dienst entspricht Deiner Suchanfrage.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Dienst erfolgreich hinzugefügt", | ||
96 | "settings.service.form.saveButton": "Dienst speichern", | ||
97 | "settings.service.form.deleteButton": "Dienst entfernen", | ||
98 | "settings.service.form.availableServices": "Verfügbare Dienste", | ||
99 | "settings.service.form.yourServices": "Deine Dienste", | ||
100 | "settings.service.form.addServiceHeadline": "{name} hinzufügen", | ||
101 | "settings.service.form.editServiceHeadline": "{name} bearbeiten", | ||
102 | "settings.service.form.tabHosted": "Gehostet", | ||
103 | "settings.service.form.tabOnPremise": "Selbst gehostet ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "Dein eigener {name} server konnte nicht verifiziert werden.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Um einen selbst gehosteten Dienst hinzuzufügen, brauchst Du ein Franz Premium-Supporter Konto.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Erweitere Dein Konto", | ||
107 | "settings.service.form.indirectMessageInfo": "Du wirst über alle neuen Nachrichten in einem Kanal informiert, nicht nur @username, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Fehler", | ||
109 | "settings.service.error.goBack": "Zurück zu den Diensten", | ||
110 | "settings.service.error.message": "Das Dienst-Rezept konnte nicht geladen werden.", | ||
111 | "settings.services.tooltip.isDisabled": "Dienst deaktiviert", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Benachrichtigungen deaktiviert", | ||
113 | "settings.services.headline": "Deine Dienste", | ||
114 | "settings.services.noServicesAdded": "Du hast noch keine Dienste hinzugefügt.", | ||
115 | "settings.services.discoverServices": "Dienste entdecken", | ||
116 | "settings.services.updatedInfo": "Deine Änderungen wurden gespeichert.", | ||
117 | "settings.services.deletedInfo": "Dienst wurde entfernt", | ||
118 | "settings.app.headline": "Einstellungen", | ||
119 | "settings.app.headlineGeneral": "Allgemein", | ||
120 | "settings.app.headlineLanguage": "Sprache", | ||
121 | "settings.app.headlineUpdates": "Aktualisierungen", | ||
122 | "settings.app.buttonSearchForUpdate": "Auf Aktualisierungen prüfen", | ||
123 | "settings.app.buttonInstallUpdate": "Neustarten & Aktualisierung installieren", | ||
124 | "settings.app.updateStatusSearching": "Suche nach Aktualisierungen", | ||
125 | "settings.app.updateStatusAvailable": "Aktualisierung verfügbar, herunterladen...", | ||
126 | "settings.app.updateStatusUpToDate": "Du nutzt die aktuellste Version von Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Franz beim Systemstart ausführen", | ||
128 | "settings.app.form.autoLaunchInBackground": "Im Hintergrund öffnen", | ||
129 | "settings.app.form.minimizeToSystemTray": "Franz in die Taskleiste minimieren", | ||
130 | "settings.app.form.runInBackground": "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird", | ||
131 | "settings.app.form.language": "Sprache", | ||
132 | "settings.app.form.beta": "Beta-Versionen einbeziehen", | ||
133 | "settings.app.currentVersion": "Aktuelle Version:", | ||
134 | "settings.service.form.name": "Name", | ||
135 | "settings.service.form.enableService": "Dienst aktivieren", | ||
136 | "settings.service.form.enableNotification": "Benachrichtigungen aktivieren", | ||
137 | "settings.service.form.team": "Team", | ||
138 | "settings.service.form.customUrl": "Eigener Server", | ||
139 | "settings.service.form.indirectMessages": "Nachrichten-Badge für alle neuen Nachrichten anzeigen", | ||
140 | "settings.user.form.firstname": "Vorname", | ||
141 | "settings.user.form.lastname": "Nachname", | ||
142 | "settings.user.form.email": "E-Mail-Adresse", | ||
143 | "settings.user.form.currentPassword": "Aktuelles Passwort", | ||
144 | "settings.user.form.newPassword": "Neues Passwort", | ||
145 | "settings.user.form.accountType.label": "Konto-Typ", | ||
146 | "settings.user.form.accountType.individual": "Einzelperson", | ||
147 | "settings.user.form.accountType.non-profit": "Gemeinnützig", | ||
148 | "settings.user.form.accountType.company": "Unternehmen", | ||
149 | "subscription.type.free": "kostenlos", | ||
150 | "subscription.type.month": "Monat", | ||
151 | "subscription.type.year": "Jahr", | ||
152 | "subscription.type.mining": "Unterstütze Franz mit Rechenleistung", | ||
153 | "subscription.mining.headline": "Wie funktioniert das?", | ||
154 | "subscription.mining.experimental": "experimentell", | ||
155 | "subscription.mining.line1": "Durch das Aktivieren von \"Unterstützung mit Rechenleistung\", wird Franz circa 20-50% deines Prozessors nutzen, um die Crypto-Währung Monero zu minen, was ungefähr 5$/Jahr entspricht.", | ||
156 | "subscription.mining.line2": "Wir passen die Prozessor-Nutzung an Dein Arbeitsverhalten an, um Deinen Akku nicht unnötig zu belasten oder Dein System zu verlangsamen.", | ||
157 | "subscription.mining.line3": "So lange der Miner aktiv ist, hast Du unbegrenzten Zugang auf alle Franz Premium-Supporter Funktionen.", | ||
158 | "subscription.mining.moreInformation": "Erhalte mehr Informationen über diesen Plan.", | ||
159 | "subscriptionPopup.buttonCancel": "Abbrechen", | ||
160 | "subscriptionPopup.buttonDone": "Fertig", | ||
161 | "tabs.item.reload": "Neuladen", | ||
162 | "tabs.item.edit": "Bearbeiten", | ||
163 | "tabs.item.disableNotifications": "Benachrichtigungen deaktivieren", | ||
164 | "tabs.item.enableNotification": "Benachrichtigungen aktivieren", | ||
165 | "tabs.item.disableService": "Dienst deaktivieren", | ||
166 | "tabs.item.deleteService": "Dienst entfernen" | ||
167 | } | ||
diff --git a/src/i18n/locales/el-GR.json b/src/i18n/locales/el-GR.json new file mode 100644 index 000000000..511025d4d --- /dev/null +++ b/src/i18n/locales/el-GR.json | |||
@@ -0,0 +1,168 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Δεν είναι δυνατή η σύνδεση με τις online υπηρεσίες του Franz", | ||
3 | "global.notConnectedToTheInternet": "Δεν είστε συνδεδεμένοι στο διαδίκτυο.", | ||
4 | "welcome.signupButton": "Δημιουργία δωρεάν λογαριασμού", | ||
5 | "welcome.loginButton": "Σύνδεση στο λογαριασμό σας", | ||
6 | "welcome.slogan": "Μηνύματα που λειτουργούν για εσάς", | ||
7 | "login.headline": "Σύνδεση", | ||
8 | "login.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", | ||
9 | "login.password.label": "Κωδικός πρόσβασης", | ||
10 | "login.submit.label": "Σύνδεση", | ||
11 | "login.invalidCredentials": "Το email ή ο κωδικός πρόσβασης δεν είναι έγκυρος", | ||
12 | "login.tokenExpired": "Η συνεδρία σας έληξε, συνδεθείτε ξανά.", | ||
13 | "login.serverLogout": "Η συνεδρία σας έληξε, συνδεθείτε ξανά.", | ||
14 | "login.link.signup": "Δημιουργία δωρεάν λογαριασμού", | ||
15 | "login.link.password": "Επαναφορά κωδικού πρόσβασης", | ||
16 | "password.headline": "Επαναφορά κωδικού πρόσβασης", | ||
17 | "password.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", | ||
18 | "password.submit.label": "Υποβολή", | ||
19 | "password.noUser": "Δεν βρέθηκε χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου", | ||
20 | "password.successInfo": "Ελέγξτε το email σας", | ||
21 | "password.link.signup": "Δημιουργία δωρεάν λογαριασμού", | ||
22 | "password.link.login": "Σύνδεση στο λογαριασμό σας", | ||
23 | "signup.headline": "Εγγραφή", | ||
24 | "signup.firstname.label": "Όνομα", | ||
25 | "signup.lastname.label": "Επίθετο", | ||
26 | "signup.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", | ||
27 | "signup.company.label": "Εταιρεία", | ||
28 | "signup.password.label": "Κωδικός πρόσβασης", | ||
29 | "signup.submit.label": "Δημιουργία λογαριασμού", | ||
30 | "signup.link.login": "Έχετε ήδη λογαριασμό, συνδεθείτε ?", | ||
31 | "signup.emailDuplicate": "Ένας χρήστης με τη συγκεκριμένη διεύθυνση ηλεκτρονικού ταχυδρομείου υπάρχει ήδη", | ||
32 | "signup.legal.info": "Δημιουργώντας έναν λογαριασμό Franz αποδέχεστε τους", | ||
33 | "signup.legal.terms": "Όροι υπηρεσίας", | ||
34 | "signup.legal.privacy": "Δήλωση απορρήτου", | ||
35 | "pricing.headline": "Υποστήριξη Franz", | ||
36 | "pricing.support.label": "Επιλέξτε το πακέτο υποστήριξης", | ||
37 | "pricing.submit.label": "Θέλω να βοηθήσω στήν ανάπτυξη του Franz", | ||
38 | "pricing.link.skipPayment": "Δεν θέλω να βοηθήσω στήν ανάπτυξη του Franz.", | ||
39 | "import.headline": "Εισαγάγετε τις Franz 4 υπηρεσίες σας", | ||
40 | "import.notSupportedHeadline": "Υπηρεσίες που δεν υποστηρίζονται ακόμα στο Franz 5", | ||
41 | "import.submit.label": "Υπηρεσίες εισαγωγής", | ||
42 | "import.skip.label": "Θέλω να προσθέσω υπηρεσίες χειροκίνητα", | ||
43 | "invite.submit.label": "Αποστολή προσκλήσεων", | ||
44 | "invite.headline.friends": "Προσκαλέστε 3 από τους φίλους ή τους συναδέλφους σας", | ||
45 | "invite.name.label": "Όνομα", | ||
46 | "invite.email.label": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", | ||
47 | "invite.skip.label": "Θέλω να το κάνω αργότερα", | ||
48 | "subscription.submit.label": "Θέλω να βοηθήσω στήν ανάπτυξη του Franz", | ||
49 | "subscription.paymentSessionError": "Δεν ήταν δυνατή η προετοιμασία της φόρμας πληρωμής", | ||
50 | "subscription.includedFeatures": "Ο Premium λογαριασμός υποστήριξης Franz περιλαμβάνει", | ||
51 | "subscription.features.onpremise": "Add on-premise / hosted services όπως το HipChat", | ||
52 | "subscription.features.customServices": "Ιδιωτικές υπηρεσίες για εσάς και την ομάδα σας", | ||
53 | "subscription.features.encryptedSync": "Κρυπτογραφημένος συγχρονισμός περιόδου σύνδεσης", | ||
54 | "subscription.features.vpn": "Υποστήριξη μεσολαβητή (Proxy) και VPN", | ||
55 | "subscription.features.ads": "Τέλος στις διαφημίσεις, :-D", | ||
56 | "subscription.features.comingSoon": "σύντομα", | ||
57 | "infobar.servicesUpdated": "Οι υπηρεσίες σας έχουν ενημερωθεί.", | ||
58 | "infobar.updateAvailable": "Υπάρχει διαθέσιμη μια νέα ενημέρωση για τον Franz.", | ||
59 | "infobar.buttonReloadServices": "Υπηρεσίες ανανέωσης", | ||
60 | "infobar.buttonInstallUpdate": "Επανεκκίνηση & εγκατάσταση ενημερώσεων", | ||
61 | "infobar.requiredRequestsFailed": "Δεν ήταν δυνατή η φόρτωση υπηρεσιών και πληροφοριών χρηστών", | ||
62 | "sidebar.settings": "Ρυθμίσεις", | ||
63 | "services.welcome": "Καλώς ορίσατε στον Franz", | ||
64 | "services.getStarted": "Ξεκινήστε", | ||
65 | "settings.account.headline": "Λογαριασμός", | ||
66 | "settings.account.headlineSubscription": "Η συνδρομή σας", | ||
67 | "settings.account.headlineUpgrade": "Αναβάθμιση του λογαριασμού σας και υποστήριξη Franz", | ||
68 | "settings.account.headlineInvoices": "Τιμολόγια", | ||
69 | "settings.account.manageSubscription.label": "Διαχείριση της συνδρομής σας", | ||
70 | "settings.account.accountType.basic": "Βασικός λογαριασμός", | ||
71 | "settings.account.accountType.premium": "Υποστηριζόμενος λογαριασμός Premium", | ||
72 | "settings.account.account.editButton": "Επεξεργασία λογαριασμού", | ||
73 | "settings.account.invoiceDownload": "Λήψη", | ||
74 | "settings.account.userInfoRequestFailed": "Δεν ήταν δυνατή η φόρτωση πληροφοριών χρήστη", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Δοκιμάστε ξανά", | ||
76 | "settings.account.headlineProfile": "Ενημέρωση προφίλ", | ||
77 | "settings.account.headlineAccount": "Πληροφορίες λογαριασμού", | ||
78 | "settings.account.headlinePassword": "Αλλαγή κωδικού πρόσβασης", | ||
79 | "settings.account.successInfo": "Οι αλλαγές σας έχουν αποθηκευτεί", | ||
80 | "settings.account.buttonSave": "Ενημέρωση προφίλ", | ||
81 | "settings.account.mining.thankyou": "Σας ευχαριστούμε για την υποστήριξη του Franz με την ισχύ επεξεργασίας σας", | ||
82 | "settings.account.mining.active": "Τώρα πραγματοποιείτε υπολογισμούς {hashes} ανά δευτερόλεπτο.", | ||
83 | "settings.account.mining.moreInformation": "Λάβετε περισσότερες πληροφορίες", | ||
84 | "settings.account.mining.cancel": "Άκυρο εξόρυξη", | ||
85 | "settings.navigation.availableServices": "Διαθέσιμες υπηρεσίες", | ||
86 | "settings.navigation.yourServices": "Οι υπηρεσίες σας", | ||
87 | "settings.navigation.account": "Λογαριασμός", | ||
88 | "settings.navigation.settings": "Ρυθμίσεις", | ||
89 | "settings.navigation.logout": "Αποσύνδεση", | ||
90 | "settings.recipes.headline": "Διαθέσιμες υπηρεσίες", | ||
91 | "settings.recipes.mostPopular": "Τα πιο δημοφιλή", | ||
92 | "settings.recipes.all": "Όλες οι υπηρεσίες", | ||
93 | "settings.recipes.dev": "Ανάπτυξη", | ||
94 | "settings.recipes.nothingFound": "Λυπούμαστε αλλά καμία υπηρεσία δεν ταιριάζει με τον όρο αναζήτησης.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Υπηρεσία προστέθηκε με επιτυχία", | ||
96 | "settings.service.form.saveButton": "Αποθήκευση υπηρεσίας", | ||
97 | "settings.service.form.deleteButton": "Διαγραφή υπηρεσίας", | ||
98 | "settings.service.form.availableServices": "Διαθέσιμες υπηρεσίες", | ||
99 | "settings.service.form.yourServices": "Οι υπηρεσίες σας", | ||
100 | "settings.service.form.addServiceHeadline": "Προσθήκη {όνομα}", | ||
101 | "settings.service.form.editServiceHeadline": "Επεξεργασία {όνομα}", | ||
102 | "settings.service.form.tabHosted": "Φιλοξενείται", | ||
103 | "settings.service.form.tabOnPremise": "Αυτο-φιλοξενείται ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "Δεν ήταν δυνατή η επικύρωση του προσαρμοσμένου διακομιστή {name}.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Για να προσθέσετε υπηρεσίες που φιλοξενούνται μόνος σας, χρειάζεστε έναν λογαριασμό υποστήριξης Premium Franz.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Αναβάθμιση του λογαριασμού σας", | ||
107 | "settings.service.form.indirectMessageInfo": "Θα ειδοποιηθείτε για όλα τα νέα μηνύματα σε ένα κανάλι, όχι μόνο @username, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Σφάλμα", | ||
109 | "settings.service.error.goBack": "Επιστροφή στις υπηρεσίες", | ||
110 | "settings.service.error.message": "Δεν ήταν δυνατή η φόρτωση της συνταγής υπηρεσίας.", | ||
111 | "settings.services.tooltip.isDisabled": "Η υπηρεσία είναι απενεργοποιημένη", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Οι ειδοποιήσεις είναι απενεργοποιημένες", | ||
113 | "settings.services.headline": "Οι υπηρεσίες σας", | ||
114 | "settings.services.noServicesAdded": "Δεν έχετε προσθέσει ακόμα υπηρεσίες.", | ||
115 | "settings.services.discoverServices": "Ανακαλύψτε τις υπηρεσίες", | ||
116 | "settings.services.updatedInfo": "Οι αλλαγές σας έχουν αποθηκευτεί", | ||
117 | "settings.services.deletedInfo": "Η υπηρεσία έχει διαγραφεί", | ||
118 | "settings.app.headline": "Ρυθμίσεις", | ||
119 | "settings.app.headlineΓενικά": "Γενικά", | ||
120 | "settings.app.headlineLanguage": "Γλώσσα", | ||
121 | "settings.app.headlineUpdates": "Ενημερώσεις", | ||
122 | "settings.app.buttonSearchForUpdate": "Έλεγχος για ενημερώσεις", | ||
123 | "settings.app.buttonInstallUpdate": "Επανεκκίνηση & εγκατάσταση ενημερώσεων", | ||
124 | "settings.app.updateStatusSearching": "Ψάχνει για ενημέρωση", | ||
125 | "settings.app.updateStatusAvailable": "Διαθέσιμη ενημέρωση, λήψη ...", | ||
126 | "settings.app.updateStatusUpToDate": "Χρησιμοποιείτε την τελευταία έκδοση του Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Εκκίνηση του Franz στην αρχή", | ||
128 | "settings.app.form.autoLaunchInBackground": "Άνοιγμα στο παρασκήνιο", | ||
129 | "settings.app.form.enableSystemTray": "Εμφάνιση του Franz στο δίσκο συστήματος", | ||
130 | "settings.app.form.minimizeToSystemTray": "Ελαχιστοποίηση του Franz στο δίσκο συστήματος", | ||
131 | "settings.app.form.runInBackground": "Κρατήστε Franz στο παρασκήνιο κατά το κλείσιμο του παραθύρου", | ||
132 | "settings.app.form.language": "Γλώσσα", | ||
133 | "settings.app.form.beta": "Συμπεριλάβετε εκδόσεις beta", | ||
134 | "settings.app.currentVersion": "Τρέχουσα έκδοση:", | ||
135 | "settings.service.form.name": "Όνομα", | ||
136 | "settings.service.form.enableService": "Ενεργοποίηση υπηρεσίας", | ||
137 | "settings.service.form.enableNotification": "Ενεργοποίηση ειδοποιήσεων", | ||
138 | "settings.service.form.team": "Ομάδα", | ||
139 | "settings.service.form.customUrl": "Προσαρμοσμένος διακομιστής", | ||
140 | "settings.service.form.indirectMessages": "Εμφάνιση ειδοποίησης μηνύματος για όλα τα νέα μηνύματα", | ||
141 | "settings.user.form.firstname": "Όνομα", | ||
142 | "settings.user.form.lastname": "Επίθετο", | ||
143 | "settings.user.form.email": "Email", | ||
144 | "settings.user.form.currentPassword": "Τρέχων κωδικός πρόσβασης", | ||
145 | "settings.user.form.newPassword": "Νέος κωδικός πρόσβασης", | ||
146 | "settings.user.form.accountType.label": "Τύπος λογαριασμού", | ||
147 | "settings.user.form.accountType.individual": "Ατομική", | ||
148 | "settings.user.form.accountType.non-profit": "Μη κερδοσκοπικό", | ||
149 | "settings.user.form.accountType.company": "Εταιρεία", | ||
150 | "subscription.type.free": "δωρεάν", | ||
151 | "subscription.type.month": "μήνας", | ||
152 | "subscription.type.year": "έτος", | ||
153 | "subscription.type.mining": "Υποστήριξη Franz με ισχύ CPU", | ||
154 | "subscription.mining.headline": "Πώς λειτουργεί αυτό;", | ||
155 | "subscription.mining.experimental": "πειραματική", | ||
156 | "subscription.mining.line1": "Franz χρησιμοποιεί περίπου το 20-50% της CPU σας για να εξορύξει την κρυπτογράφηση Monero που ισούται περίπου με $ 5 / έτος.", | ||
157 | "subscription.mining.line2": "Θα προσαρμόσουμε τη χρήση της CPU με βάση τη συμπεριφορά εργασίας σας ώστε να μην αποστραγγίσουμε την μπαταρία σας και να επιβραδύνουμε εσάς και το μηχάνημά σας.", | ||
158 | "subscription.mining.line3": "Εφόσον ο Miner είναι ενεργός, θα έχετε απεριόριστη πρόσβαση σε όλα τα χαρακτηριστικά του Franz Premium Supporter.", | ||
159 | "subscription.mining.moreInformation": "Λάβετε περισσότερες πληροφορίες σχετικά με αυτό το πακέτο.", | ||
160 | "subscriptionPopup.buttonCancel": "Ακύρωση", | ||
161 | "subscriptionPopup.buttonDone": "Έγινε", | ||
162 | "tabs.item.reload": "Επαναφόρτωση", | ||
163 | "tabs.item.edit": "Επεξεργασία", | ||
164 | "tabs.item.disableNotifications": "Απενεργοποίηση ειδοποιήσεων", | ||
165 | "tabs.item.enableNotification": "Ενεργοποίηση ειδοποιήσεων", | ||
166 | "tabs.item.disableService": "Απενεργοποίηση υπηρεσίας", | ||
167 | "tabs.item.deleteService": "Διαγραφή υπηρεσίας" | ||
168 | } | ||
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 194b8047c..b9ed51b83 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -126,6 +126,7 @@ | |||
126 | "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", | 126 | "settings.app.updateStatusUpToDate": "You are using the latest version of Franz", |
127 | "settings.app.form.autoLaunchOnStart": "Launch Franz on start", | 127 | "settings.app.form.autoLaunchOnStart": "Launch Franz on start", |
128 | "settings.app.form.autoLaunchInBackground": "Open in background", | 128 | "settings.app.form.autoLaunchInBackground": "Open in background", |
129 | "settings.app.form.enableSystemTray": "Show Franz in system tray", | ||
129 | "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray", | 130 | "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray", |
130 | "settings.app.form.runInBackground": "Keep Franz in background when closing the window", | 131 | "settings.app.form.runInBackground": "Keep Franz in background when closing the window", |
131 | "settings.app.form.language": "Language", | 132 | "settings.app.form.language": "Language", |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json new file mode 100644 index 000000000..84cf54492 --- /dev/null +++ b/src/i18n/locales/fr.json | |||
@@ -0,0 +1,167 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Franz", | ||
3 | "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.", | ||
4 | "welcome.signupButton": "Créer un compte gratuitement", | ||
5 | "welcome.loginButton": "Connectez-vous à votre compte", | ||
6 | "welcome.slogan": "Une messagerie qui fonctionne pour vous", | ||
7 | "login.headline": "S'inscrire", | ||
8 | "login.email.label": "Adresse e-mail", | ||
9 | "login.password.label": "Mot de passe", | ||
10 | "login.submit.label": "Se connecter", | ||
11 | "login.invalidCredentials": "E-mail ou mot de passe invalide", | ||
12 | "login.tokenExpired": "Votre session a expiré, veuillez vous reconnecter.", | ||
13 | "login.serverLogout": "Votre session a expiré, veuillez vous reconnecter.", | ||
14 | "login.link.signup": "Créer un compte gratuitement", | ||
15 | "login.link.password": "Réinitialiser le mot de passe", | ||
16 | "password.headline": "Réinitialiser le mot de passe", | ||
17 | "password.email.label": "Adresse e-mail", | ||
18 | "password.submit.label": "Soumettre", | ||
19 | "password.noUser": "Aucun utilisateur avec cette adresse e-mail n'a été trouvé", | ||
20 | "password.successInfo": "Merci de consulter vos e-mails", | ||
21 | "password.link.signup": "Créer un compte gratuitement", | ||
22 | "password.link.login": "Connectez-vous à votre compte", | ||
23 | "signup.headline": "S'inscrire", | ||
24 | "signup.firstname.label": "Prénom", | ||
25 | "signup.lastname.label": "Nom", | ||
26 | "signup.email.label": "Adresse e-mail", | ||
27 | "signup.company.label": "Compagnie", | ||
28 | "signup.password.label": "Mot de passe", | ||
29 | "signup.submit.label": "Créer un compte", | ||
30 | "signup.link.login": "Vous possédez déjà un compte ? Connectez-vous", | ||
31 | "signup.emailDuplicate": "Un utilisateur avec cette adresse e-mail existe déjà", | ||
32 | "signup.legal.info": "En créant un compte Franz, vous acceptez les", | ||
33 | "signup.legal.terms": "Conditions d'utilisation", | ||
34 | "signup.legal.privacy": "Déclaration de confidentialité", | ||
35 | "pricing.headline": "Supportez Franz", | ||
36 | "pricing.support.label": "Sélectionnez votre plan de soutien", | ||
37 | "pricing.submit.label": "Je veux soutenir le développement de Franz", | ||
38 | "pricing.link.skipPayment": "Je ne veux pas soutenir le développement de Franz.", | ||
39 | "import.headline": "Importez vos services depuis Franz 4", | ||
40 | "import.notSupportedHeadline": "Services non supportés actuellement dans Franz 5", | ||
41 | "import.submit.label": "Importer des services", | ||
42 | "import.skip.label": "Je veux ajouter des services manuellement", | ||
43 | "invite.submit.label": "Envoyer des invitations", | ||
44 | "invite.headline.friends": "Invitez 3 de vos amis ou collègues", | ||
45 | "invite.name.label": "Nom", | ||
46 | "invite.email.label": "Adresse e-mail", | ||
47 | "invite.skip.label": "Je veux faire cela plus tard", | ||
48 | "subscription.submit.label": "Je veux soutenir le développement de Franz", | ||
49 | "subscription.paymentSessionError": "Impossible d'initialiser le formulaire de paiement", | ||
50 | "subscription.includedFeatures": "Le compte payant Supporter Premium Franz inclut", | ||
51 | "subscription.features.onpremise": "Add on-premise/hosted services like HipChat", | ||
52 | "subscription.features.customServices": "Des services privés pour vous et votre équipe", | ||
53 | "subscription.features.encryptedSync": "Synchronisation de session chiffrée", | ||
54 | "subscription.features.vpn": "Support des Proxy et VPN", | ||
55 | "subscription.features.ads": "Aucune publicité !", | ||
56 | "subscription.features.comingSoon": "arrive bientôt", | ||
57 | "infobar.servicesUpdated": "Vos services ont été mis à jour.", | ||
58 | "infobar.updateAvailable": "Une nouvelle mise à jour est disponible pour Franz.", | ||
59 | "infobar.buttonReloadServices": "Recharger les services", | ||
60 | "infobar.buttonInstallUpdate": "Redémarrer et installer la mise à jour", | ||
61 | "infobar.requiredRequestsFailed": "Impossible de charger les services et les informations de l'utilisateur", | ||
62 | "sidebar.settings": "Paramètres", | ||
63 | "services.welcome": "Bienvenue sur Franz", | ||
64 | "services.getStarted": "Commencer", | ||
65 | "settings.account.headline": "Compte", | ||
66 | "settings.account.headlineSubscription": "Votre abonnement", | ||
67 | "settings.account.headlineUpgrade": "Améliorez votre compte et supportez Franz", | ||
68 | "settings.account.headlineInvoices": "Factures", | ||
69 | "settings.account.manageSubscription.label": "Gérer votre abonnement", | ||
70 | "settings.account.accountType.basic": "Compte basique", | ||
71 | "settings.account.accountType.premium": "Compte Supporter Premium", | ||
72 | "settings.account.account.editButton": "Modifier le compte", | ||
73 | "settings.account.invoiceDownload": "Télécharger", | ||
74 | "settings.account.userInfoRequestFailed": "Impossible de charger les informations de l'utilisateur", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Réessayer", | ||
76 | "settings.account.headlineProfile": "Mettre à jour le profil", | ||
77 | "settings.account.headlineAccount": "Informations de compte", | ||
78 | "settings.account.headlinePassword": "Changer le mot de passe", | ||
79 | "settings.account.successInfo": "Vos modifications ont été enregistrées", | ||
80 | "settings.account.buttonSave": "Mettre à jour le profil", | ||
81 | "settings.account.mining.thankyou": "Merci de soutenir Franz avec votre puissance de calcul.", | ||
82 | "settings.account.mining.active": "Vous êtes en train d'effectuer {hashes} calculs par seconde.", | ||
83 | "settings.account.mining.moreInformation": "Obtenir plus d'informations", | ||
84 | "settings.account.mining.cancel": "Annuler le minage", | ||
85 | "settings.navigation.availableServices": "Services disponibles", | ||
86 | "settings.navigation.yourServices": "Vos services", | ||
87 | "settings.navigation.account": "Compte", | ||
88 | "settings.navigation.settings": "Paramètres", | ||
89 | "settings.navigation.logout": "Se déconnecter", | ||
90 | "settings.recipes.headline": "Services disponibles", | ||
91 | "settings.recipes.mostPopular": "Les plus populaires", | ||
92 | "settings.recipes.all": "Tous les services", | ||
93 | "settings.recipes.dev": "Développement", | ||
94 | "settings.recipes.nothingFound": "Désolé, aucun service ne correspond à votre recherche.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Service ajouté avec succès", | ||
96 | "settings.service.form.saveButton": "Enregistrer le service", | ||
97 | "settings.service.form.deleteButton": "Supprimer le service", | ||
98 | "settings.service.form.availableServices": "Services disponibles", | ||
99 | "settings.service.form.yourServices": "Vos services", | ||
100 | "settings.service.form.addServiceHeadline": "Ajouter {name}", | ||
101 | "settings.service.form.editServiceHeadline": "Modifier {name}", | ||
102 | "settings.service.form.tabHosted": "Hébergé", | ||
103 | "settings.service.form.tabOnPremise": "Auto-hébergé ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "Impossible de valider le {name} personnalisé du serveur.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Pour ajouter des services auto-hébergés, vous avez besoin d'un compte Supporter Premium Franz.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Améliorez votre compte", | ||
107 | "settings.service.form.indirectMessageInfo": "Vous serez averti de tous les nouveaux messages dans un salon, pas seulement @username, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Erreur", | ||
109 | "settings.service.error.goBack": "Retour aux services", | ||
110 | "settings.service.error.message": "Could not load service recipe.", | ||
111 | "settings.services.tooltip.isDisabled": "Le service est désactivé", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Les notifications sont désactivées", | ||
113 | "settings.services.headline": "Vos services", | ||
114 | "settings.services.noServicesAdded": "Vous n'avez pas encore ajouté de services.", | ||
115 | "settings.services.discoverServices": "Découvrir des services", | ||
116 | "settings.services.updatedInfo": "Vos modifications ont été enregistrées", | ||
117 | "settings.services.deletedInfo": "Le service a été supprimé", | ||
118 | "settings.app.headline": "Paramètres", | ||
119 | "settings.app.headlineGeneral": "Général", | ||
120 | "settings.app.headlineLanguage": "Langue", | ||
121 | "settings.app.headlineUpdates": "Mises à jour", | ||
122 | "settings.app.buttonSearchForUpdate": "Vérifier les mises à jour", | ||
123 | "settings.app.buttonInstallUpdate": "Redémarrer et installer la mise à jour", | ||
124 | "settings.app.updateStatusSearching": "Recherche des mises à jour", | ||
125 | "settings.app.updateStatusAvailable": "Mise à jour disponible, téléchargement...", | ||
126 | "settings.app.updateStatusUpToDate": "Vous utilisez la dernière version de Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Lancer Franz au démarrage", | ||
128 | "settings.app.form.autoLaunchInBackground": "Ouvrir en arrière-plan", | ||
129 | "settings.app.form.minimizeToSystemTray": "Minimiser Franz dans la zone de notification", | ||
130 | "settings.app.form.runInBackground": "Gardez Franz en arrière-plan lors de la fermeture de la fenêtre", | ||
131 | "settings.app.form.language": "Langue", | ||
132 | "settings.app.form.beta": "Inclure les versions bêta", | ||
133 | "settings.app.currentVersion": "Version actuelle :", | ||
134 | "settings.service.form.name": "Nom", | ||
135 | "settings.service.form.enableService": "Activer le service", | ||
136 | "settings.service.form.enableNotification": "Activer les notifications", | ||
137 | "settings.service.form.team": "Équipe", | ||
138 | "settings.service.form.customUrl": "Serveur personnalisé", | ||
139 | "settings.service.form.indirectMessages": "Afficher le badge des messages pour tous les nouveaux messages", | ||
140 | "settings.user.form.firstname": "Prénom", | ||
141 | "settings.user.form.lastname": "Nom", | ||
142 | "settings.user.form.email": "E-mail", | ||
143 | "settings.user.form.currentPassword": "Mot de passe actuel", | ||
144 | "settings.user.form.newPassword": "Nouveau mot de passe", | ||
145 | "settings.user.form.accountType.label": "Type de compte", | ||
146 | "settings.user.form.accountType.individual": "Individuel", | ||
147 | "settings.user.form.accountType.non-profit": "Non lucratif", | ||
148 | "settings.user.form.accountType.company": "Compagnie", | ||
149 | "subscription.type.free": "gratuit", | ||
150 | "subscription.type.month": "mois", | ||
151 | "subscription.type.year": "année", | ||
152 | "subscription.type.mining": "Soutenez Franz avec de la puissance de calcul", | ||
153 | "subscription.mining.headline": "Comment cela fonctionne-t-il?", | ||
154 | "subscription.mining.experimental": "expérimental", | ||
155 | "subscription.mining.line1": "En activant \"Soutenez Franz avec de la puissance de calcul\", Franz utilisera environ de 20 à 50% de votre CPU pour miner la crypto-monnaie Monero, ce qui équivaut à environ 5$/an.", | ||
156 | "subscription.mining.line2": "Nous adapterons l'utilisation du processeur en fonction de vos habitudes de travail pour ne pas vider votre batterie et ne pas ralentir votre machine.", | ||
157 | "subscription.mining.line3": "Tant que le minage est actif, vous aurez un accès illimité à toutes les fonctionnalités Supporter Premium Franz.", | ||
158 | "subscription.mining.moreInformation": "Obtenir plus d'informations.", | ||
159 | "subscriptionPopup.buttonCancel": "Annuler", | ||
160 | "subscriptionPopup.buttonDone": "Terminé", | ||
161 | "tabs.item.reload": "Recharger", | ||
162 | "tabs.item.edit": "Modifier", | ||
163 | "tabs.item.disableNotifications": "Désactiver les notifications", | ||
164 | "tabs.item.enableNotification": "Activer les notifications", | ||
165 | "tabs.item.disableService": "Désactiver le service", | ||
166 | "tabs.item.deleteService": "Supprimer le service" | ||
167 | } | ||
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json new file mode 100644 index 000000000..a283154c9 --- /dev/null +++ b/src/i18n/locales/ja.json | |||
@@ -0,0 +1,167 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Franzオンラインサービスに接続できません。", | ||
3 | "global.notConnectedToTheInternet": "Internetに接続されていません。", | ||
4 | "welcome.signupButton": "無料アカウントを作成", | ||
5 | "welcome.loginButton": "アカウントにログイン", | ||
6 | "welcome.slogan": "Messaging that works for you", | ||
7 | "login.headline": "サインイン", | ||
8 | "login.email.label": "メールアドレス", | ||
9 | "login.password.label": "パスワード", | ||
10 | "login.submit.label": "サインイン", | ||
11 | "login.invalidCredentials": "メールアドレスかパスワードに誤りがあります。", | ||
12 | "login.tokenExpired": "セッションが切れました。ログインし直して下さい。", | ||
13 | "login.serverLogout": "セッションが切れました。ログインし直して下さい。", | ||
14 | "login.link.signup": "無料アカウントを作成", | ||
15 | "login.link.password": "パスワードをリセット", | ||
16 | "password.headline": "パスワードをリセット", | ||
17 | "password.email.label": "メールアドレス", | ||
18 | "password.submit.label": "送信", | ||
19 | "password.noUser": "このメールアドレスは登録されていません", | ||
20 | "password.successInfo": "メールを確認して下さい", | ||
21 | "password.link.signup": "無料アカウントを作成", | ||
22 | "password.link.login": "サインイン", | ||
23 | "signup.headline": "アカウントの作成", | ||
24 | "signup.firstname.label": "名", | ||
25 | "signup.lastname.label": "姓", | ||
26 | "signup.email.label": "メールアドレス", | ||
27 | "signup.company.label": "会社名", | ||
28 | "signup.password.label": "パスワード", | ||
29 | "signup.submit.label": "作成する", | ||
30 | "signup.link.login": "アカウントを既に持っていますか? こちらからサインイン", | ||
31 | "signup.emailDuplicate": "このメールアドレスは既に登録されています", | ||
32 | "signup.legal.info": "Franzアカウントを作成することで、以下の規約に同意したものとみなします", | ||
33 | "signup.legal.terms": "利用規約", | ||
34 | "signup.legal.privacy": "プライバシーについて", | ||
35 | "pricing.headline": "Franzを支援する", | ||
36 | "pricing.support.label": "プランを選択して下さい", | ||
37 | "pricing.submit.label": "Franzの開発を支援したい", | ||
38 | "pricing.link.skipPayment": "Franzの開発を支援しない", | ||
39 | "import.headline": "Franz 4サービスのインポート", | ||
40 | "import.notSupportedHeadline": "サービスの機能はFranz 5ではまだ対応されていません", | ||
41 | "import.submit.label": "サービスのインポート", | ||
42 | "import.skip.label": "サービスの追加は後で行う", | ||
43 | "invite.submit.label": "招待を送る", | ||
44 | "invite.headline.friends": "あなたの友人や同僚の方を3名までFranzに招待できます", | ||
45 | "invite.name.label": "氏名", | ||
46 | "invite.email.label": "メールアドレス", | ||
47 | "invite.skip.label": "後にする", | ||
48 | "subscription.submit.label": "Franzの開発を支援したい", | ||
49 | "subscription.paymentSessionError": "支払いフォームを初期化出来ません", | ||
50 | "subscription.includedFeatures": "Franz Premium Supporter有料アカウントには以下が含まれます", | ||
51 | "subscription.features.onpremise": "HipChatのようなオンプレミス/ホスト型サービスの追加", | ||
52 | "subscription.features.customServices": "あなたとあなたのチームのためのプライベートサービス", | ||
53 | "subscription.features.encryptedSync": "暗号化されたセッションの同期", | ||
54 | "subscription.features.vpn": "プロキシサーバーとVPNのサポート", | ||
55 | "subscription.features.ads": "広告は一切ありません!", | ||
56 | "subscription.features.comingSoon": "まもなく登場", | ||
57 | "infobar.servicesUpdated": "サービスが更新されました", | ||
58 | "infobar.updateAvailable": "Franzの新しい更新があります", | ||
59 | "infobar.buttonReloadServices": "Serviceのリロード", | ||
60 | "infobar.buttonInstallUpdate": "再起動して更新をインストールする", | ||
61 | "infobar.requiredRequestsFailed": "サービスとユーザー情報が読み込めません", | ||
62 | "sidebar.settings": "設定", | ||
63 | "services.welcome": "Franzにようこそ", | ||
64 | "services.getStarted": "はじめる", | ||
65 | "settings.account.headline": "アカウント", | ||
66 | "settings.account.headlineSubscription": "サブスクリプション内容", | ||
67 | "settings.account.headlineUpgrade": "アカウントをアップグレードし、Franzを支援する", | ||
68 | "settings.account.headlineInvoices": "Invoices", | ||
69 | "settings.account.manageSubscription.label": "サブスクリプションの管理", | ||
70 | "settings.account.accountType.basic": "Basicアカウント", | ||
71 | "settings.account.accountType.premium": "Premium Supporterアカウント", | ||
72 | "settings.account.account.editButton": "アカウントを編集する", | ||
73 | "settings.account.invoiceDownload": "ダウンロード", | ||
74 | "settings.account.userInfoRequestFailed": "ユーザー情報が読み込めません", | ||
75 | "settings.account.tryReloadUserInfoRequest": "リトライ", | ||
76 | "settings.account.headlineProfile": "プロフィールを更新する", | ||
77 | "settings.account.headlineAccount": "アカウント情報", | ||
78 | "settings.account.headlinePassword": "パスワードを変更する", | ||
79 | "settings.account.successInfo": "変更内容が保存されました", | ||
80 | "settings.account.buttonSave": "プロフィールを更新", | ||
81 | "settings.account.mining.thankyou": "お使いのPCの処理能力をFranzの支援に活用して頂き、ありがとうございます。", | ||
82 | "settings.account.mining.active": "1秒あたり{hashes}個のハッシュを計算中です。", | ||
83 | "settings.account.mining.moreInformation": "詳細を確認する", | ||
84 | "settings.account.mining.cancel": "マイニングをキャンセルする", | ||
85 | "settings.navigation.availableServices": "利用可能なサービス", | ||
86 | "settings.navigation.yourServices": "利用中のサービス", | ||
87 | "settings.navigation.account": "アカウント", | ||
88 | "settings.navigation.settings": "設定", | ||
89 | "settings.navigation.logout": "ログアウト", | ||
90 | "settings.recipes.headline": "利用可能なサービス", | ||
91 | "settings.recipes.mostPopular": "最も人気", | ||
92 | "settings.recipes.all": "全てのサービス", | ||
93 | "settings.recipes.dev": "開発版", | ||
94 | "settings.recipes.nothingFound": "すみませんが、検索ワードに該当するサービスが見つかりませんでした。", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "サービスが追加されました", | ||
96 | "settings.service.form.saveButton": "サービスを保存する", | ||
97 | "settings.service.form.deleteButton": "サービスを削除する", | ||
98 | "settings.service.form.availableServices": "利用可能なサービス", | ||
99 | "settings.service.form.yourServices": "利用中のサービス", | ||
100 | "settings.service.form.addServiceHeadline": "{name}を追加", | ||
101 | "settings.service.form.editServiceHeadline": "{name}を編集", | ||
102 | "settings.service.form.tabHosted": "ホスト", | ||
103 | "settings.service.form.tabOnPremise": "セルフホスト ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "カスタムサービス{name}を検証できませんでした。", | ||
105 | "settings.service.form.customUrlPremiumInfo": "独自サービスを追加するためには、Franz Premium Supporterアカウントが必要です。", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "アカウントをアップグレードする", | ||
107 | "settings.service.form.indirectMessageInfo": "@username、@channel、@hereだけでなく、チャンネル内のすべての新規メッセージについて通知されます。", | ||
108 | "settings.service.error.headline": "エラー", | ||
109 | "settings.service.error.goBack": "サービスに戻る", | ||
110 | "settings.service.error.message": "サービスのレシピが読み込めません。", | ||
111 | "settings.services.tooltip.isDisabled": "サービスが無効です", | ||
112 | "settings.services.tooltip.notificationsDisabled": "通知が無効です", | ||
113 | "settings.services.headline": "利用中のサービス", | ||
114 | "settings.services.noServicesAdded": "まだ、どのサービスも追加されていません。", | ||
115 | "settings.services.discoverServices": "サービスを見つける", | ||
116 | "settings.services.updatedInfo": "変更内容が保存されました", | ||
117 | "settings.services.deletedInfo": "サービスが削除されました", | ||
118 | "settings.app.headline": "設定", | ||
119 | "settings.app.headlineGeneral": "一般", | ||
120 | "settings.app.headlineLanguage": "言語", | ||
121 | "settings.app.headlineUpdates": "更新", | ||
122 | "settings.app.buttonSearchForUpdate": "更新の確認", | ||
123 | "settings.app.buttonInstallUpdate": "再起動して更新をインストール", | ||
124 | "settings.app.updateStatusSearching": "更新を確認中", | ||
125 | "settings.app.updateStatusAvailable": "更新が見つかりました。ダウンロードしています...", | ||
126 | "settings.app.updateStatusUpToDate": "お使いのFranzは最新です", | ||
127 | "settings.app.form.autoLaunchOnStart": "システム起動時にFranzを開く", | ||
128 | "settings.app.form.autoLaunchInBackground": "バックグラウンドで開く", | ||
129 | "settings.app.form.minimizeToSystemTray": "Franzをシステムトレイに最小化する", | ||
130 | "settings.app.form.runInBackground": "ウインドウを閉じた際にFranzをバックグラウンドで実行させておく", | ||
131 | "settings.app.form.language": "言語", | ||
132 | "settings.app.form.beta": "Betaバージョンを含める", | ||
133 | "settings.app.currentVersion": "現在のバージョン:", | ||
134 | "settings.service.form.name": "サービス名", | ||
135 | "settings.service.form.enableService": "サービスを有効にする", | ||
136 | "settings.service.form.enableNotification": "通知を有効にする", | ||
137 | "settings.service.form.team": "チーム", | ||
138 | "settings.service.form.customUrl": "カスタムサーバー", | ||
139 | "settings.service.form.indirectMessages": "すべての新規メッセージについてバッジを表示する", | ||
140 | "settings.user.form.firstname": "名", | ||
141 | "settings.user.form.lastname": "姓", | ||
142 | "settings.user.form.email": "メールアドレス", | ||
143 | "settings.user.form.currentPassword": "現在のパスワード", | ||
144 | "settings.user.form.newPassword": "新しいパスワード", | ||
145 | "settings.user.form.accountType.label": "アカウントの種類", | ||
146 | "settings.user.form.accountType.individual": "個人", | ||
147 | "settings.user.form.accountType.non-profit": "非営利", | ||
148 | "settings.user.form.accountType.company": "法人", | ||
149 | "subscription.type.free": "無料", | ||
150 | "subscription.type.month": "月間", | ||
151 | "subscription.type.year": "年間", | ||
152 | "subscription.type.mining": "PCの処理能力を使ってFranzを支援する", | ||
153 | "subscription.mining.headline": "これはどのように動作しているか", | ||
154 | "subscription.mining.experimental": "実験的", | ||
155 | "subscription.mining.line1": "\"PCの処理能力を使ってFranzを支援する\"を有効にすることで、Franzはおよそ20-50%のCPUパワーを暗号通貨Moneroのマイニングに使用し、これはおよそ年間で5ドル分にあたります。", | ||
156 | "subscription.mining.line2": "処理能力に基づいてCPUの使用率を適応しますのでバッテリーを無駄に消費したり、システムを遅くすることはありません。", | ||
157 | "subscription.mining.line3": "マイニングが機能している限り、Franz Premium Supporterの全ての機能を無制限で利用できます。", | ||
158 | "subscription.mining.moreInformation": "このプランの詳細を確認する。", | ||
159 | "subscriptionPopup.buttonCancel": "キャンセルしました", | ||
160 | "subscriptionPopup.buttonDone": "完了しました", | ||
161 | "tabs.item.reload": "リロード", | ||
162 | "tabs.item.edit": "編集", | ||
163 | "tabs.item.disableNotifications": "通知を無効にする", | ||
164 | "tabs.item.enableNotification": "通知を有効にする", | ||
165 | "tabs.item.disableService": "サービスを無効にする", | ||
166 | "tabs.item.deleteService": "サービスを削除する" | ||
167 | } | ||
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json new file mode 100644 index 000000000..159d1f328 --- /dev/null +++ b/src/i18n/locales/nl.json | |||
@@ -0,0 +1,168 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Kan niet verbinden met Franz online services", | ||
3 | "global.notConnectedToTheInternet": "Je bent niet verbonden met het internet.", | ||
4 | "welcome.signupButton": "Maak een gratis account", | ||
5 | "welcome.loginButton": "Log in op je account", | ||
6 | "welcome.slogan": "Messaging dat voor jou werkt", | ||
7 | "login.headline": "Inloggen", | ||
8 | "login.email.label": "E-mailadres", | ||
9 | "login.password.label": "Wachtwoord", | ||
10 | "login.submit.label": "Inloggen", | ||
11 | "login.invalidCredentials": "E-mailadres of wachtwoord ongeldig", | ||
12 | "login.tokenExpired": "De sessie is verlopen, log opnieuw in alsjeblieft.", | ||
13 | "login.serverLogout": "De sessie is verlopen, log opnieuw in alsjeblieft..", | ||
14 | "login.link.signup": "Maak een gratis account", | ||
15 | "login.link.password": "Wachtwoord vergeten", | ||
16 | "password.headline": "Wachtwoord vergeten", | ||
17 | "password.email.label": "E-mailadres", | ||
18 | "password.submit.label": "Verzenden", | ||
19 | "password.noUser": "Geen gebruiker bekend met dat e-mailadres", | ||
20 | "password.successInfo": "Controleer alsjeblieft je e-mail", | ||
21 | "password.link.signup": "Maak een nieuw account aan", | ||
22 | "password.link.login": "Log in op je account", | ||
23 | "signup.headline": "Aanmelden", | ||
24 | "signup.firstname.label": "Voornaam", | ||
25 | "signup.lastname.label": "Achternaam", | ||
26 | "signup.email.label": "E-mailadres", | ||
27 | "signup.company.label": "Bedrijf", | ||
28 | "signup.password.label": "Wachtwoord", | ||
29 | "signup.submit.label": "Maak account aan", | ||
30 | "signup.link.login": "Al een account? Log in!", | ||
31 | "signup.emailDuplicate": "Er bestaat al een gebruiker met dat e-mailadres", | ||
32 | "signup.legal.info": "Door een Franz account aan te maken ga je akkoord met de", | ||
33 | "signup.legal.terms": "Gebruiksvoorwaarden", | ||
34 | "signup.legal.privacy": "Privacy Voorwaarden", | ||
35 | "pricing.headline": "Ondersteun Franz", | ||
36 | "pricing.support.label": "Selecteer je ondersteuningsplan", | ||
37 | "pricing.submit.label": "Ik wil de ontwikkeling van Franz ondersteunen", | ||
38 | "pricing.link.skipPayment": "Ik wil de ontwikkeling van Franz niet ondersteunen.", | ||
39 | "import.headline": "Importeer je Franz 4 services", | ||
40 | "import.notSupportedHeadline": "Services nog niet ondersteund in Franz 5", | ||
41 | "import.submit.label": "Importeer services", | ||
42 | "import.skip.label": "Ik wil services handmatig toevoegen", | ||
43 | "invite.submit.label": "Verzend uitnodigingen", | ||
44 | "invite.headline.friends": "Nodig 3 van je vrienden of collega's uit", | ||
45 | "invite.name.label": "Naam", | ||
46 | "invite.email.label": "E-mailadres", | ||
47 | "invite.skip.label": "Ik wil dit later doen", | ||
48 | "subscription.submit.label": "Ik wil de ontwikkeling van Franz ondersteunen", | ||
49 | "subscription.paymentSessionError": "Kan betaalformulier niet initialiseren", | ||
50 | "subscription.includedFeatures": "Betaald Franz Premium Supporter Account bevat", | ||
51 | "subscription.features.onpremise": "Add on-geschikt/gehoste services zoals HipChat", | ||
52 | "subscription.features.customServices": "Privé services voor jou en je team", | ||
53 | "subscription.features.encryptedSync": "Beveiligde sessie synchronisatie", | ||
54 | "subscription.features.vpn": "Proxy & VPN ondersteuning", | ||
55 | "subscription.features.ads": "Geen advertenties, nooit!", | ||
56 | "subscription.features.comingSoon": "komt binnenkort", | ||
57 | "infobar.servicesUpdated": "Je services zijn geüpdatet.", | ||
58 | "infobar.updateAvailable": "Een nieuwe update voor Franz is beschikbaar.", | ||
59 | "infobar.buttonReloadServices": "Herlaad services", | ||
60 | "infobar.buttonInstallUpdate": "Herstart & installeer update", | ||
61 | "infobar.requiredRequestsFailed": "Kon services en gebruikerinformatie niet laden", | ||
62 | "sidebar.settings": "Instellingen", | ||
63 | "services.welcome": "Welkom bij Franz", | ||
64 | "services.getStarted": "Beginnen", | ||
65 | "settings.account.headline": "Account", | ||
66 | "settings.account.headlineSubscription": "Je abonnement", | ||
67 | "settings.account.headlineUpgrade": "Upgrade je account & ondersteun Franz", | ||
68 | "settings.account.headlineInvoices": "Facturen", | ||
69 | "settings.account.manageSubscription.label": "Beheer je abonnement", | ||
70 | "settings.account.accountType.basic": "Basis Account", | ||
71 | "settings.account.accountType.premium": "Premium Supporter Account", | ||
72 | "settings.account.account.editButton": "Bewerk account", | ||
73 | "settings.account.invoiceDownload": "Download", | ||
74 | "settings.account.userInfoRequestFailed": "Kon gebruikerinformatie niet laden", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Probeer opnieuw", | ||
76 | "settings.account.headlineProfile": "Update profiel", | ||
77 | "settings.account.headlineAccount": "Account informatie", | ||
78 | "settings.account.headlinePassword": "Wijzig wachtwoord", | ||
79 | "settings.account.successInfo": "Je wijzigingen zijn opgeslagen", | ||
80 | "settings.account.buttonSave": "Update profiel", | ||
81 | "settings.account.mining.thankyou": "Bedankt voor je ondersteuning van Franz met je rekenkracht.", | ||
82 | "settings.account.mining.active": "Op dit moment voer je {hashes} berekingen per seconde uit.", | ||
83 | "settings.account.mining.moreInformation": "Meer informatie", | ||
84 | "settings.account.mining.cancel": "Stop mining", | ||
85 | "settings.navigation.availableServices": "Beschikbare services", | ||
86 | "settings.navigation.yourServices": "Jouw services", | ||
87 | "settings.navigation.account": "Account", | ||
88 | "settings.navigation.settings": "Instellingen", | ||
89 | "settings.navigation.logout": "Uitloggen", | ||
90 | "settings.recipes.headline": "Beschikbare services", | ||
91 | "settings.recipes.mostPopular": "Meest populair", | ||
92 | "settings.recipes.all": "Alle services", | ||
93 | "settings.recipes.dev": "Ontwikkeling", | ||
94 | "settings.recipes.nothingFound": "Geen service kwam overeen met je zoekopdracht.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Service succesvol toegevoegd", | ||
96 | "settings.service.form.saveButton": "Opslaan service", | ||
97 | "settings.service.form.deleteButton": "Verwijder service", | ||
98 | "settings.service.form.availableServices": "Beschikbare services", | ||
99 | "settings.service.form.yourServices": "Jouw services", | ||
100 | "settings.service.form.addServiceHeadline": "Toevoegen {name}", | ||
101 | "settings.service.form.editServiceHeadline": "Bewerk {name}", | ||
102 | "settings.service.form.tabHosted": "Gehost", | ||
103 | "settings.service.form.tabOnPremise": "Zelf-gehoste ??", | ||
104 | "settings.service.form.customUrlValidationError": "Kon custom server {name} niet valideren.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Om zelf-gehoste services toe te kunnen voegen, heb je een Franz Premium Supporter Account nodig.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Upgrade je account", | ||
107 | "settings.service.form.indirectMessageInfo": "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Fout", | ||
109 | "settings.service.error.goBack": "Terug naar services", | ||
110 | "settings.service.error.message": "Kon servicerecept niet laden.", | ||
111 | "settings.services.tooltip.isDisabled": "Service is uitgeschakeld", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Meldingen zijn uitgeschakeld", | ||
113 | "settings.services.headline": "Jouw services", | ||
114 | "settings.services.noServicesAdded": "Je hebt nog geen services toegevoegd.", | ||
115 | "settings.services.discoverServices": "Ontdek services", | ||
116 | "settings.services.updatedInfo": "Je wijzigingen zijn opgeslagen", | ||
117 | "settings.services.deletedInfo": "Service is verwijderd", | ||
118 | "settings.app.headline": "Instellingen", | ||
119 | "settings.app.headlineGeneral": "Algemeen", | ||
120 | "settings.app.headlineLanguage": "Taal", | ||
121 | "settings.app.headlineUpdates": "Updates", | ||
122 | "settings.app.buttonSearchForUpdate": "Controleer op updates", | ||
123 | "settings.app.buttonInstallUpdate": "Herstart & installeer update", | ||
124 | "settings.app.updateStatusSearching": "Zoekt naar updates", | ||
125 | "settings.app.updateStatusAvailable": "Update beschikbaar, downloaden...", | ||
126 | "settings.app.updateStatusUpToDate": "Je gebruikt de laatste versie van Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Lanceer Franz bij opstarten", | ||
128 | "settings.app.form.autoLaunchInBackground": "Open op de achtergrond", | ||
129 | "settings.app.form.enableSystemTray": "Toon Franz in de systeembalk", | ||
130 | "settings.app.form.minimizeToSystemTray": "Minimaliseer Franz naar de systeembal", | ||
131 | "settings.app.form.runInBackground": "Houd Franz op de achtergrond wanneer het venster gesloten wordt", | ||
132 | "settings.app.form.language": "Taal", | ||
133 | "settings.app.form.beta": "Inclusief beta versies", | ||
134 | "settings.app.currentVersion": "Huidige versie:", | ||
135 | "settings.service.form.name": "Naam", | ||
136 | "settings.service.form.enableService": "Activeer service", | ||
137 | "settings.service.form.enableNotification": "Activeer meldingen", | ||
138 | "settings.service.form.team": "Team", | ||
139 | "settings.service.form.customUrl": "Custom server", | ||
140 | "settings.service.form.indirectMessages": "Toon berichtenbadge voor alle nieuwe berichten", | ||
141 | "settings.user.form.firstname": "Voornaam", | ||
142 | "settings.user.form.lastname": "Achternaam", | ||
143 | "settings.user.form.email": "E-mailadres", | ||
144 | "settings.user.form.currentPassword": "Huidig wachtwoord", | ||
145 | "settings.user.form.newPassword": "Nieuw wachtwoord", | ||
146 | "settings.user.form.accountType.label": "Account type", | ||
147 | "settings.user.form.accountType.individual": "Individueel", | ||
148 | "settings.user.form.accountType.non-profit": "Non-Profit", | ||
149 | "settings.user.form.accountType.company": "Bedrijf", | ||
150 | "subscription.type.free": "gratis", | ||
151 | "subscription.type.month": "maand", | ||
152 | "subscription.type.year": "jaar", | ||
153 | "subscription.type.mining": "Ondersteun Franz met rekenkracht", | ||
154 | "subscription.mining.headline": "Hoe werkt dit?", | ||
155 | "subscription.mining.experimental": "experimenteel", | ||
156 | "subscription.mining.line1": "Door \"Ondersteun met rekenkracht\" te activeren, zal Franz ongeveer 20-50% van je CPU gebruiken om de cryptomunt Monero te minen, wat overeenkomt met ongeveer $ 5/jaar.", | ||
157 | "subscription.mining.line2": "We zullen het CPU-gebruik aanpassen aan je gebruik en daarmee voorkomen dat de batterij niet leegloopt of dat jij en je werk afgeremd wordt.", | ||
158 | "subscription.mining.line3": "Zolang de miner actief is, heb je onbeperkt toegang tot alle Franz Premium Supporter Features.", | ||
159 | "subscription.mining.moreInformation": "Verkrijg meer informatie over dit plan.", | ||
160 | "subscriptionPopup.buttonCancel": "Cancel", | ||
161 | "subscriptionPopup.buttonDone": "Klaar", | ||
162 | "tabs.item.reload": "Herlaad", | ||
163 | "tabs.item.edit": "Bewerk", | ||
164 | "tabs.item.disableNotifications": "Uitschakelen meldingen", | ||
165 | "tabs.item.enableNotification": "Inschakelen meldingen", | ||
166 | "tabs.item.disableService": "Uitschakelen service", | ||
167 | "tabs.item.deleteService": "Verwijderen service" | ||
168 | } | ||
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json new file mode 100644 index 000000000..1a8e9ad54 --- /dev/null +++ b/src/i18n/locales/pl.json | |||
@@ -0,0 +1,167 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Nie można połączyć się z usługą Franz", | ||
3 | "global.notConnectedToTheInternet": "Brak połączenia z Internetem.", | ||
4 | "welcome.signupButton": "Stwórz darmowe konto", | ||
5 | "welcome.loginButton": "Zaloguj się na swoje konto", | ||
6 | "welcome.slogan": "Komunikator który działa", | ||
7 | "login.headline": "Zaloguj się", | ||
8 | "login.email.label": "Adres email", | ||
9 | "login.password.label": "Hasło", | ||
10 | "login.submit.label": "Zaloguj się", | ||
11 | "login.invalidCredentials": "Adres email lub hasło są błędne", | ||
12 | "login.tokenExpired": "Twoja sesja wygasła, zaloguj się ponownie.", | ||
13 | "login.serverLogout": "Twoja sesja wygasła, zaloguj się ponownie.", | ||
14 | "login.link.signup": "Stwórz darmowe konto", | ||
15 | "login.link.password": "Zresetuj hasło", | ||
16 | "password.headline": "Zresetuj hasło", | ||
17 | "password.email.label": "Adres email", | ||
18 | "password.submit.label": "Wyślij", | ||
19 | "password.noUser": "Nie znaleziono użytkownika z takim adresem email", | ||
20 | "password.successInfo": "Sprawdź swoją skrzynkę email", | ||
21 | "password.link.signup": "Stwórz darmowe konto", | ||
22 | "password.link.login": "Zaloguj się na swoje konto", | ||
23 | "signup.headline": "Zarejestruj się", | ||
24 | "signup.firstname.label": "Imię", | ||
25 | "signup.lastname.label": "Nazwisko", | ||
26 | "signup.email.label": "Adres email", | ||
27 | "signup.company.label": "Firma", | ||
28 | "signup.password.label": "Hasło", | ||
29 | "signup.submit.label": "Stwórz konto", | ||
30 | "signup.link.login": "Masz już konto, zalogować się?", | ||
31 | "signup.emailDuplicate": "Użytkownik z takim adresem email już istnieje", | ||
32 | "signup.legal.info": "Poprzez utworzenie konta Franz akceptujesz", | ||
33 | "signup.legal.terms": "Warunki świadczenia usług", | ||
34 | "signup.legal.privacy": "Polityka prywatności", | ||
35 | "pricing.headline": "Wspomóż aplikację Franz", | ||
36 | "pricing.support.label": "Wybierz plan wsparcia", | ||
37 | "pricing.submit.label": "Chcę wspierać rozwój aplikacji Franz", | ||
38 | "pricing.link.skipPayment": "Nie chcę wspierać rozwoju aplikacji Franz.", | ||
39 | "import.headline": "Zaimportuj usługi Franz 4", | ||
40 | "import.notSupportedHeadline": "Usługi nie są jeszcze wspierane w Franz 5", | ||
41 | "import.submit.label": "Zaimportuj usługi", | ||
42 | "import.skip.label": "Chcę dodać usługi ręcznie", | ||
43 | "invite.submit.label": "Wyślij zaproszenia", | ||
44 | "invite.headline.friends": "Zaproś 3 znajomych lub kolegów z pracy", | ||
45 | "invite.name.label": "Nazwa", | ||
46 | "invite.email.label": "Adres email", | ||
47 | "invite.skip.label": "Chcę to zrobić później", | ||
48 | "subscription.submit.label": "Chcę wspierać rozwój aplikacji Franz", | ||
49 | "subscription.paymentSessionError": "Nie można wczytać formularza płatności", | ||
50 | "subscription.includedFeatures": "Płatne konto Franz Premium obejmuje", | ||
51 | "subscription.features.onpremise": "Dodawanie lokalnych/hostowanych usług takich jak HipChat", | ||
52 | "subscription.features.customServices": "Prywatne usługi dla Ciebie i Twojego zespołu", | ||
53 | "subscription.features.encryptedSync": "Szyfrowana synchronizacja sesji", | ||
54 | "subscription.features.vpn": "Wsprarcie Proxy i VPN", | ||
55 | "subscription.features.ads": "Brak reklam, na zawsze!", | ||
56 | "subscription.features.comingSoon": "wkrótce dostępne", | ||
57 | "infobar.servicesUpdated": "Twoje usługi zostały zaaktualizowane.", | ||
58 | "infobar.updateAvailable": "Aktualizacja aplikacji Franz jest dostępna.", | ||
59 | "infobar.buttonReloadServices": "Przeładuj usługi", | ||
60 | "infobar.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacje", | ||
61 | "infobar.requiredRequestsFailed": "Nie można wczytać usług i informacji o użytkowniku", | ||
62 | "sidebar.settings": "Ustawienia", | ||
63 | "services.welcome": "Witaj w aplikcji Franz", | ||
64 | "services.getStarted": "Zacznij", | ||
65 | "settings.account.headline": "Konto", | ||
66 | "settings.account.headlineSubscription": "Twoja subskrypcja", | ||
67 | "settings.account.headlineUpgrade": "Ulepsz swoje konto i wspieraj aplikację Franz", | ||
68 | "settings.account.headlineInvoices": "Faktury", | ||
69 | "settings.account.manageSubscription.label": "Zarządzaj swoimi subskrypcjami", | ||
70 | "settings.account.accountType.basic": "Podstawowe konto", | ||
71 | "settings.account.accountType.premium": "Konto Premium", | ||
72 | "settings.account.account.editButton": "Edytuj konto", | ||
73 | "settings.account.invoiceDownload": "Pobieranie", | ||
74 | "settings.account.userInfoRequestFailed": "Nie można wczytać informacji o użytkowniku", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Spróbuj ponownie", | ||
76 | "settings.account.headlineProfile": "Aktualizuj profil", | ||
77 | "settings.account.headlineAccount": "Informacje o koncie", | ||
78 | "settings.account.headlinePassword": "Zmiana hasła", | ||
79 | "settings.account.successInfo": "Zmiany zostały zapisane", | ||
80 | "settings.account.buttonSave": "Aktualizuj profil", | ||
81 | "settings.account.mining.thankyou": "Dziękuję za wsparcie aplikacji Franz mocą obliczeniową.", | ||
82 | "settings.account.mining.active": "Obecnie wykonujesz {hashes} operacji na sekundę.", | ||
83 | "settings.account.mining.moreInformation": "Dowiedz się więcej", | ||
84 | "settings.account.mining.cancel": "Anuluj kopanie", | ||
85 | "settings.navigation.availableServices": "Dostępne usługi", | ||
86 | "settings.navigation.yourServices": "Twoje usługi", | ||
87 | "settings.navigation.account": "Konto", | ||
88 | "settings.navigation.settings": "Ustawienia", | ||
89 | "settings.navigation.logout": "Wylogowanie", | ||
90 | "settings.recipes.headline": "Dostępne usługi", | ||
91 | "settings.recipes.mostPopular": "Najpopularniejsze", | ||
92 | "settings.recipes.all": "Wszystkie usługi", | ||
93 | "settings.recipes.dev": "Rozwojowe", | ||
94 | "settings.recipes.nothingFound": "Żadna usługa nie została znaleziona.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Usługa została dodana pomyślnie", | ||
96 | "settings.service.form.saveButton": "Zapisz usługę", | ||
97 | "settings.service.form.deleteButton": "Usuń usługę", | ||
98 | "settings.service.form.availableServices": "Dostępne usługi", | ||
99 | "settings.service.form.yourServices": "Twoje usługi", | ||
100 | "settings.service.form.addServiceHeadline": "Dodaj {name}", | ||
101 | "settings.service.form.editServiceHeadline": "Edytuj {name}", | ||
102 | "settings.service.form.tabHosted": "Hostowane", | ||
103 | "settings.service.form.tabOnPremise": "Hostowane lokalnie ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "Nie można zweryfikować spersonalizowanego {name} serwera.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Aby dodać usługi hostowane lokalnie, musisz posiadać konto Premium.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Ulepsz swoje konto", | ||
107 | "settings.service.form.indirectMessageInfo": "Będziesz informowany o wszystkich nowych wiadomościach na kanale, nie tylko @username, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Błąd", | ||
109 | "settings.service.error.goBack": "Wróć do usług", | ||
110 | "settings.service.error.message": "Nie można wczytać przepisu usługi.", | ||
111 | "settings.services.tooltip.isDisabled": "Usługa jest nieaktywna", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Powiadomienia są nieaktywne", | ||
113 | "settings.services.headline": "Twoje usługi", | ||
114 | "settings.services.noServicesAdded": "Nie dodałeś jeszcze żadnych usług.", | ||
115 | "settings.services.discoverServices": "Przeglądaj usługi", | ||
116 | "settings.services.updatedInfo": "Zmiany zostały zapisane", | ||
117 | "settings.services.deletedInfo": "Usługa została usunięta", | ||
118 | "settings.app.headline": "Ustawienia", | ||
119 | "settings.app.headlineGeneral": "Ogólne", | ||
120 | "settings.app.headlineLanguage": "Język", | ||
121 | "settings.app.headlineUpdates": "Aktualizacje", | ||
122 | "settings.app.buttonSearchForUpdate": "Sprawdź czy są dostęne aktualizacje", | ||
123 | "settings.app.buttonInstallUpdate": "Uruchom ponownie i zainstaluj aktualizacje", | ||
124 | "settings.app.updateStatusSearching": "Szukam aktualizacji", | ||
125 | "settings.app.updateStatusAvailable": "Dostępna aktualizacja, pobieram...", | ||
126 | "settings.app.updateStatusUpToDate": "Używasz najnowszej wersji aplikacji Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Uruchom aplikację Franz przy starcie systemu", | ||
128 | "settings.app.form.autoLaunchInBackground": "Uruchom w tle", | ||
129 | "settings.app.form.minimizeToSystemTray": "Zminimalizuj aplikację Franz", | ||
130 | "settings.app.form.runInBackground": "Zachowaj aplikację Franz w tle po zamknięciu okna", | ||
131 | "settings.app.form.language": "Język", | ||
132 | "settings.app.form.beta": "Uwzględniaj wersje beta", | ||
133 | "settings.app.currentVersion": "Obecna wersja:", | ||
134 | "settings.service.form.name": "Nazwa", | ||
135 | "settings.service.form.enableService": "Aktywuj usługę", | ||
136 | "settings.service.form.enableNotification": "Aktywuj powiadomienia", | ||
137 | "settings.service.form.team": "Zespół", | ||
138 | "settings.service.form.customUrl": "Spersonalizowany serwer", | ||
139 | "settings.service.form.indirectMessages": "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", | ||
140 | "settings.user.form.firstname": "Imię", | ||
141 | "settings.user.form.lastname": "Nazwisko", | ||
142 | "settings.user.form.email": "Adres email", | ||
143 | "settings.user.form.currentPassword": "Obecne hasło", | ||
144 | "settings.user.form.newPassword": "Nowe hasło", | ||
145 | "settings.user.form.accountType.label": "Typ konta", | ||
146 | "settings.user.form.accountType.individual": "Prywatne", | ||
147 | "settings.user.form.accountType.non-profit": "Non-Profit", | ||
148 | "settings.user.form.accountType.company": "Firma", | ||
149 | "subscription.type.free": "za darmo", | ||
150 | "subscription.type.month": "miesiąc", | ||
151 | "subscription.type.year": "rok", | ||
152 | "subscription.type.mining": "Wspieraj aplikację Franz mocą obliczeniową", | ||
153 | "subscription.mining.headline": "Jak to działa?", | ||
154 | "subscription.mining.experimental": "eksperymentalne", | ||
155 | "subscription.mining.line1": "Włączając \"wspieraj mocą obliczeniową\", aplikacja Franz będzie używać około 20-50% mocy Twojego procesora aby kopać kryptowalutę Monero co jest równe około $5/rok.", | ||
156 | "subscription.mining.line2": "Będziemy dostosowywać zużycie procesora do stylu Twojej pracy tak aby nie zużywać baterii i nie spowalniać działania urządzenia.", | ||
157 | "subscription.mining.line3": "Tak długo jak kopanie będzie aktywne, będziesz mieć nielimitowany dostęp do wszystkich funkcji dostępnych w koncie Premium.", | ||
158 | "subscription.mining.moreInformation": "Dowiedz się więcej o tym planie.", | ||
159 | "subscriptionPopup.buttonCancel": "Anuluj", | ||
160 | "subscriptionPopup.buttonDone": "Zrobione", | ||
161 | "tabs.item.reload": "Przeładuj", | ||
162 | "tabs.item.edit": "Edytuj", | ||
163 | "tabs.item.disableNotifications": "Wyłącz powiadomienia", | ||
164 | "tabs.item.enableNotification": "Włącz powiadomienia", | ||
165 | "tabs.item.disableService": "Wyłącz usługę", | ||
166 | "tabs.item.deleteService": "Usuń usługę" | ||
167 | } | ||
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json new file mode 100644 index 000000000..38f0836a7 --- /dev/null +++ b/src/i18n/locales/pt-BR.json | |||
@@ -0,0 +1,167 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Não foi possível conectar aos serviços online do Franz", | ||
3 | "global.notConnectedToTheInternet": "Você não está conectado à internet.", | ||
4 | "welcome.signupButton": "Criar uma conta grátis", | ||
5 | "welcome.loginButton": "Fazer login na sua conta", | ||
6 | "welcome.slogan": "Mensagens que funcionam para você", | ||
7 | "login.headline": "Login", | ||
8 | "login.email.label": "Endereço de email", | ||
9 | "login.password.label": "Senha", | ||
10 | "login.submit.label": "Login", | ||
11 | "login.invalidCredentials": "Email ou senha inválida", | ||
12 | "login.tokenExpired": "Sua sessão expirou, faça o login novamente.", | ||
13 | "login.serverLogout": "Sua sessão expirou, faça o login novamente.", | ||
14 | "login.link.signup": "Criar uma conta grátis", | ||
15 | "login.link.password": "Trocar a senha", | ||
16 | "password.headline": "Trocar a senha", | ||
17 | "password.email.label": "Endereço de email", | ||
18 | "password.submit.label": "Enviar", | ||
19 | "password.noUser": "Nenhum usuário com este email foi encontrado", | ||
20 | "password.successInfo": "Por favor, verifique o seu email", | ||
21 | "password.link.signup": "Criar uma conta grátis", | ||
22 | "password.link.login": "Fazer login na sua conta", | ||
23 | "signup.headline": "Cadastrar-se", | ||
24 | "signup.firstname.label": "Nome", | ||
25 | "signup.lastname.label": "Sobrenome", | ||
26 | "signup.email.label": "Endereço de email", | ||
27 | "signup.company.label": "Empresa", | ||
28 | "signup.password.label": "Senha", | ||
29 | "signup.submit.label": "Criar conta", | ||
30 | "signup.link.login": "Já tem uma conta. Fazer login?", | ||
31 | "signup.emailDuplicate": "Um usuário com esta conta já existe", | ||
32 | "signup.legal.info": "Ao criar uma conta Franz você aceita os ", | ||
33 | "signup.legal.terms": "Termos de Serviço", | ||
34 | "signup.legal.privacy": "Declaração de Privacidade", | ||
35 | "pricing.headline": "Apoie o Franz", | ||
36 | "pricing.support.label": "Selecione seu plano de apoio", | ||
37 | "pricing.submit.label": "Eu quero apoiar o desenvolvimento do Franz", | ||
38 | "pricing.link.skipPayment": "Eu não quero apoiar o desenvolvimento do Franz.", | ||
39 | "import.headline": "Importe seus serviços do Franz 4", | ||
40 | "import.notSupportedHeadline": "Serviços ainda não suportados no Franz 5", | ||
41 | "import.submit.label": "Importar serviços", | ||
42 | "import.skip.label": "Eu quero adicionar serviços manualmente", | ||
43 | "invite.submit.label": "Enviar convites", | ||
44 | "invite.headline.friends": "Convide 3 dos seus amigos ou colegas", | ||
45 | "invite.name.label": "Nome", | ||
46 | "invite.email.label": "Endereço de email", | ||
47 | "invite.skip.label": "Eu quero fazer isso depois", | ||
48 | "subscription.submit.label": "Eu quero apoiar o desenvolvimento do Franz", | ||
49 | "subscription.paymentSessionError": "Não foi possível abrir o formulário de pagamento", | ||
50 | "subscription.includedFeatures": "Conta Paga Franz Premium inclui", | ||
51 | "subscription.features.onpremise": "Adicionar serviços locais/hospedados como HipChat", | ||
52 | "subscription.features.customServices": "Serviços privados para você e sua equipe", | ||
53 | "subscription.features.encryptedSync": "Sincronização encriptada das sessões", | ||
54 | "subscription.features.vpn": "Suporte à proxy & VPN", | ||
55 | "subscription.features.ads": "Sem anúncios, sempre!", | ||
56 | "subscription.features.comingSoon": "em breve", | ||
57 | "infobar.servicesUpdated": "Seus serviços foram atualizados.", | ||
58 | "infobar.updateAvailable": "Uma nova atualização do Franz está disponível.", | ||
59 | "infobar.buttonReloadServices": "Recarregar serviços", | ||
60 | "infobar.buttonInstallUpdate": "Reiniciar & instalar atualização", | ||
61 | "infobar.requiredRequestsFailed": "Não foi possível carregar serviços e informações do usuário", | ||
62 | "sidebar.settings": "Configurações", | ||
63 | "services.welcome": "Bem-vindo ao Franz", | ||
64 | "services.getStarted": "Começar", | ||
65 | "settings.account.headline": "Conta", | ||
66 | "settings.account.headlineSubscription": "Sua assinatura", | ||
67 | "settings.account.headlineUpgrade": "Atualize a sua conta & apoie o Franz", | ||
68 | "settings.account.headlineInvoices": "Recibos", | ||
69 | "settings.account.manageSubscription.label": "Gerencie a sua assinatura", | ||
70 | "settings.account.accountType.basic": "Conta Básica", | ||
71 | "settings.account.accountType.premium": "Conta Apoiador Premium", | ||
72 | "settings.account.account.editButton": "Editar conta", | ||
73 | "settings.account.invoiceDownload": "Download", | ||
74 | "settings.account.userInfoRequestFailed": "Não foi possível carregar as informações do usuário", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Tente novamente", | ||
76 | "settings.account.headlineProfile": "Atualizar perfil", | ||
77 | "settings.account.headlineAccount": "Informações de conta", | ||
78 | "settings.account.headlinePassword": "Mudar senha", | ||
79 | "settings.account.successInfo": "Suas mudanças foram salvas", | ||
80 | "settings.account.buttonSave": "Atualizar perfil", | ||
81 | "settings.account.mining.thankyou": "Obrigado por apoiar o Franz com poder de processamento.", | ||
82 | "settings.account.mining.active": "Você está realizando {hashes} cálculos por segundo agora.", | ||
83 | "settings.account.mining.moreInformation": "Obter mais informações", | ||
84 | "settings.account.mining.cancel": "Cancelar mineração", | ||
85 | "settings.navigation.availableServices": "Serviços disponíveis", | ||
86 | "settings.navigation.yourServices": "Seus serviços", | ||
87 | "settings.navigation.account": "Conta", | ||
88 | "settings.navigation.settings": "Configurações", | ||
89 | "settings.navigation.logout": "Logout", | ||
90 | "settings.recipes.headline": "Serviços disponíveis", | ||
91 | "settings.recipes.mostPopular": "Mais populares", | ||
92 | "settings.recipes.all": "Todos serviços", | ||
93 | "settings.recipes.dev": "Desenvolvimento", | ||
94 | "settings.recipes.nothingFound": "Desculpe, mas nenhum serviço corresponde a sua pesquisa.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Serviço adicionado com sucesso", | ||
96 | "settings.service.form.saveButton": "Salvar serviço", | ||
97 | "settings.service.form.deleteButton": "Apagar serviço", | ||
98 | "settings.service.form.availableServices": "Serviços disponíveis", | ||
99 | "settings.service.form.yourServices": "Seus serviços", | ||
100 | "settings.service.form.addServiceHeadline": "Adicionar {name}", | ||
101 | "settings.service.form.editServiceHeadline": "Editar {name}", | ||
102 | "settings.service.form.tabHosted": "Hospedado", | ||
103 | "settings.service.form.tabOnPremise": "Auto-hospedado ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "Não foi possível validar o servidor personalizado {name}.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Para adicionar serviços auto-hospedados, você precisa de uma conta Franz Apoiador Premium.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Atualize a sua conta", | ||
107 | "settings.service.form.indirectMessageInfo": "Você será notificado por todas as mensagens em um canal, não apenas @usuário, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Erro", | ||
109 | "settings.service.error.goBack": "Voltar aos serviços", | ||
110 | "settings.service.error.message": "Não foi possível carregar a receita de serviço.", | ||
111 | "settings.services.tooltip.isDisabled": "Serviço desativado", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Notificações desativadas", | ||
113 | "settings.services.headline": "Seus serviços", | ||
114 | "settings.services.noServicesAdded": "Você ainda não adicionou nenhum serviço.", | ||
115 | "settings.services.discoverServices": "Descobrir serviços", | ||
116 | "settings.services.updatedInfo": "Suas mudanças foram salvas", | ||
117 | "settings.services.deletedInfo": "Serviço apagado", | ||
118 | "settings.app.headline": "Configurações", | ||
119 | "settings.app.headlineGeneral": "Geral", | ||
120 | "settings.app.headlineLanguage": "Idioma", | ||
121 | "settings.app.headlineUpdates": "Atualizações", | ||
122 | "settings.app.buttonSearchForUpdate": "Verificar por atualizações", | ||
123 | "settings.app.buttonInstallUpdate": "Reiniciar & instalar atualização", | ||
124 | "settings.app.updateStatusSearching": "Em busca de atualização", | ||
125 | "settings.app.updateStatusAvailable": "Atualização disponível, fazendo download...", | ||
126 | "settings.app.updateStatusUpToDate": "Você está usando a última versão do Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Abrir o Franz iniciar o sistema", | ||
128 | "settings.app.form.autoLaunchInBackground": "Abrir no fundo", | ||
129 | "settings.app.form.minimizeToSystemTray": "Minimizar o Franz para a bandeja do sistema", | ||
130 | "settings.app.form.runInBackground": "Manter o Franz no fundo quando fechar a janela", | ||
131 | "settings.app.form.language": "Idioma", | ||
132 | "settings.app.form.beta": "Incluir versões beta", | ||
133 | "settings.app.currentVersion": "Versão atual:", | ||
134 | "settings.service.form.name": "Nome", | ||
135 | "settings.service.form.enableService": "Ativar serviço", | ||
136 | "settings.service.form.enableNotification": "Ativar notificações", | ||
137 | "settings.service.form.team": "Equipe", | ||
138 | "settings.service.form.customUrl": "Serviços personalizado", | ||
139 | "settings.service.form.indirectMessages": "Mostrar avisos para todas as mensagens", | ||
140 | "settings.user.form.firstname": "Nome", | ||
141 | "settings.user.form.lastname": "Sobrenome", | ||
142 | "settings.user.form.email": "Email", | ||
143 | "settings.user.form.currentPassword": "Senha atual", | ||
144 | "settings.user.form.newPassword": "Nova senha", | ||
145 | "settings.user.form.accountType.label": "Tipo de conta", | ||
146 | "settings.user.form.accountType.individual": "Individual", | ||
147 | "settings.user.form.accountType.non-profit": "Sem fins lucrativos", | ||
148 | "settings.user.form.accountType.company": "Empresa", | ||
149 | "subscription.type.free": "grátis", | ||
150 | "subscription.type.month": "mês", | ||
151 | "subscription.type.year": "ano", | ||
152 | "subscription.type.mining": "Apoie o Franz com poder de processamento", | ||
153 | "subscription.mining.headline": "Como isso funciona?", | ||
154 | "subscription.mining.experimental": "experimental", | ||
155 | "subscription.mining.line1": "Habilitando o \"Apoio com poder de processamento\", o Franz vai usar cerca de 20-50% da sua CPU para minerar a criptomoeda Monero que equivale a aproximadamente $ 5/ano.", | ||
156 | "subscription.mining.line2": "Nós iremos adaptar o uso da CPU baseado nos seus hábitos para não drenar sua bateria nem deixar o seu computador lento.", | ||
157 | "subscription.mining.line3": "Enquanto o minerador estiver ativo, você terá acesso ilimitado à todas funções do Franz Apoiador Premium.", | ||
158 | "subscription.mining.moreInformation": "Obter mais informações sobre este plano.", | ||
159 | "subscriptionPopup.buttonCancel": "Cancelar", | ||
160 | "subscriptionPopup.buttonDone": "Feito", | ||
161 | "tabs.item.reload": "Recarregar", | ||
162 | "tabs.item.edit": "Editar", | ||
163 | "tabs.item.disableNotifications": "Desativar notificações", | ||
164 | "tabs.item.enableNotification": "Ativar notificações", | ||
165 | "tabs.item.disableService": "Desativar serviço", | ||
166 | "tabs.item.deleteService": "Apagar serviço" | ||
167 | } | ||
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json new file mode 100644 index 000000000..44ced9e43 --- /dev/null +++ b/src/i18n/locales/ru.json | |||
@@ -0,0 +1,168 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Невозможно подключиться к сервисам Franz", | ||
3 | "global.notConnectedToTheInternet": "Нет Интернет-соединения", | ||
4 | "welcome.signupButton": "Создать аккаунт", | ||
5 | "welcome.loginButton": "Вход", | ||
6 | "welcome.slogan": "Общение, которое просто работает", | ||
7 | "login.headline": "Регистрация", | ||
8 | "login.email.label": "Email адрес", | ||
9 | "login.password.label": "Пароль", | ||
10 | "login.submit.label": "Регистрация", | ||
11 | "login.invalidCredentials": "Неправильный email или пароль", | ||
12 | "login.tokenExpired": "Сессия устарела, пожалуйста, войдите снова.", | ||
13 | "login.serverLogout": "Сессия устарела, пожалуйста, войдите снова.", | ||
14 | "login.link.signup": "Создать бесплатный аккаунт", | ||
15 | "login.link.password": "Восстановить пароль", | ||
16 | "password.headline": "Восстановление пароля", | ||
17 | "password.email.label": "Email адрес", | ||
18 | "password.submit.label": "Отправить", | ||
19 | "password.noUser": "Не найдено пользователя с таким email", | ||
20 | "password.successInfo": "Проверьте Ваш email", | ||
21 | "password.link.signup": "Создать аккаунт", | ||
22 | "password.link.login": "Вход", | ||
23 | "signup.headline": "Регистрация", | ||
24 | "signup.firstname.label": "Имя", | ||
25 | "signup.lastname.label": "Фамилия", | ||
26 | "signup.email.label": "Email адрес", | ||
27 | "signup.company.label": "Организация", | ||
28 | "signup.password.label": "Пароль", | ||
29 | "signup.submit.label": "Создать аккаунт", | ||
30 | "signup.link.login": "Уже есть аккаунт, войти?", | ||
31 | "signup.emailDuplicate": "Пользователь с указанным email уже существует", | ||
32 | "signup.legal.info": "Создавая аккаунт Franz, Вы принимаете", | ||
33 | "signup.legal.terms": "Условия обслуживания", | ||
34 | "signup.legal.privacy": "Политика конфиденциальности", | ||
35 | "pricing.headline": "Поддержать Franz", | ||
36 | "pricing.support.label": "Выберите план поддержки", | ||
37 | "pricing.submit.label": "Я хочу поддержать разработку Franz", | ||
38 | "pricing.link.skipPayment": "Я не хочу поддерживать разработку Franz.", | ||
39 | "import.headline": "Импортировать сервисы Franz 4", | ||
40 | "import.notSupportedHeadline": "Сервисы еще не поддержаны в Franz 5", | ||
41 | "import.submit.label": "Импортировать сервисы", | ||
42 | "import.skip.label": "Я хочу добавить сервисы вручную", | ||
43 | "invite.submit.label": "Выслать приглашения", | ||
44 | "invite.headline.friends": "Пригласите 3х друзей или коллег", | ||
45 | "invite.name.label": "Имя", | ||
46 | "invite.email.label": "Email адрес", | ||
47 | "invite.skip.label": "Я сделаю это позже", | ||
48 | "subscription.submit.label": "Я хочу поддержать разработку Franz", | ||
49 | "subscription.paymentSessionError": "Невозможно загрузить форму оплаты", | ||
50 | "subscription.includedFeatures": "Оплаченный Franz Премиум аккаунт включает", | ||
51 | "subscription.features.onpremise": "Добавить облачные службы или службы со своим хостингом типа HipChat", | ||
52 | "subscription.features.customServices": "Настраиваемые сервисы для Вас и Вашей команды", | ||
53 | "subscription.features.encryptedSync": "Шифрованная синхронизация сессии", | ||
54 | "subscription.features.vpn": "Поддержка прокси и VPN", | ||
55 | "subscription.features.ads": "Без рекламы, навсегда!", | ||
56 | "subscription.features.comingSoon": "следите за обновлениями", | ||
57 | "infobar.servicesUpdated": "Ваши сервисы были обновлены.", | ||
58 | "infobar.updateAvailable": "Доступно обновление Franz.", | ||
59 | "infobar.buttonReloadServices": "Перезагрузить сервисы", | ||
60 | "infobar.buttonInstallUpdate": "Перезапустить и обновить", | ||
61 | "infobar.requiredRequestsFailed": "Невозможно загрузить сервисы и информацию пользователя", | ||
62 | "sidebar.settings": "Настройки", | ||
63 | "services.welcome": "Добро пожаловать во Franz", | ||
64 | "services.getStarted": "Начать работу", | ||
65 | "settings.account.headline": "Аккаунт", | ||
66 | "settings.account.headlineSubscription": "Ваша подписка", | ||
67 | "settings.account.headlineUpgrade": "Улучшить аккаунт и поддержать Franz", | ||
68 | "settings.account.headlineInvoices": "Счета", | ||
69 | "settings.account.manageSubscription.label": "Управление подпиской", | ||
70 | "settings.account.accountType.basic": "Базовый аккаунт", | ||
71 | "settings.account.accountType.premium": "Премиум аккаунт", | ||
72 | "settings.account.account.editButton": "Редактировать аккаунт", | ||
73 | "settings.account.invoiceDownload": "Скачать", | ||
74 | "settings.account.userInfoRequestFailed": "Невозможно загрузить информацию пользователя", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Попробовать снова", | ||
76 | "settings.account.headlineProfile": "Обновить профиль", | ||
77 | "settings.account.headlineAccount": "Информация аккаунта", | ||
78 | "settings.account.headlinePassword": "Сменить пароль", | ||
79 | "settings.account.successInfo": "Изменения сохранены", | ||
80 | "settings.account.buttonSave": "Сохранить изменения", | ||
81 | "settings.account.mining.thankyou": "Спасибо за поддержку Franz Вашими процессорными мощностями.", | ||
82 | "settings.account.mining.active": "Вы выполняете {hashes} вычислений в секунду.", | ||
83 | "settings.account.mining.moreInformation": "Больше информации", | ||
84 | "settings.account.mining.cancel": "Отменить майнинг", | ||
85 | "settings.navigation.availableServices": "Доступные сервисы", | ||
86 | "settings.navigation.yourServices": "Ваши сервисы", | ||
87 | "settings.navigation.account": "Аккаунт", | ||
88 | "settings.navigation.settings": "Настройки", | ||
89 | "settings.navigation.logout": "Выход", | ||
90 | "settings.recipes.headline": "Доступные сервисы", | ||
91 | "settings.recipes.mostPopular": "Популярные", | ||
92 | "settings.recipes.all": "Все сервисы", | ||
93 | "settings.recipes.dev": "Разработка", | ||
94 | "settings.recipes.nothingFound": "Ничего не найдено по Вашему запросу.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Сервис успешно добавлен", | ||
96 | "settings.service.form.saveButton": "Сохранить сервис", | ||
97 | "settings.service.form.deleteButton": "Удалить сервис", | ||
98 | "settings.service.form.availableServices": "Доступные сервисы", | ||
99 | "settings.service.form.yourServices": "Ваши сервисы", | ||
100 | "settings.service.form.addServiceHeadline": "Добавление {name}", | ||
101 | "settings.service.form.editServiceHeadline": "Редактирование {name}", | ||
102 | "settings.service.form.tabHosted": "Hosted", | ||
103 | "settings.service.form.tabOnPremise": "Свой хостинг ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "Невозможно проверить сервер {name}.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Для добавния сервиса на своем хостинге, необходим аккаунт Franz Premium.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Улучшить аккаунт", | ||
107 | "settings.service.form.indirectMessageInfo": "Вы будете получать уведомления для всех сообщений, не только для @username, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Ошибка", | ||
109 | "settings.service.error.goBack": "Вернуться к сервисам", | ||
110 | "settings.service.error.message": "Невозможно загрузить рецепт сервиса.", | ||
111 | "settings.services.tooltip.isDisabled": "Сервис отключен", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Уведомления отключены", | ||
113 | "settings.services.headline": "Ваши сервисы", | ||
114 | "settings.services.noServicesAdded": "У Вас пока нет сервисов", | ||
115 | "settings.services.discoverServices": "Найти сервисы", | ||
116 | "settings.services.updatedInfo": "Изменения сохранены", | ||
117 | "settings.services.deletedInfo": "Сервис удален", | ||
118 | "settings.app.headline": "Настройки", | ||
119 | "settings.app.headlineGeneral": "Общие", | ||
120 | "settings.app.headlineLanguage": "Язык", | ||
121 | "settings.app.headlineUpdates": "Обновления", | ||
122 | "settings.app.buttonSearchForUpdate": "Проверить обновления", | ||
123 | "settings.app.buttonInstallUpdate": "Перезапустить и обновить", | ||
124 | "settings.app.updateStatusSearching": "Поиск обновлений", | ||
125 | "settings.app.updateStatusAvailable": "Доступно обновление, загрука...", | ||
126 | "settings.app.updateStatusUpToDate": "Вы используете актуальную версию Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Запускать Franz при старте", | ||
128 | "settings.app.form.autoLaunchInBackground": "Открывать в фоне", | ||
129 | "settings.app.form.enableSystemTray": "Показывать Franz в трее", | ||
130 | "settings.app.form.minimizeToSystemTray": "Сворачивать Franz в трей", | ||
131 | "settings.app.form.runInBackground": "Оставлять Franz в фоне при закрытии окна", | ||
132 | "settings.app.form.language": "Язык", | ||
133 | "settings.app.form.beta": "Включая бета версии", | ||
134 | "settings.app.currentVersion": "Текущая версия:", | ||
135 | "settings.service.form.name": "Название", | ||
136 | "settings.service.form.enableService": "Включить сервис", | ||
137 | "settings.service.form.enableNotification": "Включить уведомления", | ||
138 | "settings.service.form.team": "Команда", | ||
139 | "settings.service.form.customUrl": "Адрес сервера", | ||
140 | "settings.service.form.indirectMessages": "Показывать значок уведомлений для всех новых сообщений", | ||
141 | "settings.user.form.firstname": "Имя", | ||
142 | "settings.user.form.lastname": "Фамилия", | ||
143 | "settings.user.form.email": "Email", | ||
144 | "settings.user.form.currentPassword": "Текущий пароль", | ||
145 | "settings.user.form.newPassword": "Новый пароль", | ||
146 | "settings.user.form.accountType.label": "Тип аккаунта", | ||
147 | "settings.user.form.accountType.individual": "Индивидуальный", | ||
148 | "settings.user.form.accountType.non-profit": "Некоммерческий", | ||
149 | "settings.user.form.accountType.company": "Компания", | ||
150 | "subscription.type.free": "бесплатно", | ||
151 | "subscription.type.month": "месяц", | ||
152 | "subscription.type.year": "год", | ||
153 | "subscription.type.mining": "Поддерживать Franz, предоставляя процессорную мощность", | ||
154 | "subscription.mining.headline": "Как это работает?", | ||
155 | "subscription.mining.experimental": "экспериментально", | ||
156 | "subscription.mining.line1": "Включая \"Поддерживать Franz, предоставляя процессорную мощность\", Franz будет использовать 20-50% процессорного времени для майнинга криптовалюты Monero в примерном объеме 5$/год.", | ||
157 | "subscription.mining.line2": "Мы будем регулировать использование процессора, чтобы не садить батарею и не мешать Вашей работе", | ||
158 | "subscription.mining.line3": "Пока разрешен майнинг, Вам будут достуны все возможности Franz Premium без ограничений", | ||
159 | "subscription.mining.moreInformation": "Узнать больше об этом плане.", | ||
160 | "subscriptionPopup.buttonCancel": "Отмена", | ||
161 | "subscriptionPopup.buttonDone": "Готово", | ||
162 | "tabs.item.reload": "Перезагрузить", | ||
163 | "tabs.item.edit": "Редактировать", | ||
164 | "tabs.item.disableNotifications": "Отключить уведомления", | ||
165 | "tabs.item.enableNotification": "Включить уведомления", | ||
166 | "tabs.item.disableService": "Отключить сервис", | ||
167 | "tabs.item.deleteService": "Удалить сервис" | ||
168 | } | ||
diff --git a/src/i18n/locales/ua.json b/src/i18n/locales/ua.json new file mode 100644 index 000000000..63135e52c --- /dev/null +++ b/src/i18n/locales/ua.json | |||
@@ -0,0 +1,167 @@ | |||
1 | { | ||
2 | "global.api.unhealthy": "Не можна підключитись до онлайн сервісів Franz", | ||
3 | "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", | ||
4 | "welcome.signupButton": "Створити безплатний акаунт", | ||
5 | "welcome.loginButton": "Увійдіть до свого акаунту", | ||
6 | "welcome.slogan": "Обмін повідомленнями, який працює для вас", | ||
7 | "login.headline": "Увійти", | ||
8 | "login.email.label": "Email адреса", | ||
9 | "login.password.label": "Пароль", | ||
10 | "login.submit.label": "Увійти", | ||
11 | "login.invalidCredentials": "Email або пароль некоректні", | ||
12 | "login.tokenExpired": "Ваша сесія закінчилась, будь ласка, зайдіть знову.", | ||
13 | "login.serverLogout": "Ваша сесія закінчилась, будь ласка, зайдіть знову.", | ||
14 | "login.link.signup": "Створити безплатний акаунт", | ||
15 | "login.link.password": "Скинути пароль", | ||
16 | "password.headline": "Скинути пароль", | ||
17 | "password.email.label": "Email адреса", | ||
18 | "password.submit.label": "Подати", | ||
19 | "password.noUser": "Не знайдено жодного користувача з цією email адресою", | ||
20 | "password.successInfo": "Будь ласка, перевірте ваш email", | ||
21 | "password.link.signup": "Створити безплатний акаунт", | ||
22 | "password.link.login": "Увійти до вашого акаунту", | ||
23 | "signup.headline": "Увійти", | ||
24 | "signup.firstname.label": "Ім'я", | ||
25 | "signup.lastname.label": "Прізвище", | ||
26 | "signup.email.label": "Email адреса", | ||
27 | "signup.company.label": "Компанія", | ||
28 | "signup.password.label": "Пароль", | ||
29 | "signup.submit.label": "Створити акаунт", | ||
30 | "signup.link.login": "У вас вже є обліковий запис, увійти?", | ||
31 | "signup.emailDuplicate": "Користувач із цією email адресою вже існує", | ||
32 | "signup.legal.info": "Створенням акаунту Franz ви приймаєте", | ||
33 | "signup.legal.terms": "Умови використання", | ||
34 | "signup.legal.privacy": "Заява про конфіденційність", | ||
35 | "pricing.headline": "Підтримайте Franz", | ||
36 | "pricing.support.label": "Виберіть свій план підтримки", | ||
37 | "pricing.submit.label": "Я хочу підтримати розробку Franz", | ||
38 | "pricing.link.skipPayment": "Я не хочу підтримувати розробку Franz.", | ||
39 | "import.headline": "Імпортувати ваші сервіси з Franz 4", | ||
40 | "import.notSupportedHeadline": "Сервіси ще не підтримуються в Franz 5", | ||
41 | "import.submit.label": "Імпортувати сервіси", | ||
42 | "import.skip.label": "Я хочу додати сервіси вручну", | ||
43 | "invite.submit.label": "Відправити запрошення", | ||
44 | "invite.headline.friends": "Запросіть 3 ваших друзів або колег", | ||
45 | "invite.name.label": "Ім'я", | ||
46 | "invite.email.label": "Email адреса", | ||
47 | "invite.skip.label": "Я хочу зробити це пізніше", | ||
48 | "subscription.submit.label": "Я хочу підтримати розробку Franz", | ||
49 | "subscription.paymentSessionError": "Не вдалося ініціалізувати форму платежу", | ||
50 | "subscription.includedFeatures": "Платний Преміальний Акаунт Прихильника Franz включає", | ||
51 | "subscription.features.onpremise": "Додайте on-premise / hosted сервіси, такі як Hipchat", | ||
52 | "subscription.features.customServices": "Приватні сервіси для вас і вашої команди", | ||
53 | "subscription.features.encryptedSync": "Шифрована синхронізація сеансу", | ||
54 | "subscription.features.vpn": "Підтримка проксі та VPN", | ||
55 | "subscription.features.ads": "Жодної реклами!", | ||
56 | "subscription.features.comingSoon": "очікуйте незабаром", | ||
57 | "infobar.servicesUpdated": "Ваші сервіси було оновлено.", | ||
58 | "infobar.updateAvailable": "Нове оновлення для Franz доступне.", | ||
59 | "infobar.buttonReloadServices": "Перезавантажити сервіси", | ||
60 | "infobar.buttonInstallUpdate": "Перезавантажити і встановити оновлення", | ||
61 | "infobar.requiredRequestsFailed": "Не вдалося завантажити сервіси та інформацію користувача", | ||
62 | "sidebar.settings": "Налаштування", | ||
63 | "services.welcome": "Ласкаво просимо в Franz", | ||
64 | "services.getStarted": "Почати", | ||
65 | "settings.account.headline": "Акаунт", | ||
66 | "settings.account.headlineSubscription": "Ваша підписка", | ||
67 | "settings.account.headlineUpgrade": "Оновити ваш акаунт і підтримати Franz", | ||
68 | "settings.account.headlineInvoices": "Інвойси", | ||
69 | "settings.account.manageSubscription.label": "Керування вашою підпискою", | ||
70 | "settings.account.accountType.basic": "Базовий акаунт", | ||
71 | "settings.account.accountType.premium": "Преміум Акаунт Прихильника", | ||
72 | "settings.account.account.editButton": "Редагувати акаунт", | ||
73 | "settings.account.invoiceDownload": "Завантажити", | ||
74 | "settings.account.userInfoRequestFailed": "Не вдалося завантажити інформацію користувача", | ||
75 | "settings.account.tryReloadUserInfoRequest": "Спробуйте ще раз", | ||
76 | "settings.account.headlineProfile": "Оновити профіль", | ||
77 | "settings.account.headlineAccount": "Інформація про акаунт", | ||
78 | "settings.account.headlinePassword": "Змінити пароль", | ||
79 | "settings.account.successInfo": "Ваші зміни були збережені", | ||
80 | "settings.account.buttonSave": "Оновити профіль", | ||
81 | "settings.account.mining.thankyou": "Дякую, що підтримуєте Franz своєю обчислювальною потужністю.", | ||
82 | "settings.account.mining.active": "Ви зараз здійснюєте {hashes} розрахунків за секунду.", | ||
83 | "settings.account.mining.moreInformation": "Отримати більше інформації", | ||
84 | "settings.account.mining.cancel": "Скасувати видобуток", | ||
85 | "settings.navigation.availableServices": "Доступні сервіси", | ||
86 | "settings.navigation.yourServices": "Ваші сервіси", | ||
87 | "settings.navigation.account": "Акаунт", | ||
88 | "settings.navigation.settings": "Налаштування", | ||
89 | "settings.navigation.logout": "Вийти", | ||
90 | "settings.recipes.headline": "Доступні сервіси", | ||
91 | "settings.recipes.mostPopular": "Найбільш популярні", | ||
92 | "settings.recipes.all": "Всі сервіси", | ||
93 | "settings.recipes.dev": "Розробка", | ||
94 | "settings.recipes.nothingFound": "Вибачте, але жоден сервіс не відповідає пошуковому терміну.", | ||
95 | "settings.recipes.servicesSuccessfulAddedInfo": "Сервіс успішно додано", | ||
96 | "settings.service.form.saveButton": "Зберегти сервіс", | ||
97 | "settings.service.form.deleteButton": "Видалити сервіс", | ||
98 | "settings.service.form.availableServices": "Доступні сервіси", | ||
99 | "settings.service.form.yourServices": "Ваші сервіси", | ||
100 | "settings.service.form.addServiceHeadline": "Додати {name}", | ||
101 | "settings.service.form.editServiceHeadline": "Редагувати {name}", | ||
102 | "settings.service.form.tabHosted": "Розміщений", | ||
103 | "settings.service.form.tabOnPremise": "Самостійно розміщений ⭐️", | ||
104 | "settings.service.form.customUrlValidationError": "Не вдалось підтвердити власний {name} сервер.", | ||
105 | "settings.service.form.customUrlPremiumInfo": "Щоб додати самостійно розміщені сервіси, вам потріьно мати Преміумним Акаунт Прихильника Franz.", | ||
106 | "settings.service.form.customUrlUpgradeAccount": "Оновити ваш обліковий запис", | ||
107 | "settings.service.form.indirectMessageInfo": "Ви отримаєте сповіщення про всі нові повідомлення в каналі, а не лише про @username, @channel, @here, ...", | ||
108 | "settings.service.error.headline": "Помилка", | ||
109 | "settings.service.error.goBack": "Повернутись до сервісів", | ||
110 | "settings.service.error.message": "Не вдалось завантажити серверний протокол.", | ||
111 | "settings.services.tooltip.isDisabled": "Сервіс відключений", | ||
112 | "settings.services.tooltip.notificationsDisabled": "Сповіщення відключені", | ||
113 | "settings.services.headline": "Ваші сервіси", | ||
114 | "settings.services.noServicesAdded": "Ви ще не додавали жодних сервісів.", | ||
115 | "settings.services.discoverServices": "Відкрийте для себе сервіси", | ||
116 | "settings.services.updatedInfo": "Ваші зміни були збережені", | ||
117 | "settings.services.deletedInfo": "Сервіс було видалено", | ||
118 | "settings.app.headline": "Налаштування", | ||
119 | "settings.app.headlineGeneral": "Загальні", | ||
120 | "settings.app.headlineLanguage": "Мова", | ||
121 | "settings.app.headlineUpdates": "Оновлення", | ||
122 | "settings.app.buttonSearchForUpdate": "Перевірити наявність оновлень", | ||
123 | "settings.app.buttonInstallUpdate": "Перезавантажити і встановити оновлення", | ||
124 | "settings.app.updateStatusSearching": "Шукає оновлення", | ||
125 | "settings.app.updateStatusAvailable": "Оновлення доступне, завантаження...", | ||
126 | "settings.app.updateStatusUpToDate": "Ви використовуєте останню версію Franz", | ||
127 | "settings.app.form.autoLaunchOnStart": "Запускати Franz на початку", | ||
128 | "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі", | ||
129 | "settings.app.form.minimizeToSystemTray": "Мінімізувати Franz до системного лотка", | ||
130 | "settings.app.form.runInBackground": "Тримати Franz в фоні при закритті вікна", | ||
131 | "settings.app.form.language": "Мова", | ||
132 | "settings.app.form.beta": "Включити бета-версії", | ||
133 | "settings.app.currentVersion": "Поточна версія:", | ||
134 | "settings.service.form.name": "Ім'я", | ||
135 | "settings.service.form.enableService": "Увімкнути сервіс", | ||
136 | "settings.service.form.enableNotification": "Увімкнути сповіщення", | ||
137 | "settings.service.form.team": "Команда", | ||
138 | "settings.service.form.customUrl": "Користувацький сервер", | ||
139 | "settings.service.form.indirectMessages": "Показувати значок повідомлення для всіх нових повідомлень", | ||
140 | "settings.user.form.firstname": "Ім'я", | ||
141 | "settings.user.form.lastname": "Прізвище", | ||
142 | "settings.user.form.email": "Email", | ||
143 | "settings.user.form.currentPassword": "Поточний пароль", | ||
144 | "settings.user.form.newPassword": "Новий пароль", | ||
145 | "settings.user.form.accountType.label": "Тип акаунту", | ||
146 | "settings.user.form.accountType.individual": "Індивідуальний", | ||
147 | "settings.user.form.accountType.non-profit": "Некомерційний", | ||
148 | "settings.user.form.accountType.company": "Компанія", | ||
149 | "subscription.type.free": "безплатно", | ||
150 | "subscription.type.month": "місяць", | ||
151 | "subscription.type.year": "рік", | ||
152 | "subscription.type.mining": "Підтримати Franz обчислювальною потужністю", | ||
153 | "subscription.mining.headline": "Як це працює?", | ||
154 | "subscription.mining.experimental": "експериментальний", | ||
155 | "subscription.mining.line1": "Вмикаючи \"Підтримати обчислювальною потужністю\", Franz буде використовувати приблизно 20-50% вашого процесора щоб майнити криптовалюту Monero, що приблизно рівне $ 5/рік.", | ||
156 | "subscription.mining.line2": "Ми адаптуємо використання процесора відповідно до вашої поведінки, щоб не виснажувати акумулятор, не сповільнити вашу роботу і роботу вашої машини.", | ||
157 | "subscription.mining.line3": "Поки майнер активний, ви матимете необмежений доступ до всіх особливостей підтримки Franz Premium.", | ||
158 | "subscription.mining.moreInformation": "Отримати більше інформації про цей план.", | ||
159 | "subscriptionPopup.buttonCancel": "Відмінити", | ||
160 | "subscriptionPopup.buttonDone": "Готово", | ||
161 | "tabs.item.reload": "Перезавантажити", | ||
162 | "tabs.item.edit": "Редагувати", | ||
163 | "tabs.item.disableNotifications": "Вимкнути сповіщення", | ||
164 | "tabs.item.enableNotification": "Увімкнути сповіщення", | ||
165 | "tabs.item.disableService": "Вимкнути сервіс", | ||
166 | "tabs.item.deleteService": "Видалити сервіс" | ||
167 | } | ||
diff --git a/src/index.js b/src/index.js index 3244c44ad..b07666ba2 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -2,21 +2,22 @@ import { app, BrowserWindow, shell } from 'electron'; | |||
2 | import fs from 'fs-extra'; | 2 | import fs from 'fs-extra'; |
3 | import path from 'path'; | 3 | import path from 'path'; |
4 | 4 | ||
5 | // eslint-disable-next-line | 5 | /* eslint-disable */ |
6 | if (require('electron-squirrel-startup')) app.quit(); | 6 | if (require('electron-squirrel-startup')) app.quit(); |
7 | 7 | ||
8 | import windowStateKeeper from 'electron-window-state'; // eslint-disable-line | 8 | import windowStateKeeper from 'electron-window-state'; |
9 | 9 | ||
10 | import { isDevMode, isWindows } from './environment'; // eslint-disable-line | 10 | import { isDevMode, isWindows } from './environment'; |
11 | import ipcApi from './electron/ipc-api'; // eslint-disable-line | 11 | import ipcApi from './electron/ipc-api'; |
12 | import Settings from './electron/Settings'; // eslint-disable-line | 12 | import Tray from './lib/Tray'; |
13 | import { appId } from './package.json'; // eslint-disable-line | 13 | import Settings from './electron/Settings'; |
14 | import './electron/exception'; // eslint-disable-line | 14 | import { appId } from './package.json'; |
15 | import './electron/exception'; | ||
16 | /* eslint-enable */ | ||
15 | 17 | ||
16 | // Keep a global reference of the window object, if you don't, the window will | 18 | // Keep a global reference of the window object, if you don't, the window will |
17 | // be closed automatically when the JavaScript object is garbage collected. | 19 | // be closed automatically when the JavaScript object is garbage collected. |
18 | let mainWindow; | 20 | let mainWindow; |
19 | const settings = new Settings(); | ||
20 | let willQuitApp = false; | 21 | let willQuitApp = false; |
21 | 22 | ||
22 | // Ensure that the recipe directory exists | 23 | // Ensure that the recipe directory exists |
@@ -27,6 +28,21 @@ if (isWindows) { | |||
27 | app.setAppUserModelId(appId); | 28 | app.setAppUserModelId(appId); |
28 | } | 29 | } |
29 | 30 | ||
31 | // Force single window | ||
32 | const isSecondInstance = app.makeSingleInstance(() => { | ||
33 | if (mainWindow) { | ||
34 | if (mainWindow.isMinimized()) mainWindow.restore(); | ||
35 | mainWindow.focus(); | ||
36 | } | ||
37 | }); | ||
38 | |||
39 | if (isSecondInstance) { | ||
40 | app.quit(); | ||
41 | } | ||
42 | |||
43 | // Initialize Settings | ||
44 | const settings = new Settings(); | ||
45 | |||
30 | const createWindow = async () => { | 46 | const createWindow = async () => { |
31 | // Remember window size | 47 | // Remember window size |
32 | const mainWindowState = windowStateKeeper({ | 48 | const mainWindowState = windowStateKeeper({ |
@@ -47,8 +63,11 @@ const createWindow = async () => { | |||
47 | autoHideMenuBar: true, | 63 | autoHideMenuBar: true, |
48 | }); | 64 | }); |
49 | 65 | ||
66 | // Initialize System Tray | ||
67 | const trayIcon = new Tray(mainWindow); | ||
68 | |||
50 | // Initialize ipcApi | 69 | // Initialize ipcApi |
51 | ipcApi({ mainWindow, settings }); | 70 | ipcApi({ mainWindow, settings, trayIcon }); |
52 | 71 | ||
53 | // Manage Window State | 72 | // Manage Window State |
54 | mainWindowState.manage(mainWindow); | 73 | mainWindowState.manage(mainWindow); |
@@ -85,6 +104,7 @@ const createWindow = async () => { | |||
85 | 104 | ||
86 | if (settings.get('minimizeToSystemTray')) { | 105 | if (settings.get('minimizeToSystemTray')) { |
87 | mainWindow.setSkipTaskbar(true); | 106 | mainWindow.setSkipTaskbar(true); |
107 | trayIcon.show(); | ||
88 | } | 108 | } |
89 | }); | 109 | }); |
90 | 110 | ||
@@ -102,6 +122,10 @@ const createWindow = async () => { | |||
102 | if (app.wasMaximized) { | 122 | if (app.wasMaximized) { |
103 | mainWindow.maximize(); | 123 | mainWindow.maximize(); |
104 | } | 124 | } |
125 | |||
126 | if (!settings.get('enableSystemTray')) { | ||
127 | trayIcon.hide(); | ||
128 | } | ||
105 | }); | 129 | }); |
106 | 130 | ||
107 | mainWindow.on('show', () => { | 131 | mainWindow.on('show', () => { |
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index 9f23c4d70..a6cde4d36 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -49,6 +49,7 @@ const template = [ | |||
49 | }, | 49 | }, |
50 | { | 50 | { |
51 | role: 'zoomin', | 51 | role: 'zoomin', |
52 | accelerator: 'CommandOrControl+=', | ||
52 | }, | 53 | }, |
53 | { | 54 | { |
54 | role: 'zoomout', | 55 | role: 'zoomout', |
diff --git a/src/lib/Tray.js b/src/lib/Tray.js new file mode 100644 index 000000000..67150971e --- /dev/null +++ b/src/lib/Tray.js | |||
@@ -0,0 +1,73 @@ | |||
1 | import { app, Tray, Menu, systemPreferences } from 'electron'; | ||
2 | import path from 'path'; | ||
3 | |||
4 | const FILE_EXTENSION = process.platform === 'win32' ? 'ico' : 'png'; | ||
5 | const INDICATOR_TRAY_PLAIN = 'tray'; | ||
6 | const INDICATOR_TRAY_UNREAD = 'tray-unread'; | ||
7 | |||
8 | export default class TrayIcon { | ||
9 | mainWindow = null; | ||
10 | trayIcon = null; | ||
11 | |||
12 | constructor(mainWindow) { | ||
13 | this.mainWindow = mainWindow; | ||
14 | } | ||
15 | |||
16 | show() { | ||
17 | if (this.trayIcon) return; | ||
18 | |||
19 | this.trayIcon = new Tray(this._getAsset('tray', INDICATOR_TRAY_PLAIN)); | ||
20 | const trayMenuTemplate = [ | ||
21 | { | ||
22 | label: 'Show Franz', | ||
23 | click() { | ||
24 | this.mainWindow.show(); | ||
25 | }, | ||
26 | }, { | ||
27 | label: 'Quit Franz', | ||
28 | click() { | ||
29 | app.quit(); | ||
30 | }, | ||
31 | }, | ||
32 | ]; | ||
33 | |||
34 | const trayMenu = Menu.buildFromTemplate(trayMenuTemplate); | ||
35 | this.trayIcon.setContextMenu(trayMenu); | ||
36 | |||
37 | this.trayIcon.on('click', () => { | ||
38 | this.mainWindow.show(); | ||
39 | }); | ||
40 | } | ||
41 | |||
42 | hide() { | ||
43 | if (this.trayIcon) { | ||
44 | this.trayIcon.destroy(); | ||
45 | this.trayIcon = null; | ||
46 | } | ||
47 | } | ||
48 | |||
49 | setIndicator(indicator) { | ||
50 | if (!this.trayIcon) return; | ||
51 | |||
52 | this.trayIcon.setImage(this._getAsset('tray', indicator !== 0 ? INDICATOR_TRAY_UNREAD : INDICATOR_TRAY_PLAIN)); | ||
53 | |||
54 | if (process.platform === 'darwin') { | ||
55 | this.trayIcon.setPressedImage( | ||
56 | this._getAsset('tray', `${indicator !== 0 ? INDICATOR_TRAY_UNREAD : INDICATOR_TRAY_PLAIN}-active`), | ||
57 | ); | ||
58 | } | ||
59 | } | ||
60 | |||
61 | |||
62 | _getAsset(type, asset) { | ||
63 | let platform = process.platform; | ||
64 | |||
65 | if (platform === 'darwin' && systemPreferences.isDarkMode()) { | ||
66 | platform = `${platform}-dark`; | ||
67 | } | ||
68 | |||
69 | return path.join( | ||
70 | __dirname, '..', 'assets', 'images', type, platform, `${asset}.${FILE_EXTENSION}`, | ||
71 | ); | ||
72 | } | ||
73 | } | ||
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index a5e0839f2..7dbef985d 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -16,10 +16,6 @@ import Miner from '../lib/Miner'; | |||
16 | const { app, getCurrentWindow, powerMonitor } = remote; | 16 | const { app, getCurrentWindow, powerMonitor } = remote; |
17 | const defaultLocale = 'en-US'; | 17 | const defaultLocale = 'en-US'; |
18 | 18 | ||
19 | const appFolder = path.dirname(process.execPath); | ||
20 | const updateExe = path.resolve(appFolder, '..', 'Update.exe'); | ||
21 | const exeName = path.basename(process.execPath); | ||
22 | |||
23 | export default class AppStore extends Store { | 19 | export default class AppStore extends Store { |
24 | updateStatusTypes = { | 20 | updateStatusTypes = { |
25 | CHECKING: 'CHECKING', | 21 | CHECKING: 'CHECKING', |
@@ -84,7 +80,7 @@ export default class AppStore extends Store { | |||
84 | // Check for updates once every 4 hours | 80 | // Check for updates once every 4 hours |
85 | setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); | 81 | setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); |
86 | // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) | 82 | // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) |
87 | setTimeout(() => this._checkForUpdates(), 3000); | 83 | setTimeout(() => this._checkForUpdates(), 30000); |
88 | ipcRenderer.on('autoUpdate', (event, data) => { | 84 | ipcRenderer.on('autoUpdate', (event, data) => { |
89 | if (data.available) { | 85 | if (data.available) { |
90 | this.updateStatus = this.updateStatusTypes.AVAILABLE; | 86 | this.updateStatus = this.updateStatusTypes.AVAILABLE; |
@@ -125,6 +121,18 @@ export default class AppStore extends Store { | |||
125 | this.actions.service.openDevToolsForActiveService(); | 121 | this.actions.service.openDevToolsForActiveService(); |
126 | }); | 122 | }); |
127 | 123 | ||
124 | // Set active the next service | ||
125 | key( | ||
126 | '⌘+pagedown, ctrl+pagedown, ⌘+shift+tab, ctrl+shift+tab', () => { | ||
127 | this.actions.service.setActiveNext(); | ||
128 | }); | ||
129 | |||
130 | // Set active the prev service | ||
131 | key( | ||
132 | '⌘+pageup, ctrl+pageup, ⌘+tab, ctrl+tab', () => { | ||
133 | this.actions.service.setActivePrev(); | ||
134 | }); | ||
135 | |||
128 | this.locale = this._getDefaultLocale(); | 136 | this.locale = this._getDefaultLocale(); |
129 | 137 | ||
130 | this._healthCheck(); | 138 | this._healthCheck(); |
@@ -161,24 +169,27 @@ export default class AppStore extends Store { | |||
161 | @action _launchOnStartup({ enable, openInBackground }) { | 169 | @action _launchOnStartup({ enable, openInBackground }) { |
162 | this.autoLaunchOnStart = enable; | 170 | this.autoLaunchOnStart = enable; |
163 | 171 | ||
164 | const settings = { | 172 | let settings = { |
165 | openAtLogin: enable, | 173 | openAtLogin: enable, |
166 | openAsHidden: openInBackground, | ||
167 | path: updateExe, | ||
168 | args: [ | ||
169 | '--processStart', `"${exeName}"`, | ||
170 | ], | ||
171 | }; | 174 | }; |
172 | 175 | ||
173 | // For Windows | 176 | // For Windows |
174 | if (openInBackground) { | 177 | if (process.platform === 'win32') { |
175 | settings.args.push( | 178 | settings = Object.assign({ |
176 | '--process-start-args', '"--hidden"', | 179 | openAsHidden: openInBackground, |
177 | ); | 180 | path: app.getPath('exe'), |
181 | args: [ | ||
182 | '--processStart', `"${path.basename(app.getPath('exe'))}"`, | ||
183 | ], | ||
184 | }, settings); | ||
185 | |||
186 | if (openInBackground) { | ||
187 | settings.args.push( | ||
188 | '--process-start-args', '"--hidden"', | ||
189 | ); | ||
190 | } | ||
178 | } | 191 | } |
179 | 192 | ||
180 | app.setLoginItemSettings(settings); | ||
181 | |||
182 | gaEvent('App', enable ? 'enable autostart' : 'disable autostart'); | 193 | gaEvent('App', enable ? 'enable autostart' : 'disable autostart'); |
183 | } | 194 | } |
184 | 195 | ||
@@ -291,6 +302,12 @@ export default class AppStore extends Store { | |||
291 | // we need to wait until the settings request is resolved | 302 | // we need to wait until the settings request is resolved |
292 | await this.stores.settings.allSettingsRequest; | 303 | await this.stores.settings.allSettingsRequest; |
293 | 304 | ||
305 | // We don't set autostart on first launch for macOS as disabling | ||
306 | // the option is currently broken | ||
307 | // https://github.com/meetfranz/franz/issues/17 | ||
308 | // https://github.com/electron/electron/issues/10880 | ||
309 | if (process.platform === 'darwin') return; | ||
310 | |||
294 | if (!this.stores.settings.all.appStarts) { | 311 | if (!this.stores.settings.all.appStarts) { |
295 | this.actions.app.launchOnStartup({ | 312 | this.actions.app.launchOnStartup({ |
296 | enable: true, | 313 | enable: true, |
@@ -301,7 +318,7 @@ export default class AppStore extends Store { | |||
301 | 318 | ||
302 | _checkAutoStart() { | 319 | _checkAutoStart() { |
303 | const loginItem = app.getLoginItemSettings({ | 320 | const loginItem = app.getLoginItemSettings({ |
304 | path: updateExe, | 321 | path: app.getPath('exe'), |
305 | }); | 322 | }); |
306 | 323 | ||
307 | this.autoLaunchOnStart = loginItem.openAtLogin; | 324 | this.autoLaunchOnStart = loginItem.openAtLogin; |
diff --git a/src/stores/RecipesStore.js b/src/stores/RecipesStore.js index cdc274685..67fee1d50 100644 --- a/src/stores/RecipesStore.js +++ b/src/stores/RecipesStore.js | |||
@@ -65,6 +65,10 @@ export default class RecipesStore extends Store { | |||
65 | @action async _update() { | 65 | @action async _update() { |
66 | const recipeIds = this.recipeIdForServices; | 66 | const recipeIds = this.recipeIdForServices; |
67 | const recipes = {}; | 67 | const recipes = {}; |
68 | |||
69 | // Hackfix, reference this.all to fetch services | ||
70 | console.debug(`Check Recipe updates for ${this.all.map(recipe => recipe.id)}`); | ||
71 | |||
68 | recipeIds.forEach((r) => { | 72 | recipeIds.forEach((r) => { |
69 | const recipe = this.one(r); | 73 | const recipe = this.one(r); |
70 | recipes[r] = recipe.version; | 74 | recipes[r] = recipe.version; |
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 77d2e7da4..19db05494 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -24,6 +24,8 @@ export default class ServicesStore extends Store { | |||
24 | 24 | ||
25 | // Register action handlers | 25 | // Register action handlers |
26 | this.actions.service.setActive.listen(this._setActive.bind(this)); | 26 | this.actions.service.setActive.listen(this._setActive.bind(this)); |
27 | this.actions.service.setActiveNext.listen(this._setActiveNext.bind(this)); | ||
28 | this.actions.service.setActivePrev.listen(this._setActivePrev.bind(this)); | ||
27 | this.actions.service.showAddServiceInterface.listen(this._showAddServiceInterface.bind(this)); | 29 | this.actions.service.showAddServiceInterface.listen(this._showAddServiceInterface.bind(this)); |
28 | this.actions.service.createService.listen(this._createService.bind(this)); | 30 | this.actions.service.createService.listen(this._createService.bind(this)); |
29 | this.actions.service.createFromLegacyService.listen(this._createFromLegacyService.bind(this)); | 31 | this.actions.service.createFromLegacyService.listen(this._createFromLegacyService.bind(this)); |
@@ -206,6 +208,24 @@ export default class ServicesStore extends Store { | |||
206 | service.isActive = true; | 208 | service.isActive = true; |
207 | } | 209 | } |
208 | 210 | ||
211 | @action _setActiveNext() { | ||
212 | const nextIndex = this._wrapIndex(this.enabled.findIndex(service => service.isActive), 1, this.enabled.length); | ||
213 | |||
214 | this.all.forEach((s, index) => { | ||
215 | this.all[index].isActive = false; | ||
216 | }); | ||
217 | this.enabled[nextIndex].isActive = true; | ||
218 | } | ||
219 | |||
220 | @action _setActivePrev() { | ||
221 | const prevIndex = this._wrapIndex(this.enabled.findIndex(service => service.isActive), -1, this.enabled.length); | ||
222 | |||
223 | this.all.forEach((s, index) => { | ||
224 | this.all[index].isActive = false; | ||
225 | }); | ||
226 | this.enabled[prevIndex].isActive = true; | ||
227 | } | ||
228 | |||
209 | @action _setUnreadMessageCount({ serviceId, count }) { | 229 | @action _setUnreadMessageCount({ serviceId, count }) { |
210 | const service = this.one(serviceId); | 230 | const service = this.one(serviceId); |
211 | 231 | ||
@@ -500,4 +520,8 @@ export default class ServicesStore extends Store { | |||
500 | _reorderAnalytics = debounce(() => { | 520 | _reorderAnalytics = debounce(() => { |
501 | gaEvent('Service', 'order'); | 521 | gaEvent('Service', 'order'); |
502 | }, 5000); | 522 | }, 5000); |
523 | |||
524 | _wrapIndex(index, delta, size) { | ||
525 | return (((index + delta) % size) + size) % size; | ||
526 | } | ||
503 | } | 527 | } |
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index 4927d615f..1cb2ecac3 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js | |||
@@ -192,6 +192,15 @@ export default class UserStore extends Store { | |||
192 | @action async _importLegacyServices({ services }) { | 192 | @action async _importLegacyServices({ services }) { |
193 | this.isImportLegacyServicesExecuting = true; | 193 | this.isImportLegacyServicesExecuting = true; |
194 | 194 | ||
195 | // Reduces recipe duplicates | ||
196 | const recipes = services.filter((obj, pos, arr) => arr.map(mapObj => mapObj.recipe.id).indexOf(obj.recipe.id) === pos).map(s => s.recipe.id); | ||
197 | |||
198 | // Install recipes | ||
199 | for (const recipe of recipes) { | ||
200 | // eslint-disable-next-line | ||
201 | await this.stores.recipes._install({ recipeId: recipe }); | ||
202 | } | ||
203 | |||
195 | for (const service of services) { | 204 | for (const service of services) { |
196 | this.actions.service.createFromLegacyService({ | 205 | this.actions.service.createFromLegacyService({ |
197 | data: service, | 206 | data: service, |
diff --git a/src/styles/infobox.scss b/src/styles/infobox.scss index ad363314d..7ab094058 100644 --- a/src/styles/infobox.scss +++ b/src/styles/infobox.scss | |||
@@ -31,6 +31,11 @@ | |||
31 | color: #FFF; | 31 | color: #FFF; |
32 | } | 32 | } |
33 | 33 | ||
34 | &.infobox--warning { | ||
35 | background: $theme-brand-warning; | ||
36 | color: #FFF; | ||
37 | } | ||
38 | |||
34 | .mdi { | 39 | .mdi { |
35 | margin-right: 10px; | 40 | margin-right: 10px; |
36 | } | 41 | } |
diff --git a/src/styles/main.scss b/src/styles/main.scss index 8afc86f98..0a082729c 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss | |||
@@ -20,6 +20,7 @@ $mdi-font-path: '../node_modules/mdi/fonts'; | |||
20 | @import './auth.scss'; | 20 | @import './auth.scss'; |
21 | @import './tooltip.scss'; | 21 | @import './tooltip.scss'; |
22 | @import './info-bar.scss'; | 22 | @import './info-bar.scss'; |
23 | @import './status-bar-target-url.scss'; | ||
23 | @import './animations.scss'; | 24 | @import './animations.scss'; |
24 | @import './infobox.scss'; | 25 | @import './infobox.scss'; |
25 | @import './badge.scss'; | 26 | @import './badge.scss'; |
diff --git a/src/styles/status-bar-target-url.scss b/src/styles/status-bar-target-url.scss new file mode 100644 index 000000000..bc7438be9 --- /dev/null +++ b/src/styles/status-bar-target-url.scss | |||
@@ -0,0 +1,14 @@ | |||
1 | @import './config.scss'; | ||
2 | |||
3 | .status-bar-target-url { | ||
4 | height: auto; | ||
5 | background: $theme-gray-lighter; | ||
6 | padding: 4px; | ||
7 | position: absolute; | ||
8 | box-shadow: 0 0 8px rgba(black, 0.2); | ||
9 | font-size: 12px; | ||
10 | color: $theme-gray-dark; | ||
11 | bottom: 0; | ||
12 | right: 0; | ||
13 | border-top-left-radius: 5px; | ||
14 | } | ||
@@ -66,13 +66,6 @@ accepts@~1.0.7: | |||
66 | mime-types "~1.0.0" | 66 | mime-types "~1.0.0" |
67 | negotiator "0.4.7" | 67 | negotiator "0.4.7" |
68 | 68 | ||
69 | accepts@~1.3.4: | ||
70 | version "1.3.4" | ||
71 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" | ||
72 | dependencies: | ||
73 | mime-types "~2.1.16" | ||
74 | negotiator "0.6.1" | ||
75 | |||
76 | acorn-jsx@^3.0.0: | 69 | acorn-jsx@^3.0.0: |
77 | version "3.0.1" | 70 | version "3.0.1" |
78 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" | 71 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" |
@@ -91,12 +84,6 @@ after@0.8.2: | |||
91 | version "0.8.2" | 84 | version "0.8.2" |
92 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" | 85 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" |
93 | 86 | ||
94 | agent-base@^4.1.0: | ||
95 | version "4.1.1" | ||
96 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.1.1.tgz#92d8a4fc2524a3b09b3666a33b6c97960f23d6a4" | ||
97 | dependencies: | ||
98 | es6-promisify "^5.0.0" | ||
99 | |||
100 | ajv-keywords@^1.0.0: | 87 | ajv-keywords@^1.0.0: |
101 | version "1.5.1" | 88 | version "1.5.1" |
102 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" | 89 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" |
@@ -131,10 +118,6 @@ ansi-align@^2.0.0: | |||
131 | dependencies: | 118 | dependencies: |
132 | string-width "^2.0.0" | 119 | string-width "^2.0.0" |
133 | 120 | ||
134 | ansi-escapes@^2.0.0: | ||
135 | version "2.0.0" | ||
136 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" | ||
137 | |||
138 | ansi-escapes@^3.0.0: | 121 | ansi-escapes@^3.0.0: |
139 | version "3.0.0" | 122 | version "3.0.0" |
140 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" | 123 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" |
@@ -223,10 +206,6 @@ array-find-index@^1.0.1: | |||
223 | version "1.0.2" | 206 | version "1.0.2" |
224 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" | 207 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" |
225 | 208 | ||
226 | array-flatten@1.1.1: | ||
227 | version "1.1.1" | ||
228 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" | ||
229 | |||
230 | array-initial@^1.0.0: | 209 | array-initial@^1.0.0: |
231 | version "1.0.1" | 210 | version "1.0.1" |
232 | resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.0.1.tgz#86122222a29c1ed42347f6334111afa40f8b20ec" | 211 | resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.0.1.tgz#86122222a29c1ed42347f6334111afa40f8b20ec" |
@@ -326,10 +305,6 @@ async-foreach@^0.1.3: | |||
326 | version "0.1.3" | 305 | version "0.1.3" |
327 | resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" | 306 | resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" |
328 | 307 | ||
329 | async-limiter@~1.0.0: | ||
330 | version "1.0.0" | ||
331 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" | ||
332 | |||
333 | async-settle@^1.0.0: | 308 | async-settle@^1.0.0: |
334 | version "1.0.0" | 309 | version "1.0.0" |
335 | resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" | 310 | resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" |
@@ -1199,29 +1174,10 @@ bluebird-lst@^1.0.2, bluebird-lst@^1.0.3: | |||
1199 | dependencies: | 1174 | dependencies: |
1200 | bluebird "^3.5.0" | 1175 | bluebird "^3.5.0" |
1201 | 1176 | ||
1202 | bluebird@^2.9.34: | ||
1203 | version "2.11.0" | ||
1204 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" | ||
1205 | |||
1206 | bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0: | 1177 | bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0: |
1207 | version "3.5.0" | 1178 | version "3.5.0" |
1208 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" | 1179 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" |
1209 | 1180 | ||
1210 | body-parser@1.18.2: | ||
1211 | version "1.18.2" | ||
1212 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" | ||
1213 | dependencies: | ||
1214 | bytes "3.0.0" | ||
1215 | content-type "~1.0.4" | ||
1216 | debug "2.6.9" | ||
1217 | depd "~1.1.1" | ||
1218 | http-errors "~1.6.2" | ||
1219 | iconv-lite "0.4.19" | ||
1220 | on-finished "~2.3.0" | ||
1221 | qs "6.5.1" | ||
1222 | raw-body "2.3.2" | ||
1223 | type-is "~1.6.15" | ||
1224 | |||
1225 | boom@2.x.x: | 1181 | boom@2.x.x: |
1226 | version "2.10.1" | 1182 | version "2.10.1" |
1227 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" | 1183 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" |
@@ -1255,12 +1211,6 @@ braces@^1.8.2: | |||
1255 | preserve "^0.2.0" | 1211 | preserve "^0.2.0" |
1256 | repeat-element "^1.1.2" | 1212 | repeat-element "^1.1.2" |
1257 | 1213 | ||
1258 | breakword@^1.0.3: | ||
1259 | version "1.0.3" | ||
1260 | resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.3.tgz#71e091bbb78bb4ef003cf3ed2b2e062c6927f7dd" | ||
1261 | dependencies: | ||
1262 | wcwidth "^1.0.1" | ||
1263 | |||
1264 | browserslist@^2.1.2: | 1214 | browserslist@^2.1.2: |
1265 | version "2.4.0" | 1215 | version "2.4.0" |
1266 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" | 1216 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" |
@@ -1280,10 +1230,6 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.1: | |||
1280 | version "1.1.1" | 1230 | version "1.1.1" |
1281 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" | 1231 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" |
1282 | 1232 | ||
1283 | bytes@3.0.0: | ||
1284 | version "3.0.0" | ||
1285 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" | ||
1286 | |||
1287 | caller-path@^0.1.0: | 1233 | caller-path@^0.1.0: |
1288 | version "0.1.0" | 1234 | version "0.1.0" |
1289 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" | 1235 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" |
@@ -1372,6 +1318,10 @@ chokidar@^1.4.3: | |||
1372 | optionalDependencies: | 1318 | optionalDependencies: |
1373 | fsevents "^1.0.0" | 1319 | fsevents "^1.0.0" |
1374 | 1320 | ||
1321 | chownr@^1.0.1: | ||
1322 | version "1.0.1" | ||
1323 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" | ||
1324 | |||
1375 | chromium-pickle-js@^0.2.0: | 1325 | chromium-pickle-js@^0.2.0: |
1376 | version "0.2.0" | 1326 | version "0.2.0" |
1377 | resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" | 1327 | resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" |
@@ -1392,7 +1342,7 @@ cli-boxes@^1.0.0: | |||
1392 | version "1.0.0" | 1342 | version "1.0.0" |
1393 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" | 1343 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" |
1394 | 1344 | ||
1395 | cli-cursor@^2.0.0, cli-cursor@^2.1.0: | 1345 | cli-cursor@^2.1.0: |
1396 | version "2.1.0" | 1346 | version "2.1.0" |
1397 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" | 1347 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" |
1398 | dependencies: | 1348 | dependencies: |
@@ -1426,7 +1376,7 @@ clone@^0.2.0: | |||
1426 | version "0.2.0" | 1376 | version "0.2.0" |
1427 | resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" | 1377 | resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" |
1428 | 1378 | ||
1429 | clone@^1.0.0, clone@^1.0.2: | 1379 | clone@^1.0.0: |
1430 | version "1.0.2" | 1380 | version "1.0.2" |
1431 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" | 1381 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" |
1432 | 1382 | ||
@@ -1438,25 +1388,6 @@ code-point-at@^1.0.0: | |||
1438 | version "1.1.0" | 1388 | version "1.1.0" |
1439 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" | 1389 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" |
1440 | 1390 | ||
1441 | coin-hive-stratum@^1.0.0: | ||
1442 | version "1.0.0" | ||
1443 | resolved "https://registry.yarnpkg.com/coin-hive-stratum/-/coin-hive-stratum-1.0.0.tgz#b7714ae3537b5701e293d654c163f2b9bfa709cb" | ||
1444 | dependencies: | ||
1445 | minimist "^1.2.0" | ||
1446 | ws "^3.2.0" | ||
1447 | |||
1448 | coin-hive@^1.6.0: | ||
1449 | version "1.6.0" | ||
1450 | resolved "https://registry.yarnpkg.com/coin-hive/-/coin-hive-1.6.0.tgz#32149e7552dfddae15121a36604db0e64a10b1d1" | ||
1451 | dependencies: | ||
1452 | coin-hive-stratum "^1.0.0" | ||
1453 | elegant-spinner "^1.0.1" | ||
1454 | express "^4.15.4" | ||
1455 | log-update "^2.1.0" | ||
1456 | minimist "^1.2.0" | ||
1457 | puppeteer "^0.10.2" | ||
1458 | tty-table "^2.5.5" | ||
1459 | |||
1460 | collection-map@^1.0.0: | 1391 | collection-map@^1.0.0: |
1461 | version "1.0.0" | 1392 | version "1.0.0" |
1462 | resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" | 1393 | resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" |
@@ -1561,14 +1492,6 @@ contains-path@^0.1.0: | |||
1561 | version "0.1.0" | 1492 | version "0.1.0" |
1562 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" | 1493 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" |
1563 | 1494 | ||
1564 | content-disposition@0.5.2: | ||
1565 | version "0.5.2" | ||
1566 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" | ||
1567 | |||
1568 | content-type@~1.0.4: | ||
1569 | version "1.0.4" | ||
1570 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" | ||
1571 | |||
1572 | conventional-commit-types@^2.0.0: | 1495 | conventional-commit-types@^2.0.0: |
1573 | version "2.2.0" | 1496 | version "2.2.0" |
1574 | resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" | 1497 | resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.2.0.tgz#5db95739d6c212acbe7b6f656a11b940baa68946" |
@@ -1577,10 +1500,6 @@ convert-source-map@^1.1.1, convert-source-map@^1.5.0: | |||
1577 | version "1.5.0" | 1500 | version "1.5.0" |
1578 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" | 1501 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" |
1579 | 1502 | ||
1580 | cookie-signature@1.0.6: | ||
1581 | version "1.0.6" | ||
1582 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" | ||
1583 | |||
1584 | cookie@0.3.1: | 1503 | cookie@0.3.1: |
1585 | version "0.3.1" | 1504 | version "0.3.1" |
1586 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" | 1505 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" |
@@ -1650,29 +1569,6 @@ crypto-random-string@^1.0.0: | |||
1650 | version "1.0.0" | 1569 | version "1.0.0" |
1651 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" | 1570 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" |
1652 | 1571 | ||
1653 | csv-generate@^1.0.0: | ||
1654 | version "1.0.0" | ||
1655 | resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-1.0.0.tgz#bd52886859d0c925f3e51f60f3abed262fa15caf" | ||
1656 | |||
1657 | csv-parse@^1.2.0: | ||
1658 | version "1.2.3" | ||
1659 | resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-1.2.3.tgz#466206b51eaf77ccb50c3fadebd098cdeb2c69e7" | ||
1660 | |||
1661 | csv-stringify@^1.0.0: | ||
1662 | version "1.0.4" | ||
1663 | resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-1.0.4.tgz#bc18bab9ad4cef3195fd257980b58b479c42d3e5" | ||
1664 | dependencies: | ||
1665 | lodash.get "^4.0.0" | ||
1666 | |||
1667 | csv@^1.1.1: | ||
1668 | version "1.1.1" | ||
1669 | resolved "https://registry.yarnpkg.com/csv/-/csv-1.1.1.tgz#d9952d59b1f964a7afbcdd804d6818a73199a477" | ||
1670 | dependencies: | ||
1671 | csv-generate "^1.0.0" | ||
1672 | csv-parse "^1.2.0" | ||
1673 | csv-stringify "^1.0.0" | ||
1674 | stream-transform "^0.1.0" | ||
1675 | |||
1676 | cuint@^0.2.1, cuint@^0.2.2: | 1572 | cuint@^0.2.1, cuint@^0.2.2: |
1677 | version "0.2.2" | 1573 | version "0.2.2" |
1678 | resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" | 1574 | resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" |
@@ -1732,12 +1628,6 @@ debug@2.3.3: | |||
1732 | dependencies: | 1628 | dependencies: |
1733 | ms "0.7.2" | 1629 | ms "0.7.2" |
1734 | 1630 | ||
1735 | debug@2.6.9, debug@^2.4.1: | ||
1736 | version "2.6.9" | ||
1737 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" | ||
1738 | dependencies: | ||
1739 | ms "2.0.0" | ||
1740 | |||
1741 | debug@^2.1.3, debug@^2.2.0, debug@^2.5.1, debug@^2.6.1, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8: | 1631 | debug@^2.1.3, debug@^2.2.0, debug@^2.5.1, debug@^2.6.1, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8: |
1742 | version "2.6.8" | 1632 | version "2.6.8" |
1743 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" | 1633 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" |
@@ -1782,12 +1672,6 @@ default-resolution@^2.0.0: | |||
1782 | version "2.0.0" | 1672 | version "2.0.0" |
1783 | resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" | 1673 | resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" |
1784 | 1674 | ||
1785 | defaults@^1.0.3: | ||
1786 | version "1.0.3" | ||
1787 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" | ||
1788 | dependencies: | ||
1789 | clone "^1.0.2" | ||
1790 | |||
1791 | define-properties@^1.1.2: | 1675 | define-properties@^1.1.2: |
1792 | version "1.1.2" | 1676 | version "1.1.2" |
1793 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" | 1677 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" |
@@ -1819,18 +1703,10 @@ depd@0.4.4: | |||
1819 | version "0.4.4" | 1703 | version "0.4.4" |
1820 | resolved "https://registry.yarnpkg.com/depd/-/depd-0.4.4.tgz#07091fae75f97828d89b4a02a2d4778f0e7c0662" | 1704 | resolved "https://registry.yarnpkg.com/depd/-/depd-0.4.4.tgz#07091fae75f97828d89b4a02a2d4778f0e7c0662" |
1821 | 1705 | ||
1822 | depd@1.1.1, depd@~1.1.1: | ||
1823 | version "1.1.1" | ||
1824 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" | ||
1825 | |||
1826 | destroy@1.0.3: | 1706 | destroy@1.0.3: |
1827 | version "1.0.3" | 1707 | version "1.0.3" |
1828 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.3.tgz#b433b4724e71fd8551d9885174851c5fc377e2c9" | 1708 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.3.tgz#b433b4724e71fd8551d9885174851c5fc377e2c9" |
1829 | 1709 | ||
1830 | destroy@~1.0.4: | ||
1831 | version "1.0.4" | ||
1832 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" | ||
1833 | |||
1834 | detect-file@^0.1.0: | 1710 | detect-file@^0.1.0: |
1835 | version "0.1.0" | 1711 | version "0.1.0" |
1836 | resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" | 1712 | resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" |
@@ -1918,10 +1794,6 @@ ee-first@1.0.5: | |||
1918 | version "1.0.5" | 1794 | version "1.0.5" |
1919 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.0.5.tgz#8c9b212898d8cd9f1a9436650ce7be202c9e9ff0" | 1795 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.0.5.tgz#8c9b212898d8cd9f1a9436650ce7be202c9e9ff0" |
1920 | 1796 | ||
1921 | ee-first@1.1.1: | ||
1922 | version "1.1.1" | ||
1923 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" | ||
1924 | |||
1925 | electron-builder-http@19.15.0, electron-builder-http@~19.15.0: | 1797 | electron-builder-http@19.15.0, electron-builder-http@~19.15.0: |
1926 | version "19.15.0" | 1798 | version "19.15.0" |
1927 | resolved "https://registry.yarnpkg.com/electron-builder-http/-/electron-builder-http-19.15.0.tgz#d34cc28cf9db9ad28494283be8116e83a2e78f4c" | 1799 | resolved "https://registry.yarnpkg.com/electron-builder-http/-/electron-builder-http-19.15.0.tgz#d34cc28cf9db9ad28494283be8116e83a2e78f4c" |
@@ -2161,26 +2033,18 @@ electron-window-state@^4.1.0: | |||
2161 | jsonfile "^2.2.3" | 2033 | jsonfile "^2.2.3" |
2162 | mkdirp "^0.5.1" | 2034 | mkdirp "^0.5.1" |
2163 | 2035 | ||
2164 | electron@^1.7.6: | 2036 | electron@^1.7.9: |
2165 | version "1.7.6" | 2037 | version "1.7.9" |
2166 | resolved "https://registry.yarnpkg.com/electron/-/electron-1.7.6.tgz#fb69ea31bd03df0eff247f26f0b538bd29b6ee72" | 2038 | resolved "https://registry.yarnpkg.com/electron/-/electron-1.7.9.tgz#add54e9f8f83ed02f6519ec10135f698b19336cf" |
2167 | dependencies: | 2039 | dependencies: |
2168 | "@types/node" "^7.0.18" | 2040 | "@types/node" "^7.0.18" |
2169 | electron-download "^3.0.1" | 2041 | electron-download "^3.0.1" |
2170 | extract-zip "^1.0.3" | 2042 | extract-zip "^1.0.3" |
2171 | 2043 | ||
2172 | elegant-spinner@^1.0.1: | ||
2173 | version "1.0.1" | ||
2174 | resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" | ||
2175 | |||
2176 | emojis-list@^2.0.0: | 2044 | emojis-list@^2.0.0: |
2177 | version "2.1.0" | 2045 | version "2.1.0" |
2178 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" | 2046 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" |
2179 | 2047 | ||
2180 | encodeurl@~1.0.1: | ||
2181 | version "1.0.1" | ||
2182 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" | ||
2183 | |||
2184 | encoding@^0.1.11, encoding@^0.1.12: | 2048 | encoding@^0.1.11, encoding@^0.1.12: |
2185 | version "0.1.12" | 2049 | version "0.1.12" |
2186 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" | 2050 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" |
@@ -2275,16 +2139,10 @@ es6-iterator@2, es6-iterator@^2.0.1: | |||
2275 | es5-ext "^0.10.14" | 2139 | es5-ext "^0.10.14" |
2276 | es6-symbol "^3.1" | 2140 | es6-symbol "^3.1" |
2277 | 2141 | ||
2278 | es6-promise@^4.0.3, es6-promise@^4.0.5: | 2142 | es6-promise@^4.0.5: |
2279 | version "4.1.1" | 2143 | version "4.1.1" |
2280 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" | 2144 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" |
2281 | 2145 | ||
2282 | es6-promisify@^5.0.0: | ||
2283 | version "5.0.0" | ||
2284 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" | ||
2285 | dependencies: | ||
2286 | es6-promise "^4.0.3" | ||
2287 | |||
2288 | es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1: | 2146 | es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1: |
2289 | version "3.1.1" | 2147 | version "3.1.1" |
2290 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" | 2148 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" |
@@ -2305,10 +2163,6 @@ escape-html@1.0.1: | |||
2305 | version "1.0.1" | 2163 | version "1.0.1" |
2306 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.1.tgz#181a286ead397a39a92857cfb1d43052e356bff0" | 2164 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.1.tgz#181a286ead397a39a92857cfb1d43052e356bff0" |
2307 | 2165 | ||
2308 | escape-html@~1.0.3: | ||
2309 | version "1.0.3" | ||
2310 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" | ||
2311 | |||
2312 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: | 2166 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: |
2313 | version "1.0.5" | 2167 | version "1.0.5" |
2314 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" | 2168 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" |
@@ -2467,10 +2321,6 @@ esutils@^2.0.2: | |||
2467 | version "2.0.2" | 2321 | version "2.0.2" |
2468 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" | 2322 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" |
2469 | 2323 | ||
2470 | etag@~1.8.1: | ||
2471 | version "1.8.1" | ||
2472 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" | ||
2473 | |||
2474 | event-kit@^2.0.0: | 2324 | event-kit@^2.0.0: |
2475 | version "2.3.0" | 2325 | version "2.3.0" |
2476 | resolved "https://registry.yarnpkg.com/event-kit/-/event-kit-2.3.0.tgz#459ba0646d4b7dbca5d9bf2b3c4e2d0103e85e15" | 2326 | resolved "https://registry.yarnpkg.com/event-kit/-/event-kit-2.3.0.tgz#459ba0646d4b7dbca5d9bf2b3c4e2d0103e85e15" |
@@ -2511,41 +2361,6 @@ expand-tilde@^2.0.2: | |||
2511 | dependencies: | 2361 | dependencies: |
2512 | homedir-polyfill "^1.0.1" | 2362 | homedir-polyfill "^1.0.1" |
2513 | 2363 | ||
2514 | express@^4.15.4: | ||
2515 | version "4.16.1" | ||
2516 | resolved "https://registry.yarnpkg.com/express/-/express-4.16.1.tgz#6b33b560183c9b253b7b62144df33a4654ac9ed0" | ||
2517 | dependencies: | ||
2518 | accepts "~1.3.4" | ||
2519 | array-flatten "1.1.1" | ||
2520 | body-parser "1.18.2" | ||
2521 | content-disposition "0.5.2" | ||
2522 | content-type "~1.0.4" | ||
2523 | cookie "0.3.1" | ||
2524 | cookie-signature "1.0.6" | ||
2525 | debug "2.6.9" | ||
2526 | depd "~1.1.1" | ||
2527 | encodeurl "~1.0.1" | ||
2528 | escape-html "~1.0.3" | ||
2529 | etag "~1.8.1" | ||
2530 | finalhandler "1.1.0" | ||
2531 | fresh "0.5.2" | ||
2532 | merge-descriptors "1.0.1" | ||
2533 | methods "~1.1.2" | ||
2534 | on-finished "~2.3.0" | ||
2535 | parseurl "~1.3.2" | ||
2536 | path-to-regexp "0.1.7" | ||
2537 | proxy-addr "~2.0.2" | ||
2538 | qs "6.5.1" | ||
2539 | range-parser "~1.2.0" | ||
2540 | safe-buffer "5.1.1" | ||
2541 | send "0.16.1" | ||
2542 | serve-static "1.13.1" | ||
2543 | setprototypeof "1.1.0" | ||
2544 | statuses "~1.3.1" | ||
2545 | type-is "~1.6.15" | ||
2546 | utils-merge "1.0.1" | ||
2547 | vary "~1.1.2" | ||
2548 | |||
2549 | extend-shallow@^2.0.1: | 2364 | extend-shallow@^2.0.1: |
2550 | version "2.0.1" | 2365 | version "2.0.1" |
2551 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" | 2366 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" |
@@ -2570,7 +2385,7 @@ extglob@^0.3.1: | |||
2570 | dependencies: | 2385 | dependencies: |
2571 | is-extglob "^1.0.0" | 2386 | is-extglob "^1.0.0" |
2572 | 2387 | ||
2573 | extract-zip@^1.0.3, extract-zip@^1.6.5: | 2388 | extract-zip@^1.0.3: |
2574 | version "1.6.5" | 2389 | version "1.6.5" |
2575 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440" | 2390 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440" |
2576 | dependencies: | 2391 | dependencies: |
@@ -2661,18 +2476,6 @@ finalhandler@0.1.0: | |||
2661 | debug "1.0.4" | 2476 | debug "1.0.4" |
2662 | escape-html "1.0.1" | 2477 | escape-html "1.0.1" |
2663 | 2478 | ||
2664 | finalhandler@1.1.0: | ||
2665 | version "1.1.0" | ||
2666 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" | ||
2667 | dependencies: | ||
2668 | debug "2.6.9" | ||
2669 | encodeurl "~1.0.1" | ||
2670 | escape-html "~1.0.3" | ||
2671 | on-finished "~2.3.0" | ||
2672 | parseurl "~1.3.2" | ||
2673 | statuses "~1.3.1" | ||
2674 | unpipe "~1.0.0" | ||
2675 | |||
2676 | find-cache-dir@^0.1.1: | 2479 | find-cache-dir@^0.1.1: |
2677 | version "0.1.1" | 2480 | version "0.1.1" |
2678 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" | 2481 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" |
@@ -2772,18 +2575,10 @@ form-data@~2.1.1: | |||
2772 | combined-stream "^1.0.5" | 2575 | combined-stream "^1.0.5" |
2773 | mime-types "^2.1.12" | 2576 | mime-types "^2.1.12" |
2774 | 2577 | ||
2775 | forwarded@~0.1.2: | ||
2776 | version "0.1.2" | ||
2777 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" | ||
2778 | |||
2779 | fresh@0.2.2: | 2578 | fresh@0.2.2: |
2780 | version "0.2.2" | 2579 | version "0.2.2" |
2781 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.2.2.tgz#9731dcf5678c7faeb44fb903c4f72df55187fa77" | 2580 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.2.2.tgz#9731dcf5678c7faeb44fb903c4f72df55187fa77" |
2782 | 2581 | ||
2783 | fresh@0.5.2: | ||
2784 | version "0.5.2" | ||
2785 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" | ||
2786 | |||
2787 | fs-exists-sync@^0.1.0: | 2582 | fs-exists-sync@^0.1.0: |
2788 | version "0.1.0" | 2583 | version "0.1.0" |
2789 | resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" | 2584 | resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" |
@@ -2857,7 +2652,7 @@ fstream-ignore@^1.0.5: | |||
2857 | inherits "2" | 2652 | inherits "2" |
2858 | minimatch "^3.0.0" | 2653 | minimatch "^3.0.0" |
2859 | 2654 | ||
2860 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2, fstream@^1.0.8: | 2655 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: |
2861 | version "1.0.11" | 2656 | version "1.0.11" |
2862 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" | 2657 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" |
2863 | dependencies: | 2658 | dependencies: |
@@ -3364,15 +3159,6 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.5.0: | |||
3364 | version "2.5.0" | 3159 | version "2.5.0" |
3365 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" | 3160 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" |
3366 | 3161 | ||
3367 | http-errors@1.6.2, http-errors@~1.6.2: | ||
3368 | version "1.6.2" | ||
3369 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" | ||
3370 | dependencies: | ||
3371 | depd "1.1.1" | ||
3372 | inherits "2.0.3" | ||
3373 | setprototypeof "1.0.3" | ||
3374 | statuses ">= 1.3.1 < 2" | ||
3375 | |||
3376 | http-signature@~1.1.0: | 3162 | http-signature@~1.1.0: |
3377 | version "1.1.1" | 3163 | version "1.1.1" |
3378 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" | 3164 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" |
@@ -3381,13 +3167,6 @@ http-signature@~1.1.0: | |||
3381 | jsprim "^1.2.2" | 3167 | jsprim "^1.2.2" |
3382 | sshpk "^1.7.0" | 3168 | sshpk "^1.7.0" |
3383 | 3169 | ||
3384 | https-proxy-agent@^2.1.0: | ||
3385 | version "2.1.0" | ||
3386 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.0.tgz#1391bee7fd66aeabc0df2a1fa90f58954f43e443" | ||
3387 | dependencies: | ||
3388 | agent-base "^4.1.0" | ||
3389 | debug "^2.4.1" | ||
3390 | |||
3391 | hyperquest@~1.2.0: | 3170 | hyperquest@~1.2.0: |
3392 | version "1.2.0" | 3171 | version "1.2.0" |
3393 | resolved "https://registry.yarnpkg.com/hyperquest/-/hyperquest-1.2.0.tgz#39e1fef66888dc7ce0dec6c0dd814f6fc8944ad5" | 3172 | resolved "https://registry.yarnpkg.com/hyperquest/-/hyperquest-1.2.0.tgz#39e1fef66888dc7ce0dec6c0dd814f6fc8944ad5" |
@@ -3395,11 +3174,7 @@ hyperquest@~1.2.0: | |||
3395 | duplexer2 "~0.0.2" | 3174 | duplexer2 "~0.0.2" |
3396 | through2 "~0.6.3" | 3175 | through2 "~0.6.3" |
3397 | 3176 | ||
3398 | iconv-lite@0.4.19, iconv-lite@^0.4.17: | 3177 | iconv-lite@^0.4.17, iconv-lite@~0.4.13: |
3399 | version "0.4.19" | ||
3400 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" | ||
3401 | |||
3402 | iconv-lite@~0.4.13: | ||
3403 | version "0.4.18" | 3178 | version "0.4.18" |
3404 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" | 3179 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" |
3405 | 3180 | ||
@@ -3440,7 +3215,7 @@ inherits@1: | |||
3440 | version "1.0.2" | 3215 | version "1.0.2" |
3441 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" | 3216 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" |
3442 | 3217 | ||
3443 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: | 3218 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: |
3444 | version "2.0.3" | 3219 | version "2.0.3" |
3445 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" | 3220 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" |
3446 | 3221 | ||
@@ -3514,10 +3289,6 @@ invert-kv@^1.0.0: | |||
3514 | version "1.0.0" | 3289 | version "1.0.0" |
3515 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" | 3290 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" |
3516 | 3291 | ||
3517 | ipaddr.js@1.5.2: | ||
3518 | version "1.5.2" | ||
3519 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" | ||
3520 | |||
3521 | is-absolute@^0.2.3: | 3292 | is-absolute@^0.2.3: |
3522 | version "0.2.6" | 3293 | version "0.2.6" |
3523 | resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" | 3294 | resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" |
@@ -4187,14 +3958,6 @@ log-symbols@^1.0.2: | |||
4187 | dependencies: | 3958 | dependencies: |
4188 | chalk "^1.0.0" | 3959 | chalk "^1.0.0" |
4189 | 3960 | ||
4190 | log-update@^2.1.0: | ||
4191 | version "2.1.0" | ||
4192 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.1.0.tgz#ea37258b5354edb02e73b29190016c87d1c87141" | ||
4193 | dependencies: | ||
4194 | ansi-escapes "^2.0.0" | ||
4195 | cli-cursor "^2.0.0" | ||
4196 | wrap-ansi "^3.0.1" | ||
4197 | |||
4198 | longest@^1.0.1: | 3961 | longest@^1.0.1: |
4199 | version "1.0.1" | 3962 | version "1.0.1" |
4200 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" | 3963 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" |
@@ -4264,10 +4027,6 @@ mdi@^1.9.33: | |||
4264 | version "1.9.33" | 4027 | version "1.9.33" |
4265 | resolved "https://registry.yarnpkg.com/mdi/-/mdi-1.9.33.tgz#3caf6d95fc6b800633630bd62ba0cf1fbde6b2e2" | 4028 | resolved "https://registry.yarnpkg.com/mdi/-/mdi-1.9.33.tgz#3caf6d95fc6b800633630bd62ba0cf1fbde6b2e2" |
4266 | 4029 | ||
4267 | media-typer@0.3.0: | ||
4268 | version "0.3.0" | ||
4269 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" | ||
4270 | |||
4271 | mem@^1.1.0: | 4030 | mem@^1.1.0: |
4272 | version "1.1.0" | 4031 | version "1.1.0" |
4273 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" | 4032 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" |
@@ -4289,10 +4048,6 @@ meow@^3.1.0, meow@^3.7.0: | |||
4289 | redent "^1.0.0" | 4048 | redent "^1.0.0" |
4290 | trim-newlines "^1.0.0" | 4049 | trim-newlines "^1.0.0" |
4291 | 4050 | ||
4292 | merge-descriptors@1.0.1: | ||
4293 | version "1.0.1" | ||
4294 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" | ||
4295 | |||
4296 | merge-stream@^0.1.7: | 4051 | merge-stream@^0.1.7: |
4297 | version "0.1.8" | 4052 | version "0.1.8" |
4298 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-0.1.8.tgz#48a07b3b4a121d74a3edbfdcdb4b08adbf0240b1" | 4053 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-0.1.8.tgz#48a07b3b4a121d74a3edbfdcdb4b08adbf0240b1" |
@@ -4305,14 +4060,6 @@ merge-stream@^1.0.0: | |||
4305 | dependencies: | 4060 | dependencies: |
4306 | readable-stream "^2.0.1" | 4061 | readable-stream "^2.0.1" |
4307 | 4062 | ||
4308 | merge@^1.2.0: | ||
4309 | version "1.2.0" | ||
4310 | resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" | ||
4311 | |||
4312 | methods@~1.1.2: | ||
4313 | version "1.1.2" | ||
4314 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" | ||
4315 | |||
4316 | micromatch@^2.1.5, micromatch@^2.3.7: | 4063 | micromatch@^2.1.5, micromatch@^2.3.7: |
4317 | version "2.3.11" | 4064 | version "2.3.11" |
4318 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" | 4065 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" |
@@ -4335,7 +4082,7 @@ mime-db@~1.30.0: | |||
4335 | version "1.30.0" | 4082 | version "1.30.0" |
4336 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" | 4083 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" |
4337 | 4084 | ||
4338 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7: | 4085 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.7: |
4339 | version "2.1.17" | 4086 | version "2.1.17" |
4340 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" | 4087 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" |
4341 | dependencies: | 4088 | dependencies: |
@@ -4349,10 +4096,6 @@ mime@1.2.11: | |||
4349 | version "1.2.11" | 4096 | version "1.2.11" |
4350 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" | 4097 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" |
4351 | 4098 | ||
4352 | mime@1.4.1: | ||
4353 | version "1.4.1" | ||
4354 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" | ||
4355 | |||
4356 | mime@^1.3.4, mime@^1.3.6: | 4099 | mime@^1.3.4, mime@^1.3.6: |
4357 | version "1.4.0" | 4100 | version "1.4.0" |
4358 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.0.tgz#69e9e0db51d44f2a3b56e48b7817d7d137f1a343" | 4101 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.0.tgz#69e9e0db51d44f2a3b56e48b7817d7d137f1a343" |
@@ -4388,6 +4131,18 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: | |||
4388 | version "1.2.0" | 4131 | version "1.2.0" |
4389 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" | 4132 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" |
4390 | 4133 | ||
4134 | minipass@^2.2.1: | ||
4135 | version "2.2.1" | ||
4136 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.1.tgz#5ada97538b1027b4cf7213432428578cb564011f" | ||
4137 | dependencies: | ||
4138 | yallist "^3.0.0" | ||
4139 | |||
4140 | minizlib@^1.0.4: | ||
4141 | version "1.0.4" | ||
4142 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.0.4.tgz#8ebb51dd8bbe40b0126b5633dbb36b284a2f523c" | ||
4143 | dependencies: | ||
4144 | minipass "^2.2.1" | ||
4145 | |||
4391 | mkdirp@0.5.0: | 4146 | mkdirp@0.5.0: |
4392 | version "0.5.0" | 4147 | version "0.5.0" |
4393 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" | 4148 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" |
@@ -4436,10 +4191,6 @@ moment@2.x.x, moment@^2.17.1: | |||
4436 | version "2.18.1" | 4191 | version "2.18.1" |
4437 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" | 4192 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" |
4438 | 4193 | ||
4439 | mout@^0.11.0: | ||
4440 | version "0.11.1" | ||
4441 | resolved "https://registry.yarnpkg.com/mout/-/mout-0.11.1.tgz#ba3611df5f0e5b1ffbfd01166b8f02d1f5fa2b99" | ||
4442 | |||
4443 | ms@0.6.2: | 4194 | ms@0.6.2: |
4444 | version "0.6.2" | 4195 | version "0.6.2" |
4445 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c" | 4196 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c" |
@@ -4470,14 +4221,10 @@ mute-stream@0.0.4: | |||
4470 | version "0.0.4" | 4221 | version "0.0.4" |
4471 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz#a9219960a6d5d5d046597aee51252c6655f7177e" | 4222 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz#a9219960a6d5d5d046597aee51252c6655f7177e" |
4472 | 4223 | ||
4473 | mute-stream@0.0.7: | 4224 | mute-stream@0.0.7, mute-stream@~0.0.4: |
4474 | version "0.0.7" | 4225 | version "0.0.7" |
4475 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" | 4226 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" |
4476 | 4227 | ||
4477 | mute-stream@~0.0.4: | ||
4478 | version "0.0.5" | ||
4479 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" | ||
4480 | |||
4481 | nan@^2.0.0, nan@^2.0.5, nan@^2.3.0, nan@^2.3.2: | 4228 | nan@^2.0.0, nan@^2.0.5, nan@^2.3.0, nan@^2.3.2: |
4482 | version "2.7.0" | 4229 | version "2.7.0" |
4483 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" | 4230 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" |
@@ -4739,12 +4486,6 @@ on-finished@2.1.0: | |||
4739 | dependencies: | 4486 | dependencies: |
4740 | ee-first "1.0.5" | 4487 | ee-first "1.0.5" |
4741 | 4488 | ||
4742 | on-finished@~2.3.0: | ||
4743 | version "2.3.0" | ||
4744 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" | ||
4745 | dependencies: | ||
4746 | ee-first "1.1.1" | ||
4747 | |||
4748 | once@^1.3.0, once@^1.3.2, once@^1.3.3, once@^1.4.0: | 4489 | once@^1.3.0, once@^1.3.2, once@^1.3.3, once@^1.4.0: |
4749 | version "1.4.0" | 4490 | version "1.4.0" |
4750 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" | 4491 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" |
@@ -4909,10 +4650,6 @@ parseurl@~1.3.0: | |||
4909 | version "1.3.1" | 4650 | version "1.3.1" |
4910 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" | 4651 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" |
4911 | 4652 | ||
4912 | parseurl@~1.3.2: | ||
4913 | version "1.3.2" | ||
4914 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" | ||
4915 | |||
4916 | path-dirname@^1.0.0: | 4653 | path-dirname@^1.0.0: |
4917 | version "1.0.2" | 4654 | version "1.0.2" |
4918 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" | 4655 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" |
@@ -4953,10 +4690,6 @@ path-root@^0.1.1: | |||
4953 | dependencies: | 4690 | dependencies: |
4954 | path-root-regex "^0.1.0" | 4691 | path-root-regex "^0.1.0" |
4955 | 4692 | ||
4956 | path-to-regexp@0.1.7: | ||
4957 | version "0.1.7" | ||
4958 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" | ||
4959 | |||
4960 | path-type@^1.0.0: | 4693 | path-type@^1.0.0: |
4961 | version "1.1.0" | 4694 | version "1.1.0" |
4962 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" | 4695 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" |
@@ -5080,17 +4813,6 @@ prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8: | |||
5080 | fbjs "^0.8.9" | 4813 | fbjs "^0.8.9" |
5081 | loose-envify "^1.3.1" | 4814 | loose-envify "^1.3.1" |
5082 | 4815 | ||
5083 | proxy-addr@~2.0.2: | ||
5084 | version "2.0.2" | ||
5085 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" | ||
5086 | dependencies: | ||
5087 | forwarded "~0.1.2" | ||
5088 | ipaddr.js "1.5.2" | ||
5089 | |||
5090 | proxy-from-env@^1.0.0: | ||
5091 | version "1.0.0" | ||
5092 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" | ||
5093 | |||
5094 | proxy-middleware@~0.15.0: | 4816 | proxy-middleware@~0.15.0: |
5095 | version "0.15.0" | 4817 | version "0.15.0" |
5096 | resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" | 4818 | resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" |
@@ -5121,27 +4843,10 @@ punycode@^1.4.1: | |||
5121 | version "1.4.1" | 4843 | version "1.4.1" |
5122 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" | 4844 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" |
5123 | 4845 | ||
5124 | puppeteer@^0.10.2: | ||
5125 | version "0.10.2" | ||
5126 | resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-0.10.2.tgz#b4a959a722bf626ca481f2aeba11fdb810f2c98f" | ||
5127 | dependencies: | ||
5128 | debug "^2.6.8" | ||
5129 | extract-zip "^1.6.5" | ||
5130 | https-proxy-agent "^2.1.0" | ||
5131 | mime "^1.3.4" | ||
5132 | progress "^2.0.0" | ||
5133 | proxy-from-env "^1.0.0" | ||
5134 | rimraf "^2.6.1" | ||
5135 | ws "^3.0.0" | ||
5136 | |||
5137 | q@^1.1.2: | 4846 | q@^1.1.2: |
5138 | version "1.5.0" | 4847 | version "1.5.0" |
5139 | resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" | 4848 | resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" |
5140 | 4849 | ||
5141 | qs@6.5.1: | ||
5142 | version "6.5.1" | ||
5143 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" | ||
5144 | |||
5145 | qs@~6.4.0: | 4850 | qs@~6.4.0: |
5146 | version "6.4.0" | 4851 | version "6.4.0" |
5147 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" | 4852 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" |
@@ -5170,19 +4875,6 @@ range-parser@~1.0.0: | |||
5170 | version "1.0.3" | 4875 | version "1.0.3" |
5171 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" | 4876 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" |
5172 | 4877 | ||
5173 | range-parser@~1.2.0: | ||
5174 | version "1.2.0" | ||
5175 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" | ||
5176 | |||
5177 | raw-body@2.3.2: | ||
5178 | version "2.3.2" | ||
5179 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" | ||
5180 | dependencies: | ||
5181 | bytes "3.0.0" | ||
5182 | http-errors "1.6.2" | ||
5183 | iconv-lite "0.4.19" | ||
5184 | unpipe "1.0.0" | ||
5185 | |||
5186 | rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7, rc@^1.2.1: | 4878 | rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7, rc@^1.2.1: |
5187 | version "1.2.1" | 4879 | version "1.2.1" |
5188 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" | 4880 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" |
@@ -5592,7 +5284,7 @@ rxjs@^5.0.0-beta.12, rxjs@^5.0.1, rxjs@^5.1.1: | |||
5592 | dependencies: | 5284 | dependencies: |
5593 | symbol-observable "^1.0.1" | 5285 | symbol-observable "^1.0.1" |
5594 | 5286 | ||
5595 | safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: | 5287 | safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: |
5596 | version "5.1.1" | 5288 | version "5.1.1" |
5597 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" | 5289 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" |
5598 | 5290 | ||
@@ -5642,24 +5334,6 @@ semver@~5.3.0: | |||
5642 | version "5.3.0" | 5334 | version "5.3.0" |
5643 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" | 5335 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" |
5644 | 5336 | ||
5645 | send@0.16.1: | ||
5646 | version "0.16.1" | ||
5647 | resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" | ||
5648 | dependencies: | ||
5649 | debug "2.6.9" | ||
5650 | depd "~1.1.1" | ||
5651 | destroy "~1.0.4" | ||
5652 | encodeurl "~1.0.1" | ||
5653 | escape-html "~1.0.3" | ||
5654 | etag "~1.8.1" | ||
5655 | fresh "0.5.2" | ||
5656 | http-errors "~1.6.2" | ||
5657 | mime "1.4.1" | ||
5658 | ms "2.0.0" | ||
5659 | on-finished "~2.3.0" | ||
5660 | range-parser "~1.2.0" | ||
5661 | statuses "~1.3.1" | ||
5662 | |||
5663 | send@0.8.5: | 5337 | send@0.8.5: |
5664 | version "0.8.5" | 5338 | version "0.8.5" |
5665 | resolved "https://registry.yarnpkg.com/send/-/send-0.8.5.tgz#37f708216e6f50c175e74c69fec53484e2fd82c7" | 5339 | resolved "https://registry.yarnpkg.com/send/-/send-0.8.5.tgz#37f708216e6f50c175e74c69fec53484e2fd82c7" |
@@ -5682,15 +5356,6 @@ serve-index@~1.1.4: | |||
5682 | batch "0.5.1" | 5356 | batch "0.5.1" |
5683 | parseurl "~1.3.0" | 5357 | parseurl "~1.3.0" |
5684 | 5358 | ||
5685 | serve-static@1.13.1: | ||
5686 | version "1.13.1" | ||
5687 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" | ||
5688 | dependencies: | ||
5689 | encodeurl "~1.0.1" | ||
5690 | escape-html "~1.0.3" | ||
5691 | parseurl "~1.3.2" | ||
5692 | send "0.16.1" | ||
5693 | |||
5694 | serve-static@~1.5.2: | 5359 | serve-static@~1.5.2: |
5695 | version "1.5.4" | 5360 | version "1.5.4" |
5696 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.5.4.tgz#819fb37ae46bd02dd520b77fcf7fd8f5112f9782" | 5361 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.5.4.tgz#819fb37ae46bd02dd520b77fcf7fd8f5112f9782" |
@@ -5712,14 +5377,6 @@ setimmediate@^1.0.5: | |||
5712 | version "1.0.5" | 5377 | version "1.0.5" |
5713 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" | 5378 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" |
5714 | 5379 | ||
5715 | setprototypeof@1.0.3: | ||
5716 | version "1.0.3" | ||
5717 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" | ||
5718 | |||
5719 | setprototypeof@1.1.0: | ||
5720 | version "1.1.0" | ||
5721 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" | ||
5722 | |||
5723 | shebang-command@^1.2.0: | 5380 | shebang-command@^1.2.0: |
5724 | version "1.2.0" | 5381 | version "1.2.0" |
5725 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" | 5382 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" |
@@ -5756,15 +5413,6 @@ slice-ansi@0.0.4: | |||
5756 | version "0.0.4" | 5413 | version "0.0.4" |
5757 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" | 5414 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" |
5758 | 5415 | ||
5759 | smartwrap@^1.0.7: | ||
5760 | version "1.0.9" | ||
5761 | resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-1.0.9.tgz#7001aa8331482b6fc5021574d68ef04460bb21ca" | ||
5762 | dependencies: | ||
5763 | breakword "^1.0.3" | ||
5764 | merge "^1.2.0" | ||
5765 | wcwidth "^1.0.1" | ||
5766 | yargs "^8.0.1" | ||
5767 | |||
5768 | smoothscroll-polyfill@^0.3.4: | 5416 | smoothscroll-polyfill@^0.3.4: |
5769 | version "0.3.6" | 5417 | version "0.3.6" |
5770 | resolved "https://registry.yarnpkg.com/smoothscroll-polyfill/-/smoothscroll-polyfill-0.3.6.tgz#492be845195157cdc2fc529a95d89e7a71509172" | 5418 | resolved "https://registry.yarnpkg.com/smoothscroll-polyfill/-/smoothscroll-polyfill-0.3.6.tgz#492be845195157cdc2fc529a95d89e7a71509172" |
@@ -5901,10 +5549,6 @@ stat-mode@^0.2.2: | |||
5901 | version "0.2.2" | 5549 | version "0.2.2" |
5902 | resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" | 5550 | resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" |
5903 | 5551 | ||
5904 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1: | ||
5905 | version "1.3.1" | ||
5906 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" | ||
5907 | |||
5908 | stdout-stream@^1.4.0: | 5552 | stdout-stream@^1.4.0: |
5909 | version "1.4.0" | 5553 | version "1.4.0" |
5910 | resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" | 5554 | resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" |
@@ -5919,10 +5563,6 @@ stream-shift@^1.0.0: | |||
5919 | version "1.0.0" | 5563 | version "1.0.0" |
5920 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" | 5564 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" |
5921 | 5565 | ||
5922 | stream-transform@^0.1.0: | ||
5923 | version "0.1.2" | ||
5924 | resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-0.1.2.tgz#7d8e6b4e03ac4781778f8c79517501bfb0762a9f" | ||
5925 | |||
5926 | strict-uri-encode@^1.0.0: | 5566 | strict-uri-encode@^1.0.0: |
5927 | version "1.1.0" | 5567 | version "1.1.0" |
5928 | resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" | 5568 | resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" |
@@ -5941,7 +5581,7 @@ string-width@^1.0.1, string-width@^1.0.2: | |||
5941 | is-fullwidth-code-point "^1.0.0" | 5581 | is-fullwidth-code-point "^1.0.0" |
5942 | strip-ansi "^3.0.0" | 5582 | strip-ansi "^3.0.0" |
5943 | 5583 | ||
5944 | string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: | 5584 | string-width@^2.0.0, string-width@^2.1.0: |
5945 | version "2.1.1" | 5585 | version "2.1.1" |
5946 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" | 5586 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" |
5947 | dependencies: | 5587 | dependencies: |
@@ -6076,17 +5716,7 @@ tar-pack@^3.4.0: | |||
6076 | tar "^2.2.1" | 5716 | tar "^2.2.1" |
6077 | uid-number "^0.0.6" | 5717 | uid-number "^0.0.6" |
6078 | 5718 | ||
6079 | tar.gz@^1.0.5: | 5719 | tar@^2.0.0, tar@^2.2.1: |
6080 | version "1.0.5" | ||
6081 | resolved "https://registry.yarnpkg.com/tar.gz/-/tar.gz-1.0.5.tgz#e1ada7e45ef2241b4b1ee58123c8f40b5d3c1bc4" | ||
6082 | dependencies: | ||
6083 | bluebird "^2.9.34" | ||
6084 | commander "^2.8.1" | ||
6085 | fstream "^1.0.8" | ||
6086 | mout "^0.11.0" | ||
6087 | tar "^2.1.1" | ||
6088 | |||
6089 | tar@^2.0.0, tar@^2.1.1, tar@^2.2.1: | ||
6090 | version "2.2.1" | 5720 | version "2.2.1" |
6091 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" | 5721 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" |
6092 | dependencies: | 5722 | dependencies: |
@@ -6094,6 +5724,16 @@ tar@^2.0.0, tar@^2.1.1, tar@^2.2.1: | |||
6094 | fstream "^1.0.2" | 5724 | fstream "^1.0.2" |
6095 | inherits "2" | 5725 | inherits "2" |
6096 | 5726 | ||
5727 | tar@^4.0.2: | ||
5728 | version "4.0.2" | ||
5729 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.0.2.tgz#e8e22bf3eec330e5c616d415a698395e294e8fad" | ||
5730 | dependencies: | ||
5731 | chownr "^1.0.1" | ||
5732 | minipass "^2.2.1" | ||
5733 | minizlib "^1.0.4" | ||
5734 | mkdirp "^0.5.0" | ||
5735 | yallist "^3.0.2" | ||
5736 | |||
6097 | tempfile@^1.1.1: | 5737 | tempfile@^1.1.1: |
6098 | version "1.1.1" | 5738 | version "1.1.1" |
6099 | resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" | 5739 | resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" |
@@ -6234,19 +5874,6 @@ tryit@^1.0.1: | |||
6234 | version "1.0.3" | 5874 | version "1.0.3" |
6235 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" | 5875 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" |
6236 | 5876 | ||
6237 | tty-table@^2.5.5: | ||
6238 | version "2.5.5" | ||
6239 | resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-2.5.5.tgz#248ef188468ff1dff75a379c77cbe1f1c81c8a79" | ||
6240 | dependencies: | ||
6241 | chalk "^1.1.0" | ||
6242 | csv "^1.1.1" | ||
6243 | merge "^1.2.0" | ||
6244 | smartwrap "^1.0.7" | ||
6245 | strip-ansi "^3.0.0" | ||
6246 | use-strict "^1.0.1" | ||
6247 | wcwidth "^1.0.1" | ||
6248 | yargs "^8.0.1" | ||
6249 | |||
6250 | tunnel-agent@^0.6.0: | 5877 | tunnel-agent@^0.6.0: |
6251 | version "0.6.0" | 5878 | version "0.6.0" |
6252 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" | 5879 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" |
@@ -6263,13 +5890,6 @@ type-check@~0.3.2: | |||
6263 | dependencies: | 5890 | dependencies: |
6264 | prelude-ls "~1.1.2" | 5891 | prelude-ls "~1.1.2" |
6265 | 5892 | ||
6266 | type-is@~1.6.15: | ||
6267 | version "1.6.15" | ||
6268 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" | ||
6269 | dependencies: | ||
6270 | media-typer "0.3.0" | ||
6271 | mime-types "~2.1.15" | ||
6272 | |||
6273 | typedarray@^0.0.6: | 5893 | typedarray@^0.0.6: |
6274 | version "0.0.6" | 5894 | version "0.0.6" |
6275 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" | 5895 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" |
@@ -6286,10 +5906,6 @@ ultron@1.0.x: | |||
6286 | version "1.0.2" | 5906 | version "1.0.2" |
6287 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" | 5907 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" |
6288 | 5908 | ||
6289 | ultron@~1.1.0: | ||
6290 | version "1.1.0" | ||
6291 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864" | ||
6292 | |||
6293 | unc-path-regex@^0.1.0: | 5909 | unc-path-regex@^0.1.0: |
6294 | version "0.1.2" | 5910 | version "0.1.2" |
6295 | resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" | 5911 | resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" |
@@ -6333,10 +5949,6 @@ universalify@^0.1.0: | |||
6333 | version "0.1.1" | 5949 | version "0.1.1" |
6334 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" | 5950 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" |
6335 | 5951 | ||
6336 | unpipe@1.0.0, unpipe@~1.0.0: | ||
6337 | version "1.0.0" | ||
6338 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" | ||
6339 | |||
6340 | unzip-response@^2.0.1: | 5952 | unzip-response@^2.0.1: |
6341 | version "2.0.1" | 5953 | version "2.0.1" |
6342 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" | 5954 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" |
@@ -6360,10 +5972,6 @@ url-parse-lax@^1.0.0: | |||
6360 | dependencies: | 5972 | dependencies: |
6361 | prepend-http "^1.0.1" | 5973 | prepend-http "^1.0.1" |
6362 | 5974 | ||
6363 | use-strict@^1.0.1: | ||
6364 | version "1.0.1" | ||
6365 | resolved "https://registry.yarnpkg.com/use-strict/-/use-strict-1.0.1.tgz#0bb80d94f49a4a05192b84a8c7d34e95f1a7e3a0" | ||
6366 | |||
6367 | user-home@^1.1.1: | 5975 | user-home@^1.1.1: |
6368 | version "1.1.1" | 5976 | version "1.1.1" |
6369 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" | 5977 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" |
@@ -6380,10 +5988,6 @@ utils-merge@1.0.0: | |||
6380 | version "1.0.0" | 5988 | version "1.0.0" |
6381 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" | 5989 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" |
6382 | 5990 | ||
6383 | utils-merge@1.0.1: | ||
6384 | version "1.0.1" | ||
6385 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" | ||
6386 | |||
6387 | uuid-1345@^0.99.6: | 5991 | uuid-1345@^0.99.6: |
6388 | version "0.99.6" | 5992 | version "0.99.6" |
6389 | resolved "https://registry.yarnpkg.com/uuid-1345/-/uuid-1345-0.99.6.tgz#b1270ae015a7721c7adec6c46ec169c6098aed40" | 5993 | resolved "https://registry.yarnpkg.com/uuid-1345/-/uuid-1345-0.99.6.tgz#b1270ae015a7721c7adec6c46ec169c6098aed40" |
@@ -6415,10 +6019,6 @@ validate-npm-package-license@^3.0.1: | |||
6415 | spdx-correct "~1.0.0" | 6019 | spdx-correct "~1.0.0" |
6416 | spdx-expression-parse "~1.0.0" | 6020 | spdx-expression-parse "~1.0.0" |
6417 | 6021 | ||
6418 | vary@~1.1.2: | ||
6419 | version "1.1.2" | ||
6420 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" | ||
6421 | |||
6422 | verror@1.10.0: | 6022 | verror@1.10.0: |
6423 | version "1.10.0" | 6023 | version "1.10.0" |
6424 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" | 6024 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" |
@@ -6499,12 +6099,6 @@ warning@^3.0.0: | |||
6499 | dependencies: | 6099 | dependencies: |
6500 | loose-envify "^1.0.0" | 6100 | loose-envify "^1.0.0" |
6501 | 6101 | ||
6502 | wcwidth@^1.0.1: | ||
6503 | version "1.0.1" | ||
6504 | resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" | ||
6505 | dependencies: | ||
6506 | defaults "^1.0.3" | ||
6507 | |||
6508 | whatwg-fetch@>=0.10.0: | 6102 | whatwg-fetch@>=0.10.0: |
6509 | version "2.0.3" | 6103 | version "2.0.3" |
6510 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" | 6104 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" |
@@ -6554,13 +6148,6 @@ wrap-ansi@^2.0.0: | |||
6554 | string-width "^1.0.1" | 6148 | string-width "^1.0.1" |
6555 | strip-ansi "^3.0.1" | 6149 | strip-ansi "^3.0.1" |
6556 | 6150 | ||
6557 | wrap-ansi@^3.0.1: | ||
6558 | version "3.0.1" | ||
6559 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" | ||
6560 | dependencies: | ||
6561 | string-width "^2.1.1" | ||
6562 | strip-ansi "^4.0.0" | ||
6563 | |||
6564 | wrappy@1: | 6151 | wrappy@1: |
6565 | version "1.0.2" | 6152 | version "1.0.2" |
6566 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" | 6153 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" |
@@ -6600,14 +6187,6 @@ ws@1.1.4: | |||
6600 | options ">=0.0.5" | 6187 | options ">=0.0.5" |
6601 | ultron "1.0.x" | 6188 | ultron "1.0.x" |
6602 | 6189 | ||
6603 | ws@^3.0.0, ws@^3.2.0: | ||
6604 | version "3.2.0" | ||
6605 | resolved "https://registry.yarnpkg.com/ws/-/ws-3.2.0.tgz#d5d3d6b11aff71e73f808f40cc69d52bb6d4a185" | ||
6606 | dependencies: | ||
6607 | async-limiter "~1.0.0" | ||
6608 | safe-buffer "~5.1.0" | ||
6609 | ultron "~1.1.0" | ||
6610 | |||
6611 | wtf-8@1.0.0: | 6190 | wtf-8@1.0.0: |
6612 | version "1.0.0" | 6191 | version "1.0.0" |
6613 | resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" | 6192 | resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" |
@@ -6660,6 +6239,10 @@ yallist@^2.1.2: | |||
6660 | version "2.1.2" | 6239 | version "2.1.2" |
6661 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" | 6240 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" |
6662 | 6241 | ||
6242 | yallist@^3.0.0, yallist@^3.0.2: | ||
6243 | version "3.0.2" | ||
6244 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" | ||
6245 | |||
6663 | yargs-parser@^5.0.0: | 6246 | yargs-parser@^5.0.0: |
6664 | version "5.0.0" | 6247 | version "5.0.0" |
6665 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" | 6248 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" |
@@ -6702,7 +6285,7 @@ yargs@^7.0.0, yargs@^7.0.2: | |||
6702 | y18n "^3.2.1" | 6285 | y18n "^3.2.1" |
6703 | yargs-parser "^5.0.0" | 6286 | yargs-parser "^5.0.0" |
6704 | 6287 | ||
6705 | yargs@^8.0.1, yargs@^8.0.2: | 6288 | yargs@^8.0.2: |
6706 | version "8.0.2" | 6289 | version "8.0.2" |
6707 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" | 6290 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" |
6708 | dependencies: | 6291 | dependencies: |