diff --git a/package.json b/package.json
index 8d8428a237..297203187f 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"eslint-plugin-jsx-a11y": "^6.0.3",
"eslint-plugin-react": "^7.7.0",
"eslint-plugin-react-native": "^3.2.1",
- "husky": "^1.1.3",
+ "husky": "^1.2.0",
"lint-staged": "^4.2.3",
"node-cmd": "^3.0.0",
"os": "^0.1.1",
@@ -54,7 +54,7 @@
"shared-modules": "./src/shared/"
},
"dependencies": {
- "snyk": "^1.96.0"
+ "snyk": "^1.116.2"
},
"snyk": true
}
diff --git a/src/desktop/main.js b/src/desktop/main.js
index 6a1614eb2a..b98986dd68 100644
--- a/src/desktop/main.js
+++ b/src/desktop/main.js
@@ -5,7 +5,7 @@ import path from 'path';
import URL from 'url';
import fs from 'fs';
-import initMenu from './native/Menu.js';
+import { initMenu, contextMenu } from './native/Menu.js';
/**
* Expose Garbage Collector flag for manual trigger after seed usage
@@ -210,40 +210,9 @@ function createWindow() {
* Add right click context menu for input elements
*/
windows.main.webContents.on('context-menu', (e, props) => {
- const InputMenu = electron.Menu.buildFromTemplate([
- {
- label: 'Undo',
- role: 'undo',
- },
- {
- label: 'Redo',
- role: 'redo',
- },
- {
- type: 'separator',
- },
- {
- label: 'Cut',
- role: 'cut',
- },
- {
- label: 'Copy',
- role: 'copy',
- },
- {
- label: 'Paste',
- role: 'paste',
- },
- {
- type: 'separator',
- },
- {
- label: 'Select all',
- role: 'selectall',
- },
- ]);
const { isEditable } = props;
if (isEditable) {
+ const InputMenu = contextMenu();
InputMenu.popup(windows.main);
}
});
diff --git a/src/desktop/native/Menu.js b/src/desktop/native/Menu.js
index 131b3f6c68..2dacb3ae6d 100644
--- a/src/desktop/native/Menu.js
+++ b/src/desktop/native/Menu.js
@@ -142,7 +142,7 @@ autoUpdater.on('download-progress', (progressObj) => {
* @param {function} getWindow - Get Window instance helper
* @returns {undefined}
*/
-const initMenu = (app, getWindowFunc) => {
+export const initMenu = (app, getWindowFunc) => {
let mainMenu = null;
getWindow = getWindowFunc;
@@ -404,4 +404,41 @@ const initMenu = (app, getWindowFunc) => {
});
};
-export default initMenu;
+/**
+ * Creates context menu
+ * @returns {Menu} Context menu
+ */
+export const contextMenu = () => {
+ return Menu.buildFromTemplate([
+ {
+ label: language.undo,
+ role: 'undo',
+ },
+ {
+ label: language.redo,
+ role: 'redo',
+ },
+ {
+ type: 'separator',
+ },
+ {
+ label: language.cut,
+ role: 'cut',
+ },
+ {
+ label: language.copy,
+ role: 'copy',
+ },
+ {
+ label: language.paste,
+ role: 'paste',
+ },
+ {
+ type: 'separator',
+ },
+ {
+ label: language.selectAll,
+ role: 'selectall',
+ },
+ ]);
+};
diff --git a/src/desktop/native/preload/Electron.js b/src/desktop/native/preload/Electron.js
index 8f37e6c024..cede3c13e4 100644
--- a/src/desktop/native/preload/Electron.js
+++ b/src/desktop/native/preload/Electron.js
@@ -47,7 +47,7 @@ let onboardingSeed = null;
let onboardingGenerated = false;
// Use a different keychain entry for development versions
-const KEYTAR_SERVICE = process.env.NODE_ENV === 'development' ? 'Trinity wallet (dev)' : 'Trinity wallet';
+const KEYTAR_SERVICE = remote.app.isPackaged ? 'Trinity wallet' : 'Trinity wallet (dev)';
/**
* Global Electron helper for native support
diff --git a/src/desktop/npm-shrinkwrap.json b/src/desktop/npm-shrinkwrap.json
index eb9f9a7760..88080bff7d 100644
--- a/src/desktop/npm-shrinkwrap.json
+++ b/src/desktop/npm-shrinkwrap.json
@@ -13,34 +13,107 @@
"@babel/code-frame": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
- "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "integrity":
+ "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.0.0"
+ "@babel/highlight": "7.0.0"
}
},
"@babel/core": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.2.tgz",
- "integrity": "sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.0.tgz",
+ "integrity":
+ "sha512-7pvAdC4B+iKjFFp9Ztj0QgBndJ++qaMeonT185wAqUnhipw8idm9Rv1UMyBuKtYjfl6ORNkgEgcsYLfHX/GpLw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.1.2",
- "@babel/helpers": "^7.1.2",
- "@babel/parser": "^7.1.2",
+ "@babel/generator": "^7.2.0",
+ "@babel/helpers": "^7.2.0",
+ "@babel/parser": "^7.2.0",
"@babel/template": "^7.1.2",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.1.2",
+ "@babel/traverse": "^7.1.6",
+ "@babel/types": "^7.2.0",
"convert-source-map": "^1.1.0",
- "debug": "^3.1.0",
- "json5": "^0.5.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
"lodash": "^4.17.10",
"resolve": "^1.3.2",
"semver": "^5.4.1",
"source-map": "^0.5.0"
},
"dependencies": {
+ "@babel/generator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz",
+ "integrity":
+ "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.2.0",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.10",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.0.tgz",
+ "integrity":
+ "sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg==",
+ "dev": true
+ },
+ "@babel/traverse": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz",
+ "integrity":
+ "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.1.6",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.0.0",
+ "@babel/parser": "^7.1.6",
+ "@babel/types": "^7.1.6",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.10"
+ }
+ },
+ "@babel/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.0.tgz",
+ "integrity":
+ "sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.10",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
+ "integrity":
+ "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "json5": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+ "integrity":
+ "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -52,14 +125,15 @@
"@babel/generator": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.3.tgz",
- "integrity": "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==",
+ "integrity":
+ "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.1.3",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.10",
- "source-map": "^0.5.0",
- "trim-right": "^1.0.1"
+ "@babel/types": "7.1.3",
+ "jsesc": "2.5.1",
+ "lodash": "4.17.11",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
},
"dependencies": {
"source-map": {
@@ -73,832 +147,1030 @@
"@babel/helper-annotate-as-pure": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
- "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
+ "integrity":
+ "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-builder-binary-assignment-operator-visitor": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
- "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+ "integrity":
+ "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
"dev": true,
"requires": {
- "@babel/helper-explode-assignable-expression": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-explode-assignable-expression": "7.1.0",
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-builder-react-jsx": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz",
- "integrity": "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz",
+ "integrity":
+ "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0",
- "esutils": "^2.0.0"
+ "@babel/types": "7.1.3",
+ "esutils": "2.0.2"
}
},
"@babel/helper-call-delegate": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz",
- "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==",
+ "integrity":
+ "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.0.0",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-hoist-variables": "7.0.0",
+ "@babel/traverse": "7.1.4",
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-define-map": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz",
- "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==",
+ "integrity":
+ "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.1.0",
- "@babel/types": "^7.0.0",
- "lodash": "^4.17.10"
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/types": "7.1.3",
+ "lodash": "4.17.11"
}
},
"@babel/helper-explode-assignable-expression": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
- "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
+ "integrity":
+ "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
"dev": true,
"requires": {
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/traverse": "7.1.4",
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-function-name": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
- "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+ "integrity":
+ "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.0.0",
- "@babel/template": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-get-function-arity": "7.0.0",
+ "@babel/template": "7.1.2",
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-get-function-arity": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
- "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
+ "integrity":
+ "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-hoist-variables": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz",
- "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==",
+ "integrity":
+ "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-member-expression-to-functions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz",
- "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz",
+ "integrity":
+ "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-module-imports": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
- "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
+ "integrity":
+ "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-module-transforms": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz",
- "integrity": "sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz",
+ "integrity":
+ "sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw==",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.0.0",
- "@babel/helper-simple-access": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/template": "^7.1.0",
- "@babel/types": "^7.0.0",
- "lodash": "^4.17.10"
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-simple-access": "7.1.0",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "@babel/template": "7.1.2",
+ "@babel/types": "7.1.3",
+ "lodash": "4.17.11"
}
},
"@babel/helper-optimise-call-expression": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
- "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
+ "integrity":
+ "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-plugin-utils": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
- "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
+ "integrity":
+ "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
"dev": true
},
"@babel/helper-regex": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz",
- "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==",
+ "integrity":
+ "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==",
"dev": true,
"requires": {
- "lodash": "^4.17.10"
+ "lodash": "4.17.11"
}
},
"@babel/helper-remap-async-to-generator": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
- "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
+ "integrity":
+ "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.0.0",
- "@babel/helper-wrap-function": "^7.1.0",
- "@babel/template": "^7.1.0",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-wrap-function": "7.1.0",
+ "@babel/template": "7.1.2",
+ "@babel/traverse": "7.1.4",
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-replace-supers": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz",
- "integrity": "sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==",
+ "integrity":
+ "sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==",
"dev": true,
"requires": {
- "@babel/helper-member-expression-to-functions": "^7.0.0",
- "@babel/helper-optimise-call-expression": "^7.0.0",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-member-expression-to-functions": "7.0.0",
+ "@babel/helper-optimise-call-expression": "7.0.0",
+ "@babel/traverse": "7.1.4",
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-simple-access": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
- "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
+ "integrity":
+ "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
"dev": true,
"requires": {
- "@babel/template": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/template": "7.1.2",
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
- "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
+ "integrity":
+ "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.1.3"
}
},
"@babel/helper-wrap-function": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz",
- "integrity": "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==",
+ "integrity":
+ "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.1.0",
- "@babel/template": "^7.1.0",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/template": "7.1.2",
+ "@babel/traverse": "7.1.4",
+ "@babel/types": "7.1.3"
}
},
"@babel/helpers": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.2.tgz",
- "integrity": "sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz",
+ "integrity":
+ "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==",
"dev": true,
"requires": {
"@babel/template": "^7.1.2",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.1.2"
+ "@babel/traverse": "^7.1.5",
+ "@babel/types": "^7.2.0"
+ },
+ "dependencies": {
+ "@babel/generator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz",
+ "integrity":
+ "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.2.0",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.10",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.0.tgz",
+ "integrity":
+ "sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg==",
+ "dev": true
+ },
+ "@babel/traverse": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz",
+ "integrity":
+ "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.1.6",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.0.0",
+ "@babel/parser": "^7.1.6",
+ "@babel/types": "^7.1.6",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.10"
+ }
+ },
+ "@babel/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.0.tgz",
+ "integrity":
+ "sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.10",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
+ "integrity":
+ "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
}
},
"@babel/highlight": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
- "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+ "integrity":
+ "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
"dev": true,
"requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^4.0.0"
+ "chalk": "2.4.1",
+ "esutils": "2.0.2",
+ "js-tokens": "4.0.0"
}
},
"@babel/parser": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz",
- "integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==",
+ "integrity":
+ "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==",
"dev": true
},
"@babel/plugin-proposal-async-generator-functions": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz",
- "integrity": "sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz",
+ "integrity":
+ "sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-remap-async-to-generator": "^7.1.0",
- "@babel/plugin-syntax-async-generators": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-remap-async-to-generator": "7.1.0",
+ "@babel/plugin-syntax-async-generators": "7.0.0"
}
},
"@babel/plugin-proposal-class-properties": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz",
- "integrity": "sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz",
+ "integrity":
+ "sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw==",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.1.0",
- "@babel/helper-member-expression-to-functions": "^7.0.0",
- "@babel/helper-optimise-call-expression": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.1.0",
- "@babel/plugin-syntax-class-properties": "^7.0.0"
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-member-expression-to-functions": "7.0.0",
+ "@babel/helper-optimise-call-expression": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.1.0",
+ "@babel/plugin-syntax-class-properties": "7.0.0"
}
},
"@babel/plugin-proposal-json-strings": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz",
- "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz",
+ "integrity":
+ "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-json-strings": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-json-strings": "7.0.0"
}
},
"@babel/plugin-proposal-object-rest-spread": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz",
- "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz",
+ "integrity":
+ "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-object-rest-spread": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "7.0.0"
}
},
"@babel/plugin-proposal-optional-catch-binding": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz",
- "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz",
+ "integrity":
+ "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-optional-catch-binding": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "7.0.0"
}
},
"@babel/plugin-proposal-unicode-property-regex": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz",
- "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz",
+ "integrity":
+ "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.2.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0",
+ "regexpu-core": "4.2.0"
}
},
"@babel/plugin-syntax-async-generators": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz",
- "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz",
+ "integrity":
+ "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-syntax-class-properties": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz",
- "integrity": "sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz",
+ "integrity":
+ "sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-syntax-json-strings": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz",
- "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz",
+ "integrity":
+ "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-syntax-jsx": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz",
- "integrity": "sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg==",
+ "integrity":
+ "sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-syntax-object-rest-spread": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz",
- "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz",
+ "integrity":
+ "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-syntax-optional-catch-binding": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz",
- "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz",
+ "integrity":
+ "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-arrow-functions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz",
- "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz",
+ "integrity":
+ "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-async-to-generator": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz",
- "integrity": "sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz",
+ "integrity":
+ "sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g==",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-remap-async-to-generator": "^7.1.0"
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-remap-async-to-generator": "7.1.0"
}
},
"@babel/plugin-transform-block-scoped-functions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz",
- "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz",
+ "integrity":
+ "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-block-scoping": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz",
- "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz",
+ "integrity":
+ "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "lodash": "^4.17.10"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "lodash": "4.17.11"
}
},
"@babel/plugin-transform-classes": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz",
- "integrity": "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz",
+ "integrity":
+ "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.0.0",
- "@babel/helper-define-map": "^7.1.0",
- "@babel/helper-function-name": "^7.1.0",
- "@babel/helper-optimise-call-expression": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "globals": "^11.1.0"
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-define-map": "7.1.0",
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-optimise-call-expression": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.1.0",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "globals": "11.8.0"
}
},
"@babel/plugin-transform-computed-properties": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz",
- "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz",
+ "integrity":
+ "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-destructuring": {
"version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz",
- "integrity": "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz",
+ "integrity":
+ "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-dotall-regex": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz",
- "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz",
+ "integrity":
+ "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.1.3"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0",
+ "regexpu-core": "4.2.0"
}
},
"@babel/plugin-transform-duplicate-keys": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz",
- "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz",
+ "integrity":
+ "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-exponentiation-operator": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz",
- "integrity": "sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz",
+ "integrity":
+ "sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==",
"dev": true,
"requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-builder-binary-assignment-operator-visitor": "7.1.0",
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-for-of": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz",
- "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==",
+ "integrity":
+ "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-function-name": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz",
- "integrity": "sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz",
+ "integrity":
+ "sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg==",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.1.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-literals": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz",
- "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz",
+ "integrity":
+ "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-modules-amd": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz",
- "integrity": "sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz",
+ "integrity":
+ "sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.1.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-module-transforms": "7.1.0",
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-modules-commonjs": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz",
- "integrity": "sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz",
+ "integrity":
+ "sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.1.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-simple-access": "^7.1.0"
+ "@babel/helper-module-transforms": "7.1.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-simple-access": "7.1.0"
}
},
"@babel/plugin-transform-modules-systemjs": {
"version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz",
- "integrity": "sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz",
+ "integrity":
+ "sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-hoist-variables": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-modules-umd": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz",
- "integrity": "sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz",
+ "integrity":
+ "sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.1.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-module-transforms": "7.1.0",
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-new-target": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz",
- "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz",
+ "integrity":
+ "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-object-super": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz",
- "integrity": "sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz",
+ "integrity":
+ "sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.1.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.1.0"
}
},
"@babel/plugin-transform-parameters": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz",
- "integrity": "sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz",
+ "integrity":
+ "sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw==",
"dev": true,
"requires": {
- "@babel/helper-call-delegate": "^7.1.0",
- "@babel/helper-get-function-arity": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-call-delegate": "7.1.0",
+ "@babel/helper-get-function-arity": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-react-display-name": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz",
- "integrity": "sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz",
+ "integrity":
+ "sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-react-jsx": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz",
- "integrity": "sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz",
+ "integrity":
+ "sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ==",
"dev": true,
"requires": {
- "@babel/helper-builder-react-jsx": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-jsx": "^7.0.0"
+ "@babel/helper-builder-react-jsx": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-jsx": "7.0.0"
}
},
"@babel/plugin-transform-react-jsx-self": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz",
- "integrity": "sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz",
+ "integrity":
+ "sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-jsx": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-jsx": "7.0.0"
}
},
"@babel/plugin-transform-react-jsx-source": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz",
- "integrity": "sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz",
+ "integrity":
+ "sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-syntax-jsx": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-jsx": "7.0.0"
}
},
"@babel/plugin-transform-regenerator": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz",
- "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz",
+ "integrity":
+ "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==",
"dev": true,
"requires": {
- "regenerator-transform": "^0.13.3"
+ "regenerator-transform": "0.13.3"
}
},
"@babel/plugin-transform-shorthand-properties": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz",
- "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz",
+ "integrity":
+ "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-spread": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz",
- "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==",
+ "integrity":
+ "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-sticky-regex": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz",
- "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz",
+ "integrity":
+ "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0"
}
},
"@babel/plugin-transform-template-literals": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz",
- "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz",
+ "integrity":
+ "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==",
"dev": true,
"requires": {
- "@babel/helper-annotate-as-pure": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-typeof-symbol": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz",
- "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz",
+ "integrity":
+ "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0"
}
},
"@babel/plugin-transform-unicode-regex": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz",
- "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==",
+ "resolved":
+ "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz",
+ "integrity":
+ "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.1.3"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0",
+ "regexpu-core": "4.2.0"
}
},
"@babel/preset-env": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.1.0.tgz",
- "integrity": "sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.1.0",
- "@babel/plugin-proposal-json-strings": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.0.0",
- "@babel/plugin-syntax-async-generators": "^7.0.0",
- "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
- "@babel/plugin-syntax-optional-catch-binding": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-async-to-generator": "^7.1.0",
- "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.1.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.0.0",
- "@babel/plugin-transform-dotall-regex": "^7.0.0",
- "@babel/plugin-transform-duplicate-keys": "^7.0.0",
- "@babel/plugin-transform-exponentiation-operator": "^7.1.0",
- "@babel/plugin-transform-for-of": "^7.0.0",
- "@babel/plugin-transform-function-name": "^7.1.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-amd": "^7.1.0",
- "@babel/plugin-transform-modules-commonjs": "^7.1.0",
- "@babel/plugin-transform-modules-systemjs": "^7.0.0",
- "@babel/plugin-transform-modules-umd": "^7.1.0",
- "@babel/plugin-transform-new-target": "^7.0.0",
- "@babel/plugin-transform-object-super": "^7.1.0",
- "@babel/plugin-transform-parameters": "^7.1.0",
- "@babel/plugin-transform-regenerator": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-template-literals": "^7.0.0",
- "@babel/plugin-transform-typeof-symbol": "^7.0.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "browserslist": "^4.1.0",
- "invariant": "^2.2.2",
- "js-levenshtein": "^1.1.3",
- "semver": "^5.3.0"
+ "integrity":
+ "sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-proposal-async-generator-functions": "7.1.0",
+ "@babel/plugin-proposal-json-strings": "7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "7.0.0",
+ "@babel/plugin-syntax-async-generators": "7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "7.0.0",
+ "@babel/plugin-transform-arrow-functions": "7.0.0",
+ "@babel/plugin-transform-async-to-generator": "7.1.0",
+ "@babel/plugin-transform-block-scoped-functions": "7.0.0",
+ "@babel/plugin-transform-block-scoping": "7.0.0",
+ "@babel/plugin-transform-classes": "7.1.0",
+ "@babel/plugin-transform-computed-properties": "7.0.0",
+ "@babel/plugin-transform-destructuring": "7.1.3",
+ "@babel/plugin-transform-dotall-regex": "7.0.0",
+ "@babel/plugin-transform-duplicate-keys": "7.0.0",
+ "@babel/plugin-transform-exponentiation-operator": "7.1.0",
+ "@babel/plugin-transform-for-of": "7.0.0",
+ "@babel/plugin-transform-function-name": "7.1.0",
+ "@babel/plugin-transform-literals": "7.0.0",
+ "@babel/plugin-transform-modules-amd": "7.1.0",
+ "@babel/plugin-transform-modules-commonjs": "7.1.0",
+ "@babel/plugin-transform-modules-systemjs": "7.1.3",
+ "@babel/plugin-transform-modules-umd": "7.1.0",
+ "@babel/plugin-transform-new-target": "7.0.0",
+ "@babel/plugin-transform-object-super": "7.1.0",
+ "@babel/plugin-transform-parameters": "7.1.0",
+ "@babel/plugin-transform-regenerator": "7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "7.0.0",
+ "@babel/plugin-transform-spread": "7.0.0",
+ "@babel/plugin-transform-sticky-regex": "7.0.0",
+ "@babel/plugin-transform-template-literals": "7.0.0",
+ "@babel/plugin-transform-typeof-symbol": "7.0.0",
+ "@babel/plugin-transform-unicode-regex": "7.0.0",
+ "browserslist": "4.2.1",
+ "invariant": "2.2.4",
+ "js-levenshtein": "1.1.4",
+ "semver": "5.6.0"
}
},
"@babel/preset-react": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz",
- "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==",
+ "integrity":
+ "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-self": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0"
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-transform-react-display-name": "7.0.0",
+ "@babel/plugin-transform-react-jsx": "7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "7.0.0"
}
},
"@babel/register": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz",
- "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==",
+ "integrity":
+ "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==",
"requires": {
- "core-js": "^2.5.7",
- "find-cache-dir": "^1.0.0",
- "home-or-tmp": "^3.0.0",
- "lodash": "^4.17.10",
- "mkdirp": "^0.5.1",
- "pirates": "^4.0.0",
- "source-map-support": "^0.5.9"
+ "core-js": "2.5.7",
+ "find-cache-dir": "1.0.0",
+ "home-or-tmp": "3.0.0",
+ "lodash": "4.17.11",
+ "mkdirp": "0.5.1",
+ "pirates": "4.0.0",
+ "source-map-support": "0.5.9"
},
"dependencies": {
"core-js": {
"version": "2.5.7",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+ "integrity":
+ "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
}
}
},
"@babel/runtime": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz",
- "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==",
+ "integrity":
+ "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==",
"requires": {
- "regenerator-runtime": "^0.12.0"
+ "regenerator-runtime": "0.12.1"
}
},
"@babel/template": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz",
- "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==",
+ "integrity":
+ "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.1.2",
- "@babel/types": "^7.1.2"
+ "@babel/code-frame": "7.0.0",
+ "@babel/parser": "7.1.3",
+ "@babel/types": "7.1.3"
}
},
"@babel/traverse": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.4.tgz",
- "integrity": "sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q==",
+ "integrity":
+ "sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.1.3",
- "@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/parser": "^7.1.3",
- "@babel/types": "^7.1.3",
- "debug": "^3.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.10"
+ "@babel/code-frame": "7.0.0",
+ "@babel/generator": "7.1.3",
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "@babel/parser": "7.1.3",
+ "@babel/types": "7.1.3",
+ "debug": "3.2.6",
+ "globals": "11.8.0",
+ "lodash": "4.17.11"
}
},
"@babel/types": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz",
- "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==",
+ "integrity":
+ "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==",
"dev": true,
"requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.10",
- "to-fast-properties": "^2.0.0"
+ "esutils": "2.0.2",
+ "lodash": "4.17.11",
+ "to-fast-properties": "2.0.0"
}
},
"@bugsnag/cuid": {
"version": "3.0.0",
"resolved": "http://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.0.tgz",
- "integrity": "sha512-LOt8aaBI+KvOQGneBtpuCz3YqzyEAehd1f3nC5yr9TIYW1+IzYKa2xWS4EiMz5pPOnRPHkyyS5t/wmSmN51Gjg=="
+ "integrity":
+ "sha512-LOt8aaBI+KvOQGneBtpuCz3YqzyEAehd1f3nC5yr9TIYW1+IzYKa2xWS4EiMz5pPOnRPHkyyS5t/wmSmN51Gjg=="
},
"@bugsnag/safe-json-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-2.1.0.tgz",
- "integrity": "sha512-tE2cPhAq+WFnA9XrfMfP+u/6L63eH7+PmONMNSXtP6kPt/iUXnwkDsxc1Q6lUP1oM3LsmWBrxn+/93M8JE6fpA=="
+ "integrity":
+ "sha512-tE2cPhAq+WFnA9XrfMfP+u/6L63eH7+PmONMNSXtP6kPt/iUXnwkDsxc1Q6lUP1oM3LsmWBrxn+/93M8JE6fpA=="
},
"@ledgerhq/hw-transport": {
"version": "4.24.0",
"resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-4.24.0.tgz",
- "integrity": "sha512-L34TG1Ss7goRB+5BxtvBwUuu0CmDSIxS33oUqkpEy6rCs31k7XicV48iUGAnRnt8hNY2DvJ9WFyaOroUE9h6wQ==",
+ "integrity":
+ "sha512-L34TG1Ss7goRB+5BxtvBwUuu0CmDSIxS33oUqkpEy6rCs31k7XicV48iUGAnRnt8hNY2DvJ9WFyaOroUE9h6wQ==",
"requires": {
- "events": "^3.0.0"
+ "events": "3.0.0"
},
"dependencies": {
"events": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
- "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA=="
+ "integrity":
+ "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA=="
}
}
},
"@ledgerhq/hw-transport-node-hid": {
"version": "4.24.0",
"resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-4.24.0.tgz",
- "integrity": "sha512-RA3ZlRM+6y/XL/sAFKUpuLIU5tsmEpDBwJEBKC+qdzG508Vl/kBJDMuQyo6pmx/YcKZrtjfKiXXQEXP9Fgk75w==",
+ "integrity":
+ "sha512-RA3ZlRM+6y/XL/sAFKUpuLIU5tsmEpDBwJEBKC+qdzG508Vl/kBJDMuQyo6pmx/YcKZrtjfKiXXQEXP9Fgk75w==",
"requires": {
- "@ledgerhq/hw-transport": "^4.24.0",
- "lodash": "^4.17.11",
- "node-hid": "^0.7.2",
- "usb": "^1.3.3"
+ "@ledgerhq/hw-transport": "4.24.0",
+ "lodash": "4.17.11",
+ "node-hid": "0.7.3",
+ "usb": "1.3.3"
}
},
"@phc/format": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@phc/format/-/format-0.5.0.tgz",
- "integrity": "sha512-JWtZ5P1bfXU0bAtTzCpOLYHDXuxSVdtL/oqz4+xa97h8w9E5IlVN333wugXVFv8vZ1hbXObKQf1ptXmFFcMByg==",
+ "integrity":
+ "sha512-JWtZ5P1bfXU0bAtTzCpOLYHDXuxSVdtL/oqz4+xa97h8w9E5IlVN333wugXVFv8vZ1hbXObKQf1ptXmFFcMByg==",
"requires": {
"safe-buffer": "^5.1.2"
}
@@ -906,13 +1178,15 @@
"@types/node": {
"version": "8.10.36",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.36.tgz",
- "integrity": "sha512-SL6KhfM7PTqiFmbCW3eVNwVBZ+88Mrzbuvn9olPsfv43mbiWaFY+nRcz/TGGku0/lc2FepdMbImdMY1JrQ+zbw==",
+ "integrity":
+ "sha512-SL6KhfM7PTqiFmbCW3eVNwVBZ+88Mrzbuvn9olPsfv43mbiWaFY+nRcz/TGGku0/lc2FepdMbImdMY1JrQ+zbw==",
"dev": true
},
"@webassemblyjs/ast": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.8.tgz",
- "integrity": "sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg==",
+ "integrity":
+ "sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg==",
"dev": true,
"requires": {
"@webassemblyjs/helper-module-context": "1.7.8",
@@ -922,26 +1196,31 @@
},
"@webassemblyjs/floating-point-hex-parser": {
"version": "1.7.8",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz",
- "integrity": "sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ==",
+ "resolved":
+ "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz",
+ "integrity":
+ "sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ==",
"dev": true
},
"@webassemblyjs/helper-api-error": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.8.tgz",
- "integrity": "sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g==",
+ "integrity":
+ "sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g==",
"dev": true
},
"@webassemblyjs/helper-buffer": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.8.tgz",
- "integrity": "sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg==",
+ "integrity":
+ "sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg==",
"dev": true
},
"@webassemblyjs/helper-code-frame": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.8.tgz",
- "integrity": "sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA==",
+ "integrity":
+ "sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA==",
"dev": true,
"requires": {
"@webassemblyjs/wast-printer": "1.7.8"
@@ -950,25 +1229,31 @@
"@webassemblyjs/helper-fsm": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.8.tgz",
- "integrity": "sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA==",
+ "integrity":
+ "sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA==",
"dev": true
},
"@webassemblyjs/helper-module-context": {
"version": "1.7.8",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz",
- "integrity": "sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg==",
+ "resolved":
+ "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz",
+ "integrity":
+ "sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg==",
"dev": true
},
"@webassemblyjs/helper-wasm-bytecode": {
"version": "1.7.8",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz",
- "integrity": "sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ==",
+ "resolved":
+ "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz",
+ "integrity":
+ "sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ==",
"dev": true
},
"@webassemblyjs/helper-wasm-section": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.8.tgz",
- "integrity": "sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg==",
+ "integrity":
+ "sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
@@ -980,16 +1265,18 @@
"@webassemblyjs/ieee754": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.8.tgz",
- "integrity": "sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ==",
+ "integrity":
+ "sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ==",
"dev": true,
"requires": {
- "@xtuc/ieee754": "^1.2.0"
+ "@xtuc/ieee754": "1.2.0"
}
},
"@webassemblyjs/leb128": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.8.tgz",
- "integrity": "sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ==",
+ "integrity":
+ "sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ==",
"dev": true,
"requires": {
"@xtuc/long": "4.2.1"
@@ -998,13 +1285,15 @@
"@webassemblyjs/utf8": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.8.tgz",
- "integrity": "sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA==",
+ "integrity":
+ "sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA==",
"dev": true
},
"@webassemblyjs/wasm-edit": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.8.tgz",
- "integrity": "sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A==",
+ "integrity":
+ "sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
@@ -1020,7 +1309,8 @@
"@webassemblyjs/wasm-gen": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.8.tgz",
- "integrity": "sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ==",
+ "integrity":
+ "sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
@@ -1033,7 +1323,8 @@
"@webassemblyjs/wasm-opt": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.8.tgz",
- "integrity": "sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg==",
+ "integrity":
+ "sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
@@ -1045,7 +1336,8 @@
"@webassemblyjs/wasm-parser": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.8.tgz",
- "integrity": "sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ==",
+ "integrity":
+ "sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
@@ -1059,7 +1351,8 @@
"@webassemblyjs/wast-parser": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.8.tgz",
- "integrity": "sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg==",
+ "integrity":
+ "sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
@@ -1073,7 +1366,8 @@
"@webassemblyjs/wast-printer": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.8.tgz",
- "integrity": "sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg==",
+ "integrity":
+ "sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
@@ -1084,19 +1378,22 @@
"@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "integrity":
+ "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true
},
"@xtuc/long": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz",
- "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
+ "integrity":
+ "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
"dev": true
},
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ "integrity":
+ "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"accepts": {
"version": "1.3.5",
@@ -1104,35 +1401,39 @@
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"dev": true,
"requires": {
- "mime-types": "~2.1.18",
+ "mime-types": "2.1.20",
"negotiator": "0.6.1"
}
},
"acorn": {
"version": "5.7.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
- "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "integrity":
+ "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
"dev": true
},
"acorn-dynamic-import": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
- "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
+ "integrity":
+ "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
"dev": true,
"requires": {
- "acorn": "^5.0.0"
+ "acorn": "5.7.3"
}
},
"address": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
- "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==",
+ "integrity":
+ "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==",
"dev": true
},
"agent-base": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
- "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+ "integrity":
+ "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"dev": true,
"requires": {
"es6-promisify": "^5.0.0"
@@ -1144,10 +1445,10 @@
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"dev": true,
"requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
+ "co": "4.6.0",
+ "fast-deep-equal": "1.1.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
}
},
"ajv-errors": {
@@ -1168,7 +1469,7 @@
"integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
"dev": true,
"requires": {
- "string-width": "^2.0.0"
+ "string-width": "2.1.1"
},
"dependencies": {
"ansi-regex": {
@@ -1179,18 +1480,20 @@
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "integrity":
+ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -1199,7 +1502,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -1207,7 +1510,8 @@
"ansi-colors": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.1.0.tgz",
- "integrity": "sha512-hTv1qPdi+sVEk3jYsdjox5nQI0C9HTbjKShbCdYLKb1LOfNbb7wsF4d7OEKIZoxIHx02tSp3m94jcPW2EfMjmA==",
+ "integrity":
+ "sha512-hTv1qPdi+sVEk3jYsdjox5nQI0C9HTbjKShbCdYLKb1LOfNbb7wsF4d7OEKIZoxIHx02tSp3m94jcPW2EfMjmA==",
"dev": true
},
"ansi-escapes": {
@@ -1230,10 +1534,11 @@
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "integrity":
+ "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "color-convert": "1.9.3"
}
},
"any-promise": {
@@ -1244,25 +1549,28 @@
"anymatch": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "integrity":
+ "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
+ "micromatch": "3.1.10",
+ "normalize-path": "2.1.1"
}
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ "integrity":
+ "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"are-we-there-yet": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "integrity":
+ "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.6"
}
},
"argon2": {
@@ -1279,9 +1587,10 @@
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "integrity":
+ "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"requires": {
- "sprintf-js": "~1.0.2"
+ "sprintf-js": "1.0.3"
}
},
"arr-diff": {
@@ -1293,7 +1602,8 @@
"arr-flatten": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "integrity":
+ "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
"dev": true
},
"arr-union": {
@@ -1332,21 +1642,6 @@
"integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
"dev": true
},
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
- },
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
@@ -1367,21 +1662,23 @@
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "integrity":
+ "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"dev": true,
"requires": {
- "safer-buffer": "~2.1.0"
+ "safer-buffer": "2.1.2"
}
},
"asn1.js": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
- "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "integrity":
+ "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
"dev": true,
"requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
+ "bn.js": "4.11.8",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
}
},
"assert": {
@@ -1401,7 +1698,7 @@
},
"util": {
"version": "0.10.3",
- "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
"dev": true,
"requires": {
@@ -1425,9 +1722,10 @@
"async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
- "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "integrity":
+ "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"requires": {
- "lodash": "^4.17.10"
+ "lodash": "4.17.11"
}
},
"async-each": {
@@ -1439,13 +1737,15 @@
"async-exit-hook": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
- "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
+ "integrity":
+ "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
"dev": true
},
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
- "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
+ "integrity":
+ "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
"dev": true
},
"asynckit": {
@@ -1457,27 +1757,30 @@
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "integrity":
+ "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
"authenticator": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/authenticator/-/authenticator-1.1.5.tgz",
- "integrity": "sha512-eaT0Trfxka28DkljLQDxuoSn9uDTaYIoXhZMsAw3Z54fNC7BMIsvIxfG6Y5s+y02CH59IIyY3p1EOMqeIpljWQ==",
+ "integrity":
+ "sha512-eaT0Trfxka28DkljLQDxuoSn9uDTaYIoXhZMsAw3Z54fNC7BMIsvIxfG6Y5s+y02CH59IIyY3p1EOMqeIpljWQ==",
"requires": {
- "authenticator-cli": "^1.0.5",
- "notp": "^2.0.3",
+ "authenticator-cli": "1.0.5",
+ "notp": "2.0.3",
"thirty-two": "0.0.2"
},
"dependencies": {
"authenticator-cli": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/authenticator-cli/-/authenticator-cli-1.0.5.tgz",
- "integrity": "sha512-8FjXzLnytd93zE9IxtOr7/uptlxGBjQhWw6qEjPPLhfq1TqrUpaBEhPYOErtHWIPuveAgzHHEBgp2bh6GdQ6Ew==",
+ "integrity":
+ "sha512-8FjXzLnytd93zE9IxtOr7/uptlxGBjQhWw6qEjPPLhfq1TqrUpaBEhPYOErtHWIPuveAgzHHEBgp2bh6GdQ6Ew==",
"requires": {
- "authenticator": "^1.1.0",
- "cli": "^1.0.1",
- "qrcode-terminal": "^0.12.0"
+ "authenticator": "1.1.5",
+ "cli": "1.0.1",
+ "qrcode-terminal": "0.12.0"
}
}
}
@@ -1491,7 +1794,8 @@
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+ "integrity":
+ "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"babel-code-frame": {
@@ -1500,9 +1804,9 @@
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
- "chalk": "^1.1.3",
- "esutils": "^2.0.2",
- "js-tokens": "^3.0.2"
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
},
"dependencies": {
"ansi-styles": {
@@ -1513,15 +1817,15 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"js-tokens": {
@@ -1541,13 +1845,14 @@
"babel-loader": {
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.4.tgz",
- "integrity": "sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw==",
+ "integrity":
+ "sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw==",
"dev": true,
"requires": {
- "find-cache-dir": "^1.0.0",
- "loader-utils": "^1.0.2",
- "mkdirp": "^0.5.1",
- "util.promisify": "^1.0.0"
+ "find-cache-dir": "1.0.0",
+ "loader-utils": "1.1.0",
+ "mkdirp": "0.5.1",
+ "util.promisify": "1.0.0"
}
},
"babel-runtime": {
@@ -1555,26 +1860,29 @@
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"requires": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
+ "core-js": "2.5.7",
+ "regenerator-runtime": "0.11.1"
},
"dependencies": {
"core-js": {
"version": "2.5.7",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+ "integrity":
+ "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ "integrity":
+ "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
}
}
},
"bail": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz",
- "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg=="
+ "integrity":
+ "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg=="
},
"balanced-match": {
"version": "1.0.0",
@@ -1584,16 +1892,17 @@
"base": {
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "integrity":
+ "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
"dev": true,
"requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
+ "cache-base": "1.0.1",
+ "class-utils": "0.3.6",
+ "component-emitter": "1.2.1",
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "mixin-deep": "1.3.1",
+ "pascalcase": "0.1.1"
},
"dependencies": {
"define-property": {
@@ -1602,36 +1911,39 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.0"
+ "is-descriptor": "1.0.2"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "integrity":
+ "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "integrity":
+ "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "integrity":
+ "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
}
}
}
@@ -1648,30 +1960,34 @@
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"requires": {
- "tweetnacl": "^0.14.3"
+ "tweetnacl": "0.14.5"
}
},
"big.js": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "integrity":
+ "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
"dev": true
},
"bignumber.js": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
- "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
+ "integrity":
+ "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
},
"binary-extensions": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
- "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
+ "integrity":
+ "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
"dev": true
},
"bindings": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
- "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
+ "integrity":
+ "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw=="
},
"bip32-path": {
"version": "0.4.2",
@@ -1680,22 +1996,25 @@
},
"bl": {
"version": "1.2.2",
- "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
- "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
+ "integrity":
+ "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
"requires": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
+ "readable-stream": "2.3.6",
+ "safe-buffer": "5.1.2"
}
},
"bluebird": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
- "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg=="
+ "integrity":
+ "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg=="
},
"bn.js": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
- "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "integrity":
+ "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
"dev": true
},
"body-parser": {
@@ -1705,21 +2024,22 @@
"dev": true,
"requires": {
"bytes": "3.0.0",
- "content-type": "~1.0.4",
+ "content-type": "1.0.4",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "~1.6.3",
+ "depd": "1.1.2",
+ "http-errors": "1.6.3",
"iconv-lite": "0.4.23",
- "on-finished": "~2.3.0",
+ "on-finished": "2.3.0",
"qs": "6.5.2",
"raw-body": "2.3.3",
- "type-is": "~1.6.16"
+ "type-is": "1.6.16"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -1728,10 +2048,11 @@
"iconv-lite": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
- "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "integrity":
+ "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
"dev": true,
"requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "safer-buffer": "2.1.2"
}
},
"ms": {
@@ -1751,16 +2072,17 @@
"boxen": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "integrity":
+ "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
"dev": true,
"requires": {
- "ansi-align": "^2.0.0",
- "camelcase": "^4.0.0",
- "chalk": "^2.0.1",
- "cli-boxes": "^1.0.0",
- "string-width": "^2.0.0",
- "term-size": "^1.2.0",
- "widest-line": "^2.0.0"
+ "ansi-align": "2.0.0",
+ "camelcase": "4.1.0",
+ "chalk": "2.4.1",
+ "cli-boxes": "1.0.0",
+ "string-width": "2.1.1",
+ "term-size": "1.2.0",
+ "widest-line": "2.0.1"
},
"dependencies": {
"ansi-regex": {
@@ -1771,18 +2093,20 @@
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "integrity":
+ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -1791,7 +2115,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -1799,28 +2123,30 @@
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "integrity":
+ "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
- "balanced-match": "^1.0.0",
+ "balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"braces": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
+ "integrity":
+ "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
},
"dependencies": {
"extend-shallow": {
@@ -1829,7 +2155,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -1842,39 +2168,42 @@
},
"browserify-aes": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity":
+ "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
"requires": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "buffer-xor": "1.0.3",
+ "cipher-base": "1.0.4",
+ "create-hash": "1.2.0",
+ "evp_bytestokey": "1.0.3",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
"browserify-cipher": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "integrity":
+ "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
"dev": true,
"requires": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
+ "browserify-aes": "1.2.0",
+ "browserify-des": "1.0.2",
+ "evp_bytestokey": "1.0.3"
}
},
"browserify-des": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
- "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "integrity":
+ "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
"dev": true,
"requires": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "cipher-base": "1.0.4",
+ "des.js": "1.0.0",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
"browserify-rsa": {
@@ -1883,8 +2212,8 @@
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "randombytes": "^2.0.1"
+ "bn.js": "4.11.8",
+ "randombytes": "2.0.6"
}
},
"browserify-sign": {
@@ -1893,13 +2222,13 @@
"integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
"dev": true,
"requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "elliptic": "6.4.1",
+ "inherits": "2.0.3",
+ "parse-asn1": "5.1.1"
}
},
"browserify-versionify": {
@@ -1907,54 +2236,58 @@
"resolved": "https://registry.npmjs.org/browserify-versionify/-/browserify-versionify-1.0.6.tgz",
"integrity": "sha1-qy3GHWoRnmJ77Eh1mNGYO3/bJ14=",
"requires": {
- "find-root": "^0.1.1",
+ "find-root": "0.1.2",
"through2": "0.6.3"
}
},
"browserify-zlib": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "integrity":
+ "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
"dev": true,
"requires": {
- "pako": "~1.0.5"
+ "pako": "1.0.6"
}
},
"browserslist": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.2.1.tgz",
- "integrity": "sha512-1oO0c7Zhejwd+LXihS89WqtKionSbz298rJZKJgfrHIZhrV8AC15gw553VcB0lcEugja7IhWD7iAlrsamfYVPA==",
+ "integrity":
+ "sha512-1oO0c7Zhejwd+LXihS89WqtKionSbz298rJZKJgfrHIZhrV8AC15gw553VcB0lcEugja7IhWD7iAlrsamfYVPA==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30000890",
- "electron-to-chromium": "^1.3.79",
- "node-releases": "^1.0.0-alpha.14"
+ "caniuse-lite": "1.0.30000893",
+ "electron-to-chromium": "1.3.79",
+ "node-releases": "1.0.0-alpha.14"
}
},
"buffer": {
"version": "4.9.1",
- "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"dev": true,
"requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
+ "base64-js": "1.2.0",
+ "ieee754": "1.1.12",
+ "isarray": "1.0.0"
}
},
"buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "integrity":
+ "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"requires": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
+ "buffer-alloc-unsafe": "1.1.0",
+ "buffer-fill": "1.0.0"
}
},
"buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ "integrity":
+ "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
},
"buffer-fill": {
"version": "1.0.0",
@@ -1964,7 +2297,8 @@
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ "integrity":
+ "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"buffer-xor": {
"version": "1.0.3",
@@ -1975,48 +2309,52 @@
"bugsnag-build-reporter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/bugsnag-build-reporter/-/bugsnag-build-reporter-1.0.0.tgz",
- "integrity": "sha512-uYhbiTOEahw9+ewR4GYxHsBL7OSCbA8EtBnugtT27ZTU3dDZRPJWptzrlEe7O4blTSz7YcFCmTnaG+c5Ng04Jg==",
+ "integrity":
+ "sha512-uYhbiTOEahw9+ewR4GYxHsBL7OSCbA8EtBnugtT27ZTU3dDZRPJWptzrlEe7O4blTSz7YcFCmTnaG+c5Ng04Jg==",
"dev": true,
"requires": {
- "chalk": "^2.3.0",
- "concat-stream": "^1.6.0",
- "find-nearest-file": "^1.1.0",
- "meow": "^4.0.0",
- "minimist": "^1.2.0",
- "pino": "^4.10.3",
- "run-parallel": "^1.1.6"
+ "chalk": "2.4.1",
+ "concat-stream": "1.6.2",
+ "find-nearest-file": "1.1.0",
+ "meow": "4.0.1",
+ "minimist": "1.2.0",
+ "pino": "4.17.6",
+ "run-parallel": "1.1.9"
}
},
"bugsnag-js": {
"version": "4.7.3",
"resolved": "https://registry.npmjs.org/bugsnag-js/-/bugsnag-js-4.7.3.tgz",
- "integrity": "sha512-j9n6E45y8R0hx4A2IGkbOIEsDwRzZlhe+rtCfFo6RE6DgmTezeia+kqUMb4iitkSCZjEBMAPGhAe1l3vXfwbqQ==",
+ "integrity":
+ "sha512-j9n6E45y8R0hx4A2IGkbOIEsDwRzZlhe+rtCfFo6RE6DgmTezeia+kqUMb4iitkSCZjEBMAPGhAe1l3vXfwbqQ==",
"requires": {
- "@bugsnag/cuid": "^3.0.0",
- "@bugsnag/safe-json-stringify": "^2.1.0",
- "browserify-versionify": "^1.0.6",
- "error-stack-parser": "^2.0.2",
+ "@bugsnag/cuid": "3.0.0",
+ "@bugsnag/safe-json-stringify": "2.1.0",
+ "browserify-versionify": "1.0.6",
+ "error-stack-parser": "2.0.2",
"iserror": "0.0.2",
- "stack-generator": "^2.0.3"
+ "stack-generator": "2.0.3"
}
},
"bugsnag-react": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/bugsnag-react/-/bugsnag-react-1.1.1.tgz",
- "integrity": "sha512-u+aodYDZwlmPMj0kCC+nZiO0Rhw4LaJ8ve1cYzEb5gcToPjuIkOfFIQO4T7QhR96V2Uy6UdVw7e04OEPR4/0wg=="
+ "integrity":
+ "sha512-u+aodYDZwlmPMj0kCC+nZiO0Rhw4LaJ8ve1cYzEb5gcToPjuIkOfFIQO4T7QhR96V2Uy6UdVw7e04OEPR4/0wg=="
},
"bugsnag-sourcemaps": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/bugsnag-sourcemaps/-/bugsnag-sourcemaps-1.0.4.tgz",
- "integrity": "sha512-AUnvubm/gDYkpdvw/dq/oQlC2zR9EvZUukpr4bgeBSEFGLnE1sCs4GINXuw0HBgsYKJ3dq5zRFyndtGXK+5Odw==",
+ "integrity":
+ "sha512-AUnvubm/gDYkpdvw/dq/oQlC2zR9EvZUukpr4bgeBSEFGLnE1sCs4GINXuw0HBgsYKJ3dq5zRFyndtGXK+5Odw==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "listr": "^0.12.0",
- "meow": "^3.7.0",
- "rc": "^1.2.1",
- "read-pkg-up": "^2.0.0",
- "request": "^2.79.0"
+ "graceful-fs": "4.1.11",
+ "listr": "0.12.0",
+ "meow": "3.7.0",
+ "rc": "1.2.8",
+ "read-pkg-up": "2.0.0",
+ "request": "2.88.0"
},
"dependencies": {
"camelcase": {
@@ -2027,12 +2365,12 @@
},
"camelcase-keys": {
"version": "2.1.0",
- "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
}
},
"find-up": {
@@ -2041,8 +2379,8 @@
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
}
},
"indent-string": {
@@ -2051,20 +2389,20 @@
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
- "repeating": "^2.0.0"
+ "repeating": "2.0.1"
}
},
"load-json-file": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
}
},
"map-obj": {
@@ -2075,20 +2413,20 @@
},
"meow": {
"version": "3.7.0",
- "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
},
"dependencies": {
"read-pkg-up": {
@@ -2097,8 +2435,8 @@
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
}
}
}
@@ -2109,7 +2447,7 @@
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "error-ex": "^1.2.0"
+ "error-ex": "1.3.2"
}
},
"path-exists": {
@@ -2118,7 +2456,7 @@
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
- "pinkie-promise": "^2.0.0"
+ "pinkie-promise": "2.0.1"
}
},
"path-type": {
@@ -2127,14 +2465,14 @@
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
}
},
"pify": {
"version": "2.3.0",
- "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
@@ -2144,9 +2482,9 @@
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
}
},
"read-pkg-up": {
@@ -2155,8 +2493,8 @@
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
"dev": true,
"requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
},
"dependencies": {
"find-up": {
@@ -2165,19 +2503,19 @@
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "locate-path": "^2.0.0"
+ "locate-path": "2.0.0"
}
},
"load-json-file": {
"version": "2.0.0",
- "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
}
},
"path-type": {
@@ -2186,7 +2524,7 @@
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
"dev": true,
"requires": {
- "pify": "^2.0.0"
+ "pify": "2.3.0"
}
},
"read-pkg": {
@@ -2195,9 +2533,9 @@
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
}
},
"strip-bom": {
@@ -2214,8 +2552,8 @@
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
}
},
"strip-bom": {
@@ -2224,7 +2562,7 @@
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
- "is-utf8": "^0.2.0"
+ "is-utf8": "0.2.1"
}
},
"strip-indent": {
@@ -2233,7 +2571,7 @@
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1"
+ "get-stdin": "4.0.1"
}
},
"trim-newlines": {
@@ -2265,39 +2603,41 @@
"cacache": {
"version": "10.0.4",
"resolved": "http://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
- "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
+ "integrity":
+ "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
"dev": true,
"requires": {
- "bluebird": "^3.5.1",
- "chownr": "^1.0.1",
- "glob": "^7.1.2",
- "graceful-fs": "^4.1.11",
- "lru-cache": "^4.1.1",
- "mississippi": "^2.0.0",
- "mkdirp": "^0.5.1",
- "move-concurrently": "^1.0.1",
- "promise-inflight": "^1.0.1",
- "rimraf": "^2.6.2",
- "ssri": "^5.2.4",
- "unique-filename": "^1.1.0",
- "y18n": "^4.0.0"
+ "bluebird": "3.5.2",
+ "chownr": "1.1.1",
+ "glob": "7.1.3",
+ "graceful-fs": "4.1.11",
+ "lru-cache": "4.1.3",
+ "mississippi": "2.0.0",
+ "mkdirp": "0.5.1",
+ "move-concurrently": "1.0.1",
+ "promise-inflight": "1.0.1",
+ "rimraf": "2.6.2",
+ "ssri": "5.3.0",
+ "unique-filename": "1.1.1",
+ "y18n": "4.0.0"
}
},
"cache-base": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "integrity":
+ "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
"dev": true,
"requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
+ "collection-visit": "1.0.0",
+ "component-emitter": "1.2.1",
+ "get-value": "2.0.6",
+ "has-value": "1.0.0",
+ "isobject": "3.0.1",
+ "set-value": "2.0.0",
+ "to-object-path": "0.3.0",
+ "union-value": "1.0.0",
+ "unset-value": "1.0.0"
}
},
"camel-case": {
@@ -2306,8 +2646,8 @@
"integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
"dev": true,
"requires": {
- "no-case": "^2.2.0",
- "upper-case": "^1.1.1"
+ "no-case": "2.3.2",
+ "upper-case": "1.1.3"
}
},
"camelcase": {
@@ -2322,21 +2662,23 @@
"integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
"dev": true,
"requires": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
+ "camelcase": "4.1.0",
+ "map-obj": "2.0.0",
+ "quick-lru": "1.1.0"
}
},
"caniuse-lite": {
"version": "1.0.30000893",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000893.tgz",
- "integrity": "sha512-kOddHcTEef+NgN/fs0zmX2brHTNATVOWMEIhlZHCuwQRtXobjSw9pAECc44Op4bTBcavRjkLaPrGomknH7+Jvg==",
+ "integrity":
+ "sha512-kOddHcTEef+NgN/fs0zmX2brHTNATVOWMEIhlZHCuwQRtXobjSw9pAECc44Op4bTBcavRjkLaPrGomknH7+Jvg==",
"dev": true
},
"capture-stack-trace": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
- "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
+ "integrity":
+ "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
"dev": true
},
"caseless": {
@@ -2348,68 +2690,77 @@
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "integrity":
+ "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
}
},
"character-entities": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz",
- "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ=="
+ "integrity":
+ "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ=="
},
"character-entities-legacy": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz",
- "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA=="
+ "integrity":
+ "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA=="
},
"character-reference-invalid": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz",
- "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ=="
+ "resolved":
+ "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz",
+ "integrity":
+ "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ=="
},
"chardet": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "integrity":
+ "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
"chokidar": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
- "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+ "integrity":
+ "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
"dev": true,
"requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.0",
- "braces": "^2.3.0",
- "fsevents": "^1.2.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.1",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "lodash.debounce": "^4.0.8",
- "normalize-path": "^2.1.1",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.0.0",
- "upath": "^1.0.5"
+ "anymatch": "2.0.0",
+ "async-each": "1.0.1",
+ "braces": "2.3.2",
+ "fsevents": "1.2.4",
+ "glob-parent": "3.1.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "4.0.0",
+ "lodash.debounce": "4.0.8",
+ "normalize-path": "2.1.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.2.1",
+ "upath": "1.1.0"
}
},
"chownr": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
- "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
+ "integrity":
+ "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
},
"chrome-trace-event": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
- "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
+ "integrity":
+ "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
"dev": true,
"requires": {
- "tslib": "^1.9.0"
+ "tslib": "1.9.3"
}
},
"chromium-pickle-js": {
@@ -2421,29 +2772,32 @@
"ci-info": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
- "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "integrity":
+ "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
"dev": true
},
"cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "integrity":
+ "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
"class-utils": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "integrity":
+ "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
"dev": true,
"requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
+ "arr-union": "3.1.0",
+ "define-property": "0.2.5",
+ "isobject": "3.0.1",
+ "static-extend": "0.1.2"
},
"dependencies": {
"define-property": {
@@ -2452,7 +2806,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
}
}
@@ -2460,15 +2814,17 @@
"classnames": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+ "integrity":
+ "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
},
"clean-css": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
- "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
+ "integrity":
+ "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
"dev": true,
"requires": {
- "source-map": "~0.6.0"
+ "source-map": "0.6.1"
}
},
"cli": {
@@ -2477,7 +2833,7 @@
"integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
"requires": {
"exit": "0.1.2",
- "glob": "^7.1.1"
+ "glob": "7.1.3"
}
},
"cli-boxes": {
@@ -2492,7 +2848,7 @@
"integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
"requires": {
- "restore-cursor": "^1.0.1"
+ "restore-cursor": "1.0.1"
}
},
"cli-spinners": {
@@ -2508,7 +2864,7 @@
"dev": true,
"requires": {
"slice-ansi": "0.0.4",
- "string-width": "^1.0.1"
+ "string-width": "1.0.2"
}
},
"cli-width": {
@@ -2520,12 +2876,13 @@
"cliui": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "integrity":
+ "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
"dev": true,
"requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
},
"dependencies": {
"ansi-regex": {
@@ -2536,18 +2893,20 @@
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "integrity":
+ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -2556,7 +2915,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -2569,13 +2928,14 @@
"clone-deep": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
- "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
+ "integrity":
+ "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
"dev": true,
"requires": {
- "for-own": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.0",
- "shallow-clone": "^1.0.0"
+ "for-own": "1.0.0",
+ "is-plain-object": "2.0.4",
+ "kind-of": "6.0.2",
+ "shallow-clone": "1.0.0"
}
},
"co": {
@@ -2592,7 +2952,8 @@
"collapse-white-space": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz",
- "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw=="
+ "integrity":
+ "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw=="
},
"collection-visit": {
"version": "1.0.0",
@@ -2600,14 +2961,15 @@
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
"dev": true,
"requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
+ "map-visit": "1.0.0",
+ "object-visit": "1.0.1"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "integrity":
+ "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
@@ -2622,16 +2984,18 @@
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
- "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
+ "integrity":
+ "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
- "delayed-stream": "~1.0.0"
+ "delayed-stream": "1.0.0"
}
},
"commander": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
- "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "integrity":
+ "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
"dev": true
},
"commondir": {
@@ -2659,30 +3023,32 @@
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "integrity":
+ "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"dev": true,
"requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
+ "buffer-from": "1.1.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "typedarray": "0.0.6"
}
},
"concurrently": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.0.1.tgz",
- "integrity": "sha512-D8UI+mlI/bfvrA57SeKOht6sEpb01dKk+8Yee4fbnkk1Ue8r3S+JXoEdFZIpzQlXJGtnxo47Wvvg/kG4ba3U6Q==",
+ "integrity":
+ "sha512-D8UI+mlI/bfvrA57SeKOht6sEpb01dKk+8Yee4fbnkk1Ue8r3S+JXoEdFZIpzQlXJGtnxo47Wvvg/kG4ba3U6Q==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "date-fns": "^1.23.0",
- "lodash": "^4.17.10",
- "read-pkg": "^4.0.1",
+ "chalk": "2.4.1",
+ "date-fns": "1.29.0",
+ "lodash": "4.17.11",
+ "read-pkg": "4.0.1",
"rxjs": "6.2.2",
- "spawn-command": "^0.0.2-1",
- "supports-color": "^4.5.0",
- "tree-kill": "^1.1.0",
- "yargs": "^12.0.1"
+ "spawn-command": "0.0.2-1",
+ "supports-color": "4.5.0",
+ "tree-kill": "1.2.0",
+ "yargs": "12.0.2"
},
"dependencies": {
"has-flag": {
@@ -2697,18 +3063,19 @@
"integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
"dev": true,
"requires": {
- "normalize-package-data": "^2.3.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0"
+ "normalize-package-data": "2.4.0",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0"
}
},
"rxjs": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
- "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
+ "integrity":
+ "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
"dev": true,
"requires": {
- "tslib": "^1.9.0"
+ "tslib": "1.9.3"
}
},
"supports-color": {
@@ -2717,7 +3084,7 @@
"integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
"dev": true,
"requires": {
- "has-flag": "^2.0.0"
+ "has-flag": "2.0.0"
}
}
}
@@ -2725,15 +3092,16 @@
"configstore": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
- "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
+ "integrity":
+ "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
"dev": true,
"requires": {
- "dot-prop": "^4.1.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
+ "dot-prop": "4.2.0",
+ "graceful-fs": "4.1.11",
+ "make-dir": "1.3.0",
+ "unique-string": "1.0.0",
+ "write-file-atomic": "2.3.0",
+ "xdg-basedir": "3.0.0"
}
},
"console-browserify": {
@@ -2742,7 +3110,7 @@
"integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
"dev": true,
"requires": {
- "date-now": "^0.1.4"
+ "date-now": "0.1.4"
}
},
"console-control-strings": {
@@ -2765,13 +3133,15 @@
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "integrity":
+ "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true
},
"convert-source-map": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
- "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "integrity":
+ "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.1"
@@ -2792,15 +3162,16 @@
"copy-concurrently": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "integrity":
+ "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
"dev": true,
"requires": {
- "aproba": "^1.1.1",
- "fs-write-stream-atomic": "^1.0.8",
- "iferr": "^0.1.5",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.0"
+ "aproba": "1.2.0",
+ "fs-write-stream-atomic": "1.0.10",
+ "iferr": "0.1.5",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "run-queue": "1.0.3"
}
},
"copy-descriptor": {
@@ -2809,22 +3180,6 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
"dev": true
},
- "copy-webpack-plugin": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.3.tgz",
- "integrity": "sha512-VKCiNXQcc8zyznaepXfKpCH2cZD+/j3T3B+gsFY97P7qMlEsj34wr/sI9OCG7QPUUh7gAHVx3q8Q1rdQIDM4bA==",
- "dev": true,
- "requires": {
- "cacache": "^10.0.4",
- "find-cache-dir": "^1.0.0",
- "globby": "^7.1.1",
- "is-glob": "^4.0.0",
- "loader-utils": "^1.1.0",
- "minimatch": "^3.0.4",
- "p-limit": "^1.0.0",
- "serialize-javascript": "^1.4.0"
- }
- },
"core-js": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
@@ -2838,11 +3193,12 @@
"create-ecdh": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
- "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "integrity":
+ "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.0.0"
+ "bn.js": "4.11.8",
+ "elliptic": "6.4.1"
}
},
"create-error-class": {
@@ -2851,66 +3207,71 @@
"integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"dev": true,
"requires": {
- "capture-stack-trace": "^1.0.0"
+ "capture-stack-trace": "1.0.1"
}
},
"create-hash": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "integrity":
+ "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"dev": true,
"requires": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
+ "cipher-base": "1.0.4",
+ "inherits": "2.0.3",
+ "md5.js": "1.3.5",
+ "ripemd160": "2.0.2",
+ "sha.js": "2.4.11"
}
},
"create-hmac": {
"version": "1.1.7",
"resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "integrity":
+ "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"dev": true,
"requires": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "cipher-base": "1.0.4",
+ "create-hash": "1.2.0",
+ "inherits": "2.0.3",
+ "ripemd160": "2.0.2",
+ "safe-buffer": "5.1.2",
+ "sha.js": "2.4.11"
}
},
"create-react-context": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz",
- "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==",
+ "integrity":
+ "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==",
"requires": {
- "fbjs": "^0.8.0",
- "gud": "^1.0.0"
+ "fbjs": "0.8.17",
+ "gud": "1.0.0"
}
},
"cross-env": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
- "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
+ "integrity":
+ "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
"dev": true,
"requires": {
- "cross-spawn": "^6.0.5",
- "is-windows": "^1.0.0"
+ "cross-spawn": "6.0.5",
+ "is-windows": "1.0.2"
}
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "integrity":
+ "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "nice-try": "1.0.5",
+ "path-key": "2.0.1",
+ "semver": "5.6.0",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
}
},
"cross-unzip": {
@@ -2922,20 +3283,21 @@
"crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "integrity":
+ "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
"dev": true,
"requires": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
+ "browserify-cipher": "1.0.1",
+ "browserify-sign": "4.0.4",
+ "create-ecdh": "4.0.3",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "diffie-hellman": "5.0.3",
+ "inherits": "2.0.3",
+ "pbkdf2": "3.0.17",
+ "public-encrypt": "4.0.3",
+ "randombytes": "2.0.6",
+ "randomfill": "1.0.4"
}
},
"crypto-js": {
@@ -2952,21 +3314,22 @@
"css-loader": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz",
- "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==",
+ "integrity":
+ "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==",
"dev": true,
"requires": {
- "babel-code-frame": "^6.26.0",
- "css-selector-tokenizer": "^0.7.0",
- "icss-utils": "^2.1.0",
- "loader-utils": "^1.0.2",
- "lodash.camelcase": "^4.3.0",
- "postcss": "^6.0.23",
- "postcss-modules-extract-imports": "^1.2.0",
- "postcss-modules-local-by-default": "^1.2.0",
- "postcss-modules-scope": "^1.1.0",
- "postcss-modules-values": "^1.3.0",
- "postcss-value-parser": "^3.3.0",
- "source-list-map": "^2.0.0"
+ "babel-code-frame": "6.26.0",
+ "css-selector-tokenizer": "0.7.0",
+ "icss-utils": "2.1.0",
+ "loader-utils": "1.1.0",
+ "lodash.camelcase": "4.3.0",
+ "postcss": "6.0.23",
+ "postcss-modules-extract-imports": "1.2.0",
+ "postcss-modules-local-by-default": "1.2.0",
+ "postcss-modules-scope": "1.1.0",
+ "postcss-modules-values": "1.3.0",
+ "postcss-value-parser": "3.3.1",
+ "source-list-map": "2.0.1"
}
},
"css-select": {
@@ -2975,10 +3338,10 @@
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"dev": true,
"requires": {
- "boolbase": "~1.0.0",
- "css-what": "2.1",
+ "boolbase": "1.0.0",
+ "css-what": "2.1.0",
"domutils": "1.5.1",
- "nth-check": "~1.0.1"
+ "nth-check": "1.0.1"
}
},
"css-selector-tokenizer": {
@@ -2987,9 +3350,9 @@
"integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
"dev": true,
"requires": {
- "cssesc": "^0.1.0",
- "fastparse": "^1.1.1",
- "regexpu-core": "^1.0.0"
+ "cssesc": "0.1.0",
+ "fastparse": "1.1.1",
+ "regexpu-core": "1.0.0"
},
"dependencies": {
"jsesc": {
@@ -3004,14 +3367,14 @@
"integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
"dev": true,
"requires": {
- "regenerate": "^1.2.1",
- "regjsgen": "^0.2.0",
- "regjsparser": "^0.1.4"
+ "regenerate": "1.4.0",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
}
},
"regjsgen": {
"version": "0.2.0",
- "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
"integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
"dev": true
},
@@ -3021,7 +3384,7 @@
"integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
"dev": true,
"requires": {
- "jsesc": "~0.5.0"
+ "jsesc": "0.5.0"
}
}
}
@@ -3044,7 +3407,7 @@
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
"requires": {
- "array-find-index": "^1.0.1"
+ "array-find-index": "1.0.2"
}
},
"cyclist": {
@@ -3056,27 +3419,32 @@
"d3-array": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
- "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
+ "integrity":
+ "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
},
"d3-collection": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz",
- "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
+ "integrity":
+ "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
},
"d3-color": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz",
- "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw=="
+ "integrity":
+ "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw=="
},
"d3-format": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz",
- "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ=="
+ "integrity":
+ "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ=="
},
"d3-interpolate": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz",
- "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==",
+ "integrity":
+ "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==",
"requires": {
"d3-color": "1"
}
@@ -3084,12 +3452,14 @@
"d3-path": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.7.tgz",
- "integrity": "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA=="
+ "integrity":
+ "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA=="
},
"d3-scale": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.1.2.tgz",
- "integrity": "sha512-bESpd64ylaKzCDzvULcmHKZTlzA/6DGSVwx7QSDj/EnX9cpSevsdiwdHFYI9ouo9tNBbV3v5xztHS2uFeOzh8Q==",
+ "integrity":
+ "sha512-bESpd64ylaKzCDzvULcmHKZTlzA/6DGSVwx7QSDj/EnX9cpSevsdiwdHFYI9ouo9tNBbV3v5xztHS2uFeOzh8Q==",
"requires": {
"d3-array": "^1.2.0",
"d3-collection": "1",
@@ -3102,7 +3472,8 @@
"d3-shape": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.2.tgz",
- "integrity": "sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ==",
+ "integrity":
+ "sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ==",
"requires": {
"d3-path": "1"
}
@@ -3110,12 +3481,14 @@
"d3-time": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.10.tgz",
- "integrity": "sha512-hF+NTLCaJHF/JqHN5hE8HVGAXPStEq6/omumPE/SxyHVrR7/qQxusFDo0t0c/44+sCGHthC7yNGFZIEgju0P8g=="
+ "integrity":
+ "sha512-hF+NTLCaJHF/JqHN5hE8HVGAXPStEq6/omumPE/SxyHVrR7/qQxusFDo0t0c/44+sCGHthC7yNGFZIEgju0P8g=="
},
"d3-time-format": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz",
- "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==",
+ "integrity":
+ "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==",
"requires": {
"d3-time": "1"
}
@@ -3123,10 +3496,11 @@
"dart-sass": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/dart-sass/-/dart-sass-1.14.3.tgz",
- "integrity": "sha512-vFKMG9DvUB5vgquFbSRD6D5oM9FqiWjKjBlAWjdm9sIOakz7uJpL76h+gDsFliAtbcA2F+CLyJuyuEQC9ETJlw==",
+ "integrity":
+ "sha512-vFKMG9DvUB5vgquFbSRD6D5oM9FqiWjKjBlAWjdm9sIOakz7uJpL76h+gDsFliAtbcA2F+CLyJuyuEQC9ETJlw==",
"dev": true,
"requires": {
- "chokidar": "^2.0.0"
+ "chokidar": "2.0.4"
}
},
"dashdash": {
@@ -3135,13 +3509,14 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
}
},
"date-fns": {
"version": "1.29.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz",
- "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==",
+ "integrity":
+ "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==",
"dev": true
},
"date-now": {
@@ -3153,10 +3528,11 @@
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "integrity":
+ "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.1"
}
},
"decamelize": {
@@ -3171,8 +3547,8 @@
"integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
"dev": true,
"requires": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
+ "decamelize": "1.2.0",
+ "map-obj": "1.0.1"
},
"dependencies": {
"map-obj": {
@@ -3186,7 +3562,8 @@
"decimal.js-light": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz",
- "integrity": "sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg=="
+ "integrity":
+ "sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg=="
},
"decode-uri-component": {
"version": "0.2.0",
@@ -3199,60 +3576,66 @@
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
"integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
"requires": {
- "mimic-response": "^1.0.0"
+ "mimic-response": "1.0.1"
}
},
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+ "integrity":
+ "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "integrity":
+ "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"requires": {
- "object-keys": "^1.0.12"
+ "object-keys": "1.0.12"
}
},
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "integrity":
+ "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
+ "is-descriptor": "1.0.2",
+ "isobject": "3.0.1"
},
"dependencies": {
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "integrity":
+ "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "integrity":
+ "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "integrity":
+ "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
}
}
}
@@ -3280,8 +3663,8 @@
"integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
}
},
"destroy": {
@@ -3298,17 +3681,19 @@
"detect-port-alt": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
- "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+ "integrity":
+ "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
"dev": true,
"requires": {
- "address": "^1.0.1",
- "debug": "^2.6.0"
+ "address": "1.0.3",
+ "debug": "2.6.9"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -3325,64 +3710,61 @@
"diffie-hellman": {
"version": "5.0.3",
"resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "integrity":
+ "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- }
- },
- "dir-glob": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
- "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "path-type": "^3.0.0"
+ "bn.js": "4.11.8",
+ "miller-rabin": "4.0.1",
+ "randombytes": "2.0.6"
}
},
"dom-converter": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
- "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "integrity":
+ "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
"dev": true,
"requires": {
- "utila": "~0.4"
+ "utila": "0.4.0"
}
},
"dom-helpers": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz",
- "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg=="
+ "integrity":
+ "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg=="
},
"dom-serializer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
"requires": {
- "domelementtype": "~1.1.1",
- "entities": "~1.1.1"
+ "domelementtype": "1.1.3",
+ "entities": "1.1.1"
},
"dependencies": {
"domelementtype": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
}
}
},
"domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "integrity":
+ "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
"dev": true
},
"domelementtype": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
},
"domhandler": {
"version": "2.1.0",
@@ -3390,31 +3772,34 @@
"integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
"dev": true,
"requires": {
- "domelementtype": "1"
+ "domelementtype": "1.3.0"
}
},
"domutils": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
"requires": {
- "dom-serializer": "0",
- "domelementtype": "1"
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
}
},
"dot-prop": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
- "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "integrity":
+ "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
"dev": true,
"requires": {
- "is-obj": "^1.0.0"
+ "is-obj": "1.0.1"
}
},
"dotenv": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz",
- "integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw==",
+ "integrity":
+ "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw==",
"dev": true
},
"dotenv-expand": {
@@ -3438,13 +3823,14 @@
"duplexify": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz",
- "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
+ "integrity":
+ "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
"dev": true,
"requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
+ "end-of-stream": "1.4.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "stream-shift": "1.0.0"
}
},
"ecc-jsbn": {
@@ -3453,8 +3839,8 @@
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2"
}
},
"ee-first": {
@@ -3466,57 +3852,62 @@
"ejs": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
- "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
+ "integrity":
+ "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
"dev": true
},
"electron": {
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/electron/-/electron-3.0.10.tgz",
- "integrity": "sha512-I39IeQP3NOlbjKzTDK8uK2JdiHDfhV5SruCS2Gttkn2MaKCY+yIzQ6Wr4DyBXLeTEkL1sbZxbqQVhCavAliv5w==",
+ "integrity":
+ "sha512-I39IeQP3NOlbjKzTDK8uK2JdiHDfhV5SruCS2Gttkn2MaKCY+yIzQ6Wr4DyBXLeTEkL1sbZxbqQVhCavAliv5w==",
"dev": true,
"requires": {
- "@types/node": "^8.0.24",
- "electron-download": "^4.1.0",
- "extract-zip": "^1.0.3"
+ "@types/node": "8.10.36",
+ "electron-download": "4.1.1",
+ "extract-zip": "1.6.7"
}
},
"electron-builder": {
"version": "20.38.0",
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.38.0.tgz",
- "integrity": "sha512-7Iq/VqgQOCubiRXMjrVvcSLIp17otGZ/L4hjjY8bn5bPY6j/mym3Qr2xjtSLIBs5jxKJjHaT8HwMmDoOGZpNoQ==",
+ "integrity":
+ "sha512-7Iq/VqgQOCubiRXMjrVvcSLIp17otGZ/L4hjjY8bn5bPY6j/mym3Qr2xjtSLIBs5jxKJjHaT8HwMmDoOGZpNoQ==",
"dev": true,
"requires": {
"app-builder-lib": "20.38.0",
- "bluebird-lst": "^1.0.6",
+ "bluebird-lst": "1.0.6",
"builder-util": "9.5.0",
"builder-util-runtime": "8.0.2",
- "chalk": "^2.4.1",
+ "chalk": "2.4.1",
"dmg-builder": "6.5.1",
- "fs-extra-p": "^7.0.0",
- "is-ci": "^1.2.1",
- "lazy-val": "^1.0.3",
+ "fs-extra-p": "7.0.0",
+ "is-ci": "1.2.1",
+ "lazy-val": "1.0.3",
"read-config-file": "3.2.0",
- "sanitize-filename": "^1.6.1",
- "update-notifier": "^2.5.0",
- "yargs": "^12.0.5"
+ "sanitize-filename": "1.6.1",
+ "update-notifier": "2.5.0",
+ "yargs": "12.0.5"
},
"dependencies": {
"7zip-bin": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.1.0.tgz",
- "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==",
+ "integrity":
+ "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==",
"dev": true
},
"ajv": {
"version": "6.6.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.0.tgz",
- "integrity": "sha512-ZCIMdm75ps9usdeb0GQL9rKOUlTtS0p0vU2nQVXgRIu6Yb00G9GY7AvbVLwTQ5Po4JDKIwJlT5nwggoRDrDVAw==",
+ "integrity":
+ "sha512-ZCIMdm75ps9usdeb0GQL9rKOUlTtS0p0vU2nQVXgRIu6Yb00G9GY7AvbVLwTQ5Po4JDKIwJlT5nwggoRDrDVAw==",
"dev": true,
"requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "fast-deep-equal": "2.0.1",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.4.1",
+ "uri-js": "4.2.2"
}
},
"ansi-regex": {
@@ -3528,131 +3919,141 @@
"app-builder-bin": {
"version": "2.5.5",
"resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.5.5.tgz",
- "integrity": "sha512-ZemMZqFJGf05J7qSvZeKIs3vSYl8sG8DWsyBLzxtfoIIoLD/dI/dtNwSOZwyoY54w/g8b7IbG5L6egnqfyX7oA==",
+ "integrity":
+ "sha512-ZemMZqFJGf05J7qSvZeKIs3vSYl8sG8DWsyBLzxtfoIIoLD/dI/dtNwSOZwyoY54w/g8b7IbG5L6egnqfyX7oA==",
"dev": true
},
"app-builder-lib": {
"version": "20.38.0",
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.38.0.tgz",
- "integrity": "sha512-QhS+hFhdVQYjHsl3CrfOrRH+4JcHGbXKqEAougA3OXlbuYmR9w/6qDDTWYDdQg/xtWx7LBbPccfIYYP6LiEJ0Q==",
+ "integrity":
+ "sha512-QhS+hFhdVQYjHsl3CrfOrRH+4JcHGbXKqEAougA3OXlbuYmR9w/6qDDTWYDdQg/xtWx7LBbPccfIYYP6LiEJ0Q==",
"dev": true,
"requires": {
- "7zip-bin": "~4.1.0",
+ "7zip-bin": "4.1.0",
"app-builder-bin": "2.5.5",
- "async-exit-hook": "^2.0.1",
- "bluebird-lst": "^1.0.6",
+ "async-exit-hook": "2.0.1",
+ "bluebird-lst": "1.0.6",
"builder-util": "9.5.0",
"builder-util-runtime": "8.0.2",
- "chromium-pickle-js": "^0.2.0",
- "debug": "^4.1.0",
- "ejs": "^2.6.1",
+ "chromium-pickle-js": "0.2.0",
+ "debug": "4.1.0",
+ "ejs": "2.6.1",
"electron-osx-sign": "0.4.11",
"electron-publish": "20.38.0",
- "fs-extra-p": "^7.0.0",
- "hosted-git-info": "^2.7.1",
- "is-ci": "^1.2.1",
- "isbinaryfile": "^3.0.3",
- "js-yaml": "^3.12.0",
- "lazy-val": "^1.0.3",
- "minimatch": "^3.0.4",
- "normalize-package-data": "^2.4.0",
- "plist": "^3.0.1",
+ "fs-extra-p": "7.0.0",
+ "hosted-git-info": "2.7.1",
+ "is-ci": "1.2.1",
+ "isbinaryfile": "3.0.3",
+ "js-yaml": "3.12.0",
+ "lazy-val": "1.0.3",
+ "minimatch": "3.0.4",
+ "normalize-package-data": "2.4.0",
+ "plist": "3.0.1",
"read-config-file": "3.2.0",
- "sanitize-filename": "^1.6.1",
- "semver": "^5.6.0",
- "temp-file": "^3.3.2"
+ "sanitize-filename": "1.6.1",
+ "semver": "5.6.0",
+ "temp-file": "3.3.2"
}
},
"bluebird-lst": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.6.tgz",
- "integrity": "sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ==",
+ "integrity":
+ "sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ==",
"dev": true,
"requires": {
- "bluebird": "^3.5.2"
+ "bluebird": "3.5.2"
}
},
"builder-util": {
"version": "9.5.0",
"resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.5.0.tgz",
- "integrity": "sha512-1YIozlovksOa3xegMTO9wibqmYzFJ7RNfSbr4IbmXA81Czqgl5hezqDS2luvgH+qMa/Ra4fE8k202fdzvfEEkw==",
+ "integrity":
+ "sha512-1YIozlovksOa3xegMTO9wibqmYzFJ7RNfSbr4IbmXA81Czqgl5hezqDS2luvgH+qMa/Ra4fE8k202fdzvfEEkw==",
"dev": true,
"requires": {
- "7zip-bin": "~4.1.0",
+ "7zip-bin": "4.1.0",
"app-builder-bin": "2.5.5",
- "bluebird-lst": "^1.0.6",
- "builder-util-runtime": "^8.0.2",
- "chalk": "^2.4.1",
- "debug": "^4.1.0",
- "fs-extra-p": "^7.0.0",
- "is-ci": "^1.2.1",
- "js-yaml": "^3.12.0",
- "source-map-support": "^0.5.9",
- "stat-mode": "^0.2.2",
- "temp-file": "^3.3.2"
+ "bluebird-lst": "1.0.6",
+ "builder-util-runtime": "8.0.2",
+ "chalk": "2.4.1",
+ "debug": "4.1.0",
+ "fs-extra-p": "7.0.0",
+ "is-ci": "1.2.1",
+ "js-yaml": "3.12.0",
+ "source-map-support": "0.5.9",
+ "stat-mode": "0.2.2",
+ "temp-file": "3.3.2"
}
},
"builder-util-runtime": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.0.2.tgz",
- "integrity": "sha512-46AjyMQ1/yBvGnXWmqNGlg8te7jCPCs7TJ0zDC2+4vV/t5iZp2dR1H9UfVpcBxlvBq3dlAOmwb9fz1d9xZN1+Q==",
+ "integrity":
+ "sha512-46AjyMQ1/yBvGnXWmqNGlg8te7jCPCs7TJ0zDC2+4vV/t5iZp2dR1H9UfVpcBxlvBq3dlAOmwb9fz1d9xZN1+Q==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.6",
- "debug": "^4.1.0",
- "fs-extra-p": "^7.0.0",
- "sax": "^1.2.4"
+ "bluebird-lst": "1.0.6",
+ "debug": "4.1.0",
+ "fs-extra-p": "7.0.0",
+ "sax": "1.2.4"
}
},
"camelcase": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
- "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "integrity":
+ "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
"dev": true
},
"debug": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
- "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "integrity":
+ "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.1"
}
},
"dmg-builder": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.5.1.tgz",
- "integrity": "sha512-7Nn0jDO9uzwSOuldOrWaVqvNp4QtjCO/L4wJsAvEP9l8baAgQO1t7cdvd8Qjz0zhPet99vWVihmPlvOFeg4QOA==",
+ "integrity":
+ "sha512-7Nn0jDO9uzwSOuldOrWaVqvNp4QtjCO/L4wJsAvEP9l8baAgQO1t7cdvd8Qjz0zhPet99vWVihmPlvOFeg4QOA==",
"dev": true,
"requires": {
- "app-builder-lib": "~20.38.0",
- "bluebird-lst": "^1.0.6",
- "builder-util": "~9.5.0",
- "fs-extra-p": "^7.0.0",
- "iconv-lite": "^0.4.24",
- "js-yaml": "^3.12.0",
- "parse-color": "^1.0.0",
- "sanitize-filename": "^1.6.1"
+ "app-builder-lib": "20.38.0",
+ "bluebird-lst": "1.0.6",
+ "builder-util": "9.5.0",
+ "fs-extra-p": "7.0.0",
+ "iconv-lite": "0.4.24",
+ "js-yaml": "3.12.0",
+ "parse-color": "1.0.0",
+ "sanitize-filename": "1.6.1"
}
},
"electron-osx-sign": {
"version": "0.4.11",
"resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz",
- "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==",
+ "integrity":
+ "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==",
"dev": true,
"requires": {
- "bluebird": "^3.5.0",
- "compare-version": "^0.1.2",
- "debug": "^2.6.8",
- "isbinaryfile": "^3.0.2",
- "minimist": "^1.2.0",
- "plist": "^3.0.1"
+ "bluebird": "3.5.2",
+ "compare-version": "0.1.2",
+ "debug": "2.6.9",
+ "isbinaryfile": "3.0.3",
+ "minimist": "1.2.0",
+ "plist": "3.0.1"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -3669,16 +4070,17 @@
"electron-publish": {
"version": "20.38.0",
"resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.38.0.tgz",
- "integrity": "sha512-mdfn+Ckx6RVQ46lCPxfsW09+0nVDtHAs6qqzFjKvo8TLv4P01lT/1XycXU/7B8oDUldoDsE906I24gjSypMqJw==",
+ "integrity":
+ "sha512-mdfn+Ckx6RVQ46lCPxfsW09+0nVDtHAs6qqzFjKvo8TLv4P01lT/1XycXU/7B8oDUldoDsE906I24gjSypMqJw==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.6",
- "builder-util": "~9.5.0",
- "builder-util-runtime": "^8.0.2",
- "chalk": "^2.4.1",
- "fs-extra-p": "^7.0.0",
- "lazy-val": "^1.0.3",
- "mime": "^2.4.0"
+ "bluebird-lst": "1.0.6",
+ "builder-util": "9.5.0",
+ "builder-util-runtime": "8.0.2",
+ "chalk": "2.4.1",
+ "fs-extra-p": "7.0.0",
+ "lazy-val": "1.0.3",
+ "mime": "2.4.0"
}
},
"fast-deep-equal": {
@@ -3690,119 +4092,132 @@
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "integrity":
+ "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "3.0.0"
}
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "integrity":
+ "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.2"
}
},
"fs-extra-p": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.0.tgz",
- "integrity": "sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA==",
+ "integrity":
+ "sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.6",
- "fs-extra": "^7.0.0"
+ "bluebird-lst": "1.0.6",
+ "fs-extra": "7.0.1"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "integrity":
+ "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"json5": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
- "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "integrity":
+ "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
"dev": true,
"requires": {
- "minimist": "^1.2.0"
+ "minimist": "1.2.0"
}
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "integrity":
+ "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
}
},
"mime": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
- "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+ "integrity":
+ "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
"dev": true
},
"p-limit": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
- "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "integrity":
+ "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "p-try": "2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "integrity":
+ "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "2.0.0"
}
},
"p-try": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "integrity":
+ "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
"dev": true
},
"read-config-file": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.0.tgz",
- "integrity": "sha512-i1QRc5jy4sHm9YBGb6ArA5SU1mDrc5wu2mnm3r9gPnm+LVZhBGbpTCKqAXyvV4TJHnBR3Yaaww+9b3DyRZcfww==",
+ "integrity":
+ "sha512-i1QRc5jy4sHm9YBGb6ArA5SU1mDrc5wu2mnm3r9gPnm+LVZhBGbpTCKqAXyvV4TJHnBR3Yaaww+9b3DyRZcfww==",
"dev": true,
"requires": {
- "ajv": "^6.5.5",
- "ajv-keywords": "^3.2.0",
- "bluebird-lst": "^1.0.6",
- "dotenv": "^6.1.0",
- "dotenv-expand": "^4.2.0",
- "fs-extra-p": "^7.0.0",
- "js-yaml": "^3.12.0",
- "json5": "^2.1.0",
- "lazy-val": "^1.0.3"
+ "ajv": "6.6.0",
+ "ajv-keywords": "3.2.0",
+ "bluebird-lst": "1.0.6",
+ "dotenv": "6.1.0",
+ "dotenv-expand": "4.2.0",
+ "fs-extra-p": "7.0.0",
+ "js-yaml": "3.12.0",
+ "json5": "2.1.0",
+ "lazy-val": "1.0.3"
}
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "integrity":
+ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -3811,90 +4226,97 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
},
"temp-file": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz",
- "integrity": "sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ==",
+ "integrity":
+ "sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ==",
"dev": true,
"requires": {
- "async-exit-hook": "^2.0.1",
- "bluebird-lst": "^1.0.6",
- "fs-extra-p": "^7.0.0"
+ "async-exit-hook": "2.0.1",
+ "bluebird-lst": "1.0.6",
+ "fs-extra-p": "7.0.0"
}
},
"yargs": {
"version": "12.0.5",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
- "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "integrity":
+ "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
"dev": true,
"requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1 || ^4.0.0",
- "yargs-parser": "^11.1.1"
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "3.0.1",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "4.0.0",
+ "yargs-parser": "11.1.1"
}
},
"yargs-parser": {
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
- "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "integrity":
+ "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
"dev": true,
"requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "camelcase": "5.0.0",
+ "decamelize": "1.2.0"
}
}
}
},
"electron-devtools-installer": {
"version": "2.2.4",
- "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz",
- "integrity": "sha512-b5kcM3hmUqn64+RUcHjjr8ZMpHS2WJ5YO0pnG9+P/RTdx46of/JrEjuciHWux6pE+On6ynWhHJF53j/EDJN0PA==",
+ "resolved":
+ "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz",
+ "integrity":
+ "sha512-b5kcM3hmUqn64+RUcHjjr8ZMpHS2WJ5YO0pnG9+P/RTdx46of/JrEjuciHWux6pE+On6ynWhHJF53j/EDJN0PA==",
"dev": true,
"requires": {
"7zip": "0.0.6",
"cross-unzip": "0.0.2",
- "rimraf": "^2.5.2",
- "semver": "^5.3.0"
+ "rimraf": "2.6.2",
+ "semver": "5.6.0"
}
},
"electron-download": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
- "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
- "dev": true,
- "requires": {
- "debug": "^3.0.0",
- "env-paths": "^1.0.0",
- "fs-extra": "^4.0.1",
- "minimist": "^1.2.0",
- "nugget": "^2.0.1",
- "path-exists": "^3.0.0",
- "rc": "^1.2.1",
- "semver": "^5.4.1",
- "sumchecker": "^2.0.2"
+ "integrity":
+ "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
+ "dev": true,
+ "requires": {
+ "debug": "3.2.6",
+ "env-paths": "1.0.0",
+ "fs-extra": "4.0.3",
+ "minimist": "1.2.0",
+ "nugget": "2.0.1",
+ "path-exists": "3.0.0",
+ "rc": "1.2.8",
+ "semver": "5.6.0",
+ "sumchecker": "2.0.2"
},
"dependencies": {
"fs-extra": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
- "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "integrity":
+ "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.2"
}
}
}
@@ -3902,84 +4324,93 @@
"electron-screenshot": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/electron-screenshot/-/electron-screenshot-1.0.5.tgz",
- "integrity": "sha512-nTLZZ8urMraLwL0KYb5dz2o76cRPx+6WBQ0sOujqqfcUe1k/alj0UoLPmQpFs8VuIccF4K7ZNpeK95h0ob8p6Q==",
+ "integrity":
+ "sha512-nTLZZ8urMraLwL0KYb5dz2o76cRPx+6WBQ0sOujqqfcUe1k/alj0UoLPmQpFs8VuIccF4K7ZNpeK95h0ob8p6Q==",
"dev": true
},
"electron-settings": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/electron-settings/-/electron-settings-3.2.0.tgz",
- "integrity": "sha512-7U+vDKd5Gch4Z9K6FjGq80eB3Anwz2GuPc2h/6hOiuvZrS1w+UNPcAA0oAU8G1s9sWAVEadCsr4ZJR6J4iTdzA==",
+ "integrity":
+ "sha512-7U+vDKd5Gch4Z9K6FjGq80eB3Anwz2GuPc2h/6hOiuvZrS1w+UNPcAA0oAU8G1s9sWAVEadCsr4ZJR6J4iTdzA==",
"requires": {
- "clone": "^2.1.1",
- "jsonfile": "^4.0.0"
+ "clone": "2.1.2",
+ "jsonfile": "4.0.0"
}
},
"electron-to-chromium": {
"version": "1.3.79",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.79.tgz",
- "integrity": "sha512-LQdY3j4PxuUl6xfxiFruTSlCniTrTrzAd8/HfsLEMi0PUpaQ0Iy+Pr4N4VllDYjs0Hyu2lkTbvzqlG+PX9NsNw==",
+ "integrity":
+ "sha512-LQdY3j4PxuUl6xfxiFruTSlCniTrTrzAd8/HfsLEMi0PUpaQ0Iy+Pr4N4VllDYjs0Hyu2lkTbvzqlG+PX9NsNw==",
"dev": true
},
"electron-updater": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.0.4.tgz",
- "integrity": "sha512-y3wddJQyC5h1UTJhNAWoX4McJ5Z1r1ZDqyifpYWniVS286YCXe1xSLkbe9C6ZzxzPurt1jg2ZubPuBNt/811Dw==",
- "requires": {
- "bluebird-lst": "^1.0.6",
- "builder-util-runtime": "~8.0.2",
- "fs-extra-p": "^7.0.0",
- "js-yaml": "^3.12.0",
- "lazy-val": "^1.0.3",
- "lodash.isequal": "^4.5.0",
- "pako": "^1.0.6",
- "semver": "^5.6.0",
- "source-map-support": "^0.5.9"
+ "integrity":
+ "sha512-y3wddJQyC5h1UTJhNAWoX4McJ5Z1r1ZDqyifpYWniVS286YCXe1xSLkbe9C6ZzxzPurt1jg2ZubPuBNt/811Dw==",
+ "requires": {
+ "bluebird-lst": "1.0.6",
+ "builder-util-runtime": "8.0.2",
+ "fs-extra-p": "7.0.0",
+ "js-yaml": "3.12.0",
+ "lazy-val": "1.0.3",
+ "lodash.isequal": "4.5.0",
+ "pako": "1.0.6",
+ "semver": "5.6.0",
+ "source-map-support": "0.5.9"
},
"dependencies": {
"bluebird-lst": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.6.tgz",
- "integrity": "sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ==",
+ "integrity":
+ "sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ==",
"requires": {
- "bluebird": "^3.5.2"
+ "bluebird": "3.5.2"
}
},
"builder-util-runtime": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.0.2.tgz",
- "integrity": "sha512-46AjyMQ1/yBvGnXWmqNGlg8te7jCPCs7TJ0zDC2+4vV/t5iZp2dR1H9UfVpcBxlvBq3dlAOmwb9fz1d9xZN1+Q==",
+ "integrity":
+ "sha512-46AjyMQ1/yBvGnXWmqNGlg8te7jCPCs7TJ0zDC2+4vV/t5iZp2dR1H9UfVpcBxlvBq3dlAOmwb9fz1d9xZN1+Q==",
"requires": {
- "bluebird-lst": "^1.0.6",
- "debug": "^4.1.0",
- "fs-extra-p": "^7.0.0",
- "sax": "^1.2.4"
+ "bluebird-lst": "1.0.6",
+ "debug": "4.1.0",
+ "fs-extra-p": "7.0.0",
+ "sax": "1.2.4"
}
},
"debug": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
- "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "integrity":
+ "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.1"
}
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "integrity":
+ "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.2"
}
},
"fs-extra-p": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.0.tgz",
- "integrity": "sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA==",
+ "integrity":
+ "sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA==",
"requires": {
- "bluebird-lst": "^1.0.6",
- "fs-extra": "^7.0.0"
+ "bluebird-lst": "1.0.6",
+ "fs-extra": "7.0.1"
}
}
}
@@ -3993,16 +4424,17 @@
"elliptic": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
- "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
+ "integrity":
+ "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
"dev": true,
"requires": {
- "bn.js": "^4.4.0",
- "brorand": "^1.0.1",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.0"
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0",
+ "hash.js": "1.1.5",
+ "hmac-drbg": "1.0.1",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1",
+ "minimalistic-crypto-utils": "1.0.1"
}
},
"emojis-list": {
@@ -4022,40 +4454,75 @@
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"requires": {
- "iconv-lite": "~0.4.13"
+ "iconv-lite": "0.4.24"
}
},
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "integrity":
+ "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
"requires": {
- "once": "^1.4.0"
+ "once": "1.4.0"
}
},
"enhanced-resolve": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
- "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "integrity":
+ "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.4.0",
- "tapable": "^1.0.0"
+ "graceful-fs": "4.1.11",
+ "memory-fs": "0.4.1",
+ "tapable": "1.1.0"
}
},
"entangled-node": {
- "version": "github:rihardsgravis/entangled-node#25d4b75986b1945512c92a7879fc7c45bde14193",
- "from": "github:rihardsgravis/entangled-node",
+ "version": "github:rihardsgravis/entangled-node#5ec2b0b97fcf8faa70f3730be7fa632b91daa71a",
+ "from": "github:rihardsgravis/entangled-node#v0.1.3",
"requires": {
- "nan": "^2.10.0",
- "prebuild-install": "^5.0.0"
+ "nan": "^2.11.1",
+ "prebuild-install": "^5.2.2"
+ },
+ "dependencies": {
+ "expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity":
+ "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="
+ },
+ "prebuild-install": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.2.2.tgz",
+ "integrity":
+ "sha512-4e8VJnP3zJdZv/uP0eNWmr2r9urp4NECw7Mt1OSAi3rcLrbBRxGiAkfUFtre2MhQ5wfREAjRV+K1gubvs/GPsA==",
+ "requires": {
+ "detect-libc": "^1.0.3",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^2.2.0",
+ "noop-logger": "^0.1.1",
+ "npmlog": "^4.0.1",
+ "os-homedir": "^1.0.1",
+ "pump": "^2.0.1",
+ "rc": "^1.2.7",
+ "simple-get": "^2.7.0",
+ "tar-fs": "^1.13.0",
+ "tunnel-agent": "^0.6.0",
+ "which-pm-runs": "^1.0.0"
+ }
+ }
}
},
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
},
"env-paths": {
"version": "1.0.0",
@@ -4066,57 +4533,63 @@
"errno": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
- "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "integrity":
+ "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
"dev": true,
"requires": {
- "prr": "~1.0.1"
+ "prr": "1.0.1"
}
},
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "integrity":
+ "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
- "is-arrayish": "^0.2.1"
+ "is-arrayish": "0.2.1"
}
},
"error-stack-parser": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz",
- "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==",
+ "integrity":
+ "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==",
"requires": {
- "stackframe": "^1.0.4"
+ "stackframe": "1.0.4"
}
},
"es-abstract": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
- "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
+ "integrity":
+ "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
"dev": true,
"requires": {
- "es-to-primitive": "^1.1.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.1",
- "is-callable": "^1.1.3",
- "is-regex": "^1.0.4"
+ "es-to-primitive": "1.2.0",
+ "function-bind": "1.1.1",
+ "has": "1.0.3",
+ "is-callable": "1.1.4",
+ "is-regex": "1.0.4"
}
},
"es-to-primitive": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
- "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "integrity":
+ "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
"dev": true,
"requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "is-callable": "1.1.4",
+ "is-date-object": "1.0.1",
+ "is-symbol": "1.0.2"
}
},
"es6-promise": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
- "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
+ "integrity":
+ "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
"dev": true
},
"es6-promisify": {
@@ -4143,25 +4616,28 @@
"eslint-scope": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
- "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+ "integrity":
+ "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
"dev": true,
"requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
+ "esrecurse": "4.2.1",
+ "estraverse": "4.2.0"
}
},
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ "integrity":
+ "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"esrecurse": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
- "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "integrity":
+ "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
"dev": true,
"requires": {
- "estraverse": "^4.1.0"
+ "estraverse": "4.2.0"
}
},
"estraverse": {
@@ -4184,7 +4660,7 @@
},
"events": {
"version": "1.1.1",
- "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
"dev": true
},
@@ -4194,32 +4670,34 @@
"integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
"dev": true,
"requires": {
- "original": ">=0.0.5"
+ "original": "1.0.2"
}
},
"evp_bytestokey": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "integrity":
+ "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"dev": true,
"requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
+ "md5.js": "1.3.5",
+ "safe-buffer": "5.1.2"
}
},
"execa": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
- "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+ "integrity":
+ "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
"dev": true,
"requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "cross-spawn": "6.0.5",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
}
},
"exit": {
@@ -4239,19 +4717,20 @@
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
"dev": true,
"requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -4263,7 +4742,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
},
"extend-shallow": {
@@ -4272,7 +4751,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
},
"ms": {
@@ -4286,7 +4765,8 @@
"expand-template": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz",
- "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg=="
+ "integrity":
+ "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg=="
},
"expand-tilde": {
"version": "2.0.2",
@@ -4294,51 +4774,53 @@
"integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
"dev": true,
"requires": {
- "homedir-polyfill": "^1.0.1"
+ "homedir-polyfill": "1.0.1"
}
},
"express": {
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
- "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
+ "integrity":
+ "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
"dev": true,
"requires": {
- "accepts": "~1.3.5",
+ "accepts": "1.3.5",
"array-flatten": "1.1.1",
"body-parser": "1.18.3",
"content-disposition": "0.5.2",
- "content-type": "~1.0.4",
+ "content-type": "1.0.4",
"cookie": "0.3.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
+ "depd": "1.1.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
"finalhandler": "1.1.1",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
+ "methods": "1.1.2",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
"path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.4",
+ "proxy-addr": "2.0.4",
"qs": "6.5.2",
- "range-parser": "~1.2.0",
+ "range-parser": "1.2.0",
"safe-buffer": "5.1.2",
"send": "0.16.2",
"serve-static": "1.13.2",
"setprototypeof": "1.1.0",
- "statuses": "~1.4.0",
- "type-is": "~1.6.16",
+ "statuses": "1.4.0",
+ "type-is": "1.6.16",
"utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "vary": "1.1.2"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -4361,7 +4843,8 @@
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "integrity":
+ "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extend-shallow": {
"version": "3.0.2",
@@ -4369,17 +4852,18 @@
"integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
"requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
},
"dependencies": {
"is-extendable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "integrity":
+ "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "is-plain-object": "2.0.4"
}
}
}
@@ -4387,28 +4871,30 @@
"external-editor": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
- "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+ "integrity":
+ "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
"dev": true,
"requires": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
+ "chardet": "0.7.0",
+ "iconv-lite": "0.4.24",
+ "tmp": "0.0.33"
}
},
"extglob": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
+ "integrity":
+ "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
},
"dependencies": {
"define-property": {
@@ -4417,7 +4903,7 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.0"
+ "is-descriptor": "1.0.2"
}
},
"extend-shallow": {
@@ -4426,36 +4912,39 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "integrity":
+ "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "integrity":
+ "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "integrity":
+ "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
}
}
}
@@ -4475,7 +4964,8 @@
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -4497,14 +4987,15 @@
},
"fast-deep-equal": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
"dev": true
},
"fast-json-parse": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz",
- "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==",
+ "integrity":
+ "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==",
"dev": true
},
"fast-json-stable-stringify": {
@@ -4516,7 +5007,8 @@
"fast-safe-stringify": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz",
- "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==",
+ "integrity":
+ "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==",
"dev": true
},
"fastparse": {
@@ -4531,7 +5023,7 @@
"integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
"dev": true,
"requires": {
- "websocket-driver": ">=0.5.1"
+ "websocket-driver": "0.7.0"
}
},
"fbjs": {
@@ -4539,13 +5031,13 @@
"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
"integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
"requires": {
- "core-js": "^1.0.0",
- "isomorphic-fetch": "^2.1.1",
- "loose-envify": "^1.0.0",
- "object-assign": "^4.1.0",
- "promise": "^7.1.1",
- "setimmediate": "^1.0.5",
- "ua-parser-js": "^0.7.18"
+ "core-js": "1.2.7",
+ "isomorphic-fetch": "2.2.1",
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "promise": "7.3.1",
+ "setimmediate": "1.0.5",
+ "ua-parser-js": "0.7.18"
}
},
"fd-slicer": {
@@ -4554,7 +5046,7 @@
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
"dev": true,
"requires": {
- "pend": "~1.2.0"
+ "pend": "1.2.0"
}
},
"figures": {
@@ -4563,24 +5055,26 @@
"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
"requires": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
+ "escape-string-regexp": "1.0.5",
+ "object-assign": "4.1.1"
}
},
"file-loader": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz",
- "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==",
+ "integrity":
+ "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==",
"dev": true,
"requires": {
- "loader-utils": "^1.0.2",
- "schema-utils": "^1.0.0"
+ "loader-utils": "1.1.0",
+ "schema-utils": "1.0.0"
}
},
"filesize": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
- "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "integrity":
+ "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
"dev": true
},
"fill-range": {
@@ -4589,10 +5083,10 @@
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
},
"dependencies": {
"extend-shallow": {
@@ -4601,7 +5095,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -4609,22 +5103,24 @@
"finalhandler": {
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
- "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+ "integrity":
+ "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"dev": true,
"requires": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
- "statuses": "~1.4.0",
- "unpipe": "~1.0.0"
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.4.0",
+ "unpipe": "1.0.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -4643,15 +5139,16 @@
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
"integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
"requires": {
- "commondir": "^1.0.1",
- "make-dir": "^1.0.0",
- "pkg-dir": "^2.0.0"
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "2.0.0"
}
},
"find-nearest-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/find-nearest-file/-/find-nearest-file-1.1.0.tgz",
- "integrity": "sha512-NMsS0ITOwpBPrHOyO7YUtDhaVEGUKS0kBJDVaWZPuCzO7JMW+uzFQQVts/gPyIV9ioyNWDb5LjhHWXVf1OnBDA==",
+ "integrity":
+ "sha512-NMsS0ITOwpBPrHOyO7YUtDhaVEGUKS0kBJDVaWZPuCzO7JMW+uzFQQVts/gPyIV9ioyNWDb5LjhHWXVf1OnBDA==",
"dev": true
},
"find-root": {
@@ -4664,23 +5161,25 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"requires": {
- "locate-path": "^2.0.0"
+ "locate-path": "2.0.0"
}
},
"flatstr": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.8.tgz",
- "integrity": "sha512-YXblbv/vc1zuVVUtnKl1hPqqk7TalZCppnKE7Pr8FI/Rp48vzckS/4SJ4Y9O9RNiI82Vcw/FydmtqdQOg1Dpqw==",
+ "integrity":
+ "sha512-YXblbv/vc1zuVVUtnKl1hPqqk7TalZCppnKE7Pr8FI/Rp48vzckS/4SJ4Y9O9RNiI82Vcw/FydmtqdQOg1Dpqw==",
"dev": true
},
"flush-write-stream": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
- "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
+ "integrity":
+ "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.4"
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
}
},
"for-in": {
@@ -4695,7 +5194,7 @@
"integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
"dev": true,
"requires": {
- "for-in": "^1.0.1"
+ "for-in": "1.0.2"
}
},
"forever-agent": {
@@ -4707,12 +5206,13 @@
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "integrity":
+ "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.7",
+ "mime-types": "2.1.20"
}
},
"forwarded": {
@@ -4727,7 +5227,7 @@
"integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
"dev": true,
"requires": {
- "map-cache": "^0.2.2"
+ "map-cache": "0.2.2"
}
},
"fresh": {
@@ -4742,21 +5242,35 @@
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
}
},
"fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ "integrity":
+ "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ },
+ "fs-extra": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity":
+ "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.2"
+ }
},
"fs-minipass": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
- "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+ "integrity":
+ "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"requires": {
- "minipass": "^2.2.1"
+ "minipass": "2.3.5"
}
},
"fs-write-stream-atomic": {
@@ -4765,10 +5279,10 @@
"integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
+ "graceful-fs": "4.1.11",
+ "iferr": "0.1.5",
+ "imurmurhash": "0.1.4",
+ "readable-stream": "2.3.6"
}
},
"fs.realpath": {
@@ -4779,18 +5293,20 @@
"fsevents": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
- "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+ "integrity":
+ "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
"dev": true,
"optional": true,
"requires": {
- "nan": "^2.9.2",
- "node-pre-gyp": "^0.10.0"
+ "nan": "2.11.1",
+ "node-pre-gyp": "0.10.0"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "integrity":
+ "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true,
"optional": true
},
@@ -4798,12 +5314,14 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "integrity":
+ "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true,
"optional": true
},
@@ -4814,23 +5332,26 @@
"dev": true,
"optional": true,
"requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.6"
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "integrity":
+ "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "optional": true,
"requires": {
- "balanced-match": "^1.0.0",
+ "balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
@@ -4845,19 +5366,23 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"console-control-strings": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -4869,7 +5394,8 @@
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"optional": true,
"requires": {
@@ -4879,7 +5405,8 @@
"deep-extend": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
- "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
+ "integrity":
+ "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
"dev": true,
"optional": true
},
@@ -4900,11 +5427,12 @@
"fs-minipass": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
- "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+ "integrity":
+ "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"dev": true,
"optional": true,
"requires": {
- "minipass": "^2.2.1"
+ "minipass": "2.2.4"
}
},
"fs.realpath": {
@@ -4921,29 +5449,30 @@
"dev": true,
"optional": true,
"requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.2"
}
},
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "integrity":
+ "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"optional": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"has-unicode": {
@@ -4956,21 +5485,23 @@
"iconv-lite": {
"version": "0.4.21",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz",
- "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
+ "integrity":
+ "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
"dev": true,
"optional": true,
"requires": {
- "safer-buffer": "^2.1.0"
+ "safer-buffer": "2.1.2"
}
},
"ignore-walk": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
- "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+ "integrity":
+ "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"dev": true,
"optional": true,
"requires": {
- "minimatch": "^3.0.4"
+ "minimatch": "3.0.4"
}
},
"inflight": {
@@ -4980,30 +5511,34 @@
"dev": true,
"optional": true,
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "integrity":
+ "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
+ "optional": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"isarray": {
@@ -5016,36 +5551,42 @@
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "integrity":
+ "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
+ "optional": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"minipass": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz",
- "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
+ "integrity":
+ "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
"dev": true,
+ "optional": true,
"requires": {
- "safe-buffer": "^5.1.1",
- "yallist": "^3.0.0"
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
}
},
"minizlib": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz",
- "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
+ "integrity":
+ "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
"dev": true,
"optional": true,
"requires": {
- "minipass": "^2.2.1"
+ "minipass": "2.2.4"
}
},
"mkdirp": {
@@ -5053,6 +5594,7 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -5067,32 +5609,34 @@
"needle": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz",
- "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
+ "integrity":
+ "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
"dev": true,
"optional": true,
"requires": {
- "debug": "^2.1.2",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
+ "debug": "2.6.9",
+ "iconv-lite": "0.4.21",
+ "sax": "1.2.4"
}
},
"node-pre-gyp": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz",
- "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
+ "integrity":
+ "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
"dev": true,
"optional": true,
"requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.0",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.1.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
+ "detect-libc": "1.0.3",
+ "mkdirp": "0.5.1",
+ "needle": "2.2.0",
+ "nopt": "4.0.1",
+ "npm-packlist": "1.1.10",
+ "npmlog": "4.1.2",
+ "rc": "1.2.7",
+ "rimraf": "2.6.2",
+ "semver": "5.5.0",
+ "tar": "4.4.1"
}
},
"nopt": {
@@ -5102,46 +5646,50 @@
"dev": true,
"optional": true,
"requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
+ "abbrev": "1.1.1",
+ "osenv": "0.1.5"
}
},
"npm-bundled": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz",
- "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
+ "integrity":
+ "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
"dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.1.10",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz",
- "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
+ "integrity":
+ "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
"dev": true,
"optional": true,
"requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1"
+ "ignore-walk": "3.0.1",
+ "npm-bundled": "1.0.3"
}
},
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "integrity":
+ "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"optional": true,
"requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
+ "are-we-there-yet": "1.1.4",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -5155,8 +5703,9 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
+ "optional": true,
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"os-homedir": {
@@ -5176,12 +5725,13 @@
"osenv": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "integrity":
+ "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"optional": true,
"requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
}
},
"path-is-absolute": {
@@ -5194,21 +5744,23 @@
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "integrity":
+ "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true,
"optional": true
},
"rc": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
- "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
+ "integrity":
+ "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
"dev": true,
"optional": true,
"requires": {
- "deep-extend": "^0.5.1",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
+ "deep-extend": "0.5.1",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
},
"dependencies": {
"minimist": {
@@ -5223,53 +5775,60 @@
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "integrity":
+ "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"optional": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "integrity":
+ "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"optional": true,
"requires": {
- "glob": "^7.0.5"
+ "glob": "7.1.2"
}
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
- "dev": true
+ "integrity":
+ "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true,
+ "optional": true
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "integrity":
+ "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "integrity":
+ "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true,
"optional": true
},
"semver": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "integrity":
+ "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
"dev": true,
"optional": true
},
@@ -5292,20 +5851,22 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
+ "optional": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "integrity":
+ "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"optional": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.1"
}
},
"strip-ansi": {
@@ -5313,8 +5874,9 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
+ "optional": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"strip-json-comments": {
@@ -5327,17 +5889,18 @@
"tar": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz",
- "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
+ "integrity":
+ "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
"dev": true,
"optional": true,
"requires": {
- "chownr": "^1.0.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.2.4",
- "minizlib": "^1.1.0",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.1",
- "yallist": "^3.0.2"
+ "chownr": "1.0.1",
+ "fs-minipass": "1.2.5",
+ "minipass": "2.2.4",
+ "minizlib": "1.1.0",
+ "mkdirp": "0.5.1",
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
}
},
"util-deprecate": {
@@ -5350,31 +5913,35 @@
"wide-align": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
- "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+ "integrity":
+ "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
"dev": true,
"optional": true,
"requires": {
- "string-width": "^1.0.2"
+ "string-width": "1.0.2"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"yallist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
- "dev": true
+ "dev": true,
+ "optional": true
}
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "integrity":
+ "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
"gauge": {
@@ -5382,20 +5949,21 @@
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.3"
}
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "integrity":
+ "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
"get-stdin": {
@@ -5422,7 +5990,7 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
}
},
"github-from-package": {
@@ -5433,14 +6001,15 @@
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "integrity":
+ "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"glob-parent": {
@@ -5449,8 +6018,8 @@
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
},
"dependencies": {
"is-glob": {
@@ -5459,7 +6028,7 @@
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
- "is-extglob": "^2.1.0"
+ "is-extglob": "2.1.1"
}
}
}
@@ -5470,24 +6039,26 @@
"integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
"dev": true,
"requires": {
- "ini": "^1.3.4"
+ "ini": "1.3.5"
}
},
"global-modules": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "integrity":
+ "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
"dev": true,
"requires": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
+ "global-prefix": "1.0.2",
+ "is-windows": "1.0.2",
+ "resolve-dir": "1.0.1"
}
},
"global-modules-path": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz",
- "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==",
+ "integrity":
+ "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==",
"dev": true
},
"global-prefix": {
@@ -5496,50 +6067,37 @@
"integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
"dev": true,
"requires": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
+ "expand-tilde": "2.0.2",
+ "homedir-polyfill": "1.0.1",
+ "ini": "1.3.5",
+ "is-windows": "1.0.2",
+ "which": "1.3.1"
}
},
"globals": {
"version": "11.8.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz",
- "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==",
+ "integrity":
+ "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==",
"dev": true
},
- "globby": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
- "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
- "dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "dir-glob": "^2.0.0",
- "glob": "^7.1.2",
- "ignore": "^3.3.5",
- "pify": "^3.0.0",
- "slash": "^1.0.0"
- }
- },
"got": {
"version": "6.7.1",
"resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz",
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
- "create-error-class": "^3.0.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^3.0.0",
- "is-redirect": "^1.0.0",
- "is-retry-allowed": "^1.0.0",
- "is-stream": "^1.0.0",
- "lowercase-keys": "^1.0.0",
- "safe-buffer": "^5.0.1",
- "timed-out": "^4.0.0",
- "unzip-response": "^2.0.1",
- "url-parse-lax": "^1.0.0"
+ "create-error-class": "3.0.2",
+ "duplexer3": "0.1.4",
+ "get-stream": "3.0.0",
+ "is-redirect": "1.0.0",
+ "is-retry-allowed": "1.1.0",
+ "is-stream": "1.1.0",
+ "lowercase-keys": "1.0.1",
+ "safe-buffer": "5.1.2",
+ "timed-out": "4.0.1",
+ "unzip-response": "2.0.1",
+ "url-parse-lax": "1.0.0"
}
},
"graceful-fs": {
@@ -5550,16 +6108,18 @@
"gud": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz",
- "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw=="
+ "integrity":
+ "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw=="
},
"gzip-size": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz",
- "integrity": "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==",
+ "integrity":
+ "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==",
"dev": true,
"requires": {
- "duplexer": "^0.1.1",
- "pify": "^3.0.0"
+ "duplexer": "0.1.1",
+ "pify": "3.0.0"
}
},
"har-schema": {
@@ -5571,20 +6131,22 @@
"har-validator": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
- "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
+ "integrity":
+ "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"dev": true,
"requires": {
- "ajv": "^5.3.0",
- "har-schema": "^2.0.0"
+ "ajv": "5.5.2",
+ "har-schema": "2.0.0"
}
},
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "integrity":
+ "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": {
- "function-bind": "^1.1.1"
+ "function-bind": "1.1.1"
}
},
"has-ansi": {
@@ -5593,7 +6155,7 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"has-flag": {
@@ -5619,9 +6181,9 @@
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
+ "get-value": "2.0.6",
+ "has-values": "1.0.0",
+ "isobject": "3.0.1"
}
},
"has-values": {
@@ -5630,8 +6192,8 @@
"integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
"requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
},
"dependencies": {
"kind-of": {
@@ -5640,7 +6202,7 @@
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -5651,18 +6213,19 @@
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
"hash.js": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
- "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
+ "integrity":
+ "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
}
},
"he": {
@@ -5674,13 +6237,14 @@
"history": {
"version": "4.7.2",
"resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz",
- "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==",
- "requires": {
- "invariant": "^2.2.1",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^2.2.0",
- "value-equal": "^0.4.0",
- "warning": "^3.0.0"
+ "integrity":
+ "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==",
+ "requires": {
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "resolve-pathname": "2.2.0",
+ "value-equal": "0.4.0",
+ "warning": "3.0.0"
},
"dependencies": {
"warning": {
@@ -5688,7 +6252,7 @@
"resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
"integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
"requires": {
- "loose-envify": "^1.0.0"
+ "loose-envify": "1.4.0"
}
}
}
@@ -5699,17 +6263,18 @@
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
"dev": true,
"requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
+ "hash.js": "1.1.5",
+ "minimalistic-assert": "1.0.1",
+ "minimalistic-crypto-utils": "1.0.1"
}
},
"hoist-non-react-statics": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.0.1.tgz",
- "integrity": "sha512-1kXwPsOi0OGQIZNVMPvgWJ9tSnGMiMfJdihqEzrPEXlHOBh9AAHXX/QYmAJTXztnz/K+PQ8ryCb4eGaN6HlGbQ==",
+ "integrity":
+ "sha512-1kXwPsOi0OGQIZNVMPvgWJ9tSnGMiMfJdihqEzrPEXlHOBh9AAHXX/QYmAJTXztnz/K+PQ8ryCb4eGaN6HlGbQ==",
"requires": {
- "react-is": "^16.3.2"
+ "react-is": "16.5.2"
}
},
"home-or-tmp": {
@@ -5723,13 +6288,14 @@
"integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
"dev": true,
"requires": {
- "parse-passwd": "^1.0.0"
+ "parse-passwd": "1.0.0"
}
},
"hosted-git-info": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
- "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
+ "integrity":
+ "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
"html-entities": {
@@ -5741,16 +6307,17 @@
"html-minifier": {
"version": "3.5.20",
"resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz",
- "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==",
+ "integrity":
+ "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==",
"dev": true,
"requires": {
- "camel-case": "3.0.x",
- "clean-css": "4.2.x",
- "commander": "2.17.x",
- "he": "1.1.x",
- "param-case": "2.1.x",
- "relateurl": "0.2.x",
- "uglify-js": "3.4.x"
+ "camel-case": "3.0.0",
+ "clean-css": "4.2.1",
+ "commander": "2.17.1",
+ "he": "1.1.1",
+ "param-case": "2.1.1",
+ "relateurl": "0.2.7",
+ "uglify-js": "3.4.9"
}
},
"html-parse-stringify2": {
@@ -5758,7 +6325,7 @@
"resolved": "https://registry.npmjs.org/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz",
"integrity": "sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o=",
"requires": {
- "void-elements": "^2.0.1"
+ "void-elements": "2.0.1"
}
},
"html-webpack-plugin": {
@@ -5767,12 +6334,12 @@
"integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
"dev": true,
"requires": {
- "html-minifier": "^3.2.3",
- "loader-utils": "^0.2.16",
- "lodash": "^4.17.3",
- "pretty-error": "^2.0.2",
- "tapable": "^1.0.0",
- "toposort": "^1.0.0",
+ "html-minifier": "3.5.20",
+ "loader-utils": "0.2.17",
+ "lodash": "4.17.11",
+ "pretty-error": "2.1.1",
+ "tapable": "1.1.0",
+ "toposort": "1.0.7",
"util.promisify": "1.0.0"
},
"dependencies": {
@@ -5782,24 +6349,24 @@
"integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
"dev": true,
"requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1",
+ "object-assign": "4.1.1"
}
}
}
},
"htmlparser2": {
"version": "3.3.0",
- "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
"integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
"dev": true,
"requires": {
- "domelementtype": "1",
- "domhandler": "2.1",
- "domutils": "1.1",
- "readable-stream": "1.0"
+ "domelementtype": "1.3.0",
+ "domhandler": "2.1.0",
+ "domutils": "1.1.6",
+ "readable-stream": "1.0.34"
},
"dependencies": {
"domutils": {
@@ -5808,7 +6375,7 @@
"integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
"dev": true,
"requires": {
- "domelementtype": "1"
+ "domelementtype": "1.3.0"
}
},
"isarray": {
@@ -5819,14 +6386,14 @@
},
"readable-stream": {
"version": "1.0.34",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"string_decoder": {
@@ -5843,10 +6410,10 @@
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"dev": true,
"requires": {
- "depd": "~1.1.2",
+ "depd": "1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
+ "statuses": "1.4.0"
}
},
"http-parser-js": {
@@ -5861,9 +6428,9 @@
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.15.1"
}
},
"https-browserify": {
@@ -5875,7 +6442,8 @@
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
- "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
+ "integrity":
+ "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"dev": true,
"requires": {
"agent-base": "^4.1.0",
@@ -5885,26 +6453,29 @@
"hw-app-iota": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/hw-app-iota/-/hw-app-iota-0.5.1.tgz",
- "integrity": "sha512-H8N6TGG/TFCmqMLCd94v5XLqpSmNZTq2yDbYNBf3McJpsacHdw9aiQFuqY1V2LMXzHeL6tj2o0F+EVwl8c5u1Q==",
+ "integrity":
+ "sha512-H8N6TGG/TFCmqMLCd94v5XLqpSmNZTq2yDbYNBf3McJpsacHdw9aiQFuqY1V2LMXzHeL6tj2o0F+EVwl8c5u1Q==",
"requires": {
- "babel-runtime": "^6.26.0",
- "bip32-path": "^0.4.2",
- "iota.lib.js": "^0.5.0",
- "semver": "^5.6.0",
+ "babel-runtime": "6.26.0",
+ "bip32-path": "0.4.2",
+ "iota.lib.js": "0.5.1",
+ "semver": "5.6.0",
"struct": "0.0.12"
}
},
"i18next": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-12.0.0.tgz",
- "integrity": "sha512-Zy/nFpmBZxgmi6k9HkHbf+MwvAwiY5BDzNjNfvyLPKyalc2YBwwZtblESDlTKLDO8XSv23qYRY2uZcADDlRSjQ=="
+ "integrity":
+ "sha512-Zy/nFpmBZxgmi6k9HkHbf+MwvAwiY5BDzNjNfvyLPKyalc2YBwwZtblESDlTKLDO8XSv23qYRY2uZcADDlRSjQ=="
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "integrity":
+ "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "safer-buffer": "2.1.2"
}
},
"icss-replace-symbols": {
@@ -5919,13 +6490,14 @@
"integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
"dev": true,
"requires": {
- "postcss": "^6.0.1"
+ "postcss": "6.0.23"
}
},
"ieee754": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
- "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
+ "integrity":
+ "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
"dev": true
},
"iferr": {
@@ -5934,18 +6506,13 @@
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
"dev": true
},
- "ignore": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
- "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
- "dev": true
- },
"ignore-walk": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
- "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+ "integrity":
+ "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"requires": {
- "minimatch": "^3.0.4"
+ "minimatch": "3.0.4"
}
},
"import-lazy": {
@@ -5957,63 +6524,70 @@
"import-local": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "integrity":
+ "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
"dev": true,
"requires": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
+ "pkg-dir": "3.0.0",
+ "resolve-cwd": "2.0.0"
},
"dependencies": {
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "integrity":
+ "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "3.0.0"
}
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "integrity":
+ "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
}
},
"p-limit": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
- "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "integrity":
+ "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "p-try": "2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "integrity":
+ "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "2.0.0"
}
},
"p-try": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "integrity":
+ "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
"dev": true
},
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "integrity":
+ "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
"requires": {
- "find-up": "^3.0.0"
+ "find-up": "3.0.0"
}
}
}
@@ -6041,8 +6615,8 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
"inherits": {
@@ -6053,33 +6627,36 @@
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ "integrity":
+ "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
},
"inquirer": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz",
- "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==",
+ "integrity":
+ "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==",
"dev": true,
"requires": {
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.0",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^3.0.0",
- "figures": "^2.0.0",
- "lodash": "^4.17.10",
+ "ansi-escapes": "3.1.0",
+ "chalk": "2.4.1",
+ "cli-cursor": "2.1.0",
+ "cli-width": "2.2.0",
+ "external-editor": "3.0.3",
+ "figures": "2.0.0",
+ "lodash": "4.17.11",
"mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rxjs": "^6.1.0",
- "string-width": "^2.1.0",
- "strip-ansi": "^4.0.0",
- "through": "^2.3.6"
+ "run-async": "2.3.0",
+ "rxjs": "6.3.3",
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "through": "2.3.8"
},
"dependencies": {
"ansi-escapes": {
"version": "3.1.0",
"resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
- "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
+ "integrity":
+ "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
"dev": true
},
"ansi-regex": {
@@ -6094,7 +6671,7 @@
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"dev": true,
"requires": {
- "restore-cursor": "^2.0.0"
+ "restore-cursor": "2.0.0"
}
},
"figures": {
@@ -6103,12 +6680,13 @@
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
"dev": true,
"requires": {
- "escape-string-regexp": "^1.0.5"
+ "escape-string-regexp": "1.0.5"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
@@ -6118,7 +6696,7 @@
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"dev": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "mimic-fn": "1.2.0"
}
},
"restore-cursor": {
@@ -6127,27 +6705,29 @@
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"dev": true,
"requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
+ "onetime": "2.0.1",
+ "signal-exit": "3.0.2"
}
},
"rxjs": {
"version": "6.3.3",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
- "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+ "integrity":
+ "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
"dev": true,
"requires": {
- "tslib": "^1.9.0"
+ "tslib": "1.9.3"
}
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "integrity":
+ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -6156,7 +6736,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -6170,26 +6750,29 @@
"invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "integrity":
+ "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"requires": {
- "loose-envify": "^1.0.0"
+ "loose-envify": "1.4.0"
}
},
"invert-kv": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "integrity":
+ "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
"dev": true
},
"iota.lib.js": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/iota.lib.js/-/iota.lib.js-0.5.1.tgz",
- "integrity": "sha512-4DHieyh24o8TJGSj/j1aINrLtYO2Pj9NZa3kqY1lKT0kZcIOkFMJoOsPiLPqVFpAC0RRONoBxni+d48gRyH5SQ==",
+ "integrity":
+ "sha512-4DHieyh24o8TJGSj/j1aINrLtYO2Pj9NZa3kqY1lKT0kZcIOkFMJoOsPiLPqVFpAC0RRONoBxni+d48gRyH5SQ==",
"requires": {
- "async": "^2.5.0",
- "bignumber.js": "^4.1.0",
- "crypto-js": "^3.1.9-1",
- "xmlhttprequest": "^1.8.0"
+ "async": "2.6.1",
+ "bignumber.js": "4.1.0",
+ "crypto-js": "3.1.9-1",
+ "xmlhttprequest": "1.8.0"
}
},
"ipaddr.js": {
@@ -6204,7 +6787,7 @@
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -6213,7 +6796,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -6221,15 +6804,17 @@
"is-alphabetical": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz",
- "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg=="
+ "integrity":
+ "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg=="
},
"is-alphanumerical": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz",
- "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==",
+ "integrity":
+ "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==",
"requires": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
+ "is-alphabetical": "1.0.2",
+ "is-decimal": "1.0.2"
}
},
"is-arrayish": {
@@ -6244,13 +6829,14 @@
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
"requires": {
- "binary-extensions": "^1.0.0"
+ "binary-extensions": "1.12.0"
}
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "integrity":
+ "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-builtin-module": {
"version": "1.0.0",
@@ -6258,22 +6844,24 @@
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
- "builtin-modules": "^1.0.0"
+ "builtin-modules": "1.1.1"
}
},
"is-callable": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
- "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "integrity":
+ "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
"dev": true
},
"is-ci": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
- "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "integrity":
+ "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
"dev": true,
"requires": {
- "ci-info": "^1.5.0"
+ "ci-info": "1.6.0"
}
},
"is-data-descriptor": {
@@ -6282,7 +6870,7 @@
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -6291,7 +6879,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -6305,23 +6893,26 @@
"is-decimal": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
- "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg=="
+ "integrity":
+ "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg=="
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "integrity":
+ "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
},
"dependencies": {
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "integrity":
+ "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
"dev": true
}
}
@@ -6344,7 +6935,7 @@
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
"dev": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"is-fullwidth-code-point": {
@@ -6352,7 +6943,7 @@
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"is-glob": {
@@ -6361,13 +6952,14 @@
"integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
"dev": true,
"requires": {
- "is-extglob": "^2.1.1"
+ "is-extglob": "2.1.1"
}
},
"is-hexadecimal": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz",
- "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A=="
+ "integrity":
+ "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A=="
},
"is-installed-globally": {
"version": "0.1.0",
@@ -6375,8 +6967,8 @@
"integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
"dev": true,
"requires": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
+ "global-dirs": "0.1.1",
+ "is-path-inside": "1.0.1"
}
},
"is-npm": {
@@ -6391,7 +6983,7 @@
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -6400,7 +6992,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -6417,7 +7009,7 @@
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"dev": true,
"requires": {
- "path-is-inside": "^1.0.1"
+ "path-is-inside": "1.0.2"
}
},
"is-plain-obj": {
@@ -6428,10 +7020,11 @@
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "integrity":
+ "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
"requires": {
- "isobject": "^3.0.1"
+ "isobject": "3.0.1"
}
},
"is-promise": {
@@ -6452,7 +7045,7 @@
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
"dev": true,
"requires": {
- "has": "^1.0.1"
+ "has": "1.0.3"
}
},
"is-retry-allowed": {
@@ -6464,7 +7057,8 @@
"is-root": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-root/-/is-root-2.0.0.tgz",
- "integrity": "sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg==",
+ "integrity":
+ "sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg==",
"dev": true
},
"is-stream": {
@@ -6475,10 +7069,11 @@
"is-symbol": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
- "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "integrity":
+ "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
"dev": true,
"requires": {
- "has-symbols": "^1.0.0"
+ "has-symbols": "1.0.0"
}
},
"is-typedarray": {
@@ -6496,18 +7091,21 @@
"is-whitespace-character": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz",
- "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ=="
+ "integrity":
+ "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ=="
},
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "integrity":
+ "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
"is-word-character": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz",
- "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA=="
+ "integrity":
+ "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA=="
},
"is-wsl": {
"version": "1.1.0",
@@ -6523,10 +7121,11 @@
"isbinaryfile": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
- "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+ "integrity":
+ "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
"dev": true,
"requires": {
- "buffer-alloc": "^1.2.0"
+ "buffer-alloc": "1.2.0"
}
},
"iserror": {
@@ -6551,8 +7150,8 @@
"resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
"integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
"requires": {
- "node-fetch": "^1.0.1",
- "whatwg-fetch": ">=0.10.0"
+ "node-fetch": "1.7.3",
+ "whatwg-fetch": "3.0.0"
}
},
"isstream": {
@@ -6564,21 +7163,24 @@
"js-levenshtein": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz",
- "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==",
+ "integrity":
+ "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==",
"dev": true
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ "integrity":
+ "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"js-yaml": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
- "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+ "integrity":
+ "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
"requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "argparse": "1.0.10",
+ "esprima": "4.0.1"
}
},
"jsbn": {
@@ -6596,7 +7198,8 @@
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "integrity":
+ "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
"json-schema": {
@@ -6625,7 +7228,7 @@
},
"json5": {
"version": "0.5.1",
- "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
"dev": true
},
@@ -6634,7 +7237,7 @@
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"requires": {
- "graceful-fs": "^4.1.6"
+ "graceful-fs": "4.1.11"
}
},
"jsonify": {
@@ -6658,12 +7261,14 @@
"jsqr": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.1.1.tgz",
- "integrity": "sha512-FVoMU2ncTyjaOqN/vwvDnZ7jaAVvFzM3LK3vG3jvQZFWJQlAwJ1XTCOgAEKo+4Rkd6ydMXTTvqGV/4w5VunmTw=="
+ "integrity":
+ "sha512-FVoMU2ncTyjaOqN/vwvDnZ7jaAVvFzM3LK3vG3jvQZFWJQlAwJ1XTCOgAEKo+4Rkd6ydMXTTvqGV/4w5VunmTw=="
},
"kdbxweb": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/kdbxweb/-/kdbxweb-1.2.4.tgz",
- "integrity": "sha512-n5ls0UtwcN+N2lalDP/ULDX9AhV37cNAnxKGjpnqOZL3OmTMnbVW01wGwWxZpdxRBOxUIQZ4w7dNlQFbngrtbA==",
+ "integrity":
+ "sha512-n5ls0UtwcN+N2lalDP/ULDX9AhV37cNAnxKGjpnqOZL3OmTMnbVW01wGwWxZpdxRBOxUIQZ4w7dNlQFbngrtbA==",
"requires": {
"pako": "github:keeweb/pako#653c0b00d8941c89d09ed4546d2179001ec44efc",
"text-encoding": "github:keeweb/text-encoding#4dfb7cb0954c222852092f8b06ae4f6b4f60bfbb",
@@ -6685,9 +7290,9 @@
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
+ "kind-of": "3.1.0",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
}
},
"amdefine": {
@@ -6710,8 +7315,8 @@
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz",
"integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=",
"requires": {
- "arrify": "^1.0.0",
- "micromatch": "^2.1.5"
+ "arrify": "1.0.1",
+ "micromatch": "2.3.11"
}
},
"argparse": {
@@ -6719,7 +7324,7 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
"integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
"requires": {
- "sprintf-js": "~1.0.2"
+ "sprintf-js": "1.0.3"
}
},
"arr-diff": {
@@ -6727,7 +7332,7 @@
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"requires": {
- "arr-flatten": "^1.0.1"
+ "arr-flatten": "1.0.1"
}
},
"arr-flatten": {
@@ -6768,7 +7373,7 @@
"resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz",
"integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=",
"requires": {
- "lodash": "^4.14.0"
+ "lodash": "4.17.4"
}
},
"async-each": {
@@ -6812,7 +7417,7 @@
"integrity": "sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=",
"optional": true,
"requires": {
- "tweetnacl": "^0.14.3"
+ "tweetnacl": "0.14.5"
}
},
"big.js": {
@@ -6830,7 +7435,7 @@
"resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz",
"integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=",
"requires": {
- "readable-stream": "~2.0.5"
+ "readable-stream": "2.0.6"
}
},
"boom": {
@@ -6838,7 +7443,7 @@
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"requires": {
- "hoek": "2.x.x"
+ "hoek": "2.16.3"
}
},
"brace-expansion": {
@@ -6846,7 +7451,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
"integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=",
"requires": {
- "balanced-match": "^0.4.1",
+ "balanced-match": "0.4.2",
"concat-map": "0.0.1"
}
},
@@ -6855,9 +7460,9 @@
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
}
},
"browser-stdout": {
@@ -6870,7 +7475,7 @@
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz",
"integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=",
"requires": {
- "inherits": "^2.0.1"
+ "inherits": "2.0.3"
}
},
"browserify-zlib": {
@@ -6878,7 +7483,7 @@
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
"integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
"requires": {
- "pako": "~0.2.0"
+ "pako": "0.2.9"
},
"dependencies": {
"pako": {
@@ -6893,9 +7498,9 @@
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
+ "base64-js": "1.2.0",
+ "ieee754": "1.1.8",
+ "isarray": "1.0.0"
}
},
"buffer-shims": {
@@ -6923,8 +7528,8 @@
"resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
"integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
"requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
}
},
"chalk": {
@@ -6932,11 +7537,11 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"chokidar": {
@@ -6944,15 +7549,15 @@
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz",
"integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=",
"requires": {
- "anymatch": "^1.3.0",
- "async-each": "^1.0.0",
- "fsevents": "^1.0.0",
- "glob-parent": "^2.0.0",
- "inherits": "^2.0.1",
- "is-binary-path": "^1.0.0",
- "is-glob": "^2.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.0.0"
+ "anymatch": "1.3.0",
+ "async-each": "1.0.1",
+ "fsevents": "1.0.17",
+ "glob-parent": "2.0.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "2.0.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0"
}
},
"cli": {
@@ -6961,7 +7566,7 @@
"integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
"requires": {
"exit": "0.1.2",
- "glob": "^7.1.1"
+ "glob": "7.1.1"
},
"dependencies": {
"glob": {
@@ -6969,12 +7574,12 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
"integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
}
}
@@ -6984,8 +7589,8 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
"integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
"requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
"wordwrap": "0.0.2"
},
"dependencies": {
@@ -7006,7 +7611,7 @@
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
"requires": {
- "delayed-stream": "~1.0.0"
+ "delayed-stream": "1.0.0"
}
},
"commander": {
@@ -7014,7 +7619,7 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
"integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
"requires": {
- "graceful-readlink": ">= 1.0.0"
+ "graceful-readlink": "1.0.1"
}
},
"concat-map": {
@@ -7027,7 +7632,7 @@
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
"integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
"requires": {
- "date-now": "^0.1.4"
+ "date-now": "0.1.4"
}
},
"constants-browserify": {
@@ -7057,7 +7662,7 @@
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"requires": {
- "boom": "2.x.x"
+ "boom": "2.10.1"
}
},
"crypto-browserify": {
@@ -7076,7 +7681,7 @@
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -7124,8 +7729,8 @@
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
"requires": {
- "domelementtype": "~1.1.1",
- "entities": "~1.1.1"
+ "domelementtype": "1.1.3",
+ "entities": "1.1.1"
},
"dependencies": {
"domelementtype": {
@@ -7155,7 +7760,7 @@
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
"integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
"requires": {
- "domelementtype": "1"
+ "domelementtype": "1.3.0"
}
},
"domutils": {
@@ -7163,8 +7768,8 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"requires": {
- "dom-serializer": "0",
- "domelementtype": "1"
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
}
},
"ecc-jsbn": {
@@ -7173,7 +7778,7 @@
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"optional": true,
"requires": {
- "jsbn": "~0.1.0"
+ "jsbn": "0.1.0"
}
},
"emojis-list": {
@@ -7186,9 +7791,9 @@
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
"integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
"requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.2.0",
- "tapable": "^0.1.8"
+ "graceful-fs": "4.1.11",
+ "memory-fs": "0.2.0",
+ "tapable": "0.1.10"
},
"dependencies": {
"memory-fs": {
@@ -7208,7 +7813,7 @@
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
"integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
"requires": {
- "prr": "~0.0.0"
+ "prr": "0.0.0"
}
},
"escape-string-regexp": {
@@ -7221,11 +7826,11 @@
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
"integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
"requires": {
- "esprima": "^2.7.1",
- "estraverse": "^1.9.1",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.2.0"
+ "esprima": "2.7.3",
+ "estraverse": "1.9.3",
+ "esutils": "2.0.2",
+ "optionator": "0.8.2",
+ "source-map": "0.2.0"
},
"dependencies": {
"source-map": {
@@ -7234,7 +7839,7 @@
"integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
"optional": true,
"requires": {
- "amdefine": ">=0.0.4"
+ "amdefine": "1.0.1"
}
}
}
@@ -7269,7 +7874,7 @@
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"requires": {
- "is-posix-bracket": "^0.1.0"
+ "is-posix-bracket": "0.1.1"
}
},
"expand-range": {
@@ -7277,7 +7882,7 @@
"resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"requires": {
- "fill-range": "^2.1.0"
+ "fill-range": "2.2.3"
}
},
"expect.js": {
@@ -7290,8 +7895,8 @@
"resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.3.tgz",
"integrity": "sha1-V9x4kX9wm5byR/qR5ptVTIVQE8g=",
"requires": {
- "loader-utils": "0.2.x",
- "source-map": "0.1.x"
+ "loader-utils": "0.2.16",
+ "source-map": "0.1.43"
}
},
"extend": {
@@ -7304,7 +7909,7 @@
"resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
},
"extsprintf": {
@@ -7327,11 +7932,11 @@
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
"integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
"requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^1.1.3",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.6",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
}
},
"for-in": {
@@ -7344,7 +7949,7 @@
"resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz",
"integrity": "sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=",
"requires": {
- "for-in": "^0.1.5"
+ "for-in": "0.1.6"
}
},
"forever-agent": {
@@ -7357,9 +7962,9 @@
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz",
"integrity": "sha1-bwrrrcxdoWwT4ezBETfYX5uIOyU=",
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.5",
- "mime-types": "^2.1.11"
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.14"
}
},
"fs-walk": {
@@ -7367,7 +7972,7 @@
"resolved": "https://registry.npmjs.org/fs-walk/-/fs-walk-0.0.1.tgz",
"integrity": "sha1-9/yRw64e6tB8mYvF0N1B8tvr0zU=",
"requires": {
- "async": "*"
+ "async": "2.1.4"
}
},
"fs.realpath": {
@@ -7381,8 +7986,8 @@
"integrity": "sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=",
"optional": true,
"requires": {
- "nan": "^2.3.0",
- "node-pre-gyp": "^0.6.29"
+ "nan": "2.5.1",
+ "node-pre-gyp": "0.6.32"
},
"dependencies": {
"abbrev": {
@@ -7394,7 +7999,8 @@
"ansi-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
- "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc="
+ "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=",
+ "optional": true
},
"ansi-styles": {
"version": "2.2.1",
@@ -7414,8 +8020,8 @@
"integrity": "sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=",
"optional": true,
"requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.0 || ^1.1.13"
+ "delegates": "1.0.0",
+ "readable-stream": "2.2.2"
}
},
"asn1": {
@@ -7459,23 +8065,25 @@
"integrity": "sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=",
"optional": true,
"requires": {
- "tweetnacl": "^0.14.3"
+ "tweetnacl": "0.14.5"
}
},
"block-stream": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "optional": true,
"requires": {
- "inherits": "~2.0.0"
+ "inherits": "2.0.3"
}
},
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "optional": true,
"requires": {
- "hoek": "2.x.x"
+ "hoek": "2.16.3"
}
},
"brace-expansion": {
@@ -7483,14 +8091,15 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
"integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=",
"requires": {
- "balanced-match": "^0.4.1",
+ "balanced-match": "0.4.2",
"concat-map": "0.0.1"
}
},
"buffer-shims": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
- "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
+ "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=",
+ "optional": true
},
"caseless": {
"version": "0.11.0",
@@ -7504,11 +8113,11 @@
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"optional": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
},
"dependencies": {
"supports-color": {
@@ -7522,14 +8131,16 @@
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "optional": true
},
"combined-stream": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "optional": true,
"requires": {
- "delayed-stream": "~1.0.0"
+ "delayed-stream": "1.0.0"
}
},
"commander": {
@@ -7538,7 +8149,7 @@
"integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
"optional": true,
"requires": {
- "graceful-readlink": ">= 1.0.0"
+ "graceful-readlink": "1.0.1"
}
},
"concat-map": {
@@ -7548,13 +8159,16 @@
},
"console-control-strings": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ "resolved":
+ "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "optional": true
},
"cryptiles": {
"version": "2.0.5",
@@ -7562,7 +8176,7 @@
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"optional": true,
"requires": {
- "boom": "2.x.x"
+ "boom": "2.10.1"
}
},
"dashdash": {
@@ -7571,7 +8185,7 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"optional": true,
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -7600,7 +8214,8 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "optional": true
},
"delegates": {
"version": "1.0.0",
@@ -7614,12 +8229,13 @@
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"optional": true,
"requires": {
- "jsbn": "~0.1.0"
+ "jsbn": "0.1.0"
}
},
"escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "resolved":
+ "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"optional": true
},
@@ -7632,7 +8248,8 @@
"extsprintf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
- "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA="
+ "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
+ "optional": true
},
"forever-agent": {
"version": "0.6.1",
@@ -7646,9 +8263,9 @@
"integrity": "sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=",
"optional": true,
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.5",
- "mime-types": "^2.1.12"
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.13"
}
},
"fs.realpath": {
@@ -7660,11 +8277,12 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz",
"integrity": "sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=",
+ "optional": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.5.4"
}
},
"fstream-ignore": {
@@ -7673,9 +8291,9 @@
"integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=",
"optional": true,
"requires": {
- "fstream": "^1.0.0",
- "inherits": "2",
- "minimatch": "^3.0.0"
+ "fstream": "1.0.10",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3"
}
},
"gauge": {
@@ -7684,15 +8302,15 @@
"integrity": "sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=",
"optional": true,
"requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "supports-color": "^0.2.0",
- "wide-align": "^1.1.0"
+ "aproba": "1.0.4",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.0",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "supports-color": "0.2.0",
+ "wide-align": "1.1.0"
}
},
"generate-function": {
@@ -7703,11 +8321,12 @@
},
"generate-object-property": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"optional": true,
"requires": {
- "is-property": "^1.0.0"
+ "is-property": "1.0.2"
}
},
"getpass": {
@@ -7716,7 +8335,7 @@
"integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=",
"optional": true,
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -7732,18 +8351,19 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
"integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "optional": true
},
"graceful-readlink": {
"version": "1.0.1",
@@ -7757,10 +8377,10 @@
"integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
"optional": true,
"requires": {
- "chalk": "^1.1.1",
- "commander": "^2.9.0",
- "is-my-json-valid": "^2.12.4",
- "pinkie-promise": "^2.0.0"
+ "chalk": "1.1.3",
+ "commander": "2.9.0",
+ "is-my-json-valid": "2.15.0",
+ "pinkie-promise": "2.0.1"
}
},
"has-ansi": {
@@ -7769,7 +8389,7 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"optional": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.0.0"
}
},
"has-unicode": {
@@ -7784,16 +8404,17 @@
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"optional": true,
"requires": {
- "boom": "2.x.x",
- "cryptiles": "2.x.x",
- "hoek": "2.x.x",
- "sntp": "1.x.x"
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
}
},
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+ "optional": true
},
"http-signature": {
"version": "1.1.1",
@@ -7801,9 +8422,9 @@
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"optional": true,
"requires": {
- "assert-plus": "^0.2.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
+ "assert-plus": "0.2.0",
+ "jsprim": "1.3.1",
+ "sshpk": "1.10.1"
}
},
"inflight": {
@@ -7811,8 +8432,8 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
"inherits": {
@@ -7828,10 +8449,12 @@
},
"is-fullwidth-code-point": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "optional": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"is-my-json-valid": {
@@ -7840,10 +8463,10 @@
"integrity": "sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=",
"optional": true,
"requires": {
- "generate-function": "^2.0.0",
- "generate-object-property": "^1.1.0",
- "jsonpointer": "^4.0.0",
- "xtend": "^4.0.0"
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.1"
}
},
"is-property": {
@@ -7861,7 +8484,8 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "optional": true
},
"isstream": {
"version": "0.1.2",
@@ -7875,7 +8499,7 @@
"integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=",
"optional": true,
"requires": {
- "jsbn": "~0.1.0"
+ "jsbn": "0.1.0"
}
},
"jsbn": {
@@ -7892,7 +8516,8 @@
},
"json-stringify-safe": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "resolved":
+ "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"optional": true
},
@@ -7916,14 +8541,16 @@
"mime-db": {
"version": "1.25.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.25.0.tgz",
- "integrity": "sha1-wY29fHOl2/b0SgJNwNFloeexw5I="
+ "integrity": "sha1-wY29fHOl2/b0SgJNwNFloeexw5I=",
+ "optional": true
},
"mime-types": {
"version": "2.1.13",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.13.tgz",
"integrity": "sha1-4HqqnGxrmnyjASxpADrSWjnpKog=",
+ "optional": true,
"requires": {
- "mime-db": "~1.25.0"
+ "mime-db": "1.25.0"
}
},
"minimatch": {
@@ -7931,18 +8558,20 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=",
"requires": {
- "brace-expansion": "^1.0.0"
+ "brace-expansion": "1.1.6"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "optional": true
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -7959,15 +8588,15 @@
"integrity": "sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=",
"optional": true,
"requires": {
- "mkdirp": "~0.5.1",
- "nopt": "~3.0.6",
- "npmlog": "^4.0.1",
- "rc": "~1.1.6",
- "request": "^2.79.0",
- "rimraf": "~2.5.4",
- "semver": "~5.3.0",
- "tar": "~2.2.1",
- "tar-pack": "~3.3.0"
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "npmlog": "4.0.2",
+ "rc": "1.1.6",
+ "request": "2.79.0",
+ "rimraf": "2.5.4",
+ "semver": "5.3.0",
+ "tar": "2.2.1",
+ "tar-pack": "3.3.0"
}
},
"nopt": {
@@ -7976,7 +8605,7 @@
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"optional": true,
"requires": {
- "abbrev": "1"
+ "abbrev": "1.0.9"
}
},
"npmlog": {
@@ -7985,16 +8614,17 @@
"integrity": "sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=",
"optional": true,
"requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.1",
- "set-blocking": "~2.0.0"
+ "are-we-there-yet": "1.1.2",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.2",
+ "set-blocking": "2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "optional": true
},
"oauth-sign": {
"version": "0.8.2",
@@ -8013,7 +8643,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"path-is-absolute": {
@@ -8033,13 +8663,15 @@
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"optional": true,
"requires": {
- "pinkie": "^2.0.0"
+ "pinkie": "2.0.4"
}
},
"process-nextick-args": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
+ "resolved":
+ "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "optional": true
},
"punycode": {
"version": "1.4.1",
@@ -8059,10 +8691,10 @@
"integrity": "sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=",
"optional": true,
"requires": {
- "deep-extend": "~0.4.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~1.0.4"
+ "deep-extend": "0.4.1",
+ "ini": "1.3.4",
+ "minimist": "1.2.0",
+ "strip-json-comments": "1.0.4"
},
"dependencies": {
"minimist": {
@@ -8079,13 +8711,13 @@
"integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=",
"optional": true,
"requires": {
- "buffer-shims": "^1.0.0",
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
}
},
"request": {
@@ -8094,26 +8726,26 @@
"integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
"optional": true,
"requires": {
- "aws-sign2": "~0.6.0",
- "aws4": "^1.2.1",
- "caseless": "~0.11.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.0",
- "forever-agent": "~0.6.1",
- "form-data": "~2.1.1",
- "har-validator": "~2.0.6",
- "hawk": "~3.1.3",
- "http-signature": "~1.1.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.7",
- "oauth-sign": "~0.8.1",
- "qs": "~6.3.0",
- "stringstream": "~0.0.4",
- "tough-cookie": "~2.3.0",
- "tunnel-agent": "~0.4.1",
- "uuid": "^3.0.0"
+ "aws-sign2": "0.6.0",
+ "aws4": "1.5.0",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.0",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.2",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.13",
+ "oauth-sign": "0.8.2",
+ "qs": "6.3.0",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.2",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.0.1"
}
},
"rimraf": {
@@ -8121,7 +8753,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz",
"integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=",
"requires": {
- "glob": "^7.0.5"
+ "glob": "7.1.1"
}
},
"semver": {
@@ -8148,7 +8780,7 @@
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"optional": true,
"requires": {
- "hoek": "2.x.x"
+ "hoek": "2.16.3"
}
},
"sshpk": {
@@ -8157,15 +8789,15 @@
"integrity": "sha1-MOGl0ykkSXShr2FREznVla9mOLA=",
"optional": true,
"requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jodid25519": "^1.0.0",
- "jsbn": "~0.1.0",
- "tweetnacl": "~0.14.0"
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.0",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.6",
+ "jodid25519": "1.0.2",
+ "jsbn": "0.1.0",
+ "tweetnacl": "0.14.5"
},
"dependencies": {
"assert-plus": {
@@ -8180,16 +8812,18 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "optional": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "optional": true
},
"stringstream": {
"version": "0.0.5",
@@ -8201,13 +8835,15 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "optional": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.0.0"
}
},
"strip-json-comments": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
+ "resolved":
+ "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
"integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
"optional": true
},
@@ -8221,10 +8857,11 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "optional": true,
"requires": {
- "block-stream": "*",
- "fstream": "^1.0.2",
- "inherits": "2"
+ "block-stream": "0.0.9",
+ "fstream": "1.0.10",
+ "inherits": "2.0.3"
}
},
"tar-pack": {
@@ -8233,14 +8870,14 @@
"integrity": "sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=",
"optional": true,
"requires": {
- "debug": "~2.2.0",
- "fstream": "~1.0.10",
- "fstream-ignore": "~1.0.5",
- "once": "~1.3.3",
- "readable-stream": "~2.1.4",
- "rimraf": "~2.5.1",
- "tar": "~2.2.1",
- "uid-number": "~0.0.6"
+ "debug": "2.2.0",
+ "fstream": "1.0.10",
+ "fstream-ignore": "1.0.5",
+ "once": "1.3.3",
+ "readable-stream": "2.1.5",
+ "rimraf": "2.5.4",
+ "tar": "2.2.1",
+ "uid-number": "0.0.6"
},
"dependencies": {
"once": {
@@ -8249,22 +8886,23 @@
"integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
"optional": true,
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"readable-stream": {
"version": "2.1.5",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
+ "resolved":
+ "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
"integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=",
"optional": true,
"requires": {
- "buffer-shims": "^1.0.0",
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
}
}
}
@@ -8275,7 +8913,7 @@
"integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
"optional": true,
"requires": {
- "punycode": "^1.4.1"
+ "punycode": "1.4.1"
}
},
"tunnel-agent": {
@@ -8299,7 +8937,8 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "optional": true
},
"uuid": {
"version": "3.0.1",
@@ -8322,7 +8961,7 @@
"integrity": "sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=",
"optional": true,
"requires": {
- "string-width": "^1.0.1"
+ "string-width": "1.0.2"
}
},
"wrappy": {
@@ -8345,10 +8984,11 @@
},
"generate-object-property": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"requires": {
- "is-property": "^1.0.0"
+ "is-property": "1.0.2"
}
},
"getpass": {
@@ -8356,7 +8996,7 @@
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz",
"integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=",
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
},
"dependencies": {
"assert-plus": {
@@ -8371,11 +9011,11 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"glob-base": {
@@ -8383,8 +9023,8 @@
"resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"requires": {
- "glob-parent": "^2.0.0",
- "is-glob": "^2.0.0"
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
}
},
"glob-parent": {
@@ -8392,7 +9032,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"requires": {
- "is-glob": "^2.0.0"
+ "is-glob": "2.0.1"
}
},
"graceful-fs": {
@@ -8415,10 +9055,10 @@
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.6.tgz",
"integrity": "sha1-LORISFBTf5yXqAJtU5m5NcTtTtc=",
"requires": {
- "async": "^1.4.0",
- "optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
+ "async": "1.5.2",
+ "optimist": "0.6.1",
+ "source-map": "0.4.4",
+ "uglify-js": "2.7.5"
},
"dependencies": {
"async": {
@@ -8431,7 +9071,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"requires": {
- "amdefine": ">=0.0.4"
+ "amdefine": "1.0.1"
}
}
}
@@ -8441,10 +9081,10 @@
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
"integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
"requires": {
- "chalk": "^1.1.1",
- "commander": "^2.9.0",
- "is-my-json-valid": "^2.12.4",
- "pinkie-promise": "^2.0.0"
+ "chalk": "1.1.3",
+ "commander": "2.9.0",
+ "is-my-json-valid": "2.15.0",
+ "pinkie-promise": "2.0.1"
}
},
"has-ansi": {
@@ -8452,7 +9092,7 @@
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"has-flag": {
@@ -8465,10 +9105,10 @@
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"requires": {
- "boom": "2.x.x",
- "cryptiles": "2.x.x",
- "hoek": "2.x.x",
- "sntp": "1.x.x"
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
}
},
"hoek": {
@@ -8481,11 +9121,11 @@
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"requires": {
- "domelementtype": "1",
- "domhandler": "2.3",
- "domutils": "1.5",
- "entities": "1.0",
- "readable-stream": "1.1"
+ "domelementtype": "1.3.0",
+ "domhandler": "2.3.0",
+ "domutils": "1.5.1",
+ "entities": "1.0.0",
+ "readable-stream": "1.1.14"
},
"dependencies": {
"isarray": {
@@ -8498,10 +9138,10 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
}
}
@@ -8511,9 +9151,9 @@
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"requires": {
- "assert-plus": "^0.2.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
+ "assert-plus": "0.2.0",
+ "jsprim": "1.3.1",
+ "sshpk": "1.10.2"
}
},
"https-browserify": {
@@ -8536,8 +9176,8 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
"inherits": {
@@ -8555,7 +9195,7 @@
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"requires": {
- "binary-extensions": "^1.0.0"
+ "binary-extensions": "1.8.0"
}
},
"is-buffer": {
@@ -8573,7 +9213,7 @@
"resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
"integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"requires": {
- "is-primitive": "^2.0.0"
+ "is-primitive": "2.0.0"
}
},
"is-extendable": {
@@ -8591,7 +9231,7 @@
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
},
"is-my-json-valid": {
@@ -8599,10 +9239,10 @@
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz",
"integrity": "sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=",
"requires": {
- "generate-function": "^2.0.0",
- "generate-object-property": "^1.1.0",
- "jsonpointer": "^4.0.0",
- "xtend": "^4.0.0"
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.1"
}
},
"is-number": {
@@ -8610,7 +9250,7 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.1.0"
}
},
"is-posix-bracket": {
@@ -8661,20 +9301,20 @@
"resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
"integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
"requires": {
- "abbrev": "1.0.x",
- "async": "1.x",
- "escodegen": "1.8.x",
- "esprima": "2.7.x",
- "glob": "^5.0.15",
- "handlebars": "^4.0.1",
- "js-yaml": "3.x",
- "mkdirp": "0.5.x",
- "nopt": "3.x",
- "once": "1.x",
- "resolve": "1.1.x",
- "supports-color": "^3.1.0",
- "which": "^1.1.1",
- "wordwrap": "^1.0.0"
+ "abbrev": "1.0.9",
+ "async": "1.5.2",
+ "escodegen": "1.8.1",
+ "esprima": "2.7.3",
+ "glob": "5.0.15",
+ "handlebars": "4.0.6",
+ "js-yaml": "3.6.1",
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "once": "1.4.0",
+ "resolve": "1.1.7",
+ "supports-color": "3.2.3",
+ "which": "1.2.12",
+ "wordwrap": "1.0.0"
},
"dependencies": {
"async": {
@@ -8687,7 +9327,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"requires": {
- "has-flag": "^1.0.0"
+ "has-flag": "1.0.0"
}
}
}
@@ -8698,7 +9338,7 @@
"integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=",
"optional": true,
"requires": {
- "jsbn": "~0.1.0"
+ "jsbn": "0.1.0"
}
},
"js-yaml": {
@@ -8706,8 +9346,8 @@
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz",
"integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=",
"requires": {
- "argparse": "^1.0.7",
- "esprima": "^2.6.0"
+ "argparse": "1.0.9",
+ "esprima": "2.7.3"
}
},
"jsbn": {
@@ -8721,14 +9361,14 @@
"resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.4.tgz",
"integrity": "sha1-XjupeEjVKQJz21FK7kf+JM9ZKTQ=",
"requires": {
- "cli": "~1.0.0",
- "console-browserify": "1.1.x",
- "exit": "0.1.x",
- "htmlparser2": "3.8.x",
- "lodash": "3.7.x",
- "minimatch": "~3.0.2",
- "shelljs": "0.3.x",
- "strip-json-comments": "1.0.x"
+ "cli": "1.0.1",
+ "console-browserify": "1.1.0",
+ "exit": "0.1.2",
+ "htmlparser2": "3.8.3",
+ "lodash": "3.7.0",
+ "minimatch": "3.0.3",
+ "shelljs": "0.3.0",
+ "strip-json-comments": "1.0.4"
},
"dependencies": {
"lodash": {
@@ -8743,14 +9383,15 @@
"resolved": "https://registry.npmjs.org/jshint-loader/-/jshint-loader-0.8.3.tgz",
"integrity": "sha1-ahbOiH5NLxuvveBXXjwQ970uaUs=",
"requires": {
- "loader-utils": "0.2.x",
- "rcloader": "=0.1.2",
- "strip-json-comments": "0.1.x"
+ "loader-utils": "0.2.16",
+ "rcloader": "0.1.2",
+ "strip-json-comments": "0.1.3"
},
"dependencies": {
"strip-json-comments": {
"version": "0.1.3",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz",
+ "resolved":
+ "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz",
"integrity": "sha1-Fkxk43Coo8wAyeAbU55WmCPw7lQ="
}
}
@@ -8795,7 +9436,7 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz",
"integrity": "sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=",
"requires": {
- "is-buffer": "^1.0.2"
+ "is-buffer": "1.1.4"
}
},
"lazy-cache": {
@@ -8813,8 +9454,8 @@
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
}
},
"loader-utils": {
@@ -8822,10 +9463,10 @@
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.16.tgz",
"integrity": "sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=",
"requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
+ "big.js": "3.1.3",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1",
+ "object-assign": "4.1.1"
}
},
"lodash": {
@@ -8838,8 +9479,8 @@
"resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
"integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
"requires": {
- "lodash._basecopy": "^3.0.0",
- "lodash.keys": "^3.0.0"
+ "lodash._basecopy": "3.0.1",
+ "lodash.keys": "3.1.2"
}
},
"lodash._basecopy": {
@@ -8872,9 +9513,9 @@
"resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz",
"integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=",
"requires": {
- "lodash._baseassign": "^3.0.0",
- "lodash._basecreate": "^3.0.0",
- "lodash._isiterateecall": "^3.0.0"
+ "lodash._baseassign": "3.2.0",
+ "lodash._basecreate": "3.0.3",
+ "lodash._isiterateecall": "3.0.9"
}
},
"lodash.isarguments": {
@@ -8892,9 +9533,9 @@
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
"integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
"requires": {
- "lodash._getnative": "^3.0.0",
- "lodash.isarguments": "^3.0.0",
- "lodash.isarray": "^3.0.0"
+ "lodash._getnative": "3.9.1",
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
}
},
"log-driver": {
@@ -8912,8 +9553,8 @@
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz",
"integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
"requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
+ "errno": "0.1.4",
+ "readable-stream": "2.0.6"
}
},
"micromatch": {
@@ -8921,19 +9562,19 @@
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.0",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.1.0",
+ "normalize-path": "2.0.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.3"
}
},
"mime-db": {
@@ -8946,7 +9587,7 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz",
"integrity": "sha1-9+99l1g/yvO30oK2+LVnnaselO4=",
"requires": {
- "mime-db": "~1.26.0"
+ "mime-db": "1.26.0"
}
},
"minimatch": {
@@ -8954,7 +9595,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=",
"requires": {
- "brace-expansion": "^1.0.0"
+ "brace-expansion": "1.1.6"
}
},
"minimist": {
@@ -9000,12 +9641,12 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz",
"integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=",
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"supports-color": {
@@ -9013,7 +9654,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
"integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
"requires": {
- "has-flag": "^1.0.0"
+ "has-flag": "1.0.0"
}
}
}
@@ -9034,28 +9675,28 @@
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz",
"integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
"requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.1.4",
- "buffer": "^4.9.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
+ "assert": "1.4.1",
+ "browserify-zlib": "0.1.4",
+ "buffer": "4.9.1",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
"crypto-browserify": "3.3.0",
- "domain-browser": "^1.1.1",
- "events": "^1.0.0",
+ "domain-browser": "1.1.7",
+ "events": "1.1.1",
"https-browserify": "0.0.1",
- "os-browserify": "^0.2.0",
+ "os-browserify": "0.2.1",
"path-browserify": "0.0.0",
- "process": "^0.11.0",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.0.5",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.3.1",
- "string_decoder": "^0.10.25",
- "timers-browserify": "^2.0.2",
+ "process": "0.11.9",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.0.6",
+ "stream-browserify": "2.0.1",
+ "stream-http": "2.6.3",
+ "string_decoder": "0.10.31",
+ "timers-browserify": "2.0.2",
"tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.10.3",
+ "url": "0.11.0",
+ "util": "0.10.3",
"vm-browserify": "0.0.4"
}
},
@@ -9069,7 +9710,7 @@
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"requires": {
- "abbrev": "1"
+ "abbrev": "1.0.9"
}
},
"normalize-path": {
@@ -9092,8 +9733,8 @@
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
"requires": {
- "for-own": "^0.1.4",
- "is-extendable": "^0.1.1"
+ "for-own": "0.1.4",
+ "is-extendable": "0.1.1"
}
},
"once": {
@@ -9101,7 +9742,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"optimist": {
@@ -9109,8 +9750,8 @@
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.3"
},
"dependencies": {
"minimist": {
@@ -9130,12 +9771,12 @@
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
"requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.4",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "wordwrap": "~1.0.0"
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
}
},
"os-browserify": {
@@ -9152,10 +9793,10 @@
"resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"requires": {
- "glob-base": "^0.3.0",
- "is-dotfile": "^1.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.0"
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.2",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
}
},
"path-browserify": {
@@ -9183,7 +9824,7 @@
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"requires": {
- "pinkie": "^2.0.0"
+ "pinkie": "2.0.4"
}
},
"prelude-ls": {
@@ -9236,8 +9877,8 @@
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz",
"integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=",
"requires": {
- "is-number": "^2.0.2",
- "kind-of": "^3.0.2"
+ "is-number": "2.1.0",
+ "kind-of": "3.1.0"
}
},
"rcfinder": {
@@ -9245,7 +9886,7 @@
"resolved": "https://registry.npmjs.org/rcfinder/-/rcfinder-0.1.9.tgz",
"integrity": "sha1-8+gPOH3fmugK4wpBADKWQuroERU=",
"requires": {
- "lodash.clonedeep": "^4.3.2"
+ "lodash.clonedeep": "4.5.0"
}
},
"rcloader": {
@@ -9253,8 +9894,8 @@
"resolved": "https://registry.npmjs.org/rcloader/-/rcloader-0.1.2.tgz",
"integrity": "sha1-oJY6ZDfQnvjLktky0trUl7DRc2w=",
"requires": {
- "lodash": "~2.4.1",
- "rcfinder": "~0.1.6"
+ "lodash": "2.4.2",
+ "rcfinder": "0.1.9"
},
"dependencies": {
"lodash": {
@@ -9269,12 +9910,12 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
}
},
"readdirp": {
@@ -9282,10 +9923,10 @@
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
"integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
"requires": {
- "graceful-fs": "^4.1.2",
- "minimatch": "^3.0.2",
- "readable-stream": "^2.0.2",
- "set-immediate-shim": "^1.0.1"
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.3",
+ "readable-stream": "2.0.6",
+ "set-immediate-shim": "1.0.1"
}
},
"regex-cache": {
@@ -9293,8 +9934,8 @@
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz",
"integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
"requires": {
- "is-equal-shallow": "^0.1.3",
- "is-primitive": "^2.0.0"
+ "is-equal-shallow": "0.1.3",
+ "is-primitive": "2.0.0"
}
},
"repeat-element": {
@@ -9312,27 +9953,27 @@
"resolved": "https://registry.npmjs.org/request/-/request-2.75.0.tgz",
"integrity": "sha1-0rgmiihtoT6qXQGt9dGMyQ9lfZM=",
"requires": {
- "aws-sign2": "~0.6.0",
- "aws4": "^1.2.1",
- "bl": "~1.1.2",
- "caseless": "~0.11.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.0",
- "forever-agent": "~0.6.1",
- "form-data": "~2.0.0",
- "har-validator": "~2.0.6",
- "hawk": "~3.1.3",
- "http-signature": "~1.1.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.7",
- "node-uuid": "~1.4.7",
- "oauth-sign": "~0.8.1",
- "qs": "~6.2.0",
- "stringstream": "~0.0.4",
- "tough-cookie": "~2.3.0",
- "tunnel-agent": "~0.4.1"
+ "aws-sign2": "0.6.0",
+ "aws4": "1.5.0",
+ "bl": "1.1.2",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.0",
+ "forever-agent": "0.6.1",
+ "form-data": "2.0.0",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.14",
+ "node-uuid": "1.4.7",
+ "oauth-sign": "0.8.2",
+ "qs": "6.2.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.2",
+ "tunnel-agent": "0.4.3"
}
},
"resolve": {
@@ -9345,7 +9986,7 @@
"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
"integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
"requires": {
- "align-text": "^0.1.1"
+ "align-text": "0.1.4"
}
},
"rimraf": {
@@ -9353,7 +9994,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz",
"integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=",
"requires": {
- "glob": "^7.0.5"
+ "glob": "7.1.1"
},
"dependencies": {
"glob": {
@@ -9361,12 +10002,12 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
"integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
}
}
@@ -9401,7 +10042,7 @@
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"requires": {
- "hoek": "2.x.x"
+ "hoek": "2.16.3"
}
},
"source-list-map": {
@@ -9414,7 +10055,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"requires": {
- "amdefine": ">=0.0.4"
+ "amdefine": "1.0.1"
}
},
"sprintf-js": {
@@ -9427,15 +10068,15 @@
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz",
"integrity": "sha1-1agEziJpVRVjjnmNviMnPeBwpfo=",
"requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jodid25519": "^1.0.0",
- "jsbn": "~0.1.0",
- "tweetnacl": "~0.14.0"
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.0",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.6",
+ "jodid25519": "1.0.2",
+ "jsbn": "0.1.0",
+ "tweetnacl": "0.14.5"
},
"dependencies": {
"assert-plus": {
@@ -9455,8 +10096,8 @@
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
"integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
"requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
+ "inherits": "2.0.3",
+ "readable-stream": "2.0.6"
}
},
"stream-http": {
@@ -9464,11 +10105,11 @@
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.6.3.tgz",
"integrity": "sha1-TD3b+WNZaOos/U5I1D3l3vJiWsM=",
"requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.1.0",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
+ "builtin-status-codes": "3.0.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.2.2",
+ "to-arraybuffer": "1.0.1",
+ "xtend": "4.0.1"
},
"dependencies": {
"readable-stream": {
@@ -9476,13 +10117,13 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz",
"integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=",
"requires": {
- "buffer-shims": "^1.0.0",
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
}
}
}
@@ -9502,7 +10143,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"strip-json-comments": {
@@ -9529,7 +10170,7 @@
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz",
"integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=",
"requires": {
- "setimmediate": "^1.0.4"
+ "setimmediate": "1.0.5"
}
},
"to-arraybuffer": {
@@ -9542,7 +10183,7 @@
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
"integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
"requires": {
- "punycode": "^1.4.1"
+ "punycode": "1.4.1"
}
},
"tty-browserify": {
@@ -9566,7 +10207,7 @@
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"requires": {
- "prelude-ls": "~1.1.2"
+ "prelude-ls": "1.1.2"
}
},
"uglify-js": {
@@ -9574,10 +10215,10 @@
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz",
"integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
"requires": {
- "async": "~0.2.6",
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
+ "async": "0.2.10",
+ "source-map": "0.5.6",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
},
"dependencies": {
"async": {
@@ -9597,9 +10238,9 @@
"resolved": "https://registry.npmjs.org/uglify-loader/-/uglify-loader-1.4.0.tgz",
"integrity": "sha1-wmlbk0xO2npKzc1LpCWFtjmTA2A=",
"requires": {
- "loader-utils": "^0.2.7",
- "source-map": "^0.5.6",
- "uglify-js": "^2.4.16"
+ "loader-utils": "0.2.16",
+ "source-map": "0.5.6",
+ "uglify-js": "2.7.5"
},
"dependencies": {
"source-map": {
@@ -9671,9 +10312,9 @@
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz",
"integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
"requires": {
- "async": "^0.9.0",
- "chokidar": "^1.0.0",
- "graceful-fs": "^4.1.2"
+ "async": "0.9.2",
+ "chokidar": "1.6.1",
+ "graceful-fs": "4.1.11"
},
"dependencies": {
"async": {
@@ -9688,21 +10329,21 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-1.14.0.tgz",
"integrity": "sha1-VPH/uSBRoyilsgV9auM8KJRiyCM=",
"requires": {
- "acorn": "^3.0.0",
- "async": "^1.3.0",
- "clone": "^1.0.2",
- "enhanced-resolve": "~0.9.0",
- "interpret": "^0.6.4",
- "loader-utils": "^0.2.11",
- "memory-fs": "~0.3.0",
- "mkdirp": "~0.5.0",
- "node-libs-browser": "^0.7.0",
- "optimist": "~0.6.0",
- "supports-color": "^3.1.0",
- "tapable": "~0.1.8",
- "uglify-js": "~2.7.3",
- "watchpack": "^0.2.1",
- "webpack-core": "~0.6.9"
+ "acorn": "3.3.0",
+ "async": "1.5.2",
+ "clone": "1.0.2",
+ "enhanced-resolve": "0.9.1",
+ "interpret": "0.6.6",
+ "loader-utils": "0.2.16",
+ "memory-fs": "0.3.0",
+ "mkdirp": "0.5.1",
+ "node-libs-browser": "0.7.0",
+ "optimist": "0.6.1",
+ "supports-color": "3.2.3",
+ "tapable": "0.1.10",
+ "uglify-js": "2.7.5",
+ "watchpack": "0.2.9",
+ "webpack-core": "0.6.9"
},
"dependencies": {
"async": {
@@ -9715,7 +10356,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"requires": {
- "has-flag": "^1.0.0"
+ "has-flag": "1.0.0"
}
}
}
@@ -9725,8 +10366,8 @@
"resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
"integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
"requires": {
- "source-list-map": "~0.1.7",
- "source-map": "~0.4.1"
+ "source-list-map": "0.1.8",
+ "source-map": "0.4.4"
},
"dependencies": {
"source-map": {
@@ -9734,7 +10375,7 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"requires": {
- "amdefine": ">=0.0.4"
+ "amdefine": "1.0.1"
}
}
}
@@ -9744,7 +10385,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz",
"integrity": "sha1-3me15FAmnxlJCe8j7OTr5Bb6EZI=",
"requires": {
- "isexe": "^1.1.1"
+ "isexe": "1.1.2"
}
},
"window-size": {
@@ -9776,9 +10417,9 @@
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
"integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
"requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
"window-size": "0.1.0"
}
}
@@ -9787,10 +10428,11 @@
"keytar": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/keytar/-/keytar-4.3.0.tgz",
- "integrity": "sha512-pd++/v+fS0LQKmzWlW6R1lziTXFqhfGeS6sYLfuTIqEy2pDzAbjutbSW8f9tnJdEEMn/9XhAQlT34VAtl9h4MQ==",
+ "integrity":
+ "sha512-pd++/v+fS0LQKmzWlW6R1lziTXFqhfGeS6sYLfuTIqEy2pDzAbjutbSW8f9tnJdEEMn/9XhAQlT34VAtl9h4MQ==",
"requires": {
"nan": "2.8.0",
- "prebuild-install": "^5.0.0"
+ "prebuild-install": "5.2.0"
},
"dependencies": {
"nan": {
@@ -9803,7 +10445,8 @@
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "integrity":
+ "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
"dev": true
},
"latest-version": {
@@ -9812,21 +10455,23 @@
"integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
"requires": {
- "package-json": "^4.0.0"
+ "package-json": "4.0.1"
}
},
"lazy-val": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.3.tgz",
- "integrity": "sha512-pjCf3BYk+uv3ZcPzEVM0BFvO9Uw58TmlrU0oG5tTrr9Kcid3+kdKxapH8CjdYmVa2nO5wOoZn2rdvZx2PKj/xg=="
+ "integrity":
+ "sha512-pjCf3BYk+uv3ZcPzEVM0BFvO9Uw58TmlrU0oG5tTrr9Kcid3+kdKxapH8CjdYmVa2nO5wOoZn2rdvZx2PKj/xg=="
},
"lcid": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "integrity":
+ "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
"dev": true,
"requires": {
- "invert-kv": "^2.0.0"
+ "invert-kv": "2.0.0"
}
},
"listr": {
@@ -9835,22 +10480,22 @@
"integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=",
"dev": true,
"requires": {
- "chalk": "^1.1.3",
- "cli-truncate": "^0.2.1",
- "figures": "^1.7.0",
- "indent-string": "^2.1.0",
- "is-promise": "^2.1.0",
- "is-stream": "^1.1.0",
- "listr-silent-renderer": "^1.1.1",
- "listr-update-renderer": "^0.2.0",
- "listr-verbose-renderer": "^0.4.0",
- "log-symbols": "^1.0.2",
- "log-update": "^1.0.2",
- "ora": "^0.2.3",
- "p-map": "^1.1.1",
- "rxjs": "^5.0.0-beta.11",
- "stream-to-observable": "^0.1.0",
- "strip-ansi": "^3.0.1"
+ "chalk": "1.1.3",
+ "cli-truncate": "0.2.1",
+ "figures": "1.7.0",
+ "indent-string": "2.1.0",
+ "is-promise": "2.1.0",
+ "is-stream": "1.1.0",
+ "listr-silent-renderer": "1.1.1",
+ "listr-update-renderer": "0.2.0",
+ "listr-verbose-renderer": "0.4.1",
+ "log-symbols": "1.0.2",
+ "log-update": "1.0.2",
+ "ora": "0.2.3",
+ "p-map": "1.2.0",
+ "rxjs": "5.5.12",
+ "stream-to-observable": "0.1.0",
+ "strip-ansi": "3.0.1"
},
"dependencies": {
"ansi-styles": {
@@ -9861,15 +10506,15 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"indent-string": {
@@ -9878,7 +10523,7 @@
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
- "repeating": "^2.0.0"
+ "repeating": "2.0.1"
}
},
"supports-color": {
@@ -9901,14 +10546,14 @@
"integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=",
"dev": true,
"requires": {
- "chalk": "^1.1.3",
- "cli-truncate": "^0.2.1",
- "elegant-spinner": "^1.0.1",
- "figures": "^1.7.0",
- "indent-string": "^3.0.0",
- "log-symbols": "^1.0.2",
- "log-update": "^1.0.2",
- "strip-ansi": "^3.0.1"
+ "chalk": "1.1.3",
+ "cli-truncate": "0.2.1",
+ "elegant-spinner": "1.0.1",
+ "figures": "1.7.0",
+ "indent-string": "3.2.0",
+ "log-symbols": "1.0.2",
+ "log-update": "1.0.2",
+ "strip-ansi": "3.0.1"
},
"dependencies": {
"ansi-styles": {
@@ -9919,15 +10564,15 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"supports-color": {
@@ -9944,10 +10589,10 @@
"integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=",
"dev": true,
"requires": {
- "chalk": "^1.1.3",
- "cli-cursor": "^1.0.2",
- "date-fns": "^1.27.2",
- "figures": "^1.7.0"
+ "chalk": "1.1.3",
+ "cli-cursor": "1.0.2",
+ "date-fns": "1.29.0",
+ "figures": "1.7.0"
},
"dependencies": {
"ansi-styles": {
@@ -9958,15 +10603,15 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"supports-color": {
@@ -9983,16 +10628,17 @@
"integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
+ "graceful-fs": "4.1.11",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0",
+ "strip-bom": "3.0.0"
}
},
"loader-runner": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz",
- "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==",
+ "integrity":
+ "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==",
"dev": true
},
"loader-utils": {
@@ -10001,9 +10647,9 @@
"integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
"dev": true,
"requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0"
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1"
}
},
"locate-path": {
@@ -10011,19 +10657,21 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
}
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
- "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ "integrity":
+ "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
},
"lodash-es": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.11.tgz",
- "integrity": "sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q=="
+ "integrity":
+ "sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q=="
},
"lodash.camelcase": {
"version": "4.3.0",
@@ -10058,7 +10706,7 @@
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
"dev": true,
"requires": {
- "chalk": "^1.0.0"
+ "chalk": "1.1.3"
},
"dependencies": {
"ansi-styles": {
@@ -10069,15 +10717,15 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"supports-color": {
@@ -10094,22 +10742,24 @@
"integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=",
"dev": true,
"requires": {
- "ansi-escapes": "^1.0.0",
- "cli-cursor": "^1.0.2"
+ "ansi-escapes": "1.4.0",
+ "cli-cursor": "1.0.2"
}
},
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "integrity":
+ "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
+ "js-tokens": "4.0.0"
}
},
"lottie-web": {
"version": "5.3.4",
"resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.3.4.tgz",
- "integrity": "sha512-9vFQlrDskYMTLY5vMmoCO06um6j4X/MocY+CvaMg9QuR1C/ScwvjAx/hy64wUE3JYgUfmex+fNvOCyFwmlKOTA=="
+ "integrity":
+ "sha512-9vFQlrDskYMTLY5vMmoCO06um6j4X/MocY+CvaMg9QuR1C/ScwvjAx/hy64wUE3JYgUfmex+fNvOCyFwmlKOTA=="
},
"loud-rejection": {
"version": "1.6.0",
@@ -10117,8 +10767,8 @@
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
"requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
}
},
"lower-case": {
@@ -10130,21 +10780,24 @@
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "integrity":
+ "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"dev": true
},
"lru-cache": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
- "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+ "integrity":
+ "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
"dev": true,
"requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
}
},
"machine-uuid-sync": {
- "version": "git+https://github.com/rajivshah3/machine-uuid-sync.git#a5ffa8eab86764db0c69aadbeef9a14b2ae9ae5c",
+ "version":
+ "git+https://github.com/rajivshah3/machine-uuid-sync.git#a5ffa8eab86764db0c69aadbeef9a14b2ae9ae5c",
"from": "git+https://github.com/rajivshah3/machine-uuid-sync.git",
"requires": {
"uuid": "^3.1.0"
@@ -10153,18 +10806,20 @@
"make-dir": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "integrity":
+ "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"requires": {
- "pify": "^3.0.0"
+ "pify": "3.0.0"
}
},
"map-age-cleaner": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz",
- "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
+ "integrity":
+ "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
"dev": true,
"requires": {
- "p-defer": "^1.0.0"
+ "p-defer": "1.0.0"
}
},
"map-cache": {
@@ -10185,13 +10840,14 @@
"integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
"dev": true,
"requires": {
- "object-visit": "^1.0.0"
+ "object-visit": "1.0.1"
}
},
"markdown-escapes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz",
- "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA=="
+ "integrity":
+ "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA=="
},
"math-expression-evaluator": {
"version": "1.2.17",
@@ -10201,18 +10857,20 @@
"md5.js": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "integrity":
+ "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
"dev": true,
"requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "hash-base": "3.0.4",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
"mdast-add-list-metadata": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz",
- "integrity": "sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==",
+ "integrity":
+ "sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==",
"requires": {
"unist-util-visit-parents": "1.1.2"
}
@@ -10226,12 +10884,13 @@
"mem": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
- "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+ "integrity":
+ "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
"dev": true,
"requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^1.0.0",
- "p-is-promise": "^1.1.0"
+ "map-age-cleaner": "0.1.2",
+ "mimic-fn": "1.2.0",
+ "p-is-promise": "1.1.0"
}
},
"memory-fs": {
@@ -10240,25 +10899,26 @@
"integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
"dev": true,
"requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
+ "errno": "0.1.7",
+ "readable-stream": "2.3.6"
}
},
"meow": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "integrity":
+ "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
"dev": true,
"requires": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist": "^1.1.3",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0"
+ "camelcase-keys": "4.2.0",
+ "decamelize-keys": "1.1.0",
+ "loud-rejection": "1.6.0",
+ "minimist": "1.2.0",
+ "minimist-options": "3.0.2",
+ "normalize-package-data": "2.4.0",
+ "read-pkg-up": "3.0.0",
+ "redent": "2.0.0",
+ "trim-newlines": "2.0.0"
}
},
"merge-descriptors": {
@@ -10276,70 +10936,78 @@
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "integrity":
+ "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
"dev": true,
"requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
}
},
"miller-rabin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "integrity":
+ "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
"dev": true,
"requires": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0"
}
},
"mime": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
- "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
+ "integrity":
+ "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
"dev": true
},
"mime-db": {
"version": "1.36.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
- "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
+ "integrity":
+ "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
"dev": true
},
"mime-types": {
"version": "2.1.20",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
- "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
+ "integrity":
+ "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"dev": true,
"requires": {
- "mime-db": "~1.36.0"
+ "mime-db": "1.36.0"
}
},
"mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "integrity":
+ "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
},
"mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
+ "integrity":
+ "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
},
"mini-css-extract-plugin": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz",
- "integrity": "sha512-o+Jm+ocb0asEngdM6FsZWtZsRzA8koFUudIDwYUfl94M3PejPHG7Vopw5hN9V8WsMkSFpm3tZP3Fesz89EyrfQ==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz",
+ "integrity":
+ "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==",
"dev": true,
"requires": {
"loader-utils": "^1.1.0",
@@ -10350,7 +11018,8 @@
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "integrity":
+ "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
"dev": true
},
"minimalistic-crypto-utils": {
@@ -10362,33 +11031,36 @@
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "integrity":
+ "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
},
"minimist": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"minimist-options": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
+ "integrity":
+ "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
"dev": true,
"requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
+ "arrify": "1.0.1",
+ "is-plain-obj": "1.1.0"
}
},
"minipass": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
- "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
+ "integrity":
+ "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
+ "safe-buffer": "5.1.2",
+ "yallist": "3.0.2"
},
"dependencies": {
"yallist": {
@@ -10401,27 +11073,29 @@
"minizlib": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.1.tgz",
- "integrity": "sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg==",
+ "integrity":
+ "sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg==",
"requires": {
- "minipass": "^2.2.1"
+ "minipass": "2.3.5"
}
},
"mississippi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
- "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
- "dev": true,
- "requires": {
- "concat-stream": "^1.5.0",
- "duplexify": "^3.4.2",
- "end-of-stream": "^1.1.0",
- "flush-write-stream": "^1.0.0",
- "from2": "^2.1.0",
- "parallel-transform": "^1.1.0",
- "pump": "^2.0.1",
- "pumpify": "^1.3.3",
- "stream-each": "^1.1.0",
- "through2": "^2.0.0"
+ "integrity":
+ "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "1.6.2",
+ "duplexify": "3.6.1",
+ "end-of-stream": "1.4.1",
+ "flush-write-stream": "1.0.3",
+ "from2": "2.3.0",
+ "parallel-transform": "1.1.0",
+ "pump": "2.0.1",
+ "pumpify": "1.5.1",
+ "stream-each": "1.2.3",
+ "through2": "2.0.3"
},
"dependencies": {
"through2": {
@@ -10430,8 +11104,8 @@
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"dev": true,
"requires": {
- "readable-stream": "^2.1.5",
- "xtend": "~4.0.1"
+ "readable-stream": "2.3.6",
+ "xtend": "4.0.1"
}
}
}
@@ -10439,20 +11113,22 @@
"mixin-deep": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
- "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "integrity":
+ "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
"dev": true,
"requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
+ "for-in": "1.0.2",
+ "is-extendable": "1.0.1"
},
"dependencies": {
"is-extendable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "integrity":
+ "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "is-plain-object": "2.0.4"
}
}
}
@@ -10463,8 +11139,8 @@
"integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
"dev": true,
"requires": {
- "for-in": "^0.1.3",
- "is-extendable": "^0.1.1"
+ "for-in": "0.1.8",
+ "is-extendable": "0.1.1"
},
"dependencies": {
"for-in": {
@@ -10477,7 +11153,7 @@
},
"mkdirp": {
"version": "0.5.1",
- "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
@@ -10485,7 +11161,7 @@
"dependencies": {
"minimist": {
"version": "0.0.8",
- "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}
}
@@ -10496,18 +11172,19 @@
"integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
"dev": true,
"requires": {
- "aproba": "^1.1.1",
- "copy-concurrently": "^1.0.0",
- "fs-write-stream-atomic": "^1.0.8",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.3"
+ "aproba": "1.2.0",
+ "copy-concurrently": "1.0.5",
+ "fs-write-stream-atomic": "1.0.10",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "run-queue": "1.0.3"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ "integrity":
+ "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
"mute-stream": {
"version": "0.0.7",
@@ -10518,46 +11195,51 @@
"nan": {
"version": "2.11.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
- "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA=="
+ "integrity":
+ "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA=="
},
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "integrity":
+ "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"dev": true,
"requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "fragment-cache": "0.2.1",
+ "is-windows": "1.0.2",
+ "kind-of": "6.0.2",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
}
},
"napi-build-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz",
- "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA=="
+ "integrity":
+ "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA=="
},
"needle": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz",
- "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==",
+ "integrity":
+ "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==",
"requires": {
- "debug": "^2.1.2",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
+ "debug": "2.6.9",
+ "iconv-lite": "0.4.24",
+ "sax": "1.2.4"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
@@ -10578,71 +11260,78 @@
"neo-async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
- "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+ "integrity":
+ "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
"dev": true
},
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "integrity":
+ "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
"no-case": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
- "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "integrity":
+ "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
"dev": true,
"requires": {
- "lower-case": "^1.1.1"
+ "lower-case": "1.1.4"
}
},
"node-abi": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.5.tgz",
- "integrity": "sha512-aa/UC6Nr3+tqhHGRsAuw/edz7/q9nnetBrKWxj6rpTtm+0X9T1qU7lIEHMS3yN9JwAbRiKUbRRFy1PLz/y3aaA==",
+ "integrity":
+ "sha512-aa/UC6Nr3+tqhHGRsAuw/edz7/q9nnetBrKWxj6rpTtm+0X9T1qU7lIEHMS3yN9JwAbRiKUbRRFy1PLz/y3aaA==",
"requires": {
- "semver": "^5.4.1"
+ "semver": "5.6.0"
}
},
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
- "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "integrity":
+ "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"requires": {
- "encoding": "^0.1.11",
- "is-stream": "^1.0.1"
+ "encoding": "0.1.12",
+ "is-stream": "1.1.0"
}
},
"node-hid": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/node-hid/-/node-hid-0.7.3.tgz",
- "integrity": "sha512-LOCqWqcOlng+Kn1Qj/54zrPVfCagg1O7RlSgMmugykBcoYvUud6BswTrJM2aXuBac+bCCm3lA2srRG8YfmyXZQ==",
+ "integrity":
+ "sha512-LOCqWqcOlng+Kn1Qj/54zrPVfCagg1O7RlSgMmugykBcoYvUud6BswTrJM2aXuBac+bCCm3lA2srRG8YfmyXZQ==",
"requires": {
- "bindings": "^1.3.0",
- "nan": "^2.10.0",
- "prebuild-install": "^4.0.0"
+ "bindings": "1.3.0",
+ "nan": "2.11.1",
+ "prebuild-install": "4.0.0"
},
"dependencies": {
"prebuild-install": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-4.0.0.tgz",
- "integrity": "sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA==",
+ "integrity":
+ "sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA==",
"requires": {
- "detect-libc": "^1.0.3",
- "expand-template": "^1.0.2",
+ "detect-libc": "1.0.3",
+ "expand-template": "1.1.1",
"github-from-package": "0.0.0",
- "minimist": "^1.2.0",
- "mkdirp": "^0.5.1",
- "node-abi": "^2.2.0",
- "noop-logger": "^0.1.1",
- "npmlog": "^4.0.1",
- "os-homedir": "^1.0.1",
- "pump": "^2.0.1",
- "rc": "^1.1.6",
- "simple-get": "^2.7.0",
- "tar-fs": "^1.13.0",
- "tunnel-agent": "^0.6.0",
- "which-pm-runs": "^1.0.0"
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "node-abi": "2.4.5",
+ "noop-logger": "0.1.1",
+ "npmlog": "4.1.2",
+ "os-homedir": "1.0.2",
+ "pump": "2.0.1",
+ "rc": "1.2.8",
+ "simple-get": "2.8.1",
+ "tar-fs": "1.16.3",
+ "tunnel-agent": "0.6.0",
+ "which-pm-runs": "1.0.0"
}
}
}
@@ -10650,31 +11339,32 @@
"node-libs-browser": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
- "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
- "dev": true,
- "requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^1.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
+ "integrity":
+ "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
+ "dev": true,
+ "requires": {
+ "assert": "1.4.1",
+ "browserify-zlib": "0.2.0",
+ "buffer": "4.9.1",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
+ "crypto-browserify": "3.12.0",
+ "domain-browser": "1.2.0",
+ "events": "1.1.1",
+ "https-browserify": "1.0.0",
+ "os-browserify": "0.3.0",
"path-browserify": "0.0.0",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.3.6",
+ "stream-browserify": "2.0.1",
+ "stream-http": "2.8.3",
+ "string_decoder": "1.1.1",
+ "timers-browserify": "2.0.10",
"tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.10.3",
+ "url": "0.11.0",
+ "util": "0.10.4",
"vm-browserify": "0.0.4"
}
},
@@ -10686,27 +11376,29 @@
"node-pre-gyp": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz",
- "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==",
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
+ "integrity":
+ "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==",
+ "requires": {
+ "detect-libc": "1.0.3",
+ "mkdirp": "0.5.1",
+ "needle": "2.2.4",
+ "nopt": "4.0.1",
+ "npm-packlist": "1.1.12",
+ "npmlog": "4.1.2",
+ "rc": "1.2.8",
+ "rimraf": "2.6.2",
+ "semver": "5.6.0",
+ "tar": "4.4.6"
}
},
"node-releases": {
"version": "1.0.0-alpha.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.14.tgz",
- "integrity": "sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g==",
+ "integrity":
+ "sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g==",
"dev": true,
"requires": {
- "semver": "^5.3.0"
+ "semver": "5.6.0"
}
},
"noop-logger": {
@@ -10719,20 +11411,21 @@
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
"integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
"requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
+ "abbrev": "1.1.1",
+ "osenv": "0.1.5"
}
},
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "integrity":
+ "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "is-builtin-module": "^1.0.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "hosted-git-info": "2.7.1",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.6.0",
+ "validate-npm-package-license": "3.0.4"
}
},
"normalize-path": {
@@ -10741,7 +11434,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "remove-trailing-separator": "^1.0.1"
+ "remove-trailing-separator": "1.1.0"
}
},
"notp": {
@@ -10752,15 +11445,17 @@
"npm-bundled": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz",
- "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g=="
+ "integrity":
+ "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g=="
},
"npm-packlist": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.12.tgz",
- "integrity": "sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g==",
+ "integrity":
+ "sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g==",
"requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1"
+ "ignore-walk": "3.0.1",
+ "npm-bundled": "1.0.5"
}
},
"npm-run-path": {
@@ -10769,18 +11464,19 @@
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
"requires": {
- "path-key": "^2.0.0"
+ "path-key": "2.0.1"
}
},
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "integrity":
+ "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
+ "are-we-there-yet": "1.1.5",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
}
},
"nth-check": {
@@ -10789,7 +11485,7 @@
"integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
"dev": true,
"requires": {
- "boolbase": "~1.0.0"
+ "boolbase": "1.0.0"
}
},
"nugget": {
@@ -10798,19 +11494,20 @@
"integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
"dev": true,
"requires": {
- "debug": "^2.1.3",
- "minimist": "^1.1.0",
- "pretty-bytes": "^1.0.2",
- "progress-stream": "^1.1.0",
- "request": "^2.45.0",
- "single-line-log": "^1.1.2",
+ "debug": "2.6.9",
+ "minimist": "1.2.0",
+ "pretty-bytes": "1.0.4",
+ "progress-stream": "1.2.0",
+ "request": "2.88.0",
+ "single-line-log": "1.1.2",
"throttleit": "0.0.2"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -10832,7 +11529,8 @@
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "integrity":
+ "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"object-assign": {
@@ -10846,9 +11544,9 @@
"integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
"dev": true,
"requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
+ "copy-descriptor": "0.1.1",
+ "define-property": "0.2.5",
+ "kind-of": "3.2.2"
},
"dependencies": {
"define-property": {
@@ -10857,7 +11555,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
},
"kind-of": {
@@ -10866,7 +11564,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -10874,7 +11572,8 @@
"object-keys": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
- "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "integrity":
+ "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
"dev": true
},
"object-visit": {
@@ -10883,17 +11582,18 @@
"integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
"dev": true,
"requires": {
- "isobject": "^3.0.0"
+ "isobject": "3.0.1"
}
},
"object.getownpropertydescriptors": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "resolved":
+ "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
"integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
"dev": true,
"requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.5.1"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.12.0"
}
},
"object.pick": {
@@ -10902,7 +11602,7 @@
"integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
"dev": true,
"requires": {
- "isobject": "^3.0.1"
+ "isobject": "3.0.1"
}
},
"on-finished": {
@@ -10919,22 +11619,23 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"onetime": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},
"opn": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz",
- "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==",
+ "integrity":
+ "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==",
"dev": true,
"requires": {
- "is-wsl": "^1.1.0"
+ "is-wsl": "1.1.0"
}
},
"ora": {
@@ -10943,10 +11644,10 @@
"integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
"dev": true,
"requires": {
- "chalk": "^1.1.1",
- "cli-cursor": "^1.0.2",
- "cli-spinners": "^0.1.2",
- "object-assign": "^4.0.1"
+ "chalk": "1.1.3",
+ "cli-cursor": "1.0.2",
+ "cli-spinners": "0.1.2",
+ "object-assign": "4.1.1"
},
"dependencies": {
"ansi-styles": {
@@ -10957,15 +11658,15 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"supports-color": {
@@ -10979,10 +11680,11 @@
"original": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
- "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+ "integrity":
+ "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
"dev": true,
"requires": {
- "url-parse": "^1.4.3"
+ "url-parse": "1.4.3"
}
},
"os-browserify": {
@@ -10999,12 +11701,13 @@
"os-locale": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
- "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
+ "integrity":
+ "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
"dev": true,
"requires": {
- "execa": "^0.10.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
+ "execa": "0.10.0",
+ "lcid": "2.0.0",
+ "mem": "4.0.0"
}
},
"os-tmpdir": {
@@ -11015,10 +11718,11 @@
"osenv": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "integrity":
+ "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
}
},
"p-defer": {
@@ -11042,9 +11746,10 @@
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "integrity":
+ "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"requires": {
- "p-try": "^1.0.0"
+ "p-try": "1.0.0"
}
},
"p-locate": {
@@ -11052,13 +11757,14 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"requires": {
- "p-limit": "^1.1.0"
+ "p-limit": "1.3.0"
}
},
"p-map": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
- "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "integrity":
+ "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
"dev": true
},
"p-try": {
@@ -11072,16 +11778,17 @@
"integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"requires": {
- "got": "^6.7.1",
- "registry-auth-token": "^3.0.1",
- "registry-url": "^3.0.3",
- "semver": "^5.1.0"
+ "got": "6.7.1",
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0",
+ "semver": "5.6.0"
}
},
"pako": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
- "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="
+ "integrity":
+ "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="
},
"parallel-transform": {
"version": "1.1.0",
@@ -11089,9 +11796,9 @@
"integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
"dev": true,
"requires": {
- "cyclist": "~0.2.2",
- "inherits": "^2.0.3",
- "readable-stream": "^2.1.5"
+ "cyclist": "0.2.2",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
}
},
"param-case": {
@@ -11100,20 +11807,21 @@
"integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
"dev": true,
"requires": {
- "no-case": "^2.2.0"
+ "no-case": "2.3.2"
}
},
"parse-asn1": {
"version": "5.1.1",
"resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
- "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
+ "integrity":
+ "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
"dev": true,
"requires": {
- "asn1.js": "^4.0.0",
- "browserify-aes": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3"
+ "asn1.js": "4.10.1",
+ "browserify-aes": "1.2.0",
+ "create-hash": "1.2.0",
+ "evp_bytestokey": "1.0.3",
+ "pbkdf2": "3.0.17"
}
},
"parse-color": {
@@ -11122,7 +11830,7 @@
"integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
"dev": true,
"requires": {
- "color-convert": "~0.5.0"
+ "color-convert": "0.5.3"
},
"dependencies": {
"color-convert": {
@@ -11136,14 +11844,15 @@
"parse-entities": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.0.tgz",
- "integrity": "sha512-XXtDdOPLSB0sHecbEapQi6/58U/ODj/KWfIXmmMCJF/eRn8laX6LZbOyioMoETOOJoWRW8/qTSl5VQkUIfKM5g==",
+ "integrity":
+ "sha512-XXtDdOPLSB0sHecbEapQi6/58U/ODj/KWfIXmmMCJF/eRn8laX6LZbOyioMoETOOJoWRW8/qTSl5VQkUIfKM5g==",
"requires": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
+ "character-entities": "1.2.2",
+ "character-entities-legacy": "1.1.2",
+ "character-reference-invalid": "1.1.2",
+ "is-alphanumerical": "1.0.2",
+ "is-decimal": "1.0.2",
+ "is-hexadecimal": "1.0.2"
}
},
"parse-json": {
@@ -11152,8 +11861,8 @@
"integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
"dev": true,
"requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
+ "error-ex": "1.3.2",
+ "json-parse-better-errors": "1.0.2"
}
},
"parse-passwd": {
@@ -11174,6 +11883,70 @@
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
+ "patch-package": {
+ "version": "5.1.1",
+ "resolved": "http://registry.npmjs.org/patch-package/-/patch-package-5.1.1.tgz",
+ "integrity":
+ "sha512-bO+vfFGgTVTtv89kXWGEMIPnrYhhhMtbOnJKStfIhNWUxperVjlI++1ixksi0YPCMPGuFy9W3zsKHxIITV2r2A==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "cross-spawn": "5.1.0",
+ "fs-extra": "4.0.3",
+ "minimist": "1.2.0",
+ "rimraf": "2.6.2",
+ "slash": "1.0.0",
+ "tmp": "0.0.31",
+ "update-notifier": "2.5.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.3",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
+ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "1.0.2"
+ }
+ }
+ }
+ },
"path-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
@@ -11211,7 +11984,8 @@
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "integrity":
+ "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true
},
"path-to-regexp": {
@@ -11232,23 +12006,25 @@
"path-type": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "integrity":
+ "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"requires": {
- "pify": "^3.0.0"
+ "pify": "3.0.0"
}
},
"pbkdf2": {
"version": "3.0.17",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
- "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "integrity":
+ "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
"dev": true,
"requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "ripemd160": "2.0.2",
+ "safe-buffer": "5.1.2",
+ "sha.js": "2.4.11"
}
},
"pend": {
@@ -11260,7 +12036,8 @@
"perfect-scrollbar": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.4.0.tgz",
- "integrity": "sha512-/2Sk/khljhdrsamjJYS5NjrH+GKEHEwh7zFSiYyxROyYKagkE4kSn2zDQDRTOMo8mpT2jikxx6yI1dG7lNP/hw=="
+ "integrity":
+ "sha512-/2Sk/khljhdrsamjJYS5NjrH+GKEHEwh7zFSiYyxROyYKagkE4kSn2zDQDRTOMo8mpT2jikxx6yI1dG7lNP/hw=="
},
"performance-now": {
"version": "2.1.0",
@@ -11284,33 +12061,35 @@
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
- "pinkie": "^2.0.0"
+ "pinkie": "2.0.4"
}
},
"pino": {
"version": "4.17.6",
"resolved": "https://registry.npmjs.org/pino/-/pino-4.17.6.tgz",
- "integrity": "sha512-LFDwmhyWLBnmwO/2UFbWu1jEGVDzaPupaVdx0XcZ3tIAx1EDEBauzxXf2S0UcFK7oe+X9MApjH0hx9U1XMgfCA==",
+ "integrity":
+ "sha512-LFDwmhyWLBnmwO/2UFbWu1jEGVDzaPupaVdx0XcZ3tIAx1EDEBauzxXf2S0UcFK7oe+X9MApjH0hx9U1XMgfCA==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "fast-json-parse": "^1.0.3",
- "fast-safe-stringify": "^1.2.3",
- "flatstr": "^1.0.5",
- "pino-std-serializers": "^2.0.0",
- "pump": "^3.0.0",
- "quick-format-unescaped": "^1.1.2",
- "split2": "^2.2.0"
+ "chalk": "2.4.1",
+ "fast-json-parse": "1.0.3",
+ "fast-safe-stringify": "1.2.3",
+ "flatstr": "1.0.8",
+ "pino-std-serializers": "2.3.0",
+ "pump": "3.0.0",
+ "quick-format-unescaped": "1.1.2",
+ "split2": "2.2.0"
},
"dependencies": {
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "integrity":
+ "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
}
}
}
@@ -11318,15 +12097,17 @@
"pino-std-serializers": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.3.0.tgz",
- "integrity": "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw==",
+ "integrity":
+ "sha512-klfGoOsP6sJH7ON796G4xoUSx2fkpFgKHO4YVVO2zmz31jR+etzc/QzGJILaOIiCD6HTCFgkPx+XN8nk+ruqPw==",
"dev": true
},
"pirates": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.0.tgz",
- "integrity": "sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA==",
+ "integrity":
+ "sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA==",
"requires": {
- "node-modules-regexp": "^1.0.0"
+ "node-modules-regexp": "1.0.0"
}
},
"pkg-dir": {
@@ -11334,7 +12115,7 @@
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
"integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
"requires": {
- "find-up": "^2.1.0"
+ "find-up": "2.1.0"
}
},
"pkg-up": {
@@ -11343,24 +12124,26 @@
"integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
"dev": true,
"requires": {
- "find-up": "^2.1.0"
+ "find-up": "2.1.0"
}
},
"plist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
- "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
+ "integrity":
+ "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
"dev": true,
"requires": {
- "base64-js": "^1.2.3",
- "xmlbuilder": "^9.0.7",
- "xmldom": "0.1.x"
+ "base64-js": "1.3.0",
+ "xmlbuilder": "9.0.7",
+ "xmldom": "0.1.27"
},
"dependencies": {
"base64-js": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
- "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+ "integrity":
+ "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
"dev": true
},
"xmlbuilder": {
@@ -11380,31 +12163,34 @@
"postcss": {
"version": "6.0.23",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "integrity":
+ "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
+ "chalk": "2.4.1",
+ "source-map": "0.6.1",
+ "supports-color": "5.5.0"
}
},
"postcss-modules-extract-imports": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz",
"integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=",
"dev": true,
"requires": {
- "postcss": "^6.0.1"
+ "postcss": "6.0.23"
}
},
"postcss-modules-local-by-default": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
"integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
"dev": true,
"requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
+ "css-selector-tokenizer": "0.7.0",
+ "postcss": "6.0.23"
}
},
"postcss-modules-scope": {
@@ -11413,8 +12199,8 @@
"integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
"dev": true,
"requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
+ "css-selector-tokenizer": "0.7.0",
+ "postcss": "6.0.23"
}
},
"postcss-modules-values": {
@@ -11423,37 +12209,39 @@
"integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
"dev": true,
"requires": {
- "icss-replace-symbols": "^1.1.0",
- "postcss": "^6.0.1"
+ "icss-replace-symbols": "1.1.0",
+ "postcss": "6.0.23"
}
},
"postcss-value-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
- "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "integrity":
+ "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
"dev": true
},
"prebuild-install": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.2.0.tgz",
- "integrity": "sha512-cpuyMS8y30Df0bnN+I8pdmpwtZbm8fj9cQADOhSH/qnS1exb80elZ707FTMohFBJax4NyWjJVSg0chRQXzHSvg==",
+ "integrity":
+ "sha512-cpuyMS8y30Df0bnN+I8pdmpwtZbm8fj9cQADOhSH/qnS1exb80elZ707FTMohFBJax4NyWjJVSg0chRQXzHSvg==",
"requires": {
- "detect-libc": "^1.0.3",
- "expand-template": "^1.0.2",
+ "detect-libc": "1.0.3",
+ "expand-template": "1.1.1",
"github-from-package": "0.0.0",
- "minimist": "^1.2.0",
- "mkdirp": "^0.5.1",
- "napi-build-utils": "^1.0.1",
- "node-abi": "^2.2.0",
- "noop-logger": "^0.1.1",
- "npmlog": "^4.0.1",
- "os-homedir": "^1.0.1",
- "pump": "^2.0.1",
- "rc": "^1.2.7",
- "simple-get": "^2.7.0",
- "tar-fs": "^1.13.0",
- "tunnel-agent": "^0.6.0",
- "which-pm-runs": "^1.0.0"
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "napi-build-utils": "1.0.1",
+ "node-abi": "2.4.5",
+ "noop-logger": "0.1.1",
+ "npmlog": "4.1.2",
+ "os-homedir": "1.0.2",
+ "pump": "2.0.1",
+ "rc": "1.2.8",
+ "simple-get": "2.8.1",
+ "tar-fs": "1.16.3",
+ "tunnel-agent": "0.6.0",
+ "which-pm-runs": "1.0.0"
}
},
"prepend-http": {
@@ -11468,8 +12256,8 @@
"integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1",
- "meow": "^3.1.0"
+ "get-stdin": "4.0.1",
+ "meow": "3.7.0"
},
"dependencies": {
"camelcase": {
@@ -11480,12 +12268,12 @@
},
"camelcase-keys": {
"version": "2.1.0",
- "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
}
},
"find-up": {
@@ -11494,8 +12282,8 @@
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
}
},
"indent-string": {
@@ -11504,20 +12292,20 @@
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
- "repeating": "^2.0.0"
+ "repeating": "2.0.1"
}
},
"load-json-file": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
}
},
"map-obj": {
@@ -11528,20 +12316,20 @@
},
"meow": {
"version": "3.7.0",
- "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
}
},
"parse-json": {
@@ -11550,7 +12338,7 @@
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "error-ex": "^1.2.0"
+ "error-ex": "1.3.2"
}
},
"path-exists": {
@@ -11559,7 +12347,7 @@
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
- "pinkie-promise": "^2.0.0"
+ "pinkie-promise": "2.0.1"
}
},
"path-type": {
@@ -11568,14 +12356,14 @@
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
}
},
"pify": {
"version": "2.3.0",
- "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
@@ -11585,9 +12373,9 @@
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
}
},
"read-pkg-up": {
@@ -11596,8 +12384,8 @@
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
}
},
"redent": {
@@ -11606,8 +12394,8 @@
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
}
},
"strip-bom": {
@@ -11616,7 +12404,7 @@
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
- "is-utf8": "^0.2.0"
+ "is-utf8": "0.2.1"
}
},
"strip-indent": {
@@ -11625,7 +12413,7 @@
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1"
+ "get-stdin": "4.0.1"
}
},
"trim-newlines": {
@@ -11642,14 +12430,15 @@
"integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
"dev": true,
"requires": {
- "renderkid": "^2.0.1",
- "utila": "~0.4"
+ "renderkid": "2.0.2",
+ "utila": "0.4.0"
}
},
"private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
- "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+ "integrity":
+ "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
"dev": true
},
"process": {
@@ -11661,12 +12450,14 @@
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+ "integrity":
+ "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"progress": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
- "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity":
+ "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
"progress-stream": {
@@ -11675,8 +12466,8 @@
"integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=",
"dev": true,
"requires": {
- "speedometer": "~0.1.2",
- "through2": "~0.2.3"
+ "speedometer": "0.1.4",
+ "through2": "0.2.3"
},
"dependencies": {
"isarray": {
@@ -11693,14 +12484,14 @@
},
"readable-stream": {
"version": "1.1.14",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"string_decoder": {
@@ -11715,8 +12506,8 @@
"integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
"dev": true,
"requires": {
- "readable-stream": "~1.1.9",
- "xtend": "~2.1.1"
+ "readable-stream": "1.1.14",
+ "xtend": "2.1.2"
}
},
"xtend": {
@@ -11725,7 +12516,7 @@
"integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
"dev": true,
"requires": {
- "object-keys": "~0.4.0"
+ "object-keys": "0.4.0"
}
}
}
@@ -11733,9 +12524,10 @@
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "integrity":
+ "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"requires": {
- "asap": "~2.0.3"
+ "asap": "2.0.6"
}
},
"promise-inflight": {
@@ -11747,19 +12539,21 @@
"prop-types": {
"version": "15.6.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
- "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "integrity":
+ "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
"requires": {
- "loose-envify": "^1.3.1",
- "object-assign": "^4.1.1"
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1"
}
},
"proxy-addr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
- "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+ "integrity":
+ "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"dev": true,
"requires": {
- "forwarded": "~0.1.2",
+ "forwarded": "0.1.2",
"ipaddr.js": "1.8.0"
}
},
@@ -11784,41 +12578,45 @@
"psl": {
"version": "1.1.29",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
- "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "integrity":
+ "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
"dev": true
},
"public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
- "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "integrity":
+ "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1",
- "safe-buffer": "^5.1.2"
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.2.0",
+ "parse-asn1": "5.1.1",
+ "randombytes": "2.0.6",
+ "safe-buffer": "5.1.2"
}
},
"pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "integrity":
+ "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
}
},
"pumpify": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "integrity":
+ "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
"dev": true,
"requires": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
+ "duplexify": "3.6.1",
+ "inherits": "2.0.3",
+ "pump": "2.0.1"
}
},
"punycode": {
@@ -11828,19 +12626,32 @@
"dev": true
},
"puppeteer": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.9.0.tgz",
- "integrity": "sha512-GH4PmhJf9wBRAPvtJkEJLAvdNNOofZortmBZSj8cGWYni98GUFqsf66blOEfJbo5B8l0KG5HR2d/W2MejnUrzg==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.11.0.tgz",
+ "integrity":
+ "sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ==",
"dev": true,
"requires": {
- "debug": "^3.1.0",
+ "debug": "^4.1.0",
"extract-zip": "^1.6.6",
"https-proxy-agent": "^2.2.1",
"mime": "^2.0.3",
- "progress": "^2.0.0",
+ "progress": "^2.0.1",
"proxy-from-env": "^1.0.0",
"rimraf": "^2.6.1",
- "ws": "^5.1.1"
+ "ws": "^6.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
+ "integrity":
+ "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
}
},
"qr.js": {
@@ -11851,12 +12662,14 @@
"qrcode-terminal": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
- "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ=="
+ "integrity":
+ "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ=="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "integrity":
+ "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"querystring": {
@@ -11874,7 +12687,8 @@
"querystringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
- "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
+ "integrity":
+ "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
"dev": true
},
"quick-format-unescaped": {
@@ -11883,7 +12697,7 @@
"integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=",
"dev": true,
"requires": {
- "fast-safe-stringify": "^1.0.8"
+ "fast-safe-stringify": "1.2.3"
}
},
"quick-lru": {
@@ -11893,9 +12707,10 @@
"dev": true
},
"raf": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz",
- "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity":
+ "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"requires": {
"performance-now": "^2.1.0"
}
@@ -11903,20 +12718,22 @@
"randombytes": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
- "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+ "integrity":
+ "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
"dev": true,
"requires": {
- "safe-buffer": "^5.1.0"
+ "safe-buffer": "5.1.2"
}
},
"randomfill": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "integrity":
+ "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
"dev": true,
"requires": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
+ "randombytes": "2.0.6",
+ "safe-buffer": "5.1.2"
}
},
"range-parser": {
@@ -11928,7 +12745,8 @@
"raw-body": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
- "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
+ "integrity":
+ "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
"dev": true,
"requires": {
"bytes": "3.0.0",
@@ -11940,10 +12758,11 @@
"iconv-lite": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
- "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "integrity":
+ "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
"dev": true,
"requires": {
- "safer-buffer": ">= 2.1.2 < 3"
+ "safer-buffer": "2.1.2"
}
}
}
@@ -11951,29 +12770,32 @@
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "integrity":
+ "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
+ "deep-extend": "0.6.0",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
}
},
"react": {
"version": "16.6.0",
"resolved": "https://registry.npmjs.org/react/-/react-16.6.0.tgz",
- "integrity": "sha512-zJPnx/jKtuOEXCbQ9BKaxDMxR0001/hzxXwYxG8septeyYGfsgAei6NgfbVgOhbY1WOP2o3VPs/E9HaN+9hV3Q==",
+ "integrity":
+ "sha512-zJPnx/jKtuOEXCbQ9BKaxDMxR0001/hzxXwYxG8septeyYGfsgAei6NgfbVgOhbY1WOP2o3VPs/E9HaN+9hV3Q==",
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.10.0"
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "prop-types": "15.6.2",
+ "scheduler": "0.10.0"
}
},
"react-dev-utils": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-6.0.5.tgz",
- "integrity": "sha512-X3/q2y8GHvcn6qzqlFhFNoIQgU4TfyerYpBTc5BrMtrSO0q1ctIheAaxDQawNeRgsm2W7L3QSQ9po+YLAGcYFQ==",
+ "integrity":
+ "sha512-X3/q2y8GHvcn6qzqlFhFNoIQgU4TfyerYpBTc5BrMtrSO0q1ctIheAaxDQawNeRgsm2W7L3QSQ9po+YLAGcYFQ==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0",
@@ -11992,7 +12814,7 @@
"loader-utils": "1.1.0",
"opn": "5.4.0",
"pkg-up": "2.0.0",
- "react-error-overlay": "^5.0.5",
+ "react-error-overlay": "5.0.5",
"recursive-readdir": "2.2.2",
"shell-quote": "1.6.1",
"sockjs-client": "1.1.5",
@@ -12009,55 +12831,61 @@
"browserslist": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz",
- "integrity": "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==",
+ "integrity":
+ "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30000884",
- "electron-to-chromium": "^1.3.62",
- "node-releases": "^1.0.0-alpha.11"
+ "caniuse-lite": "1.0.30000893",
+ "electron-to-chromium": "1.3.79",
+ "node-releases": "1.0.0-alpha.14"
}
},
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "integrity":
+ "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "3.0.0"
}
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "integrity":
+ "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
}
},
"p-limit": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
- "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "integrity":
+ "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "p-try": "2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "integrity":
+ "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "2.0.0"
}
},
"p-try": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "integrity":
+ "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
"dev": true
},
"strip-ansi": {
@@ -12066,7 +12894,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -12074,26 +12902,29 @@
"react-dom": {
"version": "16.5.2",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.5.2.tgz",
- "integrity": "sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA==",
+ "integrity":
+ "sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA==",
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "schedule": "^0.5.0"
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "prop-types": "15.6.2",
+ "schedule": "0.5.0"
}
},
"react-error-overlay": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.0.5.tgz",
- "integrity": "sha512-ab0HWBgxdIsngHtMGU8+8gYFdTBXpUGd4AE4lN2VZvOIlBmWx9dtaWEViihuGSIGosCKPeHCnzFoRWB42UtnLg==",
+ "integrity":
+ "sha512-ab0HWBgxdIsngHtMGU8+8gYFdTBXpUGd4AE4lN2VZvOIlBmWx9dtaWEViihuGSIGosCKPeHCnzFoRWB42UtnLg==",
"dev": true
},
"react-i18next": {
"version": "8.0.8",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-8.0.8.tgz",
- "integrity": "sha512-q2TGVLubP3IOeMMeeqgMKoI9nnkmq1ukDCEAI8AGlqI4mRDpImyv014Urs2QHTnaYzrHkT6xzGuRrCu1i41fdg==",
+ "integrity":
+ "sha512-q2TGVLubP3IOeMMeeqgMKoI9nnkmq1ukDCEAI8AGlqI4mRDpImyv014Urs2QHTnaYzrHkT6xzGuRrCu1i41fdg==",
"requires": {
- "@babel/runtime": "^7.1.2",
+ "@babel/runtime": "7.1.2",
"create-react-context": "0.2.3",
"hoist-non-react-statics": "3.0.1",
"html-parse-stringify2": "2.0.1"
@@ -12102,69 +12933,78 @@
"react-is": {
"version": "16.5.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.5.2.tgz",
- "integrity": "sha512-hSl7E6l25GTjNEZATqZIuWOgSnpXb3kD0DVCujmg46K5zLxsbiKaaT6VO9slkSBDPZfYs30lwfJwbOFOnoEnKQ=="
+ "integrity":
+ "sha512-hSl7E6l25GTjNEZATqZIuWOgSnpXb3kD0DVCujmg46K5zLxsbiKaaT6VO9slkSBDPZfYs30lwfJwbOFOnoEnKQ=="
},
"react-lifecycles-compat": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
- "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+ "integrity":
+ "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"react-lottie": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/react-lottie/-/react-lottie-1.2.3.tgz",
- "integrity": "sha512-qLCERxUr8M+4mm1LU0Ruxw5Y5Fn/OmYkGfnA+JDM/dZb3oKwVAJCjwnjkj9TMHtzR2U6sMEUD3ZZ1RaHagM7kA==",
+ "integrity":
+ "sha512-qLCERxUr8M+4mm1LU0Ruxw5Y5Fn/OmYkGfnA+JDM/dZb3oKwVAJCjwnjkj9TMHtzR2U6sMEUD3ZZ1RaHagM7kA==",
"requires": {
- "babel-runtime": "^6.26.0",
- "lottie-web": "^5.1.3"
+ "babel-runtime": "6.26.0",
+ "lottie-web": "5.3.4"
}
},
"react-markdown": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-3.6.0.tgz",
- "integrity": "sha512-TV0wQDHHPCEeKJHWXFfEAKJ8uSEsJ9LgrMERkXx05WV/3q6Ig+59KDNaTmjcoqlCpE/sH5PqqLMh4t0QWKrJ8Q==",
+ "integrity":
+ "sha512-TV0wQDHHPCEeKJHWXFfEAKJ8uSEsJ9LgrMERkXx05WV/3q6Ig+59KDNaTmjcoqlCpE/sH5PqqLMh4t0QWKrJ8Q==",
"requires": {
"mdast-add-list-metadata": "1.0.1",
- "prop-types": "^15.6.1",
- "remark-parse": "^5.0.0",
- "unified": "^6.1.5",
- "unist-util-visit": "^1.3.0",
- "xtend": "^4.0.1"
+ "prop-types": "15.6.2",
+ "remark-parse": "5.0.0",
+ "unified": "6.2.0",
+ "unist-util-visit": "1.4.0",
+ "xtend": "4.0.1"
}
},
"react-qr-reader": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/react-qr-reader/-/react-qr-reader-2.1.1.tgz",
- "integrity": "sha512-Xid7aBPZMMl9Xh4mdz9w8HZZsbL1BVbRLuoE2ixs5zwtgF0IGarWZ5cbJVaxCydus6vzEL4FQf4gpItC/jz8hg==",
+ "integrity":
+ "sha512-Xid7aBPZMMl9Xh4mdz9w8HZZsbL1BVbRLuoE2ixs5zwtgF0IGarWZ5cbJVaxCydus6vzEL4FQf4gpItC/jz8hg==",
"requires": {
- "jsqr": "^1.1.1",
- "prop-types": "^15.5.8",
- "webrtc-adapter": "^6.4.0"
+ "jsqr": "1.1.1",
+ "prop-types": "15.6.2",
+ "webrtc-adapter": "6.4.3"
}
},
"react-redux": {
"version": "5.0.7",
"resolved": "http://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz",
- "integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==",
- "requires": {
- "hoist-non-react-statics": "^2.5.0",
- "invariant": "^2.0.0",
- "lodash": "^4.17.5",
- "lodash-es": "^4.17.5",
- "loose-envify": "^1.1.0",
- "prop-types": "^15.6.0"
+ "integrity":
+ "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==",
+ "requires": {
+ "hoist-non-react-statics": "2.5.5",
+ "invariant": "2.2.4",
+ "lodash": "4.17.11",
+ "lodash-es": "4.17.11",
+ "loose-envify": "1.4.0",
+ "prop-types": "15.6.2"
},
"dependencies": {
"hoist-non-react-statics": {
"version": "2.5.5",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
- "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+ "resolved":
+ "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+ "integrity":
+ "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
}
}
},
"react-resize-detector": {
"version": "2.3.0",
"resolved": "http://registry.npmjs.org/react-resize-detector/-/react-resize-detector-2.3.0.tgz",
- "integrity": "sha512-oCAddEWWeFWYH5FAcHdBYcZjAw9fMzRUK9sWSx6WvSSOPVRxcHd5zTIGy/mOus+AhN/u6T4TMiWxvq79PywnJQ==",
+ "integrity":
+ "sha512-oCAddEWWeFWYH5FAcHdBYcZjAw9fMzRUK9sWSx6WvSSOPVRxcHd5zTIGy/mOus+AhN/u6T4TMiWxvq79PywnJQ==",
"requires": {
"lodash.debounce": "^4.0.8",
"lodash.throttle": "^4.1.1",
@@ -12175,41 +13015,46 @@
"react-router": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz",
- "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==",
- "requires": {
- "history": "^4.7.2",
- "hoist-non-react-statics": "^2.5.0",
- "invariant": "^2.2.4",
- "loose-envify": "^1.3.1",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.1",
- "warning": "^4.0.1"
+ "integrity":
+ "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==",
+ "requires": {
+ "history": "4.7.2",
+ "hoist-non-react-statics": "2.5.5",
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "path-to-regexp": "1.7.0",
+ "prop-types": "15.6.2",
+ "warning": "4.0.2"
},
"dependencies": {
"hoist-non-react-statics": {
"version": "2.5.5",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
- "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+ "resolved":
+ "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+ "integrity":
+ "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
}
}
},
"react-router-dom": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz",
- "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==",
+ "integrity":
+ "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==",
"requires": {
- "history": "^4.7.2",
- "invariant": "^2.2.4",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.1",
- "react-router": "^4.3.1",
- "warning": "^4.0.1"
+ "history": "4.7.2",
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "prop-types": "15.6.2",
+ "react-router": "4.3.1",
+ "warning": "4.0.2"
}
},
"react-smooth": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.2.tgz",
- "integrity": "sha512-pIGzL1g9VGAsRsdZQokIK0vrCkcdKtnOnS1gyB2rrowdLy69lNSWoIjCTWAfgbiYvria8tm5hEZqj+jwXMkV4A==",
+ "integrity":
+ "sha512-pIGzL1g9VGAsRsdZQokIK0vrCkcdKtnOnS1gyB2rrowdLy69lNSWoIjCTWAfgbiYvria8tm5hEZqj+jwXMkV4A==",
"requires": {
"lodash": "~4.17.4",
"prop-types": "^15.6.0",
@@ -12217,25 +13062,16 @@
"react-transition-group": "^2.5.0"
}
},
- "react-tooltip": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-3.9.0.tgz",
- "integrity": "sha512-vpn738FVv2oe2LzdwUchped3WqLgZSQwrBow+ceChS1+lFEJBPjOa9KD3JH/L/s0Aorxawi3A20qBcHX7vqaag==",
- "requires": {
- "classnames": "^2.2.5",
- "prop-types": "^15.6.0",
- "sanitize-html-react": "^1.13.0"
- }
- },
"react-transition-group": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.5.0.tgz",
- "integrity": "sha512-qYB3JBF+9Y4sE4/Mg/9O6WFpdoYjeeYqx0AFb64PTazVy8RPMiE3A47CG9QmM4WJ/mzDiZYslV+Uly6O1Erlgw==",
+ "integrity":
+ "sha512-qYB3JBF+9Y4sE4/Mg/9O6WFpdoYjeeYqx0AFb64PTazVy8RPMiE3A47CG9QmM4WJ/mzDiZYslV+Uly6O1Erlgw==",
"requires": {
- "dom-helpers": "^3.3.1",
- "loose-envify": "^1.4.0",
- "prop-types": "^15.6.2",
- "react-lifecycles-compat": "^3.0.4"
+ "dom-helpers": "3.3.1",
+ "loose-envify": "1.4.0",
+ "prop-types": "15.6.2",
+ "react-lifecycles-compat": "3.0.4"
}
},
"read-pkg": {
@@ -12244,9 +13080,9 @@
"integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "load-json-file": "4.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "3.0.0"
}
},
"read-pkg-up": {
@@ -12255,39 +13091,42 @@
"integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
"dev": true,
"requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
+ "find-up": "2.1.0",
+ "read-pkg": "3.0.0"
}
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity":
+ "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"readdirp": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "integrity":
+ "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
+ "graceful-fs": "4.1.11",
+ "micromatch": "3.1.10",
+ "readable-stream": "2.3.6"
}
},
"recharts": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/recharts/-/recharts-1.3.4.tgz",
- "integrity": "sha512-jOImzEnTsHjEDxLnfbuTpxZHz1XV3vPWFyujrbFzrkSWBwoR0He9HbkSui8x/LpoDzwgeO25J0t6z+edFuwgWw==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/recharts/-/recharts-1.4.1.tgz",
+ "integrity":
+ "sha512-HtI3B4xGPn591kNDU5MaCcJeUtlSqOH3cOBtHuhXGxDU2MDkS6abaQtgZD1J4mQiUCUZT3LCziTz5+wD7k+pvw==",
"requires": {
"classnames": "~2.2.5",
"core-js": "~2.5.1",
@@ -12305,14 +13144,16 @@
"core-js": {
"version": "2.5.7",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+ "integrity":
+ "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
}
}
},
"recharts-scale": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.2.tgz",
- "integrity": "sha512-p/cKt7j17D1CImLgX2f5+6IXLbRHGUQkogIp06VUoci/XkhOQiGSzUrsD1uRmiI7jha4u8XNFOjkHkzzBPivMg==",
+ "integrity":
+ "sha512-p/cKt7j17D1CImLgX2f5+6IXLbRHGUQkogIp06VUoci/XkhOQiGSzUrsD1uRmiI7jha4u8XNFOjkHkzzBPivMg==",
"requires": {
"decimal.js-light": "^2.4.1"
}
@@ -12320,7 +13161,8 @@
"recursive-readdir": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
- "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
+ "integrity":
+ "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
"dev": true,
"requires": {
"minimatch": "3.0.4"
@@ -12332,8 +13174,8 @@
"integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
"dev": true,
"requires": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
+ "indent-string": "3.2.0",
+ "strip-indent": "2.0.0"
}
},
"reduce-css-calc": {
@@ -12371,78 +13213,82 @@
"redux": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz",
- "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==",
+ "integrity":
+ "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==",
"requires": {
- "loose-envify": "^1.4.0",
- "symbol-observable": "^1.2.0"
+ "loose-envify": "1.4.0",
+ "symbol-observable": "1.2.0"
}
},
"regenerate": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
- "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "integrity":
+ "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
"dev": true
},
"regenerate-unicode-properties": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz",
- "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==",
+ "resolved":
+ "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz",
+ "integrity":
+ "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==",
"dev": true,
"requires": {
- "regenerate": "^1.4.0"
+ "regenerate": "1.4.0"
}
},
"regenerator-runtime": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
- "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
+ "integrity":
+ "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
},
"regenerator-transform": {
"version": "0.13.3",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz",
- "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==",
+ "integrity":
+ "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==",
"dev": true,
"requires": {
- "private": "^0.1.6"
+ "private": "0.1.8"
}
},
"regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "integrity":
+ "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
"dev": true,
"requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
}
},
- "regexp-quote": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/regexp-quote/-/regexp-quote-0.0.0.tgz",
- "integrity": "sha1-Hg9GUMhi3L/tVP1CsUjpuxch/PI="
- },
"regexpu-core": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz",
- "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==",
+ "integrity":
+ "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==",
"dev": true,
"requires": {
- "regenerate": "^1.4.0",
- "regenerate-unicode-properties": "^7.0.0",
- "regjsgen": "^0.4.0",
- "regjsparser": "^0.3.0",
- "unicode-match-property-ecmascript": "^1.0.4",
- "unicode-match-property-value-ecmascript": "^1.0.2"
+ "regenerate": "1.4.0",
+ "regenerate-unicode-properties": "7.0.0",
+ "regjsgen": "0.4.0",
+ "regjsparser": "0.3.0",
+ "unicode-match-property-ecmascript": "1.0.4",
+ "unicode-match-property-value-ecmascript": "1.0.2"
}
},
"registry-auth-token": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
- "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "integrity":
+ "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
"dev": true,
"requires": {
- "rc": "^1.1.6",
- "safe-buffer": "^5.0.1"
+ "rc": "1.2.8",
+ "safe-buffer": "5.1.2"
}
},
"registry-url": {
@@ -12451,22 +13297,24 @@
"integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
"dev": true,
"requires": {
- "rc": "^1.0.1"
+ "rc": "1.2.8"
}
},
"regjsgen": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz",
- "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==",
+ "integrity":
+ "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==",
"dev": true
},
"regjsparser": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz",
- "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==",
+ "integrity":
+ "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==",
"dev": true,
"requires": {
- "jsesc": "~0.5.0"
+ "jsesc": "0.5.0"
},
"dependencies": {
"jsesc": {
@@ -12486,23 +13334,24 @@
"remark-parse": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz",
- "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==",
- "requires": {
- "collapse-white-space": "^1.0.2",
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "is-word-character": "^1.0.0",
- "markdown-escapes": "^1.0.0",
- "parse-entities": "^1.1.0",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
+ "integrity":
+ "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==",
+ "requires": {
+ "collapse-white-space": "1.0.4",
+ "is-alphabetical": "1.0.2",
+ "is-decimal": "1.0.2",
+ "is-whitespace-character": "1.0.2",
+ "is-word-character": "1.0.2",
+ "markdown-escapes": "1.0.2",
+ "parse-entities": "1.2.0",
+ "repeat-string": "1.6.1",
+ "state-toggle": "1.0.1",
"trim": "0.0.1",
- "trim-trailing-lines": "^1.0.0",
- "unherit": "^1.0.4",
- "unist-util-remove-position": "^1.0.0",
- "vfile-location": "^2.0.0",
- "xtend": "^4.0.1"
+ "trim-trailing-lines": "1.1.1",
+ "unherit": "1.1.1",
+ "unist-util-remove-position": "1.1.2",
+ "vfile-location": "2.0.3",
+ "xtend": "4.0.1"
}
},
"remove-trailing-separator": {
@@ -12514,20 +13363,22 @@
"renderkid": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz",
- "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==",
+ "integrity":
+ "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==",
"dev": true,
"requires": {
- "css-select": "^1.1.0",
- "dom-converter": "~0.2",
- "htmlparser2": "~3.3.0",
- "strip-ansi": "^3.0.0",
- "utila": "^0.4.0"
+ "css-select": "1.2.0",
+ "dom-converter": "0.2.0",
+ "htmlparser2": "3.3.0",
+ "strip-ansi": "3.0.1",
+ "utila": "0.4.0"
}
},
"repeat-element": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "integrity":
+ "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
"dev": true
},
"repeat-string": {
@@ -12541,7 +13392,7 @@
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
- "is-finite": "^1.0.0"
+ "is-finite": "1.0.2"
}
},
"replace-ext": {
@@ -12552,29 +13403,30 @@
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
+ "integrity":
+ "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.7.0",
+ "aws4": "1.8.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.7",
+ "extend": "3.0.2",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.3",
+ "har-validator": "5.1.0",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.20",
+ "oauth-sign": "0.9.0",
+ "performance-now": "2.1.0",
+ "qs": "6.5.2",
+ "safe-buffer": "5.1.2",
+ "tough-cookie": "2.4.3",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.3.2"
}
},
"require-directory": {
@@ -12596,14 +13448,16 @@
"dev": true
},
"resize-observer-polyfill": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz",
- "integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg=="
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity":
+ "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
},
"resolve": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
- "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+ "integrity":
+ "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
"dev": true,
"requires": {
"path-parse": "^1.0.5"
@@ -12615,7 +13469,7 @@
"integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
"dev": true,
"requires": {
- "resolve-from": "^3.0.0"
+ "resolve-from": "3.0.0"
}
},
"resolve-dir": {
@@ -12624,8 +13478,8 @@
"integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
"dev": true,
"requires": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
+ "expand-tilde": "2.0.2",
+ "global-modules": "1.0.0"
}
},
"resolve-from": {
@@ -12637,7 +13491,8 @@
"resolve-pathname": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz",
- "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg=="
+ "integrity":
+ "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg=="
},
"resolve-url": {
"version": "0.2.1",
@@ -12651,40 +13506,44 @@
"integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
"requires": {
- "exit-hook": "^1.0.0",
- "onetime": "^1.0.0"
+ "exit-hook": "1.1.1",
+ "onetime": "1.1.0"
}
},
"ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "integrity":
+ "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "integrity":
+ "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"requires": {
- "glob": "^7.0.5"
+ "glob": "7.1.3"
}
},
"ripemd160": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "integrity":
+ "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
"dev": true,
"requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
+ "hash-base": "3.0.4",
+ "inherits": "2.0.3"
}
},
"rtcpeerconnection-shim": {
"version": "1.2.14",
"resolved": "https://registry.npmjs.org/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.14.tgz",
- "integrity": "sha512-/sl1vgarkFPU2rbXy+EMmytMQIzCKNbIm3fChjPnsdytKAROgoivB0KLE7PQRjKx/d/nr/Yx+6qu0/eCpoxn/A==",
+ "integrity":
+ "sha512-/sl1vgarkFPU2rbXy+EMmytMQIzCKNbIm3fChjPnsdytKAROgoivB0KLE7PQRjKx/d/nr/Yx+6qu0/eCpoxn/A==",
"requires": {
- "sdp": "^2.6.0"
+ "sdp": "2.9.0"
}
},
"run-async": {
@@ -12693,13 +13552,14 @@
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
"dev": true,
"requires": {
- "is-promise": "^2.1.0"
+ "is-promise": "2.1.0"
}
},
"run-parallel": {
"version": "1.1.9",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
- "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "integrity":
+ "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
"dev": true
},
"run-queue": {
@@ -12708,13 +13568,14 @@
"integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
"dev": true,
"requires": {
- "aproba": "^1.1.1"
+ "aproba": "1.2.0"
}
},
"rxjs": {
"version": "5.5.12",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
- "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
+ "integrity":
+ "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
@@ -12731,7 +13592,8 @@
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity":
+ "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safe-regex": {
"version": "1.1.0",
@@ -12739,13 +13601,14 @@
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
- "ret": "~0.1.10"
+ "ret": "0.1.15"
}
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "integrity":
+ "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sanitize-filename": {
"version": "1.6.1",
@@ -12753,109 +13616,72 @@
"integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=",
"dev": true,
"requires": {
- "truncate-utf8-bytes": "^1.0.0"
- }
- },
- "sanitize-html-react": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/sanitize-html-react/-/sanitize-html-react-1.13.0.tgz",
- "integrity": "sha1-51e5rbryyKdi89Lf9wE4g44FQgo=",
- "requires": {
- "htmlparser2": "^3.9.0",
- "regexp-quote": "0.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "domhandler": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
- "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
- "requires": {
- "domelementtype": "1"
- }
- },
- "htmlparser2": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz",
- "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==",
- "requires": {
- "domelementtype": "^1.3.0",
- "domhandler": "^2.3.0",
- "domutils": "^1.5.1",
- "entities": "^1.1.1",
- "inherits": "^2.0.1",
- "readable-stream": "^3.0.6"
- }
- },
- "readable-stream": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz",
- "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
+ "truncate-utf8-bytes": "1.0.2"
}
},
"sass-loader": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz",
- "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==",
+ "integrity":
+ "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==",
"dev": true,
"requires": {
- "clone-deep": "^2.0.1",
- "loader-utils": "^1.0.1",
- "lodash.tail": "^4.1.1",
- "neo-async": "^2.5.0",
- "pify": "^3.0.0",
- "semver": "^5.5.0"
+ "clone-deep": "2.0.2",
+ "loader-utils": "1.1.0",
+ "lodash.tail": "4.1.1",
+ "neo-async": "2.6.0",
+ "pify": "3.0.0",
+ "semver": "5.6.0"
}
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ "integrity":
+ "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"schedule": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/schedule/-/schedule-0.5.0.tgz",
- "integrity": "sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw==",
+ "integrity":
+ "sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw==",
"requires": {
- "object-assign": "^4.1.1"
+ "object-assign": "4.1.1"
}
},
"scheduler": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.10.0.tgz",
- "integrity": "sha512-+TSTVTCBAA3h8Anei3haDc1IRwMeDmtI/y/o3iBe3Mjl2vwYF9DtPDt929HyRmV/e7au7CLu8sc4C4W0VOs29w==",
+ "integrity":
+ "sha512-+TSTVTCBAA3h8Anei3haDc1IRwMeDmtI/y/o3iBe3Mjl2vwYF9DtPDt929HyRmV/e7au7CLu8sc4C4W0VOs29w==",
"requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1"
}
},
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "integrity":
+ "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
"dev": true,
"requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
+ "ajv": "6.5.4",
+ "ajv-errors": "1.0.0",
+ "ajv-keywords": "3.2.0"
},
"dependencies": {
"ajv": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz",
- "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
+ "integrity":
+ "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
"dev": true,
"requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "fast-deep-equal": "2.0.1",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.4.1",
+ "uri-js": "4.2.2"
}
},
"fast-deep-equal": {
@@ -12867,7 +13693,8 @@
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "integrity":
+ "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
}
}
@@ -12875,12 +13702,14 @@
"sdp": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/sdp/-/sdp-2.9.0.tgz",
- "integrity": "sha512-XAVZQO4qsfzVTHorF49zCpkdxiGmPNjA8ps8RcJGtGP3QJ/A8I9/SVg/QnkAFDMXIyGbHZBBFwYBw6WdnhT96w=="
+ "integrity":
+ "sha512-XAVZQO4qsfzVTHorF49zCpkdxiGmPNjA8ps8RcJGtGP3QJ/A8I9/SVg/QnkAFDMXIyGbHZBBFwYBw6WdnhT96w=="
},
"semver": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
+ "integrity":
+ "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
},
"semver-diff": {
"version": "2.1.0",
@@ -12888,34 +13717,36 @@
"integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
"dev": true,
"requires": {
- "semver": "^5.0.3"
+ "semver": "5.6.0"
}
},
"send": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "integrity":
+ "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
"dev": true,
"requires": {
"debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
"fresh": "0.5.2",
- "http-errors": "~1.6.2",
+ "http-errors": "1.6.3",
"mime": "1.4.1",
"ms": "2.0.0",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.4.0"
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.4.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -12924,7 +13755,8 @@
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "integrity":
+ "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"dev": true
},
"ms": {
@@ -12938,18 +13770,20 @@
"serialize-javascript": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz",
- "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==",
+ "integrity":
+ "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==",
"dev": true
},
"serve-static": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
- "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "integrity":
+ "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
"dev": true,
"requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "parseurl": "1.3.2",
"send": "0.16.2"
}
},
@@ -12961,13 +13795,14 @@
"set-value": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
- "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "integrity":
+ "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
"dev": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "split-string": "3.1.0"
},
"dependencies": {
"extend-shallow": {
@@ -12976,7 +13811,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -12989,34 +13824,38 @@
"setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "integrity":
+ "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
"dev": true
},
"sha.js": {
"version": "2.4.11",
- "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity":
+ "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
"shallow-clone": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
- "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "integrity":
+ "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
"dev": true,
"requires": {
- "is-extendable": "^0.1.1",
- "kind-of": "^5.0.0",
- "mixin-object": "^2.0.1"
+ "is-extendable": "0.1.1",
+ "kind-of": "5.1.0",
+ "mixin-object": "2.0.1"
},
"dependencies": {
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "integrity":
+ "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
"dev": true
}
}
@@ -13027,7 +13866,7 @@
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"requires": {
- "shebang-regex": "^1.0.0"
+ "shebang-regex": "1.0.0"
}
},
"shebang-regex": {
@@ -13042,10 +13881,10 @@
"integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
"dev": true,
"requires": {
- "array-filter": "~0.0.0",
- "array-map": "~0.0.0",
- "array-reduce": "~0.0.0",
- "jsonify": "~0.0.0"
+ "array-filter": "0.0.1",
+ "array-map": "0.0.0",
+ "array-reduce": "0.0.0",
+ "jsonify": "0.0.0"
}
},
"signal-exit": {
@@ -13061,11 +13900,12 @@
"simple-get": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz",
- "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",
+ "integrity":
+ "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==",
"requires": {
- "decompress-response": "^3.3.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
+ "decompress-response": "3.3.0",
+ "once": "1.4.0",
+ "simple-concat": "1.0.0"
}
},
"single-line-log": {
@@ -13074,7 +13914,7 @@
"integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
"dev": true,
"requires": {
- "string-width": "^1.0.1"
+ "string-width": "1.0.2"
}
},
"slash": {
@@ -13092,23 +13932,25 @@
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "integrity":
+ "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
"dev": true,
"requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
+ "base": "0.11.2",
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "map-cache": "0.2.2",
+ "source-map": "0.5.7",
+ "source-map-resolve": "0.5.2",
+ "use": "3.1.1"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -13120,7 +13962,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
},
"extend-shallow": {
@@ -13129,7 +13971,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
},
"ms": {
@@ -13149,12 +13991,13 @@
"snapdragon-node": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "integrity":
+ "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
"dev": true,
"requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "snapdragon-util": "3.0.1"
},
"dependencies": {
"define-property": {
@@ -13163,36 +14006,39 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.0"
+ "is-descriptor": "1.0.2"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "integrity":
+ "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "integrity":
+ "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.2"
}
},
"is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "integrity":
+ "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
}
}
}
@@ -13200,10 +14046,11 @@
"snapdragon-util": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "integrity":
+ "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
"dev": true,
"requires": {
- "kind-of": "^3.2.0"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -13212,7 +14059,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -13223,18 +14070,19 @@
"integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=",
"dev": true,
"requires": {
- "debug": "^2.6.6",
+ "debug": "2.6.9",
"eventsource": "0.1.6",
- "faye-websocket": "~0.11.0",
- "inherits": "^2.0.1",
- "json3": "^3.3.2",
- "url-parse": "^1.1.8"
+ "faye-websocket": "0.11.1",
+ "inherits": "2.0.3",
+ "json3": "3.3.2",
+ "url-parse": "1.4.3"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -13251,34 +14099,38 @@
"source-list-map": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
- "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "integrity":
+ "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ "integrity":
+ "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"source-map-resolve": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "integrity":
+ "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
"dev": true,
"requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
+ "atob": "2.1.2",
+ "decode-uri-component": "0.2.0",
+ "resolve-url": "0.2.1",
+ "source-map-url": "0.4.0",
+ "urix": "0.1.0"
}
},
"source-map-support": {
"version": "0.5.9",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
- "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+ "integrity":
+ "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
"requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "buffer-from": "1.1.1",
+ "source-map": "0.6.1"
}
},
"source-map-url": {
@@ -13296,33 +14148,37 @@
"spdx-correct": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
- "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
+ "integrity":
+ "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
"dev": true,
"requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-expression-parse": "3.0.0",
+ "spdx-license-ids": "3.0.1"
}
},
"spdx-exceptions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "integrity":
+ "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"spdx-expression-parse": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "integrity":
+ "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true,
"requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-exceptions": "2.2.0",
+ "spdx-license-ids": "3.0.1"
}
},
"spdx-license-ids": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
- "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
+ "integrity":
+ "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
"dev": true
},
"speedometer": {
@@ -13334,19 +14190,21 @@
"split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "integrity":
+ "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
"dev": true,
"requires": {
- "extend-shallow": "^3.0.0"
+ "extend-shallow": "3.0.2"
}
},
"split2": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
- "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+ "integrity":
+ "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
"dev": true,
"requires": {
- "through2": "^2.0.2"
+ "through2": "2.0.3"
},
"dependencies": {
"through2": {
@@ -13355,8 +14213,8 @@
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"dev": true,
"requires": {
- "readable-stream": "^2.1.5",
- "xtend": "~4.0.1"
+ "readable-stream": "2.3.6",
+ "xtend": "4.0.1"
}
}
}
@@ -13369,41 +14227,45 @@
"sshpk": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz",
- "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==",
+ "integrity":
+ "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==",
"dev": true,
"requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
+ "asn1": "0.2.4",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.2",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.2",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2",
+ "tweetnacl": "0.14.5"
}
},
"ssri": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz",
- "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
+ "integrity":
+ "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
"dev": true,
"requires": {
- "safe-buffer": "^5.1.1"
+ "safe-buffer": "5.1.2"
}
},
"stack-generator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.3.tgz",
- "integrity": "sha512-kdzGoqrnqsMxOEuXsXyQTmvWXZmG0f3Ql2GDx5NtmZs59sT2Bt9Vdyq0XdtxUi58q/+nxtbF9KOQ9HkV1QznGg==",
+ "integrity":
+ "sha512-kdzGoqrnqsMxOEuXsXyQTmvWXZmG0f3Ql2GDx5NtmZs59sT2Bt9Vdyq0XdtxUi58q/+nxtbF9KOQ9HkV1QznGg==",
"requires": {
- "stackframe": "^1.0.4"
+ "stackframe": "1.0.4"
}
},
"stackframe": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz",
- "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw=="
+ "integrity":
+ "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw=="
},
"stat-mode": {
"version": "0.2.2",
@@ -13414,7 +14276,8 @@
"state-toggle": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz",
- "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og=="
+ "integrity":
+ "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og=="
},
"static-extend": {
"version": "0.1.2",
@@ -13422,8 +14285,8 @@
"integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
"dev": true,
"requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
+ "define-property": "0.2.5",
+ "object-copy": "0.1.0"
},
"dependencies": {
"define-property": {
@@ -13432,7 +14295,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
}
}
@@ -13440,7 +14303,8 @@
"statuses": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "integrity":
+ "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
"dev": true
},
"stream-browserify": {
@@ -13449,31 +14313,33 @@
"integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
"dev": true,
"requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
}
},
"stream-each": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
- "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "integrity":
+ "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
"dev": true,
"requires": {
- "end-of-stream": "^1.1.0",
- "stream-shift": "^1.0.0"
+ "end-of-stream": "1.4.1",
+ "stream-shift": "1.0.0"
}
},
"stream-http": {
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
- "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "integrity":
+ "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
"dev": true,
"requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
+ "builtin-status-codes": "3.0.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "to-arraybuffer": "1.0.1",
+ "xtend": "4.0.1"
}
},
"stream-shift": {
@@ -13493,25 +14359,26 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "integrity":
+ "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
},
"strip-ansi": {
"version": "3.0.1",
- "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"strip-bom": {
@@ -13545,11 +14412,12 @@
"style-loader": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
- "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
+ "integrity":
+ "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
"dev": true,
"requires": {
- "loader-utils": "^1.1.0",
- "schema-utils": "^1.0.0"
+ "loader-utils": "1.1.0",
+ "schema-utils": "1.0.0"
}
},
"sumchecker": {
@@ -13558,13 +14426,14 @@
"integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
"dev": true,
"requires": {
- "debug": "^2.2.0"
+ "debug": "2.6.9"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "integrity":
+ "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -13581,35 +14450,39 @@
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "integrity":
+ "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "3.0.0"
}
},
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
- "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
+ "integrity":
+ "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
},
"tapable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz",
- "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==",
+ "integrity":
+ "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==",
"dev": true
},
"tar": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.6.tgz",
- "integrity": "sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==",
- "requires": {
- "chownr": "^1.0.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.3.3",
- "minizlib": "^1.1.0",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.2"
+ "integrity":
+ "sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==",
+ "requires": {
+ "chownr": "1.1.1",
+ "fs-minipass": "1.2.5",
+ "minipass": "2.3.5",
+ "minizlib": "1.1.1",
+ "mkdirp": "0.5.1",
+ "safe-buffer": "5.1.2",
+ "yallist": "3.0.2"
},
"dependencies": {
"yallist": {
@@ -13622,21 +14495,23 @@
"tar-fs": {
"version": "1.16.3",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
- "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
+ "integrity":
+ "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
"requires": {
- "chownr": "^1.0.1",
- "mkdirp": "^0.5.1",
- "pump": "^1.0.0",
- "tar-stream": "^1.1.2"
+ "chownr": "1.1.1",
+ "mkdirp": "0.5.1",
+ "pump": "1.0.3",
+ "tar-stream": "1.6.2"
},
"dependencies": {
"pump": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
- "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "integrity":
+ "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
"requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
}
}
}
@@ -13644,15 +14519,16 @@
"tar-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+ "integrity":
+ "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
"requires": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
- "fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
+ "bl": "1.2.2",
+ "buffer-alloc": "1.2.0",
+ "end-of-stream": "1.4.1",
+ "fs-constants": "1.0.0",
+ "readable-stream": "2.3.6",
+ "to-buffer": "1.1.1",
+ "xtend": "4.0.1"
}
},
"term-size": {
@@ -13661,7 +14537,7 @@
"integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
"requires": {
- "execa": "^0.7.0"
+ "execa": "0.7.0"
},
"dependencies": {
"cross-spawn": {
@@ -13670,9 +14546,9 @@
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "lru-cache": "4.1.3",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
}
},
"execa": {
@@ -13681,13 +14557,13 @@
"integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
}
}
}
@@ -13720,8 +14596,8 @@
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.3.tgz",
"integrity": "sha1-eVKS/enyVMKjaLOPnMXRvUZjr7Y=",
"requires": {
- "readable-stream": ">=1.0.33-1 <1.1.0-0",
- "xtend": ">=4.0.0 <4.1.0-0"
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
},
"dependencies": {
"isarray": {
@@ -13731,13 +14607,13 @@
},
"readable-stream": {
"version": "1.0.34",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"string_decoder": {
@@ -13756,19 +14632,21 @@
"timers-browserify": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
- "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+ "integrity":
+ "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
"dev": true,
"requires": {
- "setimmediate": "^1.0.4"
+ "setimmediate": "1.0.5"
}
},
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "integrity":
+ "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
"requires": {
- "os-tmpdir": "~1.0.2"
+ "os-tmpdir": "1.0.2"
}
},
"to-arraybuffer": {
@@ -13780,7 +14658,8 @@
"to-buffer": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
+ "integrity":
+ "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
},
"to-fast-properties": {
"version": "2.0.0",
@@ -13794,7 +14673,7 @@
"integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -13803,7 +14682,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -13811,13 +14690,14 @@
"to-regex": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "integrity":
+ "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
"dev": true,
"requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "regex-not": "1.0.2",
+ "safe-regex": "1.1.0"
}
},
"to-regex-range": {
@@ -13826,8 +14706,8 @@
"integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"dev": true,
"requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1"
}
},
"toposort": {
@@ -13839,17 +14719,19 @@
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "integrity":
+ "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
+ "psl": "1.1.29",
+ "punycode": "1.4.1"
}
},
"tree-kill": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
- "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
+ "integrity":
+ "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
"dev": true
},
"trim": {
@@ -13872,12 +14754,14 @@
"trim-trailing-lines": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz",
- "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg=="
+ "integrity":
+ "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg=="
},
"trough": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.3.tgz",
- "integrity": "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw=="
+ "integrity":
+ "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw=="
},
"truncate-utf8-bytes": {
"version": "1.0.2",
@@ -13885,13 +14769,14 @@
"integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
"dev": true,
"requires": {
- "utf8-byte-length": "^1.0.1"
+ "utf8-byte-length": "1.0.4"
}
},
"tslib": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
- "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+ "integrity":
+ "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
"dev": true
},
"tty-browserify": {
@@ -13905,7 +14790,7 @@
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
- "safe-buffer": "^5.0.1"
+ "safe-buffer": "5.1.2"
}
},
"tweetnacl": {
@@ -13917,11 +14802,12 @@
"type-is": {
"version": "1.6.16",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
- "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "integrity":
+ "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
"dev": true,
"requires": {
"media-typer": "0.3.0",
- "mime-types": "~2.1.18"
+ "mime-types": "2.1.20"
}
},
"typedarray": {
@@ -13933,50 +14819,55 @@
"ua-parser-js": {
"version": "0.7.18",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz",
- "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA=="
+ "integrity":
+ "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA=="
},
"uglify-js": {
"version": "3.4.9",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
- "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+ "integrity":
+ "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
"dev": true,
"requires": {
- "commander": "~2.17.1",
- "source-map": "~0.6.1"
+ "commander": "2.17.1",
+ "source-map": "0.6.1"
}
},
"uglifyjs-webpack-plugin": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz",
- "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==",
- "dev": true,
- "requires": {
- "cacache": "^10.0.4",
- "find-cache-dir": "^1.0.0",
- "schema-utils": "^0.4.5",
- "serialize-javascript": "^1.4.0",
- "source-map": "^0.6.1",
- "uglify-es": "^3.3.4",
- "webpack-sources": "^1.1.0",
- "worker-farm": "^1.5.2"
+ "integrity":
+ "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==",
+ "dev": true,
+ "requires": {
+ "cacache": "10.0.4",
+ "find-cache-dir": "1.0.0",
+ "schema-utils": "0.4.7",
+ "serialize-javascript": "1.5.0",
+ "source-map": "0.6.1",
+ "uglify-es": "3.3.9",
+ "webpack-sources": "1.3.0",
+ "worker-farm": "1.6.0"
},
"dependencies": {
"ajv": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz",
- "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
+ "integrity":
+ "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
"dev": true,
"requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "fast-deep-equal": "2.0.1",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.4.1",
+ "uri-js": "4.2.2"
}
},
"commander": {
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
- "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
+ "integrity":
+ "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
"dev": true
},
"fast-deep-equal": {
@@ -13988,27 +14879,30 @@
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "integrity":
+ "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"schema-utils": {
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
- "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "integrity":
+ "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
"dev": true,
"requires": {
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0"
+ "ajv": "6.5.4",
+ "ajv-keywords": "3.2.0"
}
},
"uglify-es": {
"version": "3.3.9",
"resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
- "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "integrity":
+ "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
"dev": true,
"requires": {
- "commander": "~2.13.0",
- "source-map": "~0.6.1"
+ "commander": "2.13.0",
+ "source-map": "0.6.1"
}
}
}
@@ -14016,51 +14910,61 @@
"unherit": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz",
- "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==",
+ "integrity":
+ "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==",
"requires": {
- "inherits": "^2.0.1",
- "xtend": "^4.0.1"
+ "inherits": "2.0.3",
+ "xtend": "4.0.1"
}
},
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
- "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "resolved":
+ "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity":
+ "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
"dev": true
},
"unicode-match-property-ecmascript": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
- "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "resolved":
+ "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity":
+ "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
"dev": true,
"requires": {
- "unicode-canonical-property-names-ecmascript": "^1.0.4",
- "unicode-property-aliases-ecmascript": "^1.0.4"
+ "unicode-canonical-property-names-ecmascript": "1.0.4",
+ "unicode-property-aliases-ecmascript": "1.0.4"
}
},
"unicode-match-property-value-ecmascript": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz",
- "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==",
+ "resolved":
+ "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz",
+ "integrity":
+ "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==",
"dev": true
},
"unicode-property-aliases-ecmascript": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz",
- "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==",
+ "resolved":
+ "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz",
+ "integrity":
+ "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==",
"dev": true
},
"unified": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
- "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
+ "integrity":
+ "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
"requires": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^1.1.0",
- "trough": "^1.0.0",
- "vfile": "^2.0.0",
- "x-is-string": "^0.1.0"
+ "bail": "1.0.3",
+ "extend": "3.0.2",
+ "is-plain-obj": "1.1.0",
+ "trough": "1.0.3",
+ "vfile": "2.3.0",
+ "x-is-string": "0.1.0"
}
},
"union-value": {
@@ -14069,10 +14973,10 @@
"integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
"dev": true,
"requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^0.4.3"
+ "arr-union": "3.1.0",
+ "get-value": "2.0.6",
+ "is-extendable": "0.1.1",
+ "set-value": "0.4.3"
},
"dependencies": {
"extend-shallow": {
@@ -14081,7 +14985,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
},
"set-value": {
@@ -14090,10 +14994,10 @@
"integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
"dev": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.1",
- "to-object-path": "^0.3.0"
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "to-object-path": "0.3.0"
}
}
}
@@ -14101,19 +15005,21 @@
"unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
- "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "integrity":
+ "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
"dev": true,
"requires": {
- "unique-slug": "^2.0.0"
+ "unique-slug": "2.0.1"
}
},
"unique-slug": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
- "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
+ "integrity":
+ "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
"dev": true,
"requires": {
- "imurmurhash": "^0.1.4"
+ "imurmurhash": "0.1.4"
}
},
"unique-string": {
@@ -14122,41 +15028,48 @@
"integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
"dev": true,
"requires": {
- "crypto-random-string": "^1.0.0"
+ "crypto-random-string": "1.0.0"
}
},
"unist-util-is": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz",
- "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw=="
+ "integrity":
+ "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw=="
},
"unist-util-remove-position": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz",
- "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==",
+ "integrity":
+ "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==",
"requires": {
- "unist-util-visit": "^1.1.0"
+ "unist-util-visit": "1.4.0"
}
},
"unist-util-stringify-position": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
- "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
+ "resolved":
+ "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
+ "integrity":
+ "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
},
"unist-util-visit": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz",
- "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==",
+ "integrity":
+ "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==",
"requires": {
- "unist-util-visit-parents": "^2.0.0"
+ "unist-util-visit-parents": "2.0.1"
},
"dependencies": {
"unist-util-visit-parents": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz",
- "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==",
+ "resolved":
+ "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz",
+ "integrity":
+ "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==",
"requires": {
- "unist-util-is": "^2.1.2"
+ "unist-util-is": "2.1.2"
}
}
}
@@ -14164,12 +15077,14 @@
"unist-util-visit-parents": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz",
- "integrity": "sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q=="
+ "integrity":
+ "sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q=="
},
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ "integrity":
+ "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe": {
"version": "1.0.0",
@@ -14183,8 +15098,8 @@
"integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
"dev": true,
"requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
+ "has-value": "0.3.1",
+ "isobject": "3.0.1"
},
"dependencies": {
"has-value": {
@@ -14193,9 +15108,9 @@
"integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
"dev": true,
"requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
+ "get-value": "2.0.6",
+ "has-values": "0.1.4",
+ "isobject": "2.1.0"
},
"dependencies": {
"isobject": {
@@ -14226,25 +15141,27 @@
"upath": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
- "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+ "integrity":
+ "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
"dev": true
},
"update-notifier": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
- "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+ "integrity":
+ "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
"dev": true,
"requires": {
- "boxen": "^1.2.1",
- "chalk": "^2.0.1",
- "configstore": "^3.0.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^1.0.10",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^1.0.0",
- "latest-version": "^3.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.0"
+ "boxen": "1.3.0",
+ "chalk": "2.4.1",
+ "configstore": "3.1.2",
+ "import-lazy": "2.1.0",
+ "is-ci": "1.2.1",
+ "is-installed-globally": "0.1.0",
+ "is-npm": "1.0.0",
+ "latest-version": "3.1.0",
+ "semver-diff": "2.1.0",
+ "xdg-basedir": "3.0.0"
}
},
"upper-case": {
@@ -14256,16 +15173,18 @@
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
- "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "integrity":
+ "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": {
- "punycode": "^2.1.0"
+ "punycode": "2.1.1"
},
"dependencies": {
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "integrity":
+ "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
}
}
@@ -14297,22 +15216,24 @@
"url-loader": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
- "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
+ "integrity":
+ "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
"dev": true,
"requires": {
- "loader-utils": "^1.1.0",
- "mime": "^2.0.3",
- "schema-utils": "^1.0.0"
+ "loader-utils": "1.1.0",
+ "mime": "2.3.1",
+ "schema-utils": "1.0.0"
}
},
"url-parse": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
- "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
+ "integrity":
+ "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
"dev": true,
"requires": {
- "querystringify": "^2.0.0",
- "requires-port": "^1.0.0"
+ "querystringify": "2.1.0",
+ "requires-port": "1.0.0"
}
},
"url-parse-lax": {
@@ -14321,22 +15242,24 @@
"integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"dev": true,
"requires": {
- "prepend-http": "^1.0.1"
+ "prepend-http": "1.0.4"
}
},
"usb": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/usb/-/usb-1.3.3.tgz",
- "integrity": "sha512-WRBxI54yEs2QPj28G6kITI3Wu7VxrtHbqiDvDRUDKdg97lcK1pTP8y9LoDWF22OiCCrEvrdeq0lNcr84QOzjXQ==",
+ "integrity":
+ "sha512-WRBxI54yEs2QPj28G6kITI3Wu7VxrtHbqiDvDRUDKdg97lcK1pTP8y9LoDWF22OiCCrEvrdeq0lNcr84QOzjXQ==",
"requires": {
- "nan": "^2.8.0",
- "node-pre-gyp": "^0.10.0"
+ "nan": "2.11.1",
+ "node-pre-gyp": "0.10.3"
}
},
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "integrity":
+ "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
"utf8-byte-length": {
@@ -14348,7 +15271,8 @@
"util": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
- "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "integrity":
+ "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"dev": true,
"requires": {
"inherits": "2.0.3"
@@ -14362,11 +15286,12 @@
"util.promisify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
- "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "integrity":
+ "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
"dev": true,
"requires": {
- "define-properties": "^1.1.2",
- "object.getownpropertydescriptors": "^2.0.3"
+ "define-properties": "1.1.3",
+ "object.getownpropertydescriptors": "2.0.3"
}
},
"utila": {
@@ -14384,28 +15309,33 @@
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ "integrity":
+ "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"v8-compile-cache": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
- "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
+ "integrity":
+ "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
"dev": true
},
"validate-npm-package-license": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "resolved":
+ "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity":
+ "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "spdx-correct": "3.0.2",
+ "spdx-expression-parse": "3.0.0"
}
},
"value-equal": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz",
- "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw=="
+ "integrity":
+ "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw=="
},
"vary": {
"version": "1.1.2",
@@ -14419,33 +15349,36 @@
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
- "assert-plus": "^1.0.0",
+ "assert-plus": "1.0.0",
"core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
+ "extsprintf": "1.3.0"
}
},
"vfile": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
- "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
+ "integrity":
+ "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
"requires": {
- "is-buffer": "^1.1.4",
+ "is-buffer": "1.1.6",
"replace-ext": "1.0.0",
- "unist-util-stringify-position": "^1.0.0",
- "vfile-message": "^1.0.0"
+ "unist-util-stringify-position": "1.1.2",
+ "vfile-message": "1.0.1"
}
},
"vfile-location": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz",
- "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A=="
+ "integrity":
+ "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A=="
},
"vfile-message": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.1.tgz",
- "integrity": "sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug==",
+ "integrity":
+ "sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug==",
"requires": {
- "unist-util-stringify-position": "^1.1.1"
+ "unist-util-stringify-position": "1.1.2"
}
},
"vm-browserify": {
@@ -14465,64 +15398,68 @@
"warning": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz",
- "integrity": "sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug==",
+ "integrity":
+ "sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug==",
"requires": {
- "loose-envify": "^1.0.0"
+ "loose-envify": "1.4.0"
}
},
"watchpack": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
- "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "integrity":
+ "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
"dev": true,
"requires": {
- "chokidar": "^2.0.2",
- "graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0"
+ "chokidar": "2.0.4",
+ "graceful-fs": "4.1.11",
+ "neo-async": "2.6.0"
}
},
"webpack": {
"version": "4.21.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.21.0.tgz",
- "integrity": "sha512-CGBeop4AYR0dcmk9Afl33qQULwTHQCXQPAIBTHMJoy9DpY8FPUDna/NUlAGTr5o5y9QC901Ww3wCY4wNo1X9Lw==",
+ "integrity":
+ "sha512-CGBeop4AYR0dcmk9Afl33qQULwTHQCXQPAIBTHMJoy9DpY8FPUDna/NUlAGTr5o5y9QC901Ww3wCY4wNo1X9Lw==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.8",
"@webassemblyjs/helper-module-context": "1.7.8",
"@webassemblyjs/wasm-edit": "1.7.8",
"@webassemblyjs/wasm-parser": "1.7.8",
- "acorn": "^5.6.2",
- "acorn-dynamic-import": "^3.0.0",
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0",
- "chrome-trace-event": "^1.0.0",
- "enhanced-resolve": "^4.1.0",
- "eslint-scope": "^4.0.0",
- "json-parse-better-errors": "^1.0.2",
- "loader-runner": "^2.3.0",
- "loader-utils": "^1.1.0",
- "memory-fs": "~0.4.1",
- "micromatch": "^3.1.8",
- "mkdirp": "~0.5.0",
- "neo-async": "^2.5.0",
- "node-libs-browser": "^2.0.0",
- "schema-utils": "^0.4.4",
- "tapable": "^1.1.0",
- "uglifyjs-webpack-plugin": "^1.2.4",
- "watchpack": "^1.5.0",
- "webpack-sources": "^1.3.0"
+ "acorn": "5.7.3",
+ "acorn-dynamic-import": "3.0.0",
+ "ajv": "6.5.4",
+ "ajv-keywords": "3.2.0",
+ "chrome-trace-event": "1.0.0",
+ "enhanced-resolve": "4.1.0",
+ "eslint-scope": "4.0.0",
+ "json-parse-better-errors": "1.0.2",
+ "loader-runner": "2.3.1",
+ "loader-utils": "1.1.0",
+ "memory-fs": "0.4.1",
+ "micromatch": "3.1.10",
+ "mkdirp": "0.5.1",
+ "neo-async": "2.6.0",
+ "node-libs-browser": "2.1.0",
+ "schema-utils": "0.4.7",
+ "tapable": "1.1.0",
+ "uglifyjs-webpack-plugin": "1.3.0",
+ "watchpack": "1.6.0",
+ "webpack-sources": "1.3.0"
},
"dependencies": {
"ajv": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz",
- "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
+ "integrity":
+ "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
"dev": true,
"requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "fast-deep-equal": "2.0.1",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.4.1",
+ "uri-js": "4.2.2"
}
},
"fast-deep-equal": {
@@ -14534,17 +15471,19 @@
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "integrity":
+ "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"schema-utils": {
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
- "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "integrity":
+ "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
"dev": true,
"requires": {
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0"
+ "ajv": "6.5.4",
+ "ajv-keywords": "3.2.0"
}
}
}
@@ -14552,72 +15491,78 @@
"webpack-cli": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz",
- "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==",
+ "integrity":
+ "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "enhanced-resolve": "^4.1.0",
- "global-modules-path": "^2.3.0",
- "import-local": "^2.0.0",
- "interpret": "^1.1.0",
- "loader-utils": "^1.1.0",
- "supports-color": "^5.5.0",
- "v8-compile-cache": "^2.0.2",
- "yargs": "^12.0.2"
+ "chalk": "2.4.1",
+ "cross-spawn": "6.0.5",
+ "enhanced-resolve": "4.1.0",
+ "global-modules-path": "2.3.0",
+ "import-local": "2.0.0",
+ "interpret": "1.1.0",
+ "loader-utils": "1.1.0",
+ "supports-color": "5.5.0",
+ "v8-compile-cache": "2.0.2",
+ "yargs": "12.0.2"
}
},
"webpack-dev-middleware": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz",
- "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==",
+ "integrity":
+ "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==",
"dev": true,
"requires": {
- "memory-fs": "~0.4.1",
- "mime": "^2.3.1",
- "range-parser": "^1.0.3",
- "webpack-log": "^2.0.0"
+ "memory-fs": "0.4.1",
+ "mime": "2.3.1",
+ "range-parser": "1.2.0",
+ "webpack-log": "2.0.0"
}
},
"webpack-hot-middleware": {
"version": "2.24.3",
"resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.24.3.tgz",
- "integrity": "sha512-pPlmcdoR2Fn6UhYjAhp1g/IJy1Yc9hD+T6O9mjRcWV2pFbBjIFoJXhP0CoD0xPOhWJuWXuZXGBga9ybbOdzXpg==",
+ "integrity":
+ "sha512-pPlmcdoR2Fn6UhYjAhp1g/IJy1Yc9hD+T6O9mjRcWV2pFbBjIFoJXhP0CoD0xPOhWJuWXuZXGBga9ybbOdzXpg==",
"dev": true,
"requires": {
"ansi-html": "0.0.7",
- "html-entities": "^1.2.0",
- "querystring": "^0.2.0",
- "strip-ansi": "^3.0.0"
+ "html-entities": "1.2.1",
+ "querystring": "0.2.0",
+ "strip-ansi": "3.0.1"
}
},
"webpack-log": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
- "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "integrity":
+ "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
"dev": true,
"requires": {
- "ansi-colors": "^3.0.0",
- "uuid": "^3.3.2"
+ "ansi-colors": "3.1.0",
+ "uuid": "3.3.2"
}
},
"webpack-sources": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
- "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
+ "integrity":
+ "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
"dev": true,
"requires": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
+ "source-list-map": "2.0.1",
+ "source-map": "0.6.1"
}
},
"webrtc-adapter": {
"version": "6.4.3",
"resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-6.4.3.tgz",
- "integrity": "sha512-hWbIPXnCLsDP9QHtIM6LF8wjQ73FmgZxkCNS7poAAwRi2lGZfiu8FJq7Su5SO7fbzufaQ7flmQzGdepxerzJvQ==",
+ "integrity":
+ "sha512-hWbIPXnCLsDP9QHtIM6LF8wjQ73FmgZxkCNS7poAAwRi2lGZfiu8FJq7Su5SO7fbzufaQ7flmQzGdepxerzJvQ==",
"requires": {
- "rtcpeerconnection-shim": "^1.2.14",
- "sdp": "^2.9.0"
+ "rtcpeerconnection-shim": "1.2.14",
+ "sdp": "2.9.0"
}
},
"websocket-driver": {
@@ -14626,28 +15571,31 @@
"integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
"dev": true,
"requires": {
- "http-parser-js": ">=0.4.0",
- "websocket-extensions": ">=0.1.1"
+ "http-parser-js": "0.4.13",
+ "websocket-extensions": "0.1.3"
}
},
"websocket-extensions": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
- "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+ "integrity":
+ "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
"dev": true
},
"whatwg-fetch": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
- "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
+ "integrity":
+ "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "integrity":
+ "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "isexe": "2.0.0"
}
},
"which-module": {
@@ -14664,18 +15612,20 @@
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "integrity":
+ "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"requires": {
- "string-width": "^1.0.2 || 2"
+ "string-width": "1.0.2"
}
},
"widest-line": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
- "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "integrity":
+ "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
"dev": true,
"requires": {
- "string-width": "^2.1.1"
+ "string-width": "2.1.1"
},
"dependencies": {
"ansi-regex": {
@@ -14686,18 +15636,20 @@
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "integrity":
+ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -14706,7 +15658,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -14714,10 +15666,11 @@
"worker-farm": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
- "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
+ "integrity":
+ "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
"dev": true,
"requires": {
- "errno": "~0.1.7"
+ "errno": "0.1.7"
}
},
"wrap-ansi": {
@@ -14726,8 +15679,8 @@
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
}
},
"wrappy": {
@@ -14738,18 +15691,20 @@
"write-file-atomic": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
- "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "integrity":
+ "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
}
},
"ws": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
- "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz",
+ "integrity":
+ "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==",
"dev": true,
"requires": {
"async-limiter": "~1.0.0"
@@ -14780,7 +15735,8 @@
"xregexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
- "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
+ "integrity":
+ "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
"dev": true
},
"xtend": {
@@ -14791,7 +15747,8 @@
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "integrity":
+ "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yallist": {
@@ -14803,21 +15760,22 @@
"yargs": {
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
- "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
- "dev": true,
- "requires": {
- "cliui": "^4.0.0",
- "decamelize": "^2.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1 || ^4.0.0",
- "yargs-parser": "^10.1.0"
+ "integrity":
+ "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
+ "dev": true,
+ "requires": {
+ "cliui": "4.1.0",
+ "decamelize": "2.0.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "3.0.1",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "4.0.0",
+ "yargs-parser": "10.1.0"
},
"dependencies": {
"ansi-regex": {
@@ -14829,7 +15787,8 @@
"decamelize": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
- "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+ "integrity":
+ "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
"dev": true,
"requires": {
"xregexp": "4.0.0"
@@ -14838,60 +15797,67 @@
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "integrity":
+ "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "3.0.0"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "resolved":
+ "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "integrity":
+ "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
}
},
"p-limit": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
- "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "integrity":
+ "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "p-try": "2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "integrity":
+ "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "2.0.0"
}
},
"p-try": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "integrity":
+ "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "integrity":
+ "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -14900,7 +15866,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -14908,10 +15874,11 @@
"yargs-parser": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
- "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "integrity":
+ "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
"dev": true,
"requires": {
- "camelcase": "^4.1.0"
+ "camelcase": "4.1.0"
}
},
"yauzl": {
@@ -14920,7 +15887,7 @@
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
"dev": true,
"requires": {
- "fd-slicer": "~1.0.1"
+ "fd-slicer": "1.0.1"
}
}
}
diff --git a/src/desktop/package.json b/src/desktop/package.json
index b455d12757..e7dcccc5e4 100644
--- a/src/desktop/package.json
+++ b/src/desktop/package.json
@@ -19,7 +19,7 @@
"url": "git+https://github.com/iotaledger/trinity-wallet.git"
},
"scripts": {
- "start": "concurrently --kill-others \"npm run devserver\" \"cross-env NODE_ENV=development electron main.js\"",
+ "start": "concurrently --kill-others \"npm run devserver\" \"cross-env NODE_ENV=development electron -r @babel/register main.js\"",
"postinstall": "patch-package && electron-builder install-app-deps",
"devserver": "node server.js",
"style:shots": "node scripts/puppeteer.js",
@@ -35,7 +35,7 @@
"release": "./node_modules/.bin/cross-env CSC_IDENTITY_AUTO_DISCOVERY=false build -mwl"
},
"devDependencies": {
- "@babel/core": "^7.1.2",
+ "@babel/core": "^7.2.0",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
"@babel/preset-env": "^7.1.0",
@@ -54,9 +54,9 @@
"express": "^4.16.3",
"file-loader": "^2.0.0",
"html-webpack-plugin": "^3.2.0",
- "mini-css-extract-plugin": "^0.4.3",
+ "mini-css-extract-plugin": "^0.5.0",
"patch-package": "^5.1.1",
- "puppeteer": "^1.9.0",
+ "puppeteer": "^1.11.0",
"react-dev-utils": "^6.0.4",
"rimraf": "^2.6.2",
"sass-loader": "^7.1.0",
@@ -145,7 +145,7 @@
"classnames": "^2.2.6",
"electron-settings": "^3.2.0",
"electron-updater": "4.0.4",
- "entangled-node": "rihardsgravis/entangled-node",
+ "entangled-node": "rihardsgravis/entangled-node#v0.1.3",
"hw-app-iota": "^0.5.1",
"i18next": "^12.0.0",
"iota.lib.js": "^0.5.1",
@@ -162,9 +162,8 @@
"react-qr-reader": "^2.1.1",
"react-redux": "^5.0.7",
"react-router-dom": "^4.3.1",
- "react-tooltip": "^3.9.0",
"react-transition-group": "^2.5.0",
- "recharts": "^1.3.2",
+ "recharts": "^1.4.1",
"redux": "^4.0.0"
}
}
diff --git a/src/desktop/src/index.js b/src/desktop/src/index.js
index 7e84d19c71..e9d810d0f7 100644
--- a/src/desktop/src/index.js
+++ b/src/desktop/src/index.js
@@ -8,6 +8,7 @@ import { Provider as Redux } from 'react-redux';
import { MemoryRouter as Router } from 'react-router';
import i18next from 'libs/i18next';
import store, { persistStore } from 'store';
+import { assignAccountIndexIfNecessary } from 'actions/accounts';
import persistElectronStorage from 'libs/storage';
import { changeIotaNode } from 'libs/iota';
import createPlugin from 'bugsnag-react';
@@ -46,6 +47,9 @@ const persistor = persistStore(store, persistConfig, (err, restoredState) => {
if (node) {
changeIotaNode(node);
}
+
+ // Assign accountIndex to every account in accountInfo if it is not assigned already
+ store.dispatch(assignAccountIndexIfNecessary(get(restoredState, 'accounts.accountInfo')));
});
if (Electron.mode === 'tray') {
diff --git a/src/desktop/src/libs/SeedStore/Keychain.js b/src/desktop/src/libs/SeedStore/Keychain.js
index 3c44960de5..297239a8f9 100644
--- a/src/desktop/src/libs/SeedStore/Keychain.js
+++ b/src/desktop/src/libs/SeedStore/Keychain.js
@@ -195,6 +195,40 @@ class Keychain {
return decryptedVault;
};
+ /**
+ * Unique seed check
+ * @param {array} Seed - Seed to check
+ * @returns {boolean} If Seed is unique
+ */
+ isUniqueSeed = async (seed) => {
+ const vault = await Electron.listKeychain();
+ if (!vault) {
+ throw new Error('Local storage not available');
+ }
+ try {
+ const accounts = vault.filter((acc) => acc.account !== ACC_MAIN && acc.account !== `${ACC_MAIN}-salt`);
+
+ for (let i = 0; i < accounts.length; i++) {
+ const account = accounts[i];
+
+ const vaultSeed = await decrypt(account.password, this.key);
+
+ if (
+ vaultSeed.length === seed.length &&
+ seed.every((v, x) => {
+ return v % 27 === vaultSeed[x] % 27;
+ })
+ ) {
+ return false;
+ }
+ }
+
+ return true;
+ } catch (err) {
+ throw err;
+ }
+ };
+
/**
* Destroy the vault
*/
diff --git a/src/desktop/src/ui/Index.js b/src/desktop/src/ui/Index.js
index 44ff38e291..37e38c9a93 100644
--- a/src/desktop/src/ui/Index.js
+++ b/src/desktop/src/ui/Index.js
@@ -334,9 +334,4 @@ const mapDispatchToProps = {
forceUpdate,
};
-export default withRouter(
- connect(
- mapStateToProps,
- mapDispatchToProps,
- )(withI18n()(withAutoNodeSwitching(App))),
-);
+export default withRouter(connect(mapStateToProps, mapDispatchToProps)(withI18n()(withAutoNodeSwitching(App))));
diff --git a/src/desktop/src/ui/components/Checksum.js b/src/desktop/src/ui/components/Checksum.js
new file mode 100644
index 0000000000..45f0268cb5
--- /dev/null
+++ b/src/desktop/src/ui/components/Checksum.js
@@ -0,0 +1,25 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { ADDRESS_LENGTH, VALID_SEED_REGEX } from 'libs/iota/utils';
+
+/**
+ * Returns address with highlighted checksum
+ */
+const Checksum = ({ address }) => {
+ const validAddress =
+ typeof address === 'string' && address.length === ADDRESS_LENGTH && address.match(VALID_SEED_REGEX);
+
+ return (
+
+ {!validAddress ? address : address.substr(0, 81)}
+ {validAddress && {address.substr(81)}}
+
+ );
+};
+
+Checksum.propTypes = {
+ /** Target address */
+ address: PropTypes.string.isRequired,
+};
+
+export default Checksum;
diff --git a/src/desktop/src/ui/components/Dropzone.js b/src/desktop/src/ui/components/Dropzone.js
index 2601177d16..7a74547d7e 100644
--- a/src/desktop/src/ui/components/Dropzone.js
+++ b/src/desktop/src/ui/components/Dropzone.js
@@ -157,15 +157,15 @@ class Dropzone extends React.Component {
{' '}
-
- Drop SeedVault here
or click to browse
+
+ Drop SeedVault or text here
or click to browse
-
{t('seedVault:dropSeedVaultHere')}
+ {t('seedVault:dropActive')}
);
diff --git a/src/desktop/src/ui/components/List.js b/src/desktop/src/ui/components/List.js
index ad20bd6266..8bec40fd05 100644
--- a/src/desktop/src/ui/components/List.js
+++ b/src/desktop/src/ui/components/List.js
@@ -105,7 +105,11 @@ class List extends React.PureComponent {
text={`${input.address}${input.checksum}`}
title={t('history:addressCopied')}
success={t('history:addressCopiedExplanation')}
- />
+ address
+ >
+ {input.address}
+ {input.checksum}
+
{round(formatValue(input.value), 1)}
@@ -225,7 +229,7 @@ class List extends React.PureComponent {
totals[item] === 0 ? css.disabled : filter === item ? css.active : null,
)}
>
- {item === 'All' ? 'All' : t(item.toLowerCase())} ({totals[item]})
+ {item === 'All' ? t('global:all') : t(item.toLowerCase())} ({totals[item]})
);
})}
diff --git a/src/desktop/src/ui/components/Progress.js b/src/desktop/src/ui/components/Progress.js
index bf2e82791c..5357cc448a 100644
--- a/src/desktop/src/ui/components/Progress.js
+++ b/src/desktop/src/ui/components/Progress.js
@@ -15,7 +15,7 @@ export default class Progress extends React.PureComponent {
/** Progress bar subtitle */
subtitle: PropTypes.string,
/** Progress bar style type */
- type: PropTypes.oneOf([ 'large' ]),
+ type: PropTypes.oneOf(['large']),
};
render() {
diff --git a/src/desktop/src/ui/components/input/Address.js b/src/desktop/src/ui/components/input/Address.js
index 7c15f87511..44588e37fb 100644
--- a/src/desktop/src/ui/components/input/Address.js
+++ b/src/desktop/src/ui/components/input/Address.js
@@ -1,11 +1,11 @@
import React from 'react';
import QrReader from 'react-qr-reader';
-import ReactTooltip from 'react-tooltip';
import PropTypes from 'prop-types';
import { ADDRESS_LENGTH, parseAddress } from 'libs/iota/utils';
import Modal from 'ui/components/modal/Modal';
import Button from 'ui/components/Button';
+import Checksum from 'ui/components/Checksum';
import Icon from 'ui/components/Icon';
import css from './input.scss';
@@ -32,7 +32,6 @@ export default class Address extends React.PureComponent {
state = {
showScanner: false,
- inputFocused: false
};
componentDidMount() {
@@ -57,18 +56,6 @@ export default class Address extends React.PureComponent {
}
};
- handleFocus = () => {
- this.setState(() => ({
- inputFocused: true,
- }));
- };
-
- handleBlur = () => {
- this.setState(() => ({
- inputFocused: false,
- }));
- };
-
closeScanner = () => {
this.setState(() => ({
showScanner: false,
@@ -94,7 +81,7 @@ export default class Address extends React.PureComponent {
render() {
const { address, label, closeLabel } = this.props;
- const { showScanner, inputFocused } = this.state;
+ const { showScanner } = this.state;
return (
@@ -109,21 +96,23 @@ export default class Address extends React.PureComponent {
}}
value={address}
onChange={(e) => this.props.onChange(e.target.value)}
- onFocus={() => this.handleFocus()}
- onBlur={() => this.handleBlur()}
maxLength={ADDRESS_LENGTH}
data-tip={address}
/>
+ {this.isInputScrolling() && (
+
+
+
+ )}
{label}
-
{this.address = address;}} className={css.addressHidden}>
+
{
+ this.address = address;
+ }}
+ className={css.addressHidden}
+ >
{address}
- {!inputFocused && this.isInputScrolling() && (
-
- )}
{showScanner && (
diff --git a/src/desktop/src/ui/components/input/Password.js b/src/desktop/src/ui/components/input/Password.js
index 9b568d0294..5ebdbbaacb 100644
--- a/src/desktop/src/ui/components/input/Password.js
+++ b/src/desktop/src/ui/components/input/Password.js
@@ -108,7 +108,7 @@ class PasswordInput extends React.PureComponent {
/>
{label}
-
+
{t('capsLockIsOn')}
{showScore ? (
diff --git a/src/desktop/src/ui/components/input/Seed.js b/src/desktop/src/ui/components/input/Seed.js
index 468f8f7a93..a04c828f05 100644
--- a/src/desktop/src/ui/components/input/Seed.js
+++ b/src/desktop/src/ui/components/input/Seed.js
@@ -110,11 +110,12 @@ class SeedInput extends React.PureComponent {
};
onDrop = async (buffer) => {
+ const { t } = this.props;
if (!buffer) {
return this.props.generateAlert(
'error',
- 'Error opening keystore file',
- 'There was an error opening keystore file',
+ t('seedVault:seedFileError'),
+ t('seedVault:seedFileErrorExplanation'),
);
}
diff --git a/src/desktop/src/ui/components/input/input.scss b/src/desktop/src/ui/components/input/input.scss
index f8a5930dcf..a3afd20aea 100644
--- a/src/desktop/src/ui/components/input/input.scss
+++ b/src/desktop/src/ui/components/input/input.scss
@@ -46,6 +46,13 @@
}
}
+ &:hover {
+ .tooltip {
+ opacity: 1;
+ transition: 0.2s ease-in;
+ }
+ }
+
.editable {
display: block;
font-family: 'SourceCodePro';
@@ -542,20 +549,45 @@
}
.tooltip {
- background: var(--bar-bg) !important;
- color: var(--bar) !important;
- width: 324px !important;
+ position: absolute;
+ pointer-events: none;
+ z-index: 2;
+ font-size: 14px;
+ background: var(--bar-bg);
+ color: var(--bar);
+ width: 342px;
+ border-radius: 4px;
font-family: 'SourceCodePro';
letter-spacing: 2px;
word-wrap: break-word;
line-height: 21px;
- padding: 12px 14px 12px 16px !important;
+ padding: 12px 14px 12px 16px;
+ top: 48px;
+ left: 50%;
+ transform: translate(-50%, 0);
+ opacity: 0;
+
+ mark {
+ color: var(--primary);
+ }
&:after {
- border-bottom-color: var(--bar-bg) !important;
+ content: '';
+ position: absolute;
+ top: -6px;
+ left: calc(50% - 6px);
+ width: 0;
+ height: 0;
+ border-style: solid;
+ border-width: 0 6px 6px 6px;
+ border-color: transparent transparent var(--bar-bg) transparent;
}
}
+input:focus + .tooltip {
+ display: none;
+}
+
.addressHidden {
visibility: hidden;
font-size: 14px;
diff --git a/src/desktop/src/ui/components/list.scss b/src/desktop/src/ui/components/list.scss
index 71b35f28eb..17fb34fbf9 100644
--- a/src/desktop/src/ui/components/list.scss
+++ b/src/desktop/src/ui/components/list.scss
@@ -437,6 +437,9 @@
font-family: 'SourceSansPro';
font-weight: 400;
}
+ mark {
+ color: var(--primary);
+ }
}
> div {
max-height: calc(100vh - 640px);
diff --git a/src/desktop/src/ui/components/modal/Confirm.js b/src/desktop/src/ui/components/modal/Confirm.js
index c5234be7d3..13869676d2 100644
--- a/src/desktop/src/ui/components/modal/Confirm.js
+++ b/src/desktop/src/ui/components/modal/Confirm.js
@@ -15,7 +15,7 @@ export default class Confirm extends React.PureComponent {
/** Should the confirmation option disabled for X seconds */
countdown: PropTypes.number,
/** Confirm window type */
- category: PropTypes.oneOf([ 'primary', 'secondary', 'positive', 'negative' ]),
+ category: PropTypes.oneOf(['primary', 'secondary', 'positive', 'negative']),
/** Confirm window content */
content: PropTypes.object.isRequired,
/** Confirm window cancel function */
@@ -38,7 +38,8 @@ export default class Confirm extends React.PureComponent {
diff --git a/src/desktop/src/ui/components/modal/Password.js b/src/desktop/src/ui/components/modal/Password.js
index 4857035a99..1bfd5e01ab 100644
--- a/src/desktop/src/ui/components/modal/Password.js
+++ b/src/desktop/src/ui/components/modal/Password.js
@@ -2,11 +2,13 @@ import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { withI18n } from 'react-i18next';
import { connect } from 'react-redux';
+import authenticator from 'authenticator';
import { hash, authorize } from 'libs/crypto';
import { generateAlert } from 'actions/alerts';
+import Text from 'ui/components/input/Text';
import Password from 'ui/components/input/Password';
import Button from 'ui/components/Button';
import Modal from 'ui/components/modal/Modal';
@@ -25,6 +27,8 @@ class ModalPassword extends PureComponent {
isOpen: PropTypes.bool,
/** Should the dialog be without a cancel option */
isForced: PropTypes.bool,
+ /** Should 2fa authorisation be skipped */
+ skip2fa: PropTypes.bool,
/** Modal inline style state */
inline: PropTypes.bool,
/** On dialog close event */
@@ -53,6 +57,8 @@ class ModalPassword extends PureComponent {
state = {
password: '',
+ code: '',
+ verifyTwoFA: false,
};
componentWillReceiveProps(nextProps) {
@@ -63,20 +69,45 @@ class ModalPassword extends PureComponent {
}
}
- onSubmit = async (e) => {
- const { password } = this.state;
- const { onSubmit, onSuccess, generateAlert, t } = this.props;
+ /**
+ * Update 2fa code value and trigger authentication once necessary length is reached
+ * @param {string} value - Code value
+ */
+ setCode = (value) => {
+ this.setState({ code: value }, () => value.length === 6 && this.handleSubmit());
+ };
- e.preventDefault();
+ handleSubmit = async (e) => {
+ const { password, code, verifyTwoFA } = this.state;
+ const { skip2fa, onSuccess, onSubmit, generateAlert, t } = this.props;
+
+ if (e) {
+ e.preventDefault();
+ }
if (onSubmit) {
return onSubmit(password);
}
+ let authorised = false;
+
const passwordHash = await hash(password);
try {
- await authorize(passwordHash);
+ authorised = await authorize(passwordHash);
+
+ if (!skip2fa && typeof authorised === 'string' && !authenticator.verifyToken(authorised, code)) {
+ if (verifyTwoFA) {
+ generateAlert('error', t('twoFA:wrongCode'), t('twoFA:wrongCodeExplanation'));
+ }
+
+ this.setState({
+ verifyTwoFA: true,
+ code: '',
+ });
+
+ return;
+ }
} catch (err) {
generateAlert(
'error',
@@ -89,15 +120,14 @@ class ModalPassword extends PureComponent {
onSuccess(passwordHash);
};
- render() {
- const { content, category, isOpen, isForced, inline, onClose, t } = this.props;
+ passwordContent = () => {
+ const { content, category, isOpen, isForced, onClose, t } = this.props;
const { password } = this.state;
-
return (
- onClose()}>
+
{content.title ? {content.title}
: null}
{content.message ? {content.message}
: null}
-
+
+ );
+ };
+
+ twoFaContent = () => {
+ const { isForced, onClose, t } = this.props;
+ const { code } = this.state;
+ return (
+
+ {t('twoFA:enterCode')}
+
+
+ );
+ };
+
+ render() {
+ const { isOpen, isForced, inline, onClose } = this.props;
+ const { verifyTwoFA } = this.state;
+
+ return (
+ onClose()}>
+ {verifyTwoFA ? this.twoFaContent() : this.passwordContent()}
);
}
diff --git a/src/desktop/src/ui/components/modal/modal.scss b/src/desktop/src/ui/components/modal/modal.scss
index 4aaed78867..dd2206352c 100644
--- a/src/desktop/src/ui/components/modal/modal.scss
+++ b/src/desktop/src/ui/components/modal/modal.scss
@@ -130,8 +130,9 @@ $footer: 70px;
margin-bottom: 20px;
}
-
-
+ mark {
+ color: var(--primary);
+ }
}
}
diff --git a/src/desktop/src/ui/global/Idle.js b/src/desktop/src/ui/global/Idle.js
index b27e8fa4e0..7af3a235d7 100644
--- a/src/desktop/src/ui/global/Idle.js
+++ b/src/desktop/src/ui/global/Idle.js
@@ -89,7 +89,7 @@ class Idle extends React.Component {
if (!this.state.locked) {
return null;
}
- return this.unlock(password)} />;
+ return this.unlock(password)} />;
}
}
diff --git a/src/desktop/src/ui/style/_reset.scss b/src/desktop/src/ui/style/_reset.scss
index 32d2bc3fec..85a0549e99 100644
--- a/src/desktop/src/ui/style/_reset.scss
+++ b/src/desktop/src/ui/style/_reset.scss
@@ -25,3 +25,7 @@ input,
textarea {
cursor: text;
}
+
+mark {
+ background: none;
+}
diff --git a/src/desktop/src/ui/views/onboarding/Login.js b/src/desktop/src/ui/views/onboarding/Login.js
index c87a6b2c25..a9fda092d6 100644
--- a/src/desktop/src/ui/views/onboarding/Login.js
+++ b/src/desktop/src/ui/views/onboarding/Login.js
@@ -278,7 +278,7 @@ const mapStateToProps = (state) => ({
ui: state.ui,
currency: state.settings.currency,
onboarding: state.ui.onboarding,
- forceUpdate: state.wallet.forceUpdate
+ forceUpdate: state.wallet.forceUpdate,
});
const mapDispatchToProps = {
diff --git a/src/desktop/src/ui/views/onboarding/SeedSaveWrite.js b/src/desktop/src/ui/views/onboarding/SeedSaveWrite.js
index dcd78876ab..2384ca4f34 100644
--- a/src/desktop/src/ui/views/onboarding/SeedSaveWrite.js
+++ b/src/desktop/src/ui/views/onboarding/SeedSaveWrite.js
@@ -96,7 +96,7 @@ class SeedSave extends PureComponent {
variant="primary"
className="square"
>
- {t('done')}
+ {t('back')}
diff --git a/src/desktop/src/ui/views/onboarding/SeedVerify.js b/src/desktop/src/ui/views/onboarding/SeedVerify.js
index 97ff98e09e..3cf610e77a 100644
--- a/src/desktop/src/ui/views/onboarding/SeedVerify.js
+++ b/src/desktop/src/ui/views/onboarding/SeedVerify.js
@@ -68,14 +68,21 @@ class SeedVerify extends React.PureComponent {
if (
isGenerated &&
(seed.length !== Electron.getOnboardingSeed().length ||
- !Electron.getOnboardingSeed().every(
- (v, i) => v[0] === seed[i][0] && v[1] === seed[i][1] && v[2] === seed[i][2],
- ))
+ !Electron.getOnboardingSeed().every((v, i) => v % 27 === seed[i] % 27))
) {
generateAlert('error', t('seedReentry:incorrectSeed'), t('seedReentry:incorrectSeedExplanation'));
return;
}
+ if (wallet.password.length) {
+ const seedStore = await new SeedStore.keychain(wallet.password);
+ const isUniqueSeed = await seedStore.isUniqueSeed(seed);
+ if (!isUniqueSeed) {
+ generateAlert('error', t('addAdditionalSeed:seedInUse'), t('addAdditionalSeed:seedInUseExplanation'));
+ return;
+ }
+ }
+
if (seed.length !== MAX_SEED_LENGTH) {
generateAlert(
'error',
diff --git a/src/desktop/src/ui/views/onboarding/Welcome.js b/src/desktop/src/ui/views/onboarding/Welcome.js
index 9a29ed058c..c54dcc931f 100644
--- a/src/desktop/src/ui/views/onboarding/Welcome.js
+++ b/src/desktop/src/ui/views/onboarding/Welcome.js
@@ -126,7 +126,7 @@ const mapStateToProps = (state) => ({
acceptedPrivacy: state.settings.acceptedPrivacy,
acceptedTerms: state.settings.acceptedTerms,
language: state.settings.locale,
- forceUpdate: state.wallet.forceUpdate
+ forceUpdate: state.wallet.forceUpdate,
});
const mapDispatchToProps = {
diff --git a/src/desktop/src/ui/views/settings/Password.js b/src/desktop/src/ui/views/settings/Password.js
index 1c4666ce58..3d9bce8a93 100644
--- a/src/desktop/src/ui/views/settings/Password.js
+++ b/src/desktop/src/ui/views/settings/Password.js
@@ -4,8 +4,6 @@ import { withI18n } from 'react-i18next';
import { connect } from 'react-redux';
import { zxcvbn } from 'libs/exports';
-import { getSelectedAccountMeta } from 'selectors/accounts';
-
import { generateAlert } from 'actions/alerts';
import { setPassword } from 'actions/wallet';
@@ -22,7 +20,7 @@ import Button from 'ui/components/Button';
class PasswordSettings extends PureComponent {
static propTypes = {
/** @ignore */
- accountMeta: PropTypes.object.isRequired,
+ accounts: PropTypes.object.isRequired,
/** @ignore */
setPassword: PropTypes.func.isRequired,
/** @ignore */
@@ -45,7 +43,7 @@ class PasswordSettings extends PureComponent {
event.preventDefault();
const { passwordCurrent, passwordNew, passwordConfirm } = this.state;
- const { accountMeta, setPassword, generateAlert, t } = this.props;
+ const { accounts, setPassword, generateAlert, t } = this.props;
if (passwordNew !== passwordConfirm) {
generateAlert(
@@ -70,7 +68,13 @@ class PasswordSettings extends PureComponent {
const passwordNewHash = await hash(passwordNew);
const passwordCurrentHash = await hash(passwordCurrent);
- await SeedStore[accountMeta.type].updatePassword(passwordCurrentHash, passwordNewHash);
+ const accountTypes = Object.keys(accounts)
+ .map((accountName) => (accounts[accountName].meta ? accounts[accountName].meta.type : 'keychain'))
+ .filter((accountType, index, accountTypes) => accountTypes.indexOf(accountType) === index);
+
+ for (let i = 0; i < accountTypes.length; i++) {
+ await SeedStore[accountTypes[i]].updatePassword(passwordCurrentHash, passwordNewHash);
+ }
setPassword(passwordNewHash);
@@ -134,7 +138,7 @@ class PasswordSettings extends PureComponent {
}
const mapStateToProps = (state) => ({
- accountMeta: getSelectedAccountMeta(state),
+ accounts: state.accounts.accountInfo,
});
const mapDispatchToProps = {
diff --git a/src/desktop/src/ui/views/settings/account/Addresses.js b/src/desktop/src/ui/views/settings/account/Addresses.js
index 9e123e0f77..c5eec2918e 100644
--- a/src/desktop/src/ui/views/settings/account/Addresses.js
+++ b/src/desktop/src/ui/views/settings/account/Addresses.js
@@ -32,7 +32,6 @@ class Addresses extends PureComponent {
.reverse()
.map((item) => {
const address = item + account.addresses[item].checksum;
- const text = address.match(/.{1,3}/g).join(' ');
return (
@@ -41,7 +40,10 @@ class Addresses extends PureComponent {
title={t('receive:addressCopied')}
success={t('receive:addressCopiedExplanation')}
>
- {text}
+ {item.match(/.{1,3}/g).join(' ')}{' '}
+
+ {account.addresses[item].checksum.match(/.{1,3}/g).join(' ')}
+
diff --git a/src/desktop/src/ui/views/settings/account/Tools.js b/src/desktop/src/ui/views/settings/account/Tools.js
index d8c701244e..44dcb19824 100644
--- a/src/desktop/src/ui/views/settings/account/Tools.js
+++ b/src/desktop/src/ui/views/settings/account/Tools.js
@@ -23,6 +23,7 @@ import Scrollbar from 'ui/components/Scrollbar';
import Button from 'ui/components/Button';
import Loading from 'ui/components/Loading';
import ModalConfirm from 'ui/components/modal/Confirm';
+import size from 'lodash/size';
import css from '../index.scss';
@@ -51,8 +52,22 @@ class Addresses extends PureComponent {
transitionForSnapshot: PropTypes.func.isRequired,
/** @ignore */
t: PropTypes.func.isRequired,
+ activeStepIndex: PropTypes.number.isRequired,
+ /** @ignore */
+ activeSteps: PropTypes.array.isRequired,
};
+ static renderProgressChildren(activeStepIndex, sizeOfActiveSteps, t) {
+ if (activeStepIndex === -1) {
+ return null;
+ }
+
+ return t('snapshotTransition:attachProgress', {
+ currentAddress: activeStepIndex + 1,
+ totalAddresses: sizeOfActiveSteps,
+ });
+ }
+
componentDidUpdate(prevProps) {
const { wallet, ui } = this.props;
@@ -128,7 +143,8 @@ class Addresses extends PureComponent {
};
render() {
- const { ui, wallet, t } = this.props;
+ const { ui, wallet, t, activeStepIndex, activeSteps } = this.props;
+ const sizeOfActiveSteps = size(activeSteps);
if ((ui.isTransitioning || ui.isAttachingToTangle) && !wallet.balanceCheckFlag) {
return (
@@ -146,7 +162,8 @@ class Addresses extends PureComponent {
) : (
{t('snapshotTransition:attaching')}
- {t('loading:thisMayTake')} {t('global:pleaseWaitEllipses')}
+ {t('loading:thisMayTake')} {t('global:pleaseWaitEllipses')}
+ {Addresses.renderProgressChildren(activeStepIndex, sizeOfActiveSteps, t)}
)}
@@ -222,6 +239,8 @@ const mapStateToProps = (state) => ({
accountName: getSelectedAccountName(state),
accountMeta: getSelectedAccountMeta(state),
addresses: getAddressesForSelectedAccount(state),
+ activeStepIndex: state.progress.activeStepIndex,
+ activeSteps: state.progress.activeSteps,
});
const mapDispatchToProps = {
diff --git a/src/desktop/src/ui/views/settings/account/addresses.scss b/src/desktop/src/ui/views/settings/account/addresses.scss
index ad2c22625b..70cafe7705 100644
--- a/src/desktop/src/ui/views/settings/account/addresses.scss
+++ b/src/desktop/src/ui/views/settings/account/addresses.scss
@@ -8,12 +8,16 @@
font-family: 'SourceCodePro';
font-size: 12px;
word-break: break-word;
+
+ mark {
+ color: var(--primary);
+ }
}
li {
display: flex;
strong {
- flex: 1 0 80px;
+ flex: 1 0 65px;
text-align: right;
}
}
@@ -21,5 +25,9 @@
.spent {
text-decoration: line-through;
color: var(--negative);
+
+ mark {
+ color: var(--negative);
+ }
}
}
diff --git a/src/desktop/src/ui/views/wallet/Receive.js b/src/desktop/src/ui/views/wallet/Receive.js
index 6c6ad9cf33..be0677da7b 100644
--- a/src/desktop/src/ui/views/wallet/Receive.js
+++ b/src/desktop/src/ui/views/wallet/Receive.js
@@ -190,24 +190,33 @@ class Receive extends React.PureComponent {
+ success={t('receive:addressCopiedExplanation')}
+ >
- {receiveAddress.substring(0, 81).split('').map((char, index) => {
- const scrambleChar = scramble[index] > 0 ? byteToChar(scramble[index]) : null;
- return (
- {scrambleChar || char}
- );
- })}
-
- {receiveAddress.substring(81, 90).split('').map((char, index) => {
- const scrambleChar =
- scramble[index + 81] > 0 ? byteToChar(scramble[index + 81]) : null;
+ {receiveAddress
+ .substring(0, 81)
+ .split('')
+ .map((char, index) => {
+ const scrambleChar = scramble[index] > 0 ? byteToChar(scramble[index]) : null;
return (
{scrambleChar || char}
);
})}
+
+ {receiveAddress
+ .substring(81, 90)
+ .split('')
+ .map((char, index) => {
+ const scrambleChar =
+ scramble[index + 81] > 0 ? byteToChar(scramble[index + 81]) : null;
+ return (
+
+ {scrambleChar || char}
+
+ );
+ })}
@@ -233,7 +242,8 @@ class Receive extends React.PureComponent {
+ success={t('receive:addressCopiedExplanation')}
+ >
diff --git a/src/desktop/src/ui/views/wallet/Send.js b/src/desktop/src/ui/views/wallet/Send.js
index d406cb2469..5b7c54e060 100644
--- a/src/desktop/src/ui/views/wallet/Send.js
+++ b/src/desktop/src/ui/views/wallet/Send.js
@@ -14,6 +14,7 @@ import Icon from 'ui/components/Icon';
import Button from 'ui/components/Button';
import Progress from 'ui/components/Progress';
import Balance from 'ui/components/Balance';
+import Checksum from 'ui/components/Checksum';
import Confirm from 'ui/components/modal/Confirm';
import withSendData from 'containers/wallet/Send';
@@ -137,7 +138,11 @@ class Send extends React.PureComponent {
onConfirm={() => this.confirmTransfer()}
content={{
title: t('transferConfirmation:youAreAbout', { contents: transferContents }),
- message: fields.address,
+ message: (
+
+
+
+ ),
confirm: t('send'),
cancel: t('cancel'),
}}
diff --git a/src/desktop/src/ui/views/wallet/send.scss b/src/desktop/src/ui/views/wallet/send.scss
index 0e6e761b1c..d133ad3790 100644
--- a/src/desktop/src/ui/views/wallet/send.scss
+++ b/src/desktop/src/ui/views/wallet/send.scss
@@ -85,6 +85,16 @@
}
}
+.address {
+ display: inline-block;
+ font-family: 'SourceCodePro';
+ letter-spacing: 2px;
+ max-width: 390px;
+ word-break: break-word;
+ font-size: 18px;
+ line-height: 28px;
+}
+
.units {
position: absolute;
top: 0px;
diff --git a/src/desktop/webpack.config/config.app.js b/src/desktop/webpack.config/config.app.js
index 13fd848aec..66bcc2617d 100644
--- a/src/desktop/webpack.config/config.app.js
+++ b/src/desktop/webpack.config/config.app.js
@@ -86,7 +86,7 @@ const config = {
title: 'Trinity',
inject: false,
template: __dirname + '/index.html',
- })
+ }),
],
};
diff --git a/src/mobile/__tests__/ui/components/EnterPasswordOnLogin.spec.js b/src/mobile/__tests__/ui/components/EnterPasswordOnLogin.spec.js
index a4109f214d..8d8eeedc9a 100644
--- a/src/mobile/__tests__/ui/components/EnterPasswordOnLogin.spec.js
+++ b/src/mobile/__tests__/ui/components/EnterPasswordOnLogin.spec.js
@@ -21,6 +21,7 @@ const getProps = (overrides) =>
setLoginPasswordField: noop,
t: () => '',
isFingerprintEnabled: false,
+ toggleModalActivity: noop,
},
overrides,
);
diff --git a/src/mobile/__tests__/ui/components/Header.spec.js b/src/mobile/__tests__/ui/components/Header.spec.js
index 6e0d6c55ab..eb6a3d74ad 100644
--- a/src/mobile/__tests__/ui/components/Header.spec.js
+++ b/src/mobile/__tests__/ui/components/Header.spec.js
@@ -21,7 +21,7 @@ describe('Testing Header component', () => {
});
it('should require a children string as a prop', () => {
- expect(Header.propTypes.children).toEqual(PropTypes.string.isRequired);
+ expect(Header.propTypes.children).toEqual(PropTypes.string);
});
});
diff --git a/src/mobile/__tests__/ui/components/HistoryModalContent.spec.js b/src/mobile/__tests__/ui/components/HistoryModalContent.spec.js
deleted file mode 100644
index 58a5a51184..0000000000
--- a/src/mobile/__tests__/ui/components/HistoryModalContent.spec.js
+++ /dev/null
@@ -1,318 +0,0 @@
-import assign from 'lodash/assign';
-import noop from 'lodash/noop';
-import React from 'react';
-import { Clipboard } from 'react-native';
-import PropTypes from 'prop-types';
-import { shallow } from 'enzyme';
-import HistoryModalContent from 'ui/components/HistoryModalContent';
-
-jest.mock('react-native-is-device-rooted', () => ({
- isDeviceRooted: () => true,
- isDeviceLocked: () => false,
-}));
-
-const getProps = (overrides) =>
- assign(
- {},
- {
- t: (arg) => {
- const translations = {
- 'send:message': 'Message',
- addresses: 'Addresses',
- bundleHash: 'Bundle Hash',
- bundleHashCopied: 'Bundle hash copied',
- bundleHashCopiedExplanation: 'Your bundle has been copied to clipboard',
- addressCopied: 'Address copied',
- addressCopiedExplanation: 'Your address has been copied to clipboard',
- };
-
- return translations[arg] ? translations[arg] : 'foo';
- },
- promote: noop,
- disableWhen: false,
- status: 'Receive',
- value: 200,
- fullValue: 200,
- unit: 'i',
- time: Date.now(),
- message: 'Pink floyd',
- bundle: 'BUNDLE',
- addresses: [{ address: 'U'.repeat(81), value: 1, unit: 'i' }],
- confirmationBool: false,
- mode: 'Standard',
- generateAlert: noop,
- style: {
- titleColor: 'white',
- containerBorderColor: { borderColor: 'white' },
- containerBackgroundColor: { backgroundColor: 'white' },
- confirmationStatusColor: { color: 'red' },
- defaultTextColor: { color: 'green' },
- backgroundColor: 'white',
- borderColor: { borderColor: 'orange' },
- barBg: 'black',
- barColor: 'white',
- buttonsOpacity: { opacity: 1 },
- primaryColor: '#ffffff',
- primaryBody: '#000000',
- },
- bundleIsBeingPromoted: false,
- hasFailedAutopromotion: false,
- isFailedTransaction: noop,
- retryFailedTransaction: noop,
- isRetryingFailedTransaction: false,
- },
- overrides,
- );
-
-jest.mock('bugsnag-react-native', () => ({
- Configuration: jest.fn(),
- Client: jest.fn(() => ({ leaveBreadcrumb: jest.fn() })),
-}));
-
-describe('Testing HistoryModalContent component', () => {
- describe('propTypes', () => {
- it('should require a t function as a prop', () => {
- expect(HistoryModalContent.propTypes.t).toEqual(PropTypes.func.isRequired);
- });
-
- it('should require a status string as a prop', () => {
- expect(HistoryModalContent.propTypes.status).toEqual(PropTypes.string.isRequired);
- });
-
- it('should require a value number as a prop', () => {
- expect(HistoryModalContent.propTypes.value).toEqual(PropTypes.number.isRequired);
- });
-
- it('should require a fullValue number as a prop', () => {
- expect(HistoryModalContent.propTypes.fullValue).toEqual(PropTypes.number.isRequired);
- });
-
- it('should require a unit string as a prop', () => {
- expect(HistoryModalContent.propTypes.unit).toEqual(PropTypes.string.isRequired);
- });
-
- it('should require a time number as a prop', () => {
- expect(HistoryModalContent.propTypes.time).toEqual(PropTypes.number.isRequired);
- });
-
- it('should require a message string as a prop', () => {
- expect(HistoryModalContent.propTypes.message).toEqual(PropTypes.string);
- });
-
- it('should require a bundle string as a prop', () => {
- expect(HistoryModalContent.propTypes.bundle).toEqual(PropTypes.string.isRequired);
- });
-
- it('should require a disableWhen boolean as a prop', () => {
- expect(HistoryModalContent.propTypes.disableWhen).toEqual(PropTypes.bool.isRequired);
- });
-
- it('should require a bundleIsBeingPromoted boolean as a prop', () => {
- expect(HistoryModalContent.propTypes.bundleIsBeingPromoted).toEqual(PropTypes.bool.isRequired);
- });
- });
-
- describe('when renders', () => {
- it('should not explode', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(wrapper.name()).toEqual('TouchableWithoutFeedback');
- });
-
- it('should return a ScrollView component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(wrapper.find('ScrollView').length).toEqual(1);
- });
-
- it('should return status prop as first child to first Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(0)
- .children()
- .at(0)
- .text(),
- ).toEqual('Receive');
- });
-
- it('should return fullValue prop as third child to first Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(0)
- .children()
- .at(2)
- .text(),
- ).toEqual('200');
- });
-
- it('should return unit prop as third child to first Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(0)
- .children()
- .at(4)
- .text(),
- ).toEqual('i');
- });
-
- it('should return status prop as second child to first Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(0)
- .children()
- .at(0)
- .text(),
- ).toEqual('Receive');
- });
-
- it('should return a translated "Bundle Hash" message as first child to third Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(2)
- .children()
- .at(0)
- .text(),
- ).toEqual('Bundle Hash');
- });
-
- it('should return a ":" message as second child to third Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(2)
- .children()
- .at(1)
- .text(),
- ).toEqual(':');
- });
-
- it('should return bundle prop as a child to fourth Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(3)
- .children()
- .text(),
- ).toEqual('BUNDLE');
- });
-
- it('should call instance method copy with bundle prop and "bundle" string when onPress prop of second TouchableOpacity is triggered', () => {
- const props = getProps();
-
- const wrapper = shallow();
- const instance = wrapper.instance();
-
- jest.spyOn(instance, 'copy');
- const touchableOpacity = wrapper.find('TouchableOpacity').at(0);
-
- touchableOpacity.props().onPress();
-
- expect(instance.copy).toHaveBeenCalledWith('BUNDLE', 'bundle');
- });
-
- it('should return a ":" message as second child to fifth Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(4)
- .children()
- .at(1)
- .text(),
- ).toEqual(':');
- });
-
- it('should return a translated "Message" message as first child to fifth Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(4)
- .children()
- .at(0)
- .text(),
- ).toEqual('Message');
- });
-
- it('should return a ":" message as second child to fifth Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(4)
- .children()
- .at(1)
- .text(),
- ).toEqual(':');
- });
-
- it('should return message prop as a child to sixth Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('Text')
- .at(5)
- .children()
- .text(),
- ).toEqual('Pink floyd');
- });
- });
-
- describe('instance methods', () => {
- describe('when called', () => {
- describe('#copy', () => {
- afterEach(() => {
- if (Clipboard.setString.mockClear) {
- Clipboard.setString.mockClear();
- }
- });
-
- it('should call setString on Clipboard with first argument', () => {
- const props = getProps();
- jest.spyOn(Clipboard, 'setString');
-
- const instance = shallow().instance();
- instance.copy('arg', 'type');
-
- expect(Clipboard.setString).toHaveBeenCalledWith('arg');
- });
- });
- });
- });
-});
diff --git a/src/mobile/__tests__/ui/components/InfoBox.spec.js b/src/mobile/__tests__/ui/components/InfoBox.spec.js
deleted file mode 100644
index 26b5711726..0000000000
--- a/src/mobile/__tests__/ui/components/InfoBox.spec.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import assign from 'lodash/assign';
-import React from 'react';
-import PropTypes from 'prop-types';
-import { shallow } from 'enzyme';
-import InfoBox from 'ui/components/InfoBox';
-
-const getProps = (overrides) =>
- assign(
- {},
- {
- body: {},
- text: 'foo',
- },
- overrides,
- );
-
-describe('Testing InfoBox component', () => {
- describe('propTypes', () => {
- it('should require a body object as a prop', () => {
- expect(InfoBox.propTypes.body).toEqual(PropTypes.object.isRequired);
- });
- });
-
- describe('when renders', () => {
- it('should not explode', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(wrapper.name()).toEqual('View');
- });
-
- it('should return an "Icon" component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(wrapper.find('Icon').length).toEqual(1);
- });
-
- it('should return "text" prop as a child to last View component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(
- wrapper
- .find('View')
- .children()
- .at(4)
- .text(),
- ).toEqual('foo');
- });
- });
-});
diff --git a/src/mobile/__tests__/ui/components/LogoutConfirmationModal.spec.js b/src/mobile/__tests__/ui/components/LogoutConfirmationModal.spec.js
index 536adb350d..eb9cba1963 100644
--- a/src/mobile/__tests__/ui/components/LogoutConfirmationModal.spec.js
+++ b/src/mobile/__tests__/ui/components/LogoutConfirmationModal.spec.js
@@ -12,9 +12,7 @@ const getProps = (overrides) =>
t: () => '',
hideModal: noop,
logout: noop,
- backgroundColor: { backgroundColor: '#FFFFFF' },
- textColor: {},
- borderColor: {},
+ theme: { body: {} },
},
overrides,
);
@@ -38,16 +36,8 @@ describe('Testing LogoutConfirmationModal component', () => {
expect(LogoutConfirmationModal.propTypes.logout).toEqual(PropTypes.func.isRequired);
});
- it('should require a backgroundColor string as a prop', () => {
- expect(LogoutConfirmationModal.propTypes.backgroundColor).toEqual(PropTypes.object.isRequired);
- });
-
- it('should require a textColor object as a prop', () => {
- expect(LogoutConfirmationModal.propTypes.textColor).toEqual(PropTypes.object.isRequired);
- });
-
- it('should require a borderColor object as a prop', () => {
- expect(LogoutConfirmationModal.propTypes.borderColor).toEqual(PropTypes.object.isRequired);
+ it('should require a theme object as a prop', () => {
+ expect(LogoutConfirmationModal.propTypes.theme).toEqual(PropTypes.object.isRequired);
});
});
@@ -56,14 +46,7 @@ describe('Testing LogoutConfirmationModal component', () => {
const props = getProps();
const wrapper = shallow();
- expect(wrapper.name()).toEqual('View');
- });
-
- it('should return a Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(wrapper.find('Text').length).toEqual(1);
+ expect(wrapper.name()).toEqual('Connect(ModalViewComponent)');
});
});
});
diff --git a/src/mobile/__tests__/ui/components/NotificationLogModal.spec.js b/src/mobile/__tests__/ui/components/NotificationLogModal.spec.js
index f2f99445c2..c4fa3b86b6 100644
--- a/src/mobile/__tests__/ui/components/NotificationLogModal.spec.js
+++ b/src/mobile/__tests__/ui/components/NotificationLogModal.spec.js
@@ -10,9 +10,7 @@ const getProps = (overrides) =>
{},
{
backgroundColor: '#ffffff',
- borderColor: { borderColor: '#ffffff' },
- textColor: { color: '#ffffff' },
- barColor: '#ffffff',
+ theme: { body: {} },
hideModal: noop,
notificationLog: [],
clearLog: noop,
@@ -26,22 +24,10 @@ jest.mock('bugsnag-react-native', () => ({
Client: jest.fn(() => ({ leaveBreadcrumb: jest.fn() })),
}));
-describe('Testing NotificationLog component', () => {
+describe('Testing NotificationLogModal component', () => {
describe('propTypes', () => {
- it('should require a backgroundColor string as a prop', () => {
- expect(NotificationLog.propTypes.backgroundColor).toEqual(PropTypes.string.isRequired);
- });
-
- it('should require a borderColor object as a prop', () => {
- expect(NotificationLog.propTypes.borderColor).toEqual(PropTypes.object.isRequired);
- });
-
- it('should require a textColor object as a prop', () => {
- expect(NotificationLog.propTypes.textColor).toEqual(PropTypes.object.isRequired);
- });
-
- it('should require a barColor string as a prop', () => {
- expect(NotificationLog.propTypes.barColor).toEqual(PropTypes.string.isRequired);
+ it('should require a theme string as a prop', () => {
+ expect(NotificationLog.propTypes.theme).toEqual(PropTypes.object.isRequired);
});
it('should require a hideModal function as a prop', () => {
@@ -62,10 +48,11 @@ describe('Testing NotificationLog component', () => {
const props = getProps();
const wrapper = shallow();
- expect(wrapper.name()).toEqual('View');
+
+ expect(wrapper.name()).toEqual('Connect(ModalViewComponent)');
});
- it('should call instance method "clearNotificationLog" when onPress prop of second TouchableOpacity element is triggered', () => {
+ it('should call instance method "clearNotificationLog" when onLeftButtonPress prop of second ModalView element is triggered', () => {
const props = getProps();
const wrapper = shallow();
@@ -73,11 +60,9 @@ describe('Testing NotificationLog component', () => {
jest.spyOn(instance, 'clearNotificationLog');
- const touchableOpacity = wrapper.find('TouchableOpacity').at(0);
-
expect(instance.clearNotificationLog).toHaveBeenCalledTimes(0);
- touchableOpacity.props().onPress();
+ wrapper.props().onLeftButtonPress();
expect(instance.clearNotificationLog).toHaveBeenCalledTimes(1);
});
diff --git a/src/mobile/__tests__/ui/components/ProgressBar.spec.js b/src/mobile/__tests__/ui/components/ProgressBar.spec.js
deleted file mode 100644
index 6d200dde83..0000000000
--- a/src/mobile/__tests__/ui/components/ProgressBar.spec.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import assign from 'lodash/assign';
-import React from 'react';
-import PropTypes from 'prop-types';
-import { shallow } from 'enzyme';
-import { TextInput } from 'react-native';
-import ProgressBar from 'ui/components/ProgressBar';
-
-const getProps = (overrides) =>
- assign(
- {},
- {
- progress: 0,
- children: ,
- textColor: '#ffffff',
- },
- overrides,
- );
-
-describe('Testing ProgressBar component', () => {
- describe('propTypes', () => {
- it('should require a progress number as a prop', () => {
- expect(ProgressBar.propTypes.progress).toEqual(PropTypes.number.isRequired);
- });
-
- it('should accept a children node as a prop', () => {
- expect(ProgressBar.propTypes.children).toEqual(PropTypes.node);
- });
-
- it('should accept a color string as a prop', () => {
- expect(ProgressBar.propTypes.color).toEqual(PropTypes.string);
- });
-
- it('should accept an indeterminate bool as a prop', () => {
- expect(ProgressBar.propTypes.indeterminate).toEqual(PropTypes.bool);
- });
-
- it('should accept an animationType string as a prop', () => {
- expect(ProgressBar.propTypes.animationType).toEqual(PropTypes.string);
- });
-
- it('should accept a width number as a prop', () => {
- expect(ProgressBar.propTypes.width).toEqual(PropTypes.number);
- });
-
- it('should accept a height number as a prop', () => {
- expect(ProgressBar.propTypes.height).toEqual(PropTypes.number);
- });
-
- it('should accept a textColor string as a prop', () => {
- expect(ProgressBar.propTypes.textColor).toEqual(PropTypes.string);
- });
- });
-
- describe('when renders', () => {
- it('should not explode', () => {
- const props = getProps();
-
- const wrapper = shallow();
- expect(wrapper.name()).toEqual('View');
- });
-
- it('should return children props as a direct child of Text component', () => {
- const props = getProps();
-
- const wrapper = shallow();
- const text = wrapper
- .children()
- .at(0)
- .childAt(0);
- expect(text.children().type()).toEqual(TextInput);
- });
- });
-});
diff --git a/src/mobile/__tests__/ui/components/QrScanner.spec.js b/src/mobile/__tests__/ui/components/QrScanner.spec.js
index 69489281e9..aaa33c3872 100644
--- a/src/mobile/__tests__/ui/components/QrScanner.spec.js
+++ b/src/mobile/__tests__/ui/components/QrScanner.spec.js
@@ -3,7 +3,6 @@ import noop from 'lodash/noop';
import React from 'react';
import PropTypes from 'prop-types';
import { shallow } from 'enzyme';
-import SingleFooterButton from 'ui/components/SingleFooterButton';
import { QRScanner as QrScannerComponent } from 'ui/components/QrScanner';
jest.mock('react-native-camera', () => ({}));
@@ -48,7 +47,7 @@ describe('Testing QrScanner component', () => {
const props = getProps();
const wrapper = shallow();
- expect(wrapper.name()).toEqual('View');
+ expect(wrapper.name()).toEqual('Connect(ModalViewComponent)');
});
it('should return a QrCodeScanner component', () => {
@@ -58,23 +57,6 @@ describe('Testing QrScanner component', () => {
expect(wrapper.find('QRCodeScanner').length).toEqual(1);
});
- it('should call prop method hideModal when onPress prop of SingleFooterButton is triggered', () => {
- const props = getProps({
- hideModal: jest.fn(),
- });
-
- const wrapper = shallow();
-
- expect(props.hideModal).toHaveBeenCalledTimes(0);
-
- wrapper
- .find(SingleFooterButton)
- .props()
- .onButtonPress();
-
- expect(props.hideModal).toHaveBeenCalledTimes(1);
- });
-
it('should call prop method onQRRead when onRead prop of QRCodeScanner is triggered', () => {
const props = getProps({
onQRRead: jest.fn(),
diff --git a/src/mobile/__tests__/ui/components/RootDetectionModal.spec.js b/src/mobile/__tests__/ui/components/RootDetectionModal.spec.js
index 515fb213b3..e0b031abac 100644
--- a/src/mobile/__tests__/ui/components/RootDetectionModal.spec.js
+++ b/src/mobile/__tests__/ui/components/RootDetectionModal.spec.js
@@ -12,10 +12,7 @@ const getProps = (overrides) =>
t: () => '',
closeApp: noop,
hideModal: noop,
- backgroundColor: '#ffffff',
- textColor: {},
- borderColor: {},
- warningColor: {},
+ theme: { body: {}, negative: {} },
},
overrides,
);
@@ -39,16 +36,8 @@ describe('Testing RootDetectionModal component', () => {
expect(RootDetectionModalComponent.propTypes.hideModal).toEqual(PropTypes.func.isRequired);
});
- it('should require a backgroundColor string as a prop', () => {
- expect(RootDetectionModalComponent.propTypes.backgroundColor).toEqual(PropTypes.string.isRequired);
- });
-
- it('should require a textColor object as a prop', () => {
- expect(RootDetectionModalComponent.propTypes.textColor).toEqual(PropTypes.object.isRequired);
- });
-
- it('should require a borderColor object as a prop', () => {
- expect(RootDetectionModalComponent.propTypes.borderColor).toEqual(PropTypes.object.isRequired);
+ it('should require a theme object as a prop', () => {
+ expect(RootDetectionModalComponent.propTypes.theme).toEqual(PropTypes.object.isRequired);
});
});
@@ -57,10 +46,10 @@ describe('Testing RootDetectionModal component', () => {
const props = getProps();
const wrapper = shallow();
- expect(wrapper.name()).toEqual('View');
+ expect(wrapper.name()).toEqual('Connect(ModalViewComponent)');
});
- it('should call prop method hideModal when onRightButtonPress prop of OnboardingButtons is triggered', () => {
+ it('should call prop method hideModal when onRightButtonPress prop of ModalView component is triggered', () => {
const props = getProps({
hideModal: jest.fn(),
});
@@ -69,18 +58,12 @@ describe('Testing RootDetectionModal component', () => {
expect(props.hideModal).toHaveBeenCalledTimes(0);
- wrapper
- .children()
- .at(0)
- .children()
- .last()
- .props()
- .onRightButtonPress();
+ wrapper.props().onRightButtonPress();
expect(props.hideModal).toHaveBeenCalledTimes(1);
});
- it('should call prop method closeApp when onLeftButtonPress prop of OnboardingButtons is triggered', () => {
+ it('should call prop method closeApp when onLeftButtonPress prop of ModalView is triggered', () => {
const props = getProps({
closeApp: jest.fn(),
});
@@ -89,13 +72,7 @@ describe('Testing RootDetectionModal component', () => {
expect(props.closeApp).toHaveBeenCalledTimes(0);
- wrapper
- .children()
- .at(0)
- .children()
- .last()
- .props()
- .onLeftButtonPress();
+ wrapper.props().onLeftButtonPress();
expect(props.closeApp).toHaveBeenCalledTimes(1);
});
diff --git a/src/mobile/__tests__/ui/components/Tab.spec.js b/src/mobile/__tests__/ui/components/Tab.spec.js
index 522243a72a..3a49394ad7 100644
--- a/src/mobile/__tests__/ui/components/Tab.spec.js
+++ b/src/mobile/__tests__/ui/components/Tab.spec.js
@@ -14,6 +14,7 @@ const getProps = (overrides) =>
theme: { primary: {}, bar: {} },
isActive: false,
onPress: noop,
+ name: 'send',
},
overrides,
);
@@ -49,7 +50,8 @@ describe('Testing Tab component', () => {
const props = getProps();
const wrapper = shallow();
- const icon = wrapper.find('Icon');
+
+ const icon = wrapper.find('AnimatedIcon');
expect(icon.props().name).toEqual('iota');
});
@@ -58,7 +60,9 @@ describe('Testing Tab component', () => {
const props = getProps();
const wrapper = shallow();
- const text = wrapper.find('Text');
+
+ // FIXME: We should wrap this component so we can name it ourselves
+ const text = wrapper.find('AnimatedComponent');
expect(text.children().text()).toEqual('foo');
});
diff --git a/src/mobile/__tests__/ui/components/TransactionHistoryModal.spec.js b/src/mobile/__tests__/ui/components/TransactionHistoryModal.spec.js
new file mode 100644
index 0000000000..146b6bf207
--- /dev/null
+++ b/src/mobile/__tests__/ui/components/TransactionHistoryModal.spec.js
@@ -0,0 +1,163 @@
+import assign from 'lodash/assign';
+import noop from 'lodash/noop';
+import React from 'react';
+import { Clipboard } from 'react-native';
+import PropTypes from 'prop-types';
+import { shallow } from 'enzyme';
+import TransactionHistoryModal from 'ui/components/TransactionHistoryModal';
+
+jest.mock('react-native-is-device-rooted', () => ({
+ isDeviceRooted: () => true,
+ isDeviceLocked: () => false,
+}));
+
+const getProps = (overrides) =>
+ assign(
+ {},
+ {
+ hideModal: noop,
+ t: (arg) => {
+ const translations = {
+ 'send:message': 'Message',
+ addresses: 'Addresses',
+ bundleHash: 'Bundle Hash',
+ bundleHashCopied: 'Bundle hash copied',
+ bundleHashCopiedExplanation: 'Your bundle has been copied to clipboard',
+ addressCopied: 'Address copied',
+ addressCopiedExplanation: 'Your address has been copied to clipboard',
+ };
+
+ return translations[arg] ? translations[arg] : 'foo';
+ },
+ promote: noop,
+ outputs: [],
+ disableWhen: false,
+ value: 200,
+ fullValue: 200,
+ unit: 'i',
+ persistence: false,
+ incoming: false,
+ time: Date.now(),
+ message: 'Pink floyd',
+ bundle: 'BUNDLE',
+ relevantAddresses: [{ address: 'U'.repeat(81), value: 1, unit: 'i' }],
+ mode: 'Standard',
+ generateAlert: noop,
+ style: {
+ titleColor: 'white',
+ containerBorderColor: { borderColor: 'white' },
+ containerBackgroundColor: { backgroundColor: 'white' },
+ confirmationStatusColor: { color: 'red' },
+ defaultTextColor: { color: 'green' },
+ backgroundColor: 'white',
+ borderColor: { borderColor: 'orange' },
+ barBg: 'black',
+ barColor: 'white',
+ buttonsOpacity: { opacity: 1 },
+ primaryColor: '#ffffff',
+ primaryBody: '#000000',
+ },
+ bundleIsBeingPromoted: false,
+ isFailedTransaction: noop,
+ retryFailedTransaction: noop,
+ isRetryingFailedTransaction: false,
+ },
+ overrides,
+ );
+
+jest.mock('bugsnag-react-native', () => ({
+ Configuration: jest.fn(),
+ Client: jest.fn(() => ({ leaveBreadcrumb: jest.fn() })),
+}));
+
+describe('Testing TransactionHistoryModal component', () => {
+ describe('propTypes', () => {
+ it('should require a t function as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.t).toEqual(PropTypes.func.isRequired);
+ });
+
+ it('should require a value number as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.value).toEqual(PropTypes.number.isRequired);
+ });
+
+ it('should require a fullValue number as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.fullValue).toEqual(PropTypes.number.isRequired);
+ });
+
+ it('should require a unit string as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.unit).toEqual(PropTypes.string.isRequired);
+ });
+
+ it('should require a time number as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.time).toEqual(PropTypes.number.isRequired);
+ });
+
+ it('should require a message string as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.message).toEqual(PropTypes.string);
+ });
+
+ it('should require a bundle string as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.bundle).toEqual(PropTypes.string.isRequired);
+ });
+
+ it('should require a disableWhen boolean as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.disableWhen).toEqual(PropTypes.bool.isRequired);
+ });
+
+ it('should require a bundleIsBeingPromoted boolean as a prop', () => {
+ expect(TransactionHistoryModal.propTypes.bundleIsBeingPromoted).toEqual(PropTypes.bool.isRequired);
+ });
+ });
+
+ describe('when renders', () => {
+ it('should not explode', () => {
+ const props = getProps();
+
+ const wrapper = shallow();
+ expect(wrapper.name()).toEqual('View');
+ });
+
+ it('should return a ScrollView component', () => {
+ const props = getProps();
+
+ const wrapper = shallow();
+ expect(wrapper.find('ScrollViewMock').length).toEqual(0);
+ });
+
+ it('should call instance method copy with bundle prop and "bundle" string when onPress prop of second TouchableOpacity is triggered', () => {
+ const props = getProps();
+
+ const wrapper = shallow();
+ const instance = wrapper.instance();
+
+ jest.spyOn(instance, 'copy');
+ const touchableOpacity = wrapper.find('TouchableOpacity').at(0);
+
+ touchableOpacity.props().onPress();
+
+ expect(instance.copy).toHaveBeenCalledWith('BUNDLE', 'bundle');
+ });
+ });
+
+ describe('instance methods', () => {
+ describe('when called', () => {
+ describe('#copy', () => {
+ afterEach(() => {
+ if (Clipboard.setString.mockClear) {
+ Clipboard.setString.mockClear();
+ }
+ });
+
+ it('should call setString on Clipboard with first argument', () => {
+ const props = getProps();
+ jest.spyOn(Clipboard, 'setString');
+
+ const instance = shallow().instance();
+ instance.copy('arg', 'type');
+
+ expect(Clipboard.setString).toHaveBeenCalledWith('arg');
+ });
+ });
+ });
+ });
+});
diff --git a/src/mobile/__tests__/ui/views/onboarding/SetAccountName.spec.js b/src/mobile/__tests__/ui/views/onboarding/SetAccountName.spec.js
index 8c435870dd..c996ae70fb 100644
--- a/src/mobile/__tests__/ui/views/onboarding/SetAccountName.spec.js
+++ b/src/mobile/__tests__/ui/views/onboarding/SetAccountName.spec.js
@@ -14,6 +14,12 @@ jest.mock('bugsnag-react-native', () => ({
Client: jest.fn(() => ({ leaveBreadcrumb: jest.fn() })),
}));
+jest.mock('libs/navigation', () => ({
+ navigator: {
+ push: jest.fn(),
+ },
+}));
+
const getProps = (overrides) =>
assign(
{},
@@ -22,7 +28,7 @@ const getProps = (overrides) =>
accountNames: [],
generateAlert: noop,
setAdditionalAccountInfo: noop,
- t: noop,
+ t: () => '',
accountCount: 0,
seed: 'SEED',
onboardingComplete: false,
diff --git a/src/mobile/__tests__/ui/views/wallet/AdvancedSettings.spec.js b/src/mobile/__tests__/ui/views/wallet/AdvancedSettings.spec.js
index cf45427b70..66f5410038 100644
--- a/src/mobile/__tests__/ui/views/wallet/AdvancedSettings.spec.js
+++ b/src/mobile/__tests__/ui/views/wallet/AdvancedSettings.spec.js
@@ -27,6 +27,8 @@ const getProps = (overrides) =>
node: 'https://foo.baz',
theme: { body: {} },
isSendingTransfer: false,
+ autoPromotion: false,
+ remotePoW: false,
},
overrides,
);
diff --git a/src/mobile/__tests__/ui/views/wallet/EditAccountName.spec.js b/src/mobile/__tests__/ui/views/wallet/EditAccountName.spec.js
index 23b1f6b595..5e326c63c4 100644
--- a/src/mobile/__tests__/ui/views/wallet/EditAccountName.spec.js
+++ b/src/mobile/__tests__/ui/views/wallet/EditAccountName.spec.js
@@ -27,6 +27,7 @@ const getProps = (overrides) =>
generateAlert: noop,
changeAccountName: noop,
theme: { body: {} },
+ selectedAccountType: 'keychain',
},
overrides,
);
diff --git a/src/mobile/__tests__/ui/views/wallet/ManualSync.spec.js b/src/mobile/__tests__/ui/views/wallet/ManualSync.spec.js
index f97af4fe16..fc89078845 100644
--- a/src/mobile/__tests__/ui/views/wallet/ManualSync.spec.js
+++ b/src/mobile/__tests__/ui/views/wallet/ManualSync.spec.js
@@ -37,6 +37,7 @@ const getProps = (overrides) =>
selectedAccountName: 'MAIN ACCOUNT',
generateAlert: noop,
manuallySyncAccount: noop,
+ selectedAccountType: 'keychain',
},
overrides,
);
diff --git a/src/mobile/__tests__/ui/views/wallet/Send.spec.js b/src/mobile/__tests__/ui/views/wallet/Send.spec.js
index d894349f12..5d7132c8bf 100644
--- a/src/mobile/__tests__/ui/views/wallet/Send.spec.js
+++ b/src/mobile/__tests__/ui/views/wallet/Send.spec.js
@@ -34,16 +34,16 @@ const getProps = (overrides) =>
getFromKeychainError: noop,
closeTopBar: noop,
isSendingTransfer: false,
- negative: { color: 'black' },
- bar: { color: 'red', bg: 'white' },
- body: { color: 'blue', bg: 'green' },
- primary: {
- color: 'white',
- body: 'white',
- hover: 'green',
- },
isTransitioning: false,
address: '9'.repeat(81),
+ theme: {
+ body: { color: '#FFFFFF' },
+ primary: { color: '#FFFFFF' },
+ bar: {},
+ input: {},
+ dark: {},
+ secondary: {},
+ },
amount: '10',
message: 'baz',
setSendAddressField: noop,
@@ -51,14 +51,13 @@ const getProps = (overrides) =>
setSendMessageField: noop,
setSendDenomination: noop,
denomination: 'i',
- theme: {},
resetProgress: noop,
startTrackingProgress: noop,
activeStepIndex: 0,
activeSteps: [],
timeTakenByEachProgressStep: [],
remotePoW: false,
- password: 'foo',
+ password: {},
makeTransaction: noop,
generateTransferErrorAlert: noop,
availableBalance: 100,
@@ -69,6 +68,8 @@ const getProps = (overrides) =>
isIOSKeyboardActive: false,
toggleModalActivity: noop,
isModalActive: false,
+ selectedAccountType: 'keychain',
+ isKeyboardActive: false,
},
overrides,
);
diff --git a/src/mobile/__tests__/ui/views/wallet/TwoFactorSetupAddKey.spec.js b/src/mobile/__tests__/ui/views/wallet/TwoFactorSetupAddKey.spec.js
index 20e0525f86..a09e7e525c 100644
--- a/src/mobile/__tests__/ui/views/wallet/TwoFactorSetupAddKey.spec.js
+++ b/src/mobile/__tests__/ui/views/wallet/TwoFactorSetupAddKey.spec.js
@@ -28,6 +28,12 @@ jest.mock('libs/keychain', () => ({
storeTwoFactorAuthKeyInKeychain: jest.fn(() => Promise.resolve({})),
}));
+jest.mock('libs/navigation', () => ({
+ navigator: {
+ push: jest.fn(),
+ },
+}));
+
const getProps = (overrides) =>
assign(
{},
@@ -72,11 +78,11 @@ describe('Testing TwoFactorSetupAddKey component', () => {
expect(wrapper.name()).toEqual('View');
});
- it('should return six View components', () => {
+ it('should return five View components', () => {
const props = getProps();
const wrapper = shallow();
- expect(wrapper.find('View').length).toEqual(6);
+ expect(wrapper.find('View').length).toEqual(5);
});
it('should return a QRCode component', () => {
diff --git a/src/mobile/android/Gemfile.lock b/src/mobile/android/Gemfile.lock
index 418042fce2..23b506163e 100644
--- a/src/mobile/android/Gemfile.lock
+++ b/src/mobile/android/Gemfile.lock
@@ -18,15 +18,15 @@ GEM
dotenv (2.5.0)
emoji_regex (0.1.1)
excon (0.62.0)
- faraday (0.15.3)
+ faraday (0.15.4)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
- fastimage (2.1.4)
- fastlane (2.108.0)
+ fastimage (2.1.5)
+ fastlane (2.109.1)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
babosa (>= 1.0.2, < 2.0.0)
@@ -124,8 +124,8 @@ GEM
unicode-display_width (~> 1.1, >= 1.1.1)
tty-cursor (0.6.0)
tty-screen (0.6.5)
- tty-spinner (0.8.0)
- tty-cursor (>= 0.5.0)
+ tty-spinner (0.9.0)
+ tty-cursor (~> 0.6.0)
uber (0.1.0)
unf (0.1.4)
unf_ext
diff --git a/src/mobile/android/app/src/main/assets/fonts/Icons.ttf b/src/mobile/android/app/src/main/assets/fonts/Icons.ttf
index 7abffa854e..7350b6f035 100644
Binary files a/src/mobile/android/app/src/main/assets/fonts/Icons.ttf and b/src/mobile/android/app/src/main/assets/fonts/Icons.ttf differ
diff --git a/src/mobile/android/app/src/main/java/com/iota/trinity/MainApplication.java b/src/mobile/android/app/src/main/java/com/iota/trinity/MainApplication.java
index f9d71e886e..36c9180240 100644
--- a/src/mobile/android/app/src/main/java/com/iota/trinity/MainApplication.java
+++ b/src/mobile/android/app/src/main/java/com/iota/trinity/MainApplication.java
@@ -64,7 +64,7 @@ public boolean isDebug() {
protected List getPackages() {
// Add additional packages you require here
// No need to add RnnPackage and MainReactPackage
- return Arrays.asList(
+ return Arrays.asList(
// eg. new VectorIconsPackage()
new SvgPackage(),
new MainReactPackage(),
diff --git a/src/mobile/android/build.gradle b/src/mobile/android/build.gradle
index c60e496ff0..c16bf4b00a 100644
--- a/src/mobile/android/build.gradle
+++ b/src/mobile/android/build.gradle
@@ -40,7 +40,7 @@ subprojects {
variantFilter { variant ->
def names = variant.flavors*.name
// To check for a certain build type, use variant.buildType.name == ""
- if (names.contains("reactNative55") || names.contains("reactNative56")) {
+ if (names.contains("reactNative51") || names.contains("reactNative55") || names.contains("reactNative56")) {
// Gradle ignores any variants that satisfy the conditions above.
setIgnore(true)
}
@@ -48,6 +48,13 @@ subprojects {
}
}
}
+ if (project.name.contains('react-native-modal-translucent')) {
+ buildscript {
+ repositories {
+ maven { url "https://dl.bintray.com/android/android-tools/" }
+ }
+ }
+ }
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
diff --git a/src/mobile/android/settings.gradle b/src/mobile/android/settings.gradle
index 8a99a346cd..2c6f00c139 100644
--- a/src/mobile/android/settings.gradle
+++ b/src/mobile/android/settings.gradle
@@ -1,12 +1,12 @@
rootProject.name = 'iotaWallet'
+include ':react-native-modal-translucent'
+project(':react-native-modal-translucent').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-modal-translucent/android')
include ':react-native-document-picker'
project(':react-native-document-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-document-picker/android')
include ':nodejs-mobile-react-native'
project(':nodejs-mobile-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/nodejs-mobile-react-native/android')
include ':react-native-fast-crypto'
project(':react-native-fast-crypto').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fast-crypto/android')
-include ':react-native-modal-translucent'
-project(':react-native-modal-translucent').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-modal-translucent/android')
include ':react-native-detect-navbar-android'
project(':react-native-detect-navbar-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-detect-navbar-android/android')
include ':react-native-fingerprint-scanner'
@@ -39,7 +39,7 @@ project(':react-native-extra-dimensions-android').projectDir = new File(rootProj
include ':react-native-keychain'
project(':react-native-keychain').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keychain/android')
include ':lottie-react-native'
-project(':lottie-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/lottie-react-native/lib/android')
+project(':lottie-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/lottie-react-native/src/android')
include ':react-native-exit-app', ':app'
project(':react-native-exit-app').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-exit-app/android')
include ':react-native-securerandom'
diff --git a/src/mobile/ios/Gemfile.lock b/src/mobile/ios/Gemfile.lock
index bd30939e15..6f1c7b7529 100644
--- a/src/mobile/ios/Gemfile.lock
+++ b/src/mobile/ios/Gemfile.lock
@@ -18,15 +18,15 @@ GEM
dotenv (2.5.0)
emoji_regex (0.1.1)
excon (0.62.0)
- faraday (0.15.3)
+ faraday (0.15.4)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
- fastimage (2.1.4)
- fastlane (2.108.0)
+ fastimage (2.1.5)
+ fastlane (2.109.1)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
babosa (>= 1.0.2, < 2.0.0)
@@ -126,8 +126,8 @@ GEM
unicode-display_width (~> 1.1, >= 1.1.1)
tty-cursor (0.6.0)
tty-screen (0.6.5)
- tty-spinner (0.8.0)
- tty-cursor (>= 0.5.0)
+ tty-spinner (0.9.0)
+ tty-cursor (~> 0.6.0)
uber (0.1.0)
unf (0.1.4)
unf_ext
diff --git a/src/mobile/ios/iotaWallet.xcodeproj/project.pbxproj b/src/mobile/ios/iotaWallet.xcodeproj/project.pbxproj
index 6e88ce22e1..7630da256d 100644
--- a/src/mobile/ios/iotaWallet.xcodeproj/project.pbxproj
+++ b/src/mobile/ios/iotaWallet.xcodeproj/project.pbxproj
@@ -29,8 +29,6 @@
601BFCF020C3677F0097D329 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 601BFCEF20C3677E0097D329 /* Social.framework */; };
601BFCF220C3679D0097D329 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 601BFCF120C3679D0097D329 /* MessageUI.framework */; };
601BFD6220C39A610097D329 /* libRNViewShot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 601BFD6120C39A580097D329 /* libRNViewShot.a */; };
- 6020D31A21A5065300159E5A /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBC5562C207BA79E00BA0A7F /* Lottie.framework */; };
- 6020D31B21A5065300159E5A /* Lottie.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CBC5562C207BA79E00BA0A7F /* Lottie.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
6020D31E21A5077600159E5A /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CBC55639207BA79E00BA0A7F /* libRCTAnimation.a */; };
6020D31F21A507BC00159E5A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CBC5565A207BA79E00BA0A7F /* libReact.a */; };
6020D32021A5080100159E5A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CBC5565A207BA79E00BA0A7F /* libReact.a */; };
@@ -63,14 +61,17 @@
CA8AF202D45B7B9C48CB844FE4029B34 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 38822DC4E60A1BDF9DF917E7C1541B3D /* libRCTLinking.a */; };
CB305F0421185EF800657575 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CB305F0321185EEC00657575 /* libRNFetchBlob.a */; };
CB61A46620B89E3B004088AA /* SourceSansPro-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CB61A46520B89E3A004088AA /* SourceSansPro-SemiBold.ttf */; };
+ CB63E7A5218B544E0084CBFD /* Icons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CB63E7A4218B544E0084CBFD /* Icons.ttf */; };
CB6626F52085057F00651519 /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CB6626F42085056C00651519 /* libSplashScreen.a */; };
CB866281209F36CA00C026E3 /* EntangledIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = CB86627D209F36CA00C026E3 /* EntangledIOS.m */; };
CB98FB9420A0A5BB0047877B /* SourceSansPro-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CB98FB9120A0A5BB0047877B /* SourceSansPro-Bold.ttf */; };
CB98FB9520A0A5BB0047877B /* SourceSansPro-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CB98FB9220A0A5BB0047877B /* SourceSansPro-Regular.ttf */; };
CB98FB9620A0A5BB0047877B /* SourceSansPro-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CB98FB9320A0A5BB0047877B /* SourceSansPro-Light.ttf */; };
CBA5F52620CAAB2A00774D4B /* SourceCodePro-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CBA5F52520CAAB2A00774D4B /* SourceCodePro-Medium.ttf */; };
- CBA69EF920C8139300DD4CEB /* Icons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CBA69EF820C8139300DD4CEB /* Icons.ttf */; };
CBC214EA20CE82EC005D8ACB /* libRNReactNativeHapticFeedback.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CBC214E920CE82DC005D8ACB /* libRNReactNativeHapticFeedback.a */; };
+ CBDE11BB21AEFFFE00CA1909 /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBC5562C207BA79E00BA0A7F /* Lottie.framework */; };
+ CBDE11BC21AEFFFE00CA1909 /* Lottie.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CBC5562C207BA79E00BA0A7F /* Lottie.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ CBDE11BF21AF008D00CA1909 /* libLottieReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5577D5219F221E00B698BF /* libLottieReactNative.a */; };
CBEA4C9421494823007DA583 /* libReactNativeNavigation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CBEA4C912149481F007DA583 /* libReactNativeNavigation.a */; };
CBEC7C012108D78900F0020D /* libRNFastCrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CBEC7C002108D77100F0020D /* libRNFastCrypto.a */; };
CDC76600A03C06457F99259512D7F713 /* libRNIsDeviceRooted.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0431CEEC099BC4CE1F43E0550C4CC291 /* libRNIsDeviceRooted.a */; };
@@ -87,7 +88,6 @@
F19CAE1462E2409387028CD1 /* NodeMobile.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB7A0253632148CC9F004F24 /* NodeMobile.framework */; };
F43A0D26643270FD3A4BFD2691C35E43 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B655981D53B5AE618EDBD102EA41BF51 /* libReact.a */; };
F47E436883524D18AB563054 /* nodejs-project in Resources */ = {isa = PBXBuildFile; fileRef = C6679B3BCAC742D9A6A13DC5 /* nodejs-project */; };
- F695E3B017504F2AD81D2965695DA403 /* libLottieReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 05A278F7206668C3941E08E4900DD55E /* libLottieReactNative.a */; };
F834CDED8A9A63C142A683ADB8483369 /* iotaWalletTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A81CE60367578E89DC687A3A32D03E /* iotaWalletTests.m */; };
/* End PBXBuildFile section */
@@ -141,13 +141,6 @@
remoteGlobalIDString = D09A20E9314FCC90115E1E28BD5DB357;
remoteInfo = "yoga-tvOS";
};
- 1D4B301C1E61385E585E2A112DA1B8AA /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = ED242A7662F7C74297E27CF29CD96195 /* LottieReactNative.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = E137367F371D799CF0D87227D17F7969;
- remoteInfo = LottieReactNative;
- };
28BD818916EC80191B9C06F5C44796AA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = FBC6F77FBF455B92FBB736B0E5DE8E13 /* Project object */;
@@ -169,13 +162,6 @@
remoteGlobalIDString = BCF351C3D91067AA4B325E17903DAAA1;
remoteInfo = RCTWebSocket;
};
- 3431B8C171DBF136591372AA44E6F2F4 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = B8B9BB680BF96F04B35C8CF2291F3DF7 /* Lottie.xcodeproj */;
- proxyType = 1;
- remoteGlobalIDString = 62CA59B71E3C173B002D7188;
- remoteInfo = Lottie_iOS;
- };
3574B82CD6B55B4ECA9A60938811F5E8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 679A4B0BB6333961124F2288316630DD /* RCTText.xcodeproj */;
@@ -477,6 +463,13 @@
remoteGlobalIDString = 08053213D1F0595394F6BC28F519D907;
remoteInfo = CatCrypto;
};
+ CB5577D4219F221E00B698BF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = CB5577D0219F221E00B698BF /* LottieReactNative.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 11FA5C511C4A1296003AC2EE;
+ remoteInfo = LottieReactNative;
+ };
CB6626F32085056C00651519 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CB6626ED2085056C00651519 /* SplashScreen.xcodeproj */;
@@ -582,6 +575,13 @@
remoteGlobalIDString = 6456441F1EB8DA9100672408;
remoteInfo = "RNFS-tvOS";
};
+ CBDE11BD21AEFFFE00CA1909 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = B8B9BB680BF96F04B35C8CF2291F3DF7 /* Lottie.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 62CA59B71E3C173B002D7188;
+ remoteInfo = Lottie_iOS;
+ };
CBEA4C902149481F007DA583 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CBEA4C8B2149481F007DA583 /* ReactNativeNavigation.xcodeproj */;
@@ -676,7 +676,7 @@
dstSubfolderSpec = 10;
files = (
D1DC0968101C454F996F0262 /* NodeMobile.framework in Embed Frameworks */,
- 6020D31B21A5065300159E5A /* Lottie.framework in Embed Frameworks */,
+ CBDE11BC21AEFFFE00CA1909 /* Lottie.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -768,7 +768,9 @@
C883F8A0B4031CE53D5E48217339975E /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
C989B5B2E21BB76597A51E0EFEA9B547 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
CB305EFE21185EEC00657575 /* RNFetchBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNFetchBlob.xcodeproj; path = "../node_modules/rn-fetch-blob/ios/RNFetchBlob.xcodeproj"; sourceTree = ""; };
+ CB5577D0219F221E00B698BF /* LottieReactNative.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LottieReactNative.xcodeproj; path = "../node_modules/lottie-react-native/src/ios/LottieReactNative.xcodeproj"; sourceTree = ""; };
CB61A46520B89E3A004088AA /* SourceSansPro-SemiBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "SourceSansPro-SemiBold.ttf"; path = "../../shared/custom-fonts/SourceSansPro-SemiBold.ttf"; sourceTree = ""; };
+ CB63E7A4218B544E0084CBFD /* Icons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Icons.ttf; path = ../../shared/icons/Icons.ttf; sourceTree = ""; };
CB6626ED2085056C00651519 /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; };
CB7A0253632148CC9F004F24 /* NodeMobile.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = NodeMobile.framework; path = "../node_modules/nodejs-mobile-react-native/ios/NodeMobile.framework"; sourceTree = ""; };
CB86627D209F36CA00C026E3 /* EntangledIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EntangledIOS.m; sourceTree = ""; };
@@ -777,7 +779,6 @@
CB98FB9220A0A5BB0047877B /* SourceSansPro-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "SourceSansPro-Regular.ttf"; path = "../../shared/custom-fonts/SourceSansPro-Regular.ttf"; sourceTree = ""; };
CB98FB9320A0A5BB0047877B /* SourceSansPro-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "SourceSansPro-Light.ttf"; path = "../../shared/custom-fonts/SourceSansPro-Light.ttf"; sourceTree = ""; };
CBA5F52520CAAB2A00774D4B /* SourceCodePro-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "SourceCodePro-Medium.ttf"; path = "../../shared/custom-fonts/SourceCodePro-Medium.ttf"; sourceTree = ""; };
- CBA69EF820C8139300DD4CEB /* Icons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Icons.ttf; path = ../../shared/icons/Icons.ttf; sourceTree = ""; };
CBC214E420CE82DC005D8ACB /* RNReactNativeHapticFeedback.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNReactNativeHapticFeedback.xcodeproj; path = "../node_modules/react-native-haptic-feedback/ios/RNReactNativeHapticFeedback.xcodeproj"; sourceTree = ""; };
CBEA4C8B2149481F007DA583 /* ReactNativeNavigation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeNavigation.xcodeproj; path = "../node_modules/react-native-navigation/lib/ios/ReactNativeNavigation.xcodeproj"; sourceTree = ""; };
CFA2B84C183CC39F995C8E04CC713DDB /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = iotaWallet/Images.xcassets; sourceTree = ""; };
@@ -792,7 +793,6 @@
DFF7F2DF242CD80F15A83C96A62910D0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
E3A5CC95D9B27ABCF4FAD971B8E3AC51 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
ED0FDEA3EDE9090E04563794CE9A92B7 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = iotaWallet/main.m; sourceTree = ""; };
- ED242A7662F7C74297E27CF29CD96195 /* LottieReactNative.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LottieReactNative.xcodeproj; path = "../node_modules/lottie-react-native/lib/ios/LottieReactNative.xcodeproj"; sourceTree = ""; };
EEAE9D5C606B7556253D3AD01EB78CE0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = iotaWallet/Info.plist; sourceTree = ""; };
EEF5BF9089B89A57B0EABB4E6415A676 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
F05FB5124D5FDAF46BC578870641ED07 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/InfoPlist.strings; sourceTree = ""; };
@@ -816,14 +816,15 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ CBDE11BF21AF008D00CA1909 /* libLottieReactNative.a in Frameworks */,
6020D31F21A507BC00159E5A /* libReact.a in Frameworks */,
6020D31E21A5077600159E5A /* libRCTAnimation.a in Frameworks */,
CBEA4C9421494823007DA583 /* libReactNativeNavigation.a in Frameworks */,
60F7E4242125EBE7005355C7 /* libRNDocumentPicker.a in Frameworks */,
CB305F0421185EF800657575 /* libRNFetchBlob.a in Frameworks */,
+ CBDE11BB21AEFFFE00CA1909 /* Lottie.framework in Frameworks */,
CBEC7C012108D78900F0020D /* libRNFastCrypto.a in Frameworks */,
601BFD6220C39A610097D329 /* libRNViewShot.a in Frameworks */,
- 6020D31A21A5065300159E5A /* Lottie.framework in Frameworks */,
601BFCF220C3679D0097D329 /* MessageUI.framework in Frameworks */,
601BFCF020C3677F0097D329 /* Social.framework in Frameworks */,
601BFCEE20C367660097D329 /* libRNShare.a in Frameworks */,
@@ -836,7 +837,6 @@
0C2504A17226DF5FFD3C2A54AD060E8A /* libBugsnagReactNative.a in Frameworks */,
6ED5CBEF7B1A39258C560F6CDCD36254 /* libKCKeepAwake.a in Frameworks */,
2F852D5F92D3F66B78914D33F296087F /* libLottie.a in Frameworks */,
- F695E3B017504F2AD81D2965695DA403 /* libLottieReactNative.a in Frameworks */,
227F5ECF692F599792F69DC4D573B2E6 /* libRCTActionSheet.a in Frameworks */,
E3AE8565650D2534125883D55649D450 /* libRCTGeolocation.a in Frameworks */,
C4646F689AA9CF8E8FFC65C04944FF13 /* libRCTImage.a in Frameworks */,
@@ -948,14 +948,6 @@
name = Products;
sourceTree = "";
};
- 36C28026D94ACB992F53386A85FFD077 /* Products */ = {
- isa = PBXGroup;
- children = (
- 05A278F7206668C3941E08E4900DD55E /* libLottieReactNative.a */,
- );
- name = Products;
- sourceTree = "";
- };
3B537B39817BE965218CAE954AED9DE5 /* iotaWallet */ = {
isa = PBXGroup;
children = (
@@ -978,8 +970,8 @@
isa = PBXGroup;
children = (
60A097C62110BDE7008180C9 /* Argon2 */,
+ CB63E7A4218B544E0084CBFD /* Icons.ttf */,
CBA5F52520CAAB2A00774D4B /* SourceCodePro-Medium.ttf */,
- CBA69EF820C8139300DD4CEB /* Icons.ttf */,
CB61A46520B89E3A004088AA /* SourceSansPro-SemiBold.ttf */,
CB98FB9120A0A5BB0047877B /* SourceSansPro-Bold.ttf */,
CB98FB9320A0A5BB0047877B /* SourceSansPro-Light.ttf */,
@@ -1107,6 +1099,7 @@
6C07637C2BD02779C4E072737C53A2E3 /* Libraries */ = {
isa = PBXGroup;
children = (
+ CB5577D0219F221E00B698BF /* LottieReactNative.xcodeproj */,
CBEA4C8B2149481F007DA583 /* ReactNativeNavigation.xcodeproj */,
60F7E3AE2125EAE7005355C7 /* RNDocumentPicker.xcodeproj */,
CB305EFE21185EEC00657575 /* RNFetchBlob.xcodeproj */,
@@ -1120,7 +1113,6 @@
5BC0CFE5E7DFF31220E78B818DA00C4B /* BugsnagReactNative.xcodeproj */,
9E17389EF3AB0C14C6843EF1892D81D4 /* KCKeepAwake.xcodeproj */,
B8B9BB680BF96F04B35C8CF2291F3DF7 /* Lottie.xcodeproj */,
- ED242A7662F7C74297E27CF29CD96195 /* LottieReactNative.xcodeproj */,
DA959792AD9A5C3642835114D50DE868 /* Pods.xcodeproj */,
F06C37C0B9522995FB8FC4AACEE1A4A1 /* RCTActionSheet.xcodeproj */,
C76D226F8C33DAB67AA9C4D76FCA89C2 /* RCTAnimation.xcodeproj */,
@@ -1295,6 +1287,14 @@
name = Products;
sourceTree = "";
};
+ CB5577D1219F221E00B698BF /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ CB5577D5219F221E00B698BF /* libLottieReactNative.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
CB6626EE2085056C00651519 /* Products */ = {
isa = PBXGroup;
children = (
@@ -1507,8 +1507,8 @@
buildRules = (
);
dependencies = (
- BCF502FF716E49969EFEC3E7DA65262E /* PBXTargetDependency */,
6020D31D21A5065300159E5A /* PBXTargetDependency */,
+ CBDE11BE21AEFFFE00CA1909 /* PBXTargetDependency */,
);
name = iotaWallet;
productName = "Hello World";
@@ -1591,8 +1591,7 @@
};
8607A222C6B67AC6A2A6E24A446EB268 = {
CreatedOnToolsVersion = 8.2.1;
- DevelopmentTeam = UG77RJKZHH;
- ProvisioningStyle = Automatic;
+ ProvisioningStyle = Manual;
TestTargetID = 1B6F56C5B39768183E212C21E8E213DA;
};
B337D5A007B26D2B5F9D16F7E2662744 = {
@@ -1662,8 +1661,8 @@
ProjectRef = B8B9BB680BF96F04B35C8CF2291F3DF7 /* Lottie.xcodeproj */;
},
{
- ProductGroup = 36C28026D94ACB992F53386A85FFD077 /* Products */;
- ProjectRef = ED242A7662F7C74297E27CF29CD96195 /* LottieReactNative.xcodeproj */;
+ ProductGroup = CB5577D1219F221E00B698BF /* Products */;
+ ProjectRef = CB5577D0219F221E00B698BF /* LottieReactNative.xcodeproj */;
},
{
ProductGroup = 9587AF1D58A6A266E24B67481F9ED9F2 /* Products */;
@@ -1817,13 +1816,6 @@
remoteRef = C9772B939B4E8110FBC5F859B3227154 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
- 05A278F7206668C3941E08E4900DD55E /* libLottieReactNative.a */ = {
- isa = PBXReferenceProxy;
- fileType = archive.ar;
- path = libLottieReactNative.a;
- remoteRef = 1D4B301C1E61385E585E2A112DA1B8AA /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
0DF165D1193E4B4962DABF4E7264F91B /* libRCTWebSocket.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@@ -2153,6 +2145,13 @@
remoteRef = CB54CCFC21261E42001F1630 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
+ CB5577D5219F221E00B698BF /* libLottieReactNative.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libLottieReactNative.a;
+ remoteRef = CB5577D4219F221E00B698BF /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
CB6626F42085056C00651519 /* libSplashScreen.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@@ -2394,8 +2393,8 @@
files = (
54D44899635E65A34FCEAC3EA412BE26 /* Images.xcassets in Resources */,
CBA5F52620CAAB2A00774D4B /* SourceCodePro-Medium.ttf in Resources */,
- CBA69EF920C8139300DD4CEB /* Icons.ttf in Resources */,
CB98FB9620A0A5BB0047877B /* SourceSansPro-Light.ttf in Resources */,
+ CB63E7A5218B544E0084CBFD /* Icons.ttf in Resources */,
CB61A46620B89E3B004088AA /* SourceSansPro-SemiBold.ttf in Resources */,
29169BFF0B0644DA1F501101B010A604 /* InfoPlist.strings in Resources */,
29E9C75A4A87FFC827469A3CFB2D3C89 /* Launch Screen.storyboard in Resources */,
@@ -2646,16 +2645,16 @@
name = Lottie_iOS;
targetProxy = 6020D31C21A5065300159E5A /* PBXContainerItemProxy */;
};
- BCF502FF716E49969EFEC3E7DA65262E /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = Lottie_iOS;
- targetProxy = 3431B8C171DBF136591372AA44E6F2F4 /* PBXContainerItemProxy */;
- };
BE73D60DB7DADA792CE0511FEEF11D44 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 4848851A00274CA2FFBE307BAEB5F278 /* iotaWallet */;
targetProxy = 569242DFF3FE79F261B75B97749FC745 /* PBXContainerItemProxy */;
};
+ CBDE11BE21AEFFFE00CA1909 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = Lottie_iOS;
+ targetProxy = CBDE11BD21AEFFFE00CA1909 /* PBXContainerItemProxy */;
+ };
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
@@ -2799,9 +2798,9 @@
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
+ CODE_SIGN_STYLE = Manual;
DEBUG_INFORMATION_FORMAT = dwarf;
- DEVELOPMENT_TEAM = UG77RJKZHH;
+ DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = YES;
ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = (
@@ -2979,10 +2978,10 @@
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
- CODE_SIGN_STYLE = Automatic;
+ CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_TEAM = UG77RJKZHH;
+ DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
diff --git a/src/mobile/package.json b/src/mobile/package.json
index 0ed86193b8..cd518336d0 100644
--- a/src/mobile/package.json
+++ b/src/mobile/package.json
@@ -45,9 +45,9 @@
"https-browserify": "0.0.1",
"inherits": "^2.0.3",
"lodash": "^4.17.10",
- "lottie-ios": "^2.1.5",
- "lottie-react-native": "2.2.7",
- "nodejs-mobile-react-native": "https://github.com/rajivshah3/nodejs-mobile-react-native",
+ "lottie-ios": "^2.5.0",
+ "lottie-react-native": "^2.5.10",
+ "nodejs-mobile-react-native": "https://github.com/rajivshah3/nodejs-mobile-react-native#ab4a655d30a51115c34dbdb30b98df6f130467ff",
"os-browserify": "^0.1.2",
"path-browserify": "0.0.0",
"process": "^0.11.10",
@@ -79,7 +79,7 @@
"react-native-keychain": "2.0.0-rc",
"react-native-level-fs": "^3.0.0",
"react-native-markdown-renderer": "^3.2.1",
- "react-native-modal": "^6.5.0",
+ "react-native-modal": "^7.0.1",
"react-native-modal-translucent": "^1.1.3",
"react-native-navigation": "https://github.com/rajivshah3/react-native-navigation#2.0.255-0.57",
"react-native-optimized-flatlist": "^1.0.4",
@@ -213,4 +213,4 @@
"tls": false
},
"snyk": true
-}
+}
\ No newline at end of file
diff --git a/src/mobile/src/libs/device.js b/src/mobile/src/libs/device.js
index 8b804a50ab..1fb23ca9bc 100644
--- a/src/mobile/src/libs/device.js
+++ b/src/mobile/src/libs/device.js
@@ -12,9 +12,6 @@ export const isAndroid = Platform.OS === 'android';
export const isIOS = Platform.OS === 'ios';
export const isIPhoneX = device.includes('iPhone X') || deviceId.includes('iPhone11');
export const isIPhone11 = deviceId.includes('iPhone11');
-// Temporary fix for Safe Area View issues on iPhone XS Max and XR
-export const isIPhoneFailingSafeAreaView =
- deviceId.match('iPhone11,4') || deviceId.match('iPhone11,8') || deviceId.match('iPhone11,6');
export const getAndroidFileSystemPermissions = async () => {
const hasPermission = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE);
diff --git a/src/mobile/src/libs/navigation.js b/src/mobile/src/libs/navigation.js
new file mode 100644
index 0000000000..2c4c1555c0
--- /dev/null
+++ b/src/mobile/src/libs/navigation.js
@@ -0,0 +1,43 @@
+import last from 'lodash/last';
+import { Navigation } from 'react-native-navigation';
+import timer from 'react-native-timer';
+import { ActionTypes } from 'shared-modules/actions/wallet';
+import store from '../../../shared/store';
+
+export const navigator = {
+ push: (nextScreen, options, delay = 300) => {
+ const currentScreen = last(store.getState().ui.navStack);
+ store.dispatch({ type: ActionTypes.PUSH_ROUTE, payload: nextScreen });
+ return timer.setTimeout(
+ currentScreen,
+ () =>
+ Navigation.push('appStack', {
+ component: {
+ name: nextScreen,
+ options,
+ },
+ }),
+ delay,
+ );
+ },
+ pop: (componentId, delay = 300) => {
+ const currentScreen = last(store.getState().ui.navStack);
+ store.dispatch({ type: ActionTypes.POP_ROUTE });
+ return timer.setTimeout(currentScreen, () => Navigation.pop(componentId), delay);
+ },
+ setStackRoot: (nextScreen, options, delay = 300) => {
+ const currentScreen = last(store.getState().ui.navStack);
+ store.dispatch({ type: ActionTypes.RESET_ROUTE, payload: nextScreen });
+ return timer.setTimeout(
+ currentScreen,
+ () =>
+ Navigation.setStackRoot('appStack', {
+ component: {
+ name: nextScreen,
+ options,
+ },
+ }),
+ delay,
+ );
+ },
+};
diff --git a/src/mobile/src/ui/components/AmountTextInput.js b/src/mobile/src/ui/components/AmountTextInput.js
index 00ba3adc0e..12afe3b79c 100644
--- a/src/mobile/src/ui/components/AmountTextInput.js
+++ b/src/mobile/src/ui/components/AmountTextInput.js
@@ -40,7 +40,7 @@ class MultiTextInput extends Component {
/** Text field label */
label: PropTypes.string,
/** CustomTextField component container style */
- containerStyle: PropTypes.object.isRequired,
+ containerStyle: PropTypes.object,
/** On submit editing event callback */
onSubmitEditing: PropTypes.func,
/** Determines if the text field is editable */
diff --git a/src/mobile/src/ui/components/AnimatedComponent.js b/src/mobile/src/ui/components/AnimatedComponent.js
new file mode 100644
index 0000000000..b456cfaafe
--- /dev/null
+++ b/src/mobile/src/ui/components/AnimatedComponent.js
@@ -0,0 +1,337 @@
+import head from 'lodash/head';
+import last from 'lodash/last';
+import merge from 'lodash/merge';
+import React, { Component } from 'react';
+import { Animated, Easing } from 'react-native';
+import { connect } from 'react-redux';
+import PropTypes from 'prop-types';
+import { width } from 'libs/dimensions';
+
+class AnimatedComponent extends Component {
+ static propTypes = {
+ /** Component to animate */
+ children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
+ /** Determines whether to animate in on mount */
+ animateOnMount: PropTypes.bool,
+ /** Delay for animation trigger */
+ delay: PropTypes.number,
+ /** Style of animation in */
+ animationInType: PropTypes.array,
+ /** Style of animation out */
+ animationOutType: PropTypes.array,
+ /** Duration of animation */
+ duration: PropTypes.number,
+ /** @ignore */
+ navStack: PropTypes.array.isRequired,
+ /** Style prop */
+ style: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.number]),
+ /** Trigger animation out on change */
+ animateOutTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ /** Trigger animation in on change */
+ animateInTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
+ };
+
+ static defaultProps = {
+ animateOnMount: true,
+ delay: 0,
+ animationInType: ['fadeIn'],
+ animationOutType: ['fadeOut'],
+ duration: 300,
+ animateInTrigger: false,
+ animateOutTrigger: false,
+ isDashboard: false,
+ blockAnimation: false,
+ };
+
+ constructor(props) {
+ super(props);
+ this.fadeValue = new Animated.Value(1);
+ this.slideValue = new Animated.Value(0);
+ this.animatedStyle = {};
+ // Slide animations are reversed when popping from navigation stack
+ this.reverseSlideIn = false;
+ this.reverseSlideOut = false;
+ if (props.animateOnMount) {
+ this.iniatialiseAnimations(props.animationInType);
+ }
+ this.screen = last(props.navStack);
+ }
+
+ componentDidMount() {
+ // Animate in on page mount
+ if (this.props.animateOnMount) {
+ this.animateIn(this.props.delay);
+ }
+ }
+
+ componentWillReceiveProps(newProps) {
+ if (this.props.animateInTrigger !== newProps.animateInTrigger) {
+ return this.iniatialiseAnimations(newProps.animationInType);
+ }
+
+ if (this.props.animateOutTrigger !== newProps.animateOutTrigger) {
+ return this.iniatialiseAnimations(newProps.animationOutType);
+ }
+
+ // Animate out if pushing from current screen
+ if (this.props.navStack.length < newProps.navStack.length && this.screen === last(this.props.navStack)) {
+ this.reverseSlideOut = false;
+ this.iniatialiseAnimations(this.props.animationOutType);
+ this.animateOut();
+ }
+
+ // Animate out if popping from current screen
+ if (
+ this.props.navStack.length > newProps.navStack.length &&
+ this.screen === last(this.props.navStack) &&
+ head(this.props.navStack) === head(newProps.navStack)
+ ) {
+ this.reverseSlideOut = true;
+ this.iniatialiseAnimations(this.props.animationOutType);
+ this.animateOut();
+ }
+
+ // Animate out if resetting navigator stack
+ if (
+ this.screen === last(this.props.navStack) &&
+ newProps.navStack.length === 1 &&
+ head(this.props.navStack) !== head(newProps.navStack)
+ ) {
+ this.reverseSlideIn = false;
+ this.reverseSlideOut = false;
+ this.iniatialiseAnimations(this.props.animationOutType);
+ this.animateOut();
+ }
+
+ // Animate in if popping to current screen
+ if (this.props.navStack.length > newProps.navStack.length && this.screen === last(newProps.navStack)) {
+ this.reverseSlideIn = true;
+ this.iniatialiseAnimations(this.props.animationInType);
+ // Allow time for animate out (300ms)
+ this.animateIn(this.props.delay + 300);
+ }
+ }
+
+ componentDidUpdate(prevProps) {
+ if (prevProps.animateInTrigger !== this.props.animateInTrigger) {
+ return this.animateIn();
+ }
+
+ if (prevProps.animateOutTrigger !== this.props.animateOutTrigger) {
+ return this.animateOut();
+ }
+ }
+
+ /**
+ * Gets animated style object for single or multiple animations
+ * @method getAnimatedStyle
+ * @param {string}
+ * @returns {object}
+ */
+ getAnimatedStyle(animationType) {
+ let animatedStyle = {};
+ animationType.map((type) => {
+ switch (type) {
+ case 'fadeIn':
+ case 'fadeOut':
+ animatedStyle = merge({}, animatedStyle, { opacity: this.fadeValue });
+ break;
+ case 'slideInLeft':
+ case 'slideInRight':
+ case 'slideOutLeft':
+ case 'slideInLeftSmall':
+ case 'slideInRightSmall':
+ case 'slideOutLeftSmall':
+ case 'slideOutRightSmall':
+ animatedStyle = merge({}, animatedStyle, { width, transform: [{ translateX: this.slideValue }] });
+ break;
+ }
+ });
+ return animatedStyle;
+ }
+
+ /**
+ * Gets starting animated value
+ * @method getStartingAnimatedValue
+ * @param {string}
+ * @returns {number}
+ */
+ getStartingAnimatedValue(animationType) {
+ switch (animationType) {
+ case 'fadeIn':
+ return 0;
+ case 'fadeOut':
+ return 1;
+ case 'slideInRight':
+ return this.reverseSlideIn ? -width : width;
+ case 'slideInLeft':
+ return -width;
+ case 'slideOutLeft':
+ case 'slideOutRight':
+ return 0;
+ case 'slideInLeftSmall':
+ return -width / 8;
+ case 'slideInRightSmall':
+ return width / 8;
+ case 'slideOutLeftSmall':
+ case 'slideOutRightSmall':
+ return 0;
+ }
+ }
+
+ /**
+ * Gets final animated value
+ * @method getFinalAnimatedValue
+ * @param {string}
+ * @returns {number}
+ */
+ getFinalAnimatedValue(animationType) {
+ switch (animationType) {
+ case 'fadeIn':
+ return 1;
+ case 'fadeOut':
+ case 'slideInLeft':
+ case 'slideInRight':
+ return 0;
+ case 'slideOutLeft':
+ return this.reverseSlideOut ? width : -width;
+ case 'slideOutRight':
+ return width;
+ case 'slideInLeftSmall':
+ return 0;
+ case 'slideInRightSmall':
+ return 0;
+ case 'slideOutLeftSmall':
+ return this.reverseSlideOut ? width / 8 : -width / 8;
+ case 'slideOutRightSmall':
+ return width / 8;
+ }
+ }
+
+ /**
+ * Gets easing function
+ * @method getEasing
+ * @param {string}
+ * @returns {function}
+ */
+ getEasing(animationType) {
+ switch (animationType) {
+ case 'fadeIn':
+ case 'fadeOut':
+ return Easing.elastic();
+ case 'slideInLeft':
+ case 'slideInRight':
+ case 'slideOutLeft':
+ case 'slideOutRight':
+ case 'slideInLeftSmall':
+ case 'slideInRightSmall':
+ case 'slideOutLeftSmall':
+ case 'slideOutRightSmall':
+ return Easing.bezier(0.25, 1, 0.25, 1);
+ }
+ }
+
+ /**
+ * Gets variable pointer for each animation type
+ * @method getAnimation
+ * @param {string}
+ * @returns {number}
+ */
+ getAnimationPointer(animationType) {
+ switch (animationType) {
+ case 'fadeIn':
+ case 'fadeOut':
+ return this.fadeValue;
+ case 'slideInLeft':
+ case 'slideInRight':
+ case 'slideOutLeft':
+ case 'slideOutRight':
+ case 'slideInLeftSmall':
+ case 'slideInRightSmall':
+ case 'slideOutLeftSmall':
+ case 'slideOutRightSmall':
+ return this.slideValue;
+ }
+ }
+
+ /**
+ * Creates animation and gets relevant values
+ * @method getAnimation
+ * @param {string}
+ * @param {number}
+ * @returns {array}
+ */
+ getAnimation(animationType, delay = 0) {
+ const animations = [];
+ animationType.map((type) => {
+ animations.push(
+ Animated.timing(this.getAnimationPointer(type), {
+ toValue: this.getFinalAnimatedValue(type),
+ duration: type === 'fadeOut' ? 100 : this.props.duration,
+ delay,
+ easing: this.getEasing(type),
+ }),
+ );
+ });
+ return animations;
+ }
+
+ /**
+ * Assigns animated values to pointers and initialises animation style
+ * @method iniatialiseAnimations
+ * @param {string}
+ */
+ iniatialiseAnimations(animationType) {
+ animationType.map((type) => {
+ switch (type) {
+ case 'fadeIn':
+ case 'fadeOut':
+ this.fadeValue = new Animated.Value(this.getStartingAnimatedValue(type));
+ break;
+ case 'slideInLeft':
+ case 'slideInRight':
+ case 'slideOutLeft':
+ case 'slideOutRight':
+ case 'slideInLeftSmall':
+ case 'slideInRightSmall':
+ case 'slideOutLeftSmall':
+ case 'slideOutRightSmall':
+ this.slideValue = new Animated.Value(this.getStartingAnimatedValue(type));
+ break;
+ }
+ });
+ this.animatedStyle = this.getAnimatedStyle(animationType);
+ }
+
+ /**
+ * Animate in on page transition
+ * @method animateIn
+ * @param {number}
+ */
+ animateIn(delay = this.props.delay) {
+ Animated.parallel(this.getAnimation(this.props.animationInType, delay)).start();
+ }
+
+ /**
+ * Animate out on page transition
+ * @method animateOut
+ */
+ animateOut() {
+ Animated.parallel(this.getAnimation(this.props.animationOutType)).start();
+ }
+
+ render() {
+ const { children, style } = this.props;
+ return (
+
+ {children}
+
+ );
+ }
+}
+
+const mapStateToProps = (state) => ({
+ navStack: state.wallet.navStack,
+});
+
+export default connect(mapStateToProps)(AnimatedComponent);
diff --git a/src/mobile/src/ui/components/BackPress.js b/src/mobile/src/ui/components/BackPress.js
index a00361a2b1..188127f1d8 100644
--- a/src/mobile/src/ui/components/BackPress.js
+++ b/src/mobile/src/ui/components/BackPress.js
@@ -1,18 +1,25 @@
+import last from 'lodash/last';
import React, { Component } from 'react';
import { BackHandler, ToastAndroid } from 'react-native';
import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import RNExitApp from 'react-native-exit-app';
+import i18next from 'shared-modules/libs/i18next.js';
import { setSetting } from 'shared-modules/actions/wallet';
+import { setLoginRoute } from 'shared-modules/actions/ui';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { isAndroid } from 'libs/device';
const mapDispatchToProps = {
setSetting,
+ setLoginRoute,
};
const mapStateToProps = (state) => ({
currentSetting: state.wallet.currentSetting,
+ currentRoute: last(state.wallet.navStack),
+ loginRoute: state.ui.loginRoute,
});
/**
@@ -20,8 +27,22 @@ const mapStateToProps = (state) => ({
* @param {Component} C Component to be wrapped
* @return {Component} A wrapped component
*/
-export default () => (C) => {
- class WithBackPress extends Component {
+export default function withBackPress(C) {
+ class EnhancedComponent extends Component {
+ static propTypes = {
+ /** Component ID */
+ componentId: PropTypes.string.isRequired,
+ /** @ignore */
+ setSetting: PropTypes.func.isRequired,
+ /** @ignore */
+ currentSetting: PropTypes.string.isRequired,
+ /** @ignore */
+ currentRoute: PropTypes.string.isRequired,
+ /** @ignore */
+ loginRoute: PropTypes.string.isRequired,
+ /** @ignore */
+ setLoginRoute: PropTypes.func.isRequired,
+ };
constructor(props) {
super(props);
if (isAndroid) {
@@ -50,25 +71,37 @@ export default () => (C) => {
}
/**
- * On back press, display alert. On second back press, close app.
+ * On back press, pop current route
+ *
+ * @method withBackPressPopRoute
+ */
+ withBackPressPopRoute() {
+ navigator.pop(this.props.componentId);
+ }
+
+ /**
+ * On back press, display alert. On second back press, close app
*
- * @method handleBackPressFromMainSettings
+ * @method withBackPressCloseApp
*/
- handleBackPressFromMainSettings() {
- const { t } = this.props;
+ withBackPressCloseApp() {
if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
RNExitApp.exitApp();
}
this.lastBackPressed = Date.now();
- ToastAndroid.show(t('global:pressBackAgain'), ToastAndroid.SHORT);
+ ToastAndroid.show(i18next.t('global:pressBackAgain'), ToastAndroid.SHORT);
}
- handleBackPress = () => {
- const { currentSetting } = this.props;
+ /**
+ * On back press, navigate to appropriate setting menu
+ *
+ * @method withBackPressNavigateSettings
+ */
+ withBackPressNavigateSettings(currentSetting) {
switch (currentSetting) {
case 'mainSettings':
- this.handleBackPressFromMainSettings();
- return true;
+ this.withBackPressCloseApp();
+ break;
case 'modeSelection':
case 'themeCustomisation':
case 'currencySelection':
@@ -78,7 +111,7 @@ export default () => (C) => {
case 'advancedSettings':
case 'about':
this.props.setSetting('mainSettings');
- return true;
+ break;
case 'nodeSelection':
case 'addCustomNode':
case 'manualSync':
@@ -86,23 +119,65 @@ export default () => (C) => {
case 'pow':
case 'autoPromotion':
this.props.setSetting('advancedSettings');
- return true;
+ break;
case 'viewSeed':
case 'viewAddresses':
case 'editAccountName':
case 'deleteAccount':
case 'addNewAccount':
+ case 'exportSeedVault':
this.props.setSetting('accountManagement');
- return true;
+ break;
case 'addExistingSeed':
this.props.setSetting('addNewAccount');
- return true;
+ break;
case 'changePassword':
this.props.setSetting('securitySettings');
- return true;
+ break;
default:
break;
}
+ }
+
+ withBackPressNavigateNodeOptions(loginRoute) {
+ switch (loginRoute) {
+ case 'complete2FA':
+ case 'nodeOptions':
+ this.props.setLoginRoute('login');
+ break;
+ case 'nodeSelection':
+ case 'customNode':
+ this.props.setLoginRoute('nodeOptions');
+ break;
+ default:
+ break;
+ }
+ }
+
+ /**
+ * Choose appropriate action on back press
+ *
+ * @method handleBackPress
+ */
+ handleBackPress = () => {
+ const { currentSetting, currentRoute, loginRoute } = this.props;
+ switch (currentRoute) {
+ case 'home':
+ this.withBackPressNavigateSettings(currentSetting);
+ break;
+ case 'languageSetup':
+ case 'onboardingComplete':
+ case 'login':
+ if (loginRoute !== 'login') {
+ this.withBackPressNavigateNodeOptions(loginRoute);
+ break;
+ }
+ this.withBackPressCloseApp();
+ break;
+ default:
+ this.withBackPressPopRoute();
+ break;
+ }
return true;
};
@@ -111,14 +186,5 @@ export default () => (C) => {
}
}
- WithBackPress.propTypes = {
- /** @ignore */
- setSetting: PropTypes.func.isRequired,
- /** Current setting */
- currentSetting: PropTypes.string.isRequired,
- /** @ignore */
- t: PropTypes.func.isRequired,
- };
-
- return connect(mapStateToProps, mapDispatchToProps)(WithBackPress);
-};
+ return connect(mapStateToProps, mapDispatchToProps)(EnhancedComponent);
+}
diff --git a/src/mobile/src/ui/components/BackPressCloseApp.js b/src/mobile/src/ui/components/BackPressCloseApp.js
deleted file mode 100644
index 7166b5b72f..0000000000
--- a/src/mobile/src/ui/components/BackPressCloseApp.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import React, { Component } from 'react';
-import { ToastAndroid, BackHandler } from 'react-native';
-import { Navigation } from 'react-native-navigation';
-import RNExitApp from 'react-native-exit-app';
-import { withNamespaces } from 'react-i18next';
-import PropTypes from 'prop-types';
-import { isAndroid } from 'libs/device';
-
-export default () => (C) => {
- class WithBackPressCloseApp extends Component {
- constructor(props) {
- super(props);
- if (isAndroid) {
- Navigation.events().bindComponent(this);
- }
- }
-
- /**
- * Remove back handler
- *
- * @method componentDidDisappear
- */
- componentDidDisappear() {
- if (this.backHandler) {
- this.backHandler.remove();
- }
- }
-
- /**
- * Add back handler
- *
- * @method componentDidAppear
- */
- componentDidAppear() {
- this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
- }
-
- /**
- * On back press, display alert. On second back press, close app.
- *
- * @method handleBackPress
- */
- handleBackPress = () => {
- const { t } = this.props;
- if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
- RNExitApp.exitApp();
- }
-
- this.lastBackPressed = Date.now();
- ToastAndroid.show(t('global:pressBackAgain'), ToastAndroid.SHORT);
- return true;
- };
-
- render() {
- return ;
- }
- }
-
- WithBackPressCloseApp.propTypes = {
- /** @ignore */
- t: PropTypes.func.isRequired,
- };
-
- return withNamespaces(['global'])(WithBackPressCloseApp);
-};
diff --git a/src/mobile/src/ui/components/BackPressGoToHome.js b/src/mobile/src/ui/components/BackPressGoToHome.js
deleted file mode 100644
index 3283522599..0000000000
--- a/src/mobile/src/ui/components/BackPressGoToHome.js
+++ /dev/null
@@ -1,90 +0,0 @@
-import React, { Component } from 'react';
-import { BackHandler } from 'react-native';
-import { Navigation } from 'react-native-navigation';
-import { connect } from 'react-redux';
-import PropTypes from 'prop-types';
-import { isAndroid } from 'libs/device';
-
-const mapStateToProps = (state) => ({
- theme: state.settings.theme,
-});
-
-export default () => (C) => {
- class WithBackPressGoToHome extends Component {
- constructor(props) {
- super(props);
-
- if (isAndroid) {
- Navigation.events().bindComponent(this);
- }
- }
-
- /**
- * Remove back handler
- *
- * @method componentDidDisappear
- */
- componentDidDisappear() {
- if (this.backHandler) {
- this.backHandler.remove();
- }
- }
-
- /**
- * Add back handler
- *
- * @method componentDidAppear
- */
- componentDidAppear() {
- this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
- }
-
- /**
- * On backpress, navigate to home.
- *
- * @method handleBackPress
- */
- handleBackPress = () => {
- const { theme: { bar, body } } = this.props;
-
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'home',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: bar.alt,
- },
- },
- },
- });
-
- return true;
- };
-
- render() {
- return ;
- }
- }
-
- WithBackPressGoToHome.propTypes = {
- /** @ignore */
- theme: PropTypes.object.isRequired,
- };
-
- return connect(mapStateToProps, null)(WithBackPressGoToHome);
-};
diff --git a/src/mobile/src/ui/components/BiometricInfoModal.js b/src/mobile/src/ui/components/BiometricInfoModal.js
index 6595c96f13..f4cfb01ea7 100644
--- a/src/mobile/src/ui/components/BiometricInfoModal.js
+++ b/src/mobile/src/ui/components/BiometricInfoModal.js
@@ -1,34 +1,30 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
+import { Text, StyleSheet } from 'react-native';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import InfoBox from './InfoBox';
+import { Icon } from 'ui/theme/icons';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
- infoText: {
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
+ questionText: {
backgroundColor: 'transparent',
- textAlign: 'left',
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize6,
+ width: width / 1.3,
+ textAlign: 'center',
},
- infoTextBold: {
- fontFamily: 'SourceSansPro-Bold',
- fontSize: Styling.fontSize3,
+ infoText: {
backgroundColor: 'transparent',
- },
- okButton: {
- borderWidth: 1.2,
- borderRadius: Styling.borderRadius,
- width: width / 2.7,
- height: height / 14,
- alignItems: 'center',
- justifyContent: 'space-around',
- },
- okText: {
- fontFamily: 'SourceSansPro-Regular',
+ fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
+ width: width / 1.2,
+ textAlign: 'center',
+ },
+ icon: {
+ opacity: 0.6,
+ paddingVertical: height / 20,
backgroundColor: 'transparent',
},
});
@@ -48,34 +44,18 @@ export default class BiometricInfoModal extends PureComponent {
}
render() {
- const { theme: { body, primary }, t } = this.props;
-
+ const { theme: { body }, t } = this.props;
return (
-
-
-
- {t('login:whyBiometricDisabled')}
-
-
- {t('login:whyBiometricDisabledExplanation')}
-
-
- this.props.hideModal()}>
-
-
- {t('global:okay')}
-
-
-
-
-
- }
- />
-
+ this.props.hideModal()} buttonText={t('okay')}>
+ {t('login:whyBiometricDisabled')}
+
+
+ {t('login:whyBiometricDisabledExplanationPart1')}
+
+
+ {t('login:whyBiometricDisabledExplanationPart2')}
+
+
);
}
}
diff --git a/src/mobile/src/ui/components/Button.js b/src/mobile/src/ui/components/Button.js
index 148c338219..87e31b2202 100644
--- a/src/mobile/src/ui/components/Button.js
+++ b/src/mobile/src/ui/components/Button.js
@@ -1,9 +1,8 @@
import React, { PureComponent } from 'react';
-import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
+import { View, Text, StyleSheet, TouchableOpacity, ActivityIndicator, Animated, Easing } from 'react-native';
import PropTypes from 'prop-types';
import { width, height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
-import { isIPhoneX } from 'libs/device';
const styles = StyleSheet.create({
container: {
@@ -18,7 +17,7 @@ const styles = StyleSheet.create({
justifyContent: 'center',
alignItems: 'center',
width,
- height: isIPhoneX ? height / 10 : height / 11,
+ height: height / 11,
},
});
@@ -32,24 +31,46 @@ export default class Button extends PureComponent {
style: PropTypes.object,
/** Id for automated screenshots */
testID: PropTypes.string,
+ /** Determines whether to display ActivityIndicator */
+ isLoading: PropTypes.bool,
+ /** Determines whether to disable button */
+ disable: PropTypes.bool,
};
static defaultProps = {
style: {},
testID: '',
+ disable: false,
};
+ constructor(props) {
+ super(props);
+ this.opacity = new Animated.Value(props.disable ? 0.4 : 1);
+ }
+
+ componentWillReceiveProps(newProps) {
+ if (this.props.disable && !newProps.disable) {
+ Animated.timing(this.opacity, {
+ toValue: 1,
+ duration: 900,
+ easing: Easing.ease,
+ }).start();
+ }
+ }
+
render() {
- const { style, children, testID } = this.props;
+ const { style, children, testID, isLoading } = this.props;
return (
-
+
this.props.onPress()} testID={testID}>
- {children}
+ {(isLoading && ) || (
+ {children}
+ )}
-
+
);
}
}
diff --git a/src/mobile/src/ui/components/ChecksumModal.js b/src/mobile/src/ui/components/ChecksumModal.js
index 7cf3140de3..b2b8b0d955 100644
--- a/src/mobile/src/ui/components/ChecksumModal.js
+++ b/src/mobile/src/ui/components/ChecksumModal.js
@@ -1,36 +1,30 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
+import { Text, StyleSheet } from 'react-native';
import { Styling } from 'ui/theme/general';
import { withNamespaces } from 'react-i18next';
-import { width, height } from 'libs/dimensions';
-import InfoBox from './InfoBox';
+import { height, width } from 'libs/dimensions';
+import { Icon } from 'ui/theme/icons';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
- okButton: {
- borderWidth: 1.2,
- borderRadius: Styling.borderRadius,
- width: width / 2.7,
- height: height / 14,
- alignItems: 'center',
- justifyContent: 'space-around',
- },
- okText: {
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
+ questionText: {
+ color: 'white',
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize6,
+ textAlign: 'center',
backgroundColor: 'transparent',
},
- modalText: {
- color: 'white',
+ infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
+ width: width - width / 8,
},
- modalTextBold: {
- fontFamily: 'SourceSansPro-Bold',
- fontSize: Styling.fontSize3,
- textAlign: 'left',
+ icon: {
+ opacity: 0.6,
+ paddingVertical: height / 20,
backgroundColor: 'transparent',
},
});
@@ -46,34 +40,17 @@ export class ChecksumModal extends PureComponent {
};
render() {
- const { t, theme: { body, primary } } = this.props;
+ const { t, theme: { body } } = this.props;
return (
-
-
-
- {t('saveYourSeed:whatIsChecksum')}
-
-
- {t('saveYourSeed:checksumExplanation')}
-
-
- this.props.closeModal()}>
-
-
- {t('global:okay')}
-
-
-
-
-
- }
- />
-
+ this.props.closeModal()} buttonText={t('okay')}>
+ {t('saveYourSeed:whatIsAChecksum')}
+
+
+ {t('saveYourSeed:everySeedHasAChecksum')}
+
+ {t('saveYourSeed:checksumExplanation')}
+
);
}
}
diff --git a/src/mobile/src/ui/components/CtaButton.js b/src/mobile/src/ui/components/CtaButton.js
index fd7698ee56..12bee1f968 100644
--- a/src/mobile/src/ui/components/CtaButton.js
+++ b/src/mobile/src/ui/components/CtaButton.js
@@ -43,7 +43,7 @@ class CtaButton extends PureComponent {
static defaultProps = {
fontSize: Styling.fontSize3,
ctaWidth: Styling.contentWidth,
- ctaHeight: height / 14,
+ ctaHeight: height / 11,
testID: '',
};
diff --git a/src/mobile/src/ui/components/CustomTextInput.js b/src/mobile/src/ui/components/CustomTextInput.js
index 76dd0283cc..5d53338a1a 100644
--- a/src/mobile/src/ui/components/CustomTextInput.js
+++ b/src/mobile/src/ui/components/CustomTextInput.js
@@ -5,6 +5,7 @@ import PropTypes from 'prop-types';
import { width, height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
import { Icon } from 'ui/theme/icons';
+import { isAndroid } from 'libs/device';
const styles = StyleSheet.create({
fieldContainer: {
@@ -28,7 +29,7 @@ const styles = StyleSheet.create({
innerContainer: {
flexDirection: 'row',
alignItems: 'center',
- borderRadius: Styling.borderRadiusSmall,
+ borderRadius: Styling.borderRadius,
height: height / 14,
borderWidth: 1,
},
@@ -67,7 +68,7 @@ const styles = StyleSheet.create({
},
passwordStrengthIndicator: {
width: width / 15,
- height: height / 120,
+ height: height / 160,
marginLeft: width / 150,
},
labelContainer: {
@@ -87,12 +88,16 @@ const styles = StyleSheet.create({
borderBottomRightRadius: width / 60,
position: 'absolute',
right: width / 100,
- bottom: -width / 19,
+ bottom: isAndroid ? -width / 19 : -width / 20,
},
checksumText: {
fontFamily: 'SourceSansPro-Regular',
fontSize: Styling.fontsize1,
},
+ seedInput: {
+ height: height / 7.4,
+ justifyContent: 'flex-start',
+ },
});
class CustomTextInput extends Component {
@@ -142,13 +147,15 @@ class CustomTextInput extends Component {
passwordStrength: PropTypes.number,
/** Entered seed */
seed: PropTypes.string,
+ /** Determines whether text input is for seeds */
+ isSeedInput: PropTypes.bool,
};
static defaultProps = {
onFocus: () => {},
onBlur: () => {},
onFingerprintPress: () => {},
- containerStyle: {},
+ containerStyle: { width: Styling.contentWidth },
widget: 'empty',
onDenominationPress: () => {},
onQRPress: () => {},
@@ -335,12 +342,13 @@ class CustomTextInput extends Component {
isPasswordValid,
passwordStrength,
seed,
+ isSeedInput,
...restProps
} = this.props;
const { isFocused } = this.state;
return (
-
+
{label && (
{label.toUpperCase()}
diff --git a/src/mobile/src/ui/components/DeleteAccountModal.js b/src/mobile/src/ui/components/DeleteAccountModal.js
deleted file mode 100644
index d8305ce2a0..0000000000
--- a/src/mobile/src/ui/components/DeleteAccountModal.js
+++ /dev/null
@@ -1,81 +0,0 @@
-import React, { PureComponent } from 'react';
-import PropTypes from 'prop-types';
-import { View, Text, StyleSheet } from 'react-native';
-import { withNamespaces } from 'react-i18next';
-import { Styling } from 'ui/theme/general';
-import { width, height } from 'libs/dimensions';
-import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import ModalButtons from './ModalButtons';
-
-const styles = StyleSheet.create({
- modalContainer: {
- flex: 1,
- alignItems: 'center',
- width,
- height,
- justifyContent: 'center',
- },
- modalContent: {
- justifyContent: 'space-between',
- alignItems: 'center',
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- paddingVertical: height / 18,
- width: width / 1.15,
- },
- modalInfoText: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
- paddingBottom: height / 16,
- },
-});
-
-export class DeleteAccountModal extends PureComponent {
- static propTypes = {
- /** @ignore */
- theme: PropTypes.object.isRequired,
- /** @ignore */
- selectedAccountName: PropTypes.string.isRequired,
- /** @ignore */
- t: PropTypes.func.isRequired,
- /** Triggered when user presses no */
- onNoPress: PropTypes.func.isRequired,
- /** Triggered when user presses yes */
- onYesPress: PropTypes.func.isRequired,
- };
-
- componentDidMount() {
- leaveNavigationBreadcrumb('LogoutConfirmationModal');
- }
-
- render() {
- const { t, theme: { body }, selectedAccountName } = this.props;
- const textColor = { color: body.color };
-
- return (
-
-
-
- {/*FIXME: localization*/}
- {/*{t('areYouSure')}*/}
- Are you sure you want to delete
-
-
- {selectedAccountName} ?
-
- this.props.onNoPress()}
- onRightButtonPress={() => this.props.onYesPress()}
- leftText={t('global:no')}
- rightText={t('global:yes')}
- buttonWidth={{ width: width / 3.2 }}
- containerWidth={{ width: width / 1.4 }}
- />
-
-
- );
- }
-}
-
-export default withNamespaces(['logoutConfirmationModal', 'global'])(DeleteAccountModal);
diff --git a/src/mobile/src/ui/components/DualFooterButtons.js b/src/mobile/src/ui/components/DualFooterButtons.js
index 4d0242c20c..5a4061e4de 100644
--- a/src/mobile/src/ui/components/DualFooterButtons.js
+++ b/src/mobile/src/ui/components/DualFooterButtons.js
@@ -1,5 +1,7 @@
import merge from 'lodash/merge';
+import last from 'lodash/last';
import PropTypes from 'prop-types';
+import timer from 'react-native-timer';
import React, { PureComponent } from 'react';
import { connect } from 'react-redux';
import { StyleSheet, View } from 'react-native';
@@ -37,30 +39,71 @@ class DualFooterButtons extends PureComponent {
leftButtonStyle: PropTypes.object,
/** Right button optional styles to override the default ones */
rightButtonStyle: PropTypes.object,
+ /** Determines if left button should display ActivityIndicator */
+ isLeftButtonLoading: PropTypes.bool,
+ /** Determines if right button should display ActivityIndicator */
+ isRightButtonLoading: PropTypes.bool,
+ /** Timeframe to debounce button presses */
+ debounceTime: PropTypes.number,
+ /** Current screen is navstack*/
+ currentScreen: PropTypes.string,
+ /** Determines whether to disable left button */
+ disableLeftButton: PropTypes.bool,
+ /** Determines whether to disable right button */
+ disableRightButton: PropTypes.bool,
};
static defaultProps = {
leftButtonStyle: {},
rightButtonStyle: {},
+ debounceTime: 300,
+ disableLeftButton: false,
+ disableRightButton: false,
};
+ componentWillUnmount() {
+ this.timer = null;
+ }
+
+ /**
+ * Prevents multiple button presses in a given time period
+ * @method debounceHandler
+ */
+ debounceHandler(func) {
+ if (this.timer) {
+ return;
+ }
+ func();
+ this.timer = timer.setTimeout(
+ 'debounce' + this.props.currentScreen,
+ () => {
+ this.timer = null;
+ },
+ this.props.debounceTime,
+ );
+ }
+
render() {
const {
leftButtonText,
rightButtonText,
- onLeftButtonPress,
- onRightButtonPress,
leftButtonTestID,
rightButtonTestID,
leftButtonStyle,
rightButtonStyle,
theme,
+ isLeftButtonLoading,
+ isRightButtonLoading,
+ onLeftButtonPress,
+ onRightButtonPress,
+ disableLeftButton,
+ disableRightButton,
} = this.props;
- const borderRadius = isIPhoneX ? parseInt(width / 20) : 0;
+ const borderRadius = isIPhoneX ? Styling.borderRadiusExtraLarge : 0;
return (
@@ -108,6 +164,7 @@ class DualFooterButtons extends PureComponent {
const mapStateToProps = (state) => ({
theme: state.settings.theme,
+ currentScreen: last(state.wallet.navStack),
});
export default connect(mapStateToProps)(DualFooterButtons);
diff --git a/src/mobile/src/ui/components/DynamicStatusBar.js b/src/mobile/src/ui/components/DynamicStatusBar.js
index 2e975b6840..86569bd579 100644
--- a/src/mobile/src/ui/components/DynamicStatusBar.js
+++ b/src/mobile/src/ui/components/DynamicStatusBar.js
@@ -1,8 +1,8 @@
+import last from 'lodash/last';
import React, { Component } from 'react';
import { StatusBar } from 'react-native';
import PropTypes from 'prop-types';
import tinycolor from 'tinycolor2';
-import { Navigation } from 'react-native-navigation';
import { isAndroid } from 'libs/device';
import { rgbToHex } from 'shared-modules/libs/utils';
import timer from 'react-native-timer';
@@ -18,24 +18,18 @@ class DynamicStatusBar extends Component {
/** @ignore */
isModalActive: PropTypes.bool.isRequired,
/** @ignore */
- currentRoute: PropTypes.string.isRequired,
+ navStack: PropTypes.array,
};
- componentWillMount() {
- Navigation.events().registerComponentDidAppearListener(() => {
- this.resetStatusBar(this.props.currentRoute);
- });
- }
-
componentWillReceiveProps(newProps) {
- const { isModalActive, currentRoute } = this.props;
+ const { isModalActive, navStack } = this.props;
// Reset StatusBar on modal open/close. Prevents residual status bar colour change when an alert is open during modal activity toggle
if (isModalActive !== newProps.isModalActive) {
- this.resetStatusBar(currentRoute);
- timer.setTimeout('resetStatusBarOnModalActivity', () => this.resetStatusBar(currentRoute), 400);
+ this.resetStatusBar(last(navStack));
+ timer.setTimeout('resetStatusBarOnModalActivity', () => this.resetStatusBar(last(navStack)), 400);
}
- if (currentRoute !== newProps.currentRoute) {
- timer.setTimeout('resetStatusBarOnRouteChange', () => this.resetStatusBar(newProps.currentRoute), 400);
+ if (last(navStack) !== last(newProps.navStack)) {
+ timer.setTimeout('resetStatusBarOnRouteChange', () => this.resetStatusBar(last(newProps.navStack)), 400);
}
}
@@ -54,7 +48,7 @@ class DynamicStatusBar extends Component {
*/
getStatusBarColor(currentRoute) {
const { theme, inactive } = this.props;
- const backgroundColor = getBackgroundColor(currentRoute, theme, false, inactive);
+ const backgroundColor = getBackgroundColor(currentRoute, theme, inactive);
if (backgroundColor) {
return rgbToHex(backgroundColor);
}
@@ -89,13 +83,12 @@ class DynamicStatusBar extends Component {
}
render() {
- const { currentRoute } = this.props;
- const statusBarStyle = this.getStatusBarStyle(this.getStatusBarColor(currentRoute));
+ const { navStack } = this.props;
+ const statusBarStyle = this.getStatusBarStyle(this.getStatusBarColor(last(navStack)));
return (
);
@@ -106,7 +99,7 @@ const mapStateToProps = (state) => ({
inactive: state.ui.inactive,
theme: state.settings.theme,
isModalActive: state.ui.isModalActive,
- currentRoute: state.ui.currentRoute,
+ navStack: state.wallet.navStack,
});
export default connect(mapStateToProps)(DynamicStatusBar);
diff --git a/src/mobile/src/ui/components/EnterPassword.js b/src/mobile/src/ui/components/EnterPassword.js
index b90a1e3f66..d7bfac671b 100644
--- a/src/mobile/src/ui/components/EnterPassword.js
+++ b/src/mobile/src/ui/components/EnterPassword.js
@@ -15,15 +15,14 @@ import CustomTextInput from './CustomTextInput';
const styles = StyleSheet.create({
topContainer: {
- flex: 1.2,
+ flex: 2.4,
alignItems: 'center',
justifyContent: 'flex-start',
paddingTop: height / 16,
},
midContainer: {
- flex: 4.8,
+ flex: 3.2,
alignItems: 'center',
- paddingTop: height / 5,
},
bottomContainer: {
flex: 0.7,
diff --git a/src/mobile/src/ui/components/EnterPasswordOnLogin.js b/src/mobile/src/ui/components/EnterPasswordOnLogin.js
index 539fa6b9fb..bfee5166c9 100644
--- a/src/mobile/src/ui/components/EnterPasswordOnLogin.js
+++ b/src/mobile/src/ui/components/EnterPasswordOnLogin.js
@@ -1,12 +1,11 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
-import RNExitApp from 'react-native-exit-app';
-import { StyleSheet, View, TouchableWithoutFeedback, Keyboard, BackHandler } from 'react-native';
+import { StyleSheet, View, TouchableWithoutFeedback, Keyboard } from 'react-native';
import { connect } from 'react-redux';
import { toggleModalActivity } from 'shared-modules/actions/ui';
-import { width, height } from 'libs/dimensions';
-import { Icon } from 'ui/theme/icons';
+import { width } from 'libs/dimensions';
+import Header from 'ui/components/Header';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
import { Styling } from 'ui/theme/general';
import CustomTextInput from './CustomTextInput';
@@ -14,13 +13,12 @@ import DualFooterButtons from './DualFooterButtons';
const styles = StyleSheet.create({
topContainer: {
- flex: 2.4,
+ flex: 2.6,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 3.6,
+ flex: 3,
width,
alignItems: 'center',
},
@@ -60,10 +58,6 @@ export class EnterPasswordOnLogin extends Component {
componentDidMount() {
leaveNavigationBreadcrumb('EnterPasswordOnLogin');
- BackHandler.addEventListener('loginBackPress', () => {
- RNExitApp.exitApp();
- return true;
- });
}
handleChangeText = (password) => this.props.setLoginPasswordField(password);
@@ -98,7 +92,7 @@ export class EnterPasswordOnLogin extends Component {
-
+
- {children}
+
+ {children && {children}}
);
}
diff --git a/src/mobile/src/ui/components/HistoryModalContent.js b/src/mobile/src/ui/components/HistoryModalContent.js
deleted file mode 100644
index 8a44ef351b..0000000000
--- a/src/mobile/src/ui/components/HistoryModalContent.js
+++ /dev/null
@@ -1,396 +0,0 @@
-import assign from 'lodash/assign';
-import React, { PureComponent } from 'react';
-import PropTypes from 'prop-types';
-import {
- Clipboard,
- TouchableOpacity,
- View,
- Text,
- StyleSheet,
- FlatList,
- ScrollView,
- TouchableWithoutFeedback,
- ActivityIndicator,
-} from 'react-native';
-import { formatModalTime, convertUnixTimeToJSDate } from 'shared-modules/libs/date';
-import { Styling } from 'ui/theme/general';
-import { width, height } from 'libs/dimensions';
-import { isAndroid, locale, timezone } from 'libs/device';
-import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import CtaButton from './CtaButton';
-
-const styles = StyleSheet.create({
- container: {
- width,
- height,
- alignItems: 'center',
- },
- wrapper: {
- flex: 1,
- justifyContent: 'center',
- alignItems: 'center',
- width,
- height,
- },
- content: {
- width: Styling.contentWidth,
- padding: width / 25,
- justifyContent: 'center',
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- },
- statusWrapper: {
- flexDirection: 'row',
- justifyContent: 'space-between',
- },
- statusText: {
- justifyContent: 'space-between',
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-SemiBold',
- fontSize: Styling.fontSize3,
- },
- confirmationWrapper: {
- flexDirection: 'row',
- alignItems: 'center',
- },
- bundleWrapper: {
- flexDirection: 'row',
- alignItems: 'center',
- },
- bundleInnerWrapper: {
- flex: 7,
- },
- bundleHash: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceCodePro-Medium',
- fontSize: Styling.fontSize2,
- marginTop: 2,
- },
- bundleSeparator: {
- flex: 1,
- },
- confirmation: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize2,
- paddingRight: width / 25,
- },
- timestamp: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-SemiBold',
- fontSize: Styling.fontSize3,
- },
- heading: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Bold',
- fontSize: Styling.fontSize2,
- paddingTop: height / 50,
- },
- text: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceCodePro-Medium',
- fontSize: Styling.fontSize2,
- },
- addressRowContainer: {
- flexDirection: 'row',
- alignItems: 'center',
- paddingVertical: 2,
- },
- addressRowTopWrapper: {
- flex: 4.7,
- },
- addressRowBottomWrapper: {
- flex: 1.3,
- },
- addressRowValue: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Bold',
- fontSize: Styling.fontSize3,
- textAlign: 'right',
- },
- buttonContainer: {
- flex: 1,
- alignItems: 'center',
- justifyContent: 'flex-end',
- marginTop: height / 40,
- height: height / 14,
- },
- buttonWrapper: {
- flex: 1,
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
-
-export default class HistoryModalContent extends PureComponent {
- static propTypes = {
- /** Container element press event callback function */
- hideModal: PropTypes.func.isRequired,
- /** @ignore */
- t: PropTypes.func.isRequired,
- /** Promotes bundle
- * @param {string} bundle - bundle hash
- */
- promote: PropTypes.func.isRequired,
- /** Transaction confirmation state */
- status: PropTypes.string.isRequired,
- /** Transaction boolean confirmation state */
- persistence: PropTypes.bool.isRequired,
- /** Currently selected mode */
- mode: PropTypes.oneOf(['Advanced', 'Standard']).isRequired,
- /** Transaction value */
- value: PropTypes.number.isRequired,
- /** Transaction value without rounding */
- fullValue: PropTypes.number.isRequired,
- /** Transaction unit */
- unit: PropTypes.string.isRequired,
- /** Transaction time */
- time: PropTypes.number.isRequired,
- /** Transaction message */
- message: PropTypes.string,
- /** Transaction bundle hash */
- bundle: PropTypes.string.isRequired,
- /** Determines whether the modal buttons should disable onPress event */
- disableWhen: PropTypes.bool.isRequired,
- /** Transaction addresses */
- relevantAddresses: PropTypes.arrayOf(
- PropTypes.shape({
- address: PropTypes.string.isRequired,
- value: PropTypes.number.isRequired,
- unit: PropTypes.string.isRequired,
- }),
- ).isRequired,
- /** @ignore */
- generateAlert: PropTypes.func.isRequired,
- /** Content styles */
- style: PropTypes.shape({
- titleColor: PropTypes.string.isRequired,
- defaultTextColor: PropTypes.shape({ color: PropTypes.string.isRequired }).isRequired,
- backgroundColor: PropTypes.string.isRequired,
- borderColor: PropTypes.shape({ borderColor: PropTypes.string.isRequired }).isRequired,
- }).isRequired,
- /** Determines whether bundle is currently being promoted */
- bundleIsBeingPromoted: PropTypes.bool.isRequired,
- /* eslint-disable react/no-unused-prop-types */
- /** Checks if the bundle hash belongs to a failed transaction
- * @param {string} bundleHash
- */
- isFailedTransaction: PropTypes.func.isRequired,
- /** @ignore */
- retryFailedTransaction: PropTypes.func.isRequired,
- /** @ignore */
- isRetryingFailedTransaction: PropTypes.bool.isRequired,
- };
-
- static defaultProps = {
- message: 'Empty',
- };
-
- constructor(props) {
- super(props);
- this.state = {
- scrollable: false,
- };
- }
-
- componentDidMount() {
- leaveNavigationBreadcrumb('HistoryModalContent');
- }
-
- setScrollable(y, retryButtonIsDisplayed) {
- if (retryButtonIsDisplayed ? y >= height / 2 : y >= height / 2.3) {
- return this.setState({ scrollable: true });
- }
- this.setState({ scrollable: false });
- }
-
- copy(item, type) {
- const { t } = this.props;
-
- const types = {
- bundle: [t('bundleHashCopied'), t('bundleHashCopiedExplanation')],
- address: [t('addressCopied'), t('addressCopiedExplanation')],
- message: [t('messageCopied'), t('messageCopiedExplanation')],
- };
-
- Clipboard.setString(item);
-
- if (types[type]) {
- this.props.generateAlert('success', ...types[type]);
- }
- }
-
- renderAddressRow(address) {
- const { style } = this.props;
-
- return (
-
- this.copy(address.address, 'address')}
- style={styles.addressRowTopWrapper}
- >
-
- {address.address}
-
-
-
-
- {address.value} {address.unit}
-
-
-
- );
- }
-
- renderAddresses() {
- const { relevantAddresses } = this.props;
- return (
- index}
- renderItem={({ item }) => this.renderAddressRow(item)}
- ItemSeparatorComponent={() => }
- scrollEnabled={false}
- />
- );
- }
-
- renderButton(buttonProps) {
- const { disableWhen, style, bundle, t, promote } = this.props;
- const opacity = { opacity: disableWhen ? (isAndroid ? 0.3 : 0.2) : 1 };
-
- const defaultProps = {
- ctaColor: style.primaryColor,
- secondaryCtaColor: style.primaryBody,
- ctaWidth: width / 2.75,
- ctaHeight: height / 15,
- fontSize: Styling.fontSize3,
- text: disableWhen ? t('history:promotingAnotherBundle') : t('retry'),
- onPress: () => {
- if (!disableWhen) {
- promote(bundle);
- }
- },
- };
-
- const props = assign({}, defaultProps, buttonProps);
-
- return (
-
-
-
- );
- }
-
- render() {
- const {
- hideModal,
- fullValue,
- unit,
- status,
- persistence,
- time,
- bundle,
- message,
- t,
- style,
- mode,
- disableWhen,
- retryFailedTransaction,
- isRetryingFailedTransaction,
- bundleIsBeingPromoted,
- isFailedTransaction,
- } = this.props;
- const { scrollable } = this.state;
- const isFailed = isFailedTransaction(bundle);
- const retryButtonIsDisplayed = !persistence || isFailed;
-
- return (
- hideModal()}>
-
-
-
-
-
-
-
- {status} {fullValue} {unit}
-
-
-
- {formatModalTime(locale, timezone, convertUnixTimeToJSDate(time))}
-
-
-
- {t('bundleHash')}:
-
- this.copy(bundle, 'bundle')}
- style={styles.bundleInnerWrapper}
- >
-
- {bundle}
-
-
-
-
- {mode === 'Advanced' && (
-
-
- {t('addresses')}:
-
-
- this.setScrollable(y, retryButtonIsDisplayed)
- }
- >
- {this.renderAddresses()}
-
-
- )}
- {t('send:message')}:
- this.copy(message, 'message')}>
- {message}
-
- {(!persistence &&
- !isFailed && (
-
- {(!bundleIsBeingPromoted &&
- this.renderButton({ ctaWidth: width / 1.3 })) || (
-
-
-
- )}
-
- )) ||
- (isFailed && (
-
- {(!isRetryingFailedTransaction &&
- this.renderButton({
- ctaWidth: width / 1.3,
- onPress: () => {
- if (!disableWhen) {
- retryFailedTransaction(bundle);
- }
- },
- })) || (
-
-
-
- )}
-
- ))}
-
-
-
-
-
-
- );
- }
-}
diff --git a/src/mobile/src/ui/components/InfoBox.js b/src/mobile/src/ui/components/InfoBox.js
index 77384ef9e1..1771320b59 100644
--- a/src/mobile/src/ui/components/InfoBox.js
+++ b/src/mobile/src/ui/components/InfoBox.js
@@ -1,58 +1,30 @@
import React, { PureComponent } from 'react';
import { View, StyleSheet } from 'react-native';
+import { connect } from 'react-redux';
import PropTypes from 'prop-types';
-import tinycolor from 'tinycolor2';
import { width, height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
-import { Icon } from 'ui/theme/icons';
const styles = StyleSheet.create({
fieldContainer: {
justifyContent: 'center',
alignItems: 'center',
+ width,
},
innerContainer: {
- flexDirection: 'row',
- borderBottomLeftRadius: Styling.borderRadiusSmall,
- borderBottomRightRadius: Styling.borderRadiusSmall,
- alignItems: 'center',
- justifyContent: 'space-between',
- paddingTop: height / 23,
- paddingBottom: height / 30,
- paddingHorizontal: width / 17,
- },
- icon: {
- position: 'absolute',
- top: height / 24 - height / 48,
- left: width / 17,
- },
- iconContainer: {
- width: height / 24,
- height: height / 48,
- borderBottomLeftRadius: height / 24,
- borderBottomRightRadius: height / 24,
- justifyContent: 'flex-end',
- position: 'absolute',
- top: height / 24,
- left: width / 17,
- },
- banner: {
- borderTopLeftRadius: 6,
- borderTopRightRadius: 6,
- height: height / 24,
- alignItems: 'center',
+ width: Styling.contentWidth,
+ paddingVertical: height / 22,
},
});
class InfoBox extends PureComponent {
static propTypes = {
- /** Content base colors */
- body: PropTypes.object.isRequired,
/** Infobox children content */
- text: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,
- /** Infobox width */
- width: PropTypes.number,
+ children: PropTypes.oneOfType([PropTypes.node, PropTypes.number, PropTypes.object]),
+ /** Container style object */
containerStyle: PropTypes.object,
+ /** @ignore */
+ theme: PropTypes.object,
};
static defaultProps = {
@@ -60,32 +32,18 @@ class InfoBox extends PureComponent {
};
render() {
- const { body, text, width, containerStyle } = this.props;
- const isBgLight = tinycolor(body.bg).isLight();
- const fieldContainerStyling = isBgLight ? null : { backgroundColor: 'rgba(255, 255, 255, 0.05)' };
- const innerContainerStyling = isBgLight
- ? { borderColor: body.color, borderWidth: 1 }
- : { backgroundColor: 'rgba(255, 255, 255, 0.05)' };
- const bannerStyling = isBgLight
- ? {
- borderColor: body.color,
- borderTopWidth: 1,
- borderLeftWidth: 1,
- borderRightWidth: 1,
- }
- : { backgroundColor: 'rgba(255, 255, 255, 0.15)' };
- const iconContainerStyling = isBgLight ? { borderWidth: 1 } : { backgroundColor: 'rgba(255, 255, 255, 0.11)' };
- const iconStyling = isBgLight ? { backgroundColor: body.bg } : null;
+ const { children, containerStyle, theme: { dark } } = this.props;
return (
-
-
- {text}
-
-
+
+ {children}
);
}
}
-export default InfoBox;
+const mapStateToProps = (state) => ({
+ theme: state.settings.theme,
+});
+
+export default connect(mapStateToProps)(InfoBox);
diff --git a/src/mobile/src/ui/components/KeyboardMonitor.js b/src/mobile/src/ui/components/KeyboardMonitor.js
new file mode 100644
index 0000000000..06e428d1b7
--- /dev/null
+++ b/src/mobile/src/ui/components/KeyboardMonitor.js
@@ -0,0 +1,97 @@
+// Updates global state when keyboard opens/closes. Applies keyboard avoidance globally
+
+import React, { Component } from 'react';
+import { Keyboard } from 'react-native';
+import PropTypes from 'prop-types';
+import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
+import { connect } from 'react-redux';
+import { setKeyboardActivity } from 'shared-modules/actions/ui';
+import { isAndroid } from 'libs/device';
+
+const mapDispatchToProps = {
+ setKeyboardActivity,
+};
+
+const mapStateToProps = (state) => ({
+ isKeyboardActive: state.ui.isKeyboardActive,
+ inactive: state.ui.inactive,
+ minimised: state.ui.minimised,
+ isModalActive: state.ui.isModalActive,
+});
+
+/**
+ * Handles back button events on Android by wrapping a component
+ * @param {Component} C Component to be wrapped
+ * @return {Component} A wrapped component
+ */
+export default function withKeyboardMonitor(C) {
+ class EnhancedComponent extends Component {
+ static propTypes = {
+ /** @ignore */
+ setKeyboardActivity: PropTypes.func.isRequired,
+ /** @ignore */
+ isKeyboardActive: PropTypes.bool.isRequired,
+ /** @ignore */
+ inactive: PropTypes.bool.isRequired,
+ /** @ignore */
+ minimised: PropTypes.bool.isRequired,
+ /** @ignore */
+ isModalActive: PropTypes.bool.isRequired,
+ };
+
+ componentWillMount() {
+ if (isAndroid) {
+ this.keyboardWillShowSub = Keyboard.addListener('keyboardDidShow', this.keyboardDidShow);
+ this.keyboardWillHideSub = Keyboard.addListener('keyboardDidHide', this.keyboardDidHide);
+ } else {
+ this.keyboardWillShowSub = Keyboard.addListener('keyboardWillShow', this.keyboardWillShow);
+ this.keyboardWillHideSub = Keyboard.addListener('keyboardWillHide', this.keyboardWillHide);
+ }
+ }
+
+ componentWillUnmount() {
+ this.keyboardWillShowSub.remove();
+ this.keyboardWillHideSub.remove();
+ }
+
+ keyboardWillShow = () => {
+ const { inactive, minimised } = this.props;
+ if (inactive || minimised) {
+ return;
+ }
+ this.props.setKeyboardActivity(true);
+ };
+
+ keyboardWillHide = () => {
+ this.props.setKeyboardActivity(false);
+ };
+
+ keyboardDidShow = () => {
+ const { inactive, minimised } = this.props;
+ if (inactive || minimised) {
+ return;
+ }
+ this.props.setKeyboardActivity(true);
+ };
+
+ keyboardDidHide = () => {
+ this.props.setKeyboardActivity(false);
+ };
+
+ render() {
+ return (
+
+
+
+ );
+ }
+ }
+
+ return connect(mapStateToProps, mapDispatchToProps)(EnhancedComponent);
+}
diff --git a/src/mobile/src/ui/components/LogoutConfirmationModal.js b/src/mobile/src/ui/components/LogoutConfirmationModal.js
index 7b526aba69..a6ea92e899 100644
--- a/src/mobile/src/ui/components/LogoutConfirmationModal.js
+++ b/src/mobile/src/ui/components/LogoutConfirmationModal.js
@@ -1,33 +1,30 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { View, Text, StyleSheet } from 'react-native';
+import { Text, StyleSheet } from 'react-native';
import { withNamespaces } from 'react-i18next';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import ModalButtons from './ModalButtons';
+import { Icon } from 'ui/theme/icons';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
- modalContainer: {
- flex: 1,
- alignItems: 'center',
- width,
- height,
- justifyContent: 'center',
- },
- modalContent: {
- justifyContent: 'space-between',
- alignItems: 'center',
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- paddingVertical: height / 18,
- width: Styling.contentWidth,
+ infoText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize6,
+ width: width / 1.8,
+ textAlign: 'center',
},
questionText: {
backgroundColor: 'transparent',
fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
- paddingBottom: height / 16,
+ fontSize: Styling.fontSize5,
+ },
+ icon: {
+ opacity: 0.6,
+ paddingVertical: height / 30,
+ backgroundColor: 'transparent',
},
});
@@ -39,12 +36,8 @@ export class LogoutConfirmationModal extends PureComponent {
hideModal: PropTypes.func.isRequired,
/** Log out from wallet */
logout: PropTypes.func.isRequired,
- /** Modal background color */
- backgroundColor: PropTypes.object.isRequired,
- /** Modal text color */
- textColor: PropTypes.object.isRequired,
- /** Modal border color */
- borderColor: PropTypes.object.isRequired,
+ /** @ignore */
+ theme: PropTypes.object.isRequired,
};
componentDidMount() {
@@ -52,22 +45,21 @@ export class LogoutConfirmationModal extends PureComponent {
}
render() {
- const { t, backgroundColor, textColor, borderColor } = this.props;
+ const { t, theme: { body } } = this.props;
return (
-
-
- {t('logoutConfirmation')}
- this.props.hideModal()}
- onRightButtonPress={() => this.props.logout()}
- leftText={t('global:no')}
- rightText={t('global:yes')}
- buttonWidth={{ width: width / 3.2 }}
- containerWidth={{ width: width / 1.4 }}
- />
-
-
+ this.props.hideModal()}
+ onRightButtonPress={() => this.props.logout()}
+ leftButtonText={t('no')}
+ rightButtonText={t('yes')}
+ >
+ {t('aboutToLogOut')}
+
+ {t('areYouSure')}
+
);
}
}
diff --git a/src/mobile/src/ui/components/ModalComponent.js b/src/mobile/src/ui/components/ModalComponent.js
index 46fdded063..a3b60d00e4 100644
--- a/src/mobile/src/ui/components/ModalComponent.js
+++ b/src/mobile/src/ui/components/ModalComponent.js
@@ -1,19 +1,18 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { View, StyleSheet } from 'react-native';
+import { View, StyleSheet, Easing, Keyboard } from 'react-native';
import Modal from 'react-native-modal';
import { connect } from 'react-redux';
import { toggleModalActivity } from 'shared-modules/actions/ui';
+import timer from 'react-native-timer';
import StatefulDropdownAlert from 'ui/components/StatefulDropdownAlert';
import RootDetection from 'ui/components/RootDetectionModal';
import TransferConfirmation from 'ui/components/TransferConfirmationModal';
-import UsedAddress from 'ui/components/UsedAddressModal';
import UnitInfo from 'ui/components/UnitInfoModal';
import Fingerprint from 'ui/components/FingerprintModal';
import SnapshotTransitionInfo from 'ui/components/SnapshotTransitionInfoModal';
import LogoutConfirmation from 'ui/components/LogoutConfirmationModal';
-import DeleteAccount from 'ui/components/DeleteAccountModal';
-import HistoryContent from 'ui/components/HistoryModalContent';
+import TransactionHistory from 'ui/components/TransactionHistoryModal';
import SeedInfo from 'ui/components/SeedInfoModal';
import PasswordValidation from 'ui/components/PasswordValidationModal';
import Checksum from 'ui/components/ChecksumModal';
@@ -26,8 +25,7 @@ import { height, width } from 'libs/dimensions';
const styles = StyleSheet.create({
modal: {
- height,
- width,
+ flex: 1,
justifyContent: 'center',
alignItems: 'center',
margin: 0,
@@ -37,12 +35,10 @@ const styles = StyleSheet.create({
const MODAL_CONTENT = {
snapshotTransitionInfo: SnapshotTransitionInfo,
logoutConfirmation: LogoutConfirmation,
- deleteAccount: DeleteAccount,
fingerprint: Fingerprint,
transferConfirmation: TransferConfirmation,
- usedAddress: UsedAddress,
unitInfo: UnitInfo,
- historyContent: HistoryContent,
+ transactionHistory: TransactionHistory,
passwordValidation: PasswordValidation,
qrScanner: QrScanner,
seedInfo: SeedInfo,
@@ -53,6 +49,36 @@ const MODAL_CONTENT = {
checksum: Checksum,
};
+const fadeInUpCustom = {
+ from: {
+ opacity: 0.4,
+ scale: 0.9,
+ translateY: 250,
+ },
+ to: {
+ opacity: 1,
+ scale: 1,
+ translateY: 0,
+ },
+ easing: Easing.exp(),
+ duration: 250,
+};
+
+const fadeOutDownCustom = {
+ from: {
+ opacity: 1,
+ scale: 1,
+ translateY: 0,
+ },
+ to: {
+ opacity: 0,
+ scale: 0.9,
+ translateY: 100,
+ },
+ easing: Easing.exp(),
+ duration: 100,
+};
+
/** HOC to render modal component. Trigger opening/closing and content change by dispatching toggleModalActivity action.
* Wrap root views with this component (e.g. LanguageSetup, Login, Home).
*/
@@ -69,8 +95,34 @@ export default function withSafeAreaView(WrappedComponent) {
theme: PropTypes.object.isRequired,
/** @ignore */
toggleModalActivity: PropTypes.func.isRequired,
+ /** @ignore */
+ isKeyboardActive: PropTypes.bool.isRequired,
};
+ constructor(props) {
+ super(props);
+ this.state = {
+ isModalActive: props.isModalActive,
+ };
+ }
+
+ componentWillReceiveProps(newProps) {
+ if (!this.props.isModalActive && newProps.isModalActive) {
+ if (this.props.isKeyboardActive && !isAndroid) {
+ Keyboard.dismiss();
+ return timer.setTimeout('delayOpenModal', () => this.setState({ isModalActive: true }), 2800);
+ }
+ this.setState({ isModalActive: true });
+ }
+ if (this.props.isModalActive && !newProps.isModalActive) {
+ this.setState({ isModalActive: false });
+ }
+ }
+
+ componentWillUnmount() {
+ timer.clearTimeout('delayOpenModal');
+ }
+
render() {
const { modalProps, isModalActive, modalContent, theme: { body } } = this.props;
const ModalContent = MODAL_CONTENT[modalContent];
@@ -79,16 +131,18 @@ export default function withSafeAreaView(WrappedComponent) {
this.props.toggleModalActivity()}
useNativeDriver={isAndroid}
hideModalContentWhileAnimating
@@ -106,6 +160,7 @@ export default function withSafeAreaView(WrappedComponent) {
isModalActive: state.ui.isModalActive,
modalContent: state.ui.modalContent,
theme: state.settings.theme,
+ isKeyboardActive: state.ui.isKeyboardActive,
});
const mapDispatchToProps = {
diff --git a/src/mobile/src/ui/components/ModalView.js b/src/mobile/src/ui/components/ModalView.js
new file mode 100644
index 0000000000..3d71f675c2
--- /dev/null
+++ b/src/mobile/src/ui/components/ModalView.js
@@ -0,0 +1,131 @@
+import React, { PureComponent } from 'react';
+import PropTypes from 'prop-types';
+import { View, StyleSheet, StatusBar } from 'react-native';
+import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
+import SafeAreaView from 'react-native-safe-area-view';
+import { connect } from 'react-redux';
+import { Styling } from 'ui/theme/general';
+import { width, height } from 'libs/dimensions';
+import { isAndroid } from 'libs/device';
+import DualFooterButtons from './DualFooterButtons';
+import SingleFooterButton from './SingleFooterButton';
+
+const styles = StyleSheet.create({
+ container: {
+ alignItems: 'center',
+ width,
+ justifyContent: 'flex-end',
+ height,
+ flex: 1,
+ },
+ modalContainer: {
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ width,
+ },
+ modalContent: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ },
+});
+
+export class ModalViewComponent extends PureComponent {
+ static propTypes = {
+ /** @ignore */
+ theme: PropTypes.object.isRequired,
+ /** Modal content */
+ children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
+ /** Determines whether to display the topbar */
+ displayTopBar: PropTypes.bool,
+ /** Determines whether to display dual footer buttons */
+ dualButtons: PropTypes.bool,
+ /** Left button text for dual buttons */
+ leftButtonText: PropTypes.string,
+ /** Right button text for dual buttons */
+ rightButtonText: PropTypes.string,
+ /** Triggered on left button for press dual footer buttons */
+ onLeftButtonPress: PropTypes.func,
+ /** Triggered on right button press for dual footer buttons */
+ onRightButtonPress: PropTypes.func,
+ /** Button text for single footer button */
+ buttonText: PropTypes.string,
+ /** Triggered on button press for single footer button */
+ onButtonPress: PropTypes.func,
+ /** Determines whether right footer button should be disabled */
+ disableRightButton: PropTypes.bool,
+ };
+
+ static defaultProps = {
+ displayTopBar: false,
+ dualButtons: false,
+ leftButtonText: '',
+ rightButtonText: '',
+ onLeftButtonPress: () => {},
+ onRightButtonPress: () => {},
+ onButtonPress: () => {},
+ buttonText: '',
+ disableRightButton: false,
+ };
+
+ /**
+ * Returns modal height depending on whether to display the topbar
+ * @method getModalHeight
+ *
+ * @returns {number}
+ */
+ getModalHeight() {
+ if (this.props.displayTopBar) {
+ if (isAndroid) {
+ return height - Styling.topbarHeight - StatusBar.currentHeight;
+ }
+ return height - Styling.topbarHeight;
+ }
+ return height;
+ }
+
+ render() {
+ const {
+ theme: { body },
+ children,
+ dualButtons,
+ leftButtonText,
+ rightButtonText,
+ onLeftButtonPress,
+ onRightButtonPress,
+ buttonText,
+ onButtonPress,
+ disableRightButton,
+ } = this.props;
+
+ return (
+
+
+ {children}
+ {(dualButtons && (
+ onLeftButtonPress()}
+ onRightButtonPress={() => onRightButtonPress()}
+ leftButtonText={leftButtonText}
+ rightButtonText={rightButtonText}
+ disableRightButton={disableRightButton}
+ />
+ )) || onButtonPress()} buttonText={buttonText} />}
+
+
+ );
+ }
+}
+
+const mapStateToProps = (state) => ({
+ theme: state.settings.theme,
+});
+
+export default connect(mapStateToProps)(ModalViewComponent);
diff --git a/src/mobile/src/ui/components/MultiTextInput.js b/src/mobile/src/ui/components/MultiTextInput.js
index 7d94dd5923..6bd9cfc834 100644
--- a/src/mobile/src/ui/components/MultiTextInput.js
+++ b/src/mobile/src/ui/components/MultiTextInput.js
@@ -187,7 +187,7 @@ class MultiTextInput extends Component {
{selectedTab === 'amount' && (
r1 !== r2 });
+const maxScrollViewHeight = height / 2;
const styles = StyleSheet.create({
- modalContainer: {
- flex: 1,
- alignItems: 'center',
- justifyContent: 'center',
- width,
- },
- modalContent: {
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- paddingVertical: height / 30,
- paddingHorizontal: width / 30,
- width: Styling.contentWidth,
- alignItems: 'center',
- justifyContent: 'center',
- maxHeight: height / 1.25,
- },
titleText: {
backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize6,
+ textAlign: 'center',
+ paddingBottom: height / 20,
},
- itemText: {
+ timeText: {
backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize1,
- },
- line: {
- borderBottomWidth: height / 1000,
- width: width / 1.3,
- marginVertical: height / 30,
- },
- separator: {
- flex: 1,
- height: height / 60,
+ fontFamily: 'SourceSansPro-Bold',
+ fontSize: Styling.fontSize3,
+ textAlign: 'center',
+ width: width / 1.2,
+ paddingBottom: height / 60,
},
- clearButton: {
- borderWidth: 1.5,
- borderRadius: Styling.borderRadius,
- width: width / 2.7,
- height: height / 17,
- justifyContent: 'center',
- alignItems: 'center',
+ errorText: {
backgroundColor: 'transparent',
- marginTop: height / 70,
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize3,
+ width: Styling.contentWidth,
+ textAlign: 'center',
},
- clearText: {
- fontFamily: 'SourceSansPro-Bold',
- fontSize: Styling.fontSize1,
- backgroundColor: 'transparent',
+ separator: {
+ height: height / 40,
},
});
export class NotificationLogModal extends PureComponent {
static propTypes = {
- /** Content background color */
- backgroundColor: PropTypes.string.isRequired,
- /** Content border color */
- borderColor: PropTypes.object.isRequired,
- /** Content text color */
- textColor: PropTypes.object.isRequired,
- /** Bar color */
- barColor: PropTypes.string.isRequired,
+ /** @ignore */
+ theme: PropTypes.object.isRequired,
/** Hide active modal */
hideModal: PropTypes.func.isRequired,
/** @ignore */
@@ -83,44 +54,66 @@ export class NotificationLogModal extends PureComponent {
t: PropTypes.func.isRequired,
};
+ constructor() {
+ super();
+ this.state = {
+ scrollable: false,
+ };
+ }
+
componentDidMount() {
leaveNavigationBreadcrumb('NotificationLog');
}
+ setScrollable(y) {
+ if (y >= maxScrollViewHeight) {
+ return this.setState({ scrollable: true });
+ }
+ this.setState({ scrollable: false });
+ }
+
clearNotificationLog() {
this.props.hideModal();
this.props.clearLog();
}
render() {
- const { t, backgroundColor, textColor, borderColor, barColor, notificationLog } = this.props;
- const lineBorder = { borderBottomColor: barColor };
+ const { t, notificationLog, theme: { body } } = this.props;
const trimmedLog = notificationLog.reverse().slice(0, 10);
+ const textColor = { color: body.color };
return (
-
+ this.clearNotificationLog()}
+ onRightButtonPress={() => this.props.hideModal()}
+ leftButtonText={t('clear')}
+ rightButtonText={t('done')}
+ >
+
{t('notificationLog:errorLog')}
-
(
-
-
- {formatTimeAs.hoursMinutesSecondsDayMonthYear(locale, timezone, dataSource.time)} -{' '}
- {dataSource.error}
+
+
+ {formatTimeAs.hoursMinutesSecondsDayMonthYear(locale, timezone, dataSource.time)}
+ {dataSource.error}
)}
- scrollEnabled
+ scrollEnabled={this.state.scrollable}
renderSeparator={(sectionId, rowId) => }
enableEmptySections
+ style={{
+ maxHeight: maxScrollViewHeight,
+ width: Styling.contentWidth,
+ }}
+ onContentSizeChange={(x, y) => this.setScrollable(y)}
/>
- this.clearNotificationLog()}>
-
- {t('clear').toUpperCase()}
-
-
-
+
+
);
}
}
diff --git a/src/mobile/src/ui/components/PasswordFields.js b/src/mobile/src/ui/components/PasswordFields.js
index 1092b81ae5..2bf7e40ca0 100644
--- a/src/mobile/src/ui/components/PasswordFields.js
+++ b/src/mobile/src/ui/components/PasswordFields.js
@@ -6,6 +6,7 @@ import PropTypes from 'prop-types';
import { zxcvbn } from 'shared-modules/libs/exports';
import { generateAlert } from 'shared-modules/actions/alerts';
import { passwordReasons } from 'shared-modules/libs/password';
+import i18next from 'shared-modules/libs/i18next.js';
import { height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
import CustomTextInput from './CustomTextInput';
@@ -41,6 +42,15 @@ class PasswordFields extends Component {
password: PropTypes.string.isRequired,
/** @ignore */
reentry: PropTypes.string.isRequired,
+ /** First text input label */
+ passwordLabel: PropTypes.string,
+ /** Second text input label */
+ reentryLabel: PropTypes.string,
+ };
+
+ static defaultProps = {
+ passwordLabel: i18next.t('global:password'),
+ reentryLabel: i18next.t('setPassword:retypePassword'),
};
componentDidMount() {
@@ -81,14 +91,14 @@ class PasswordFields extends Component {
}
render() {
- const { t, theme, password, reentry } = this.props;
+ const { theme, password, reentry, passwordLabel, reentryLabel } = this.props;
const score = zxcvbn(password);
const isValid = score.score === 4;
return (
this.props.setPassword(password)}
containerStyle={{ width: Styling.contentWidth }}
autoCapitalize="none"
@@ -111,7 +121,7 @@ class PasswordFields extends Component {
onRef={(c) => {
this.reentry = c;
}}
- label={t('retypePassword')}
+ label={reentryLabel}
onChangeText={(reentry) => this.props.setReentry(reentry)}
containerStyle={{ width: Styling.contentWidth, marginTop: height / 60 }}
widget="passwordReentry"
diff --git a/src/mobile/src/ui/components/PasswordManagerModal.js b/src/mobile/src/ui/components/PasswordManagerModal.js
deleted file mode 100644
index 06eb9bf2af..0000000000
--- a/src/mobile/src/ui/components/PasswordManagerModal.js
+++ /dev/null
@@ -1,197 +0,0 @@
-import React, { PureComponent } from 'react';
-import { withNamespaces } from 'react-i18next';
-import PropTypes from 'prop-types';
-import { View, Text, StyleSheet, TouchableOpacity, Image, Linking } from 'react-native';
-import tinycolor from 'tinycolor2';
-import whiteCheckboxCheckedImagePath from 'shared-modules/images/checkbox-checked-white.png';
-import whiteCheckboxUncheckedImagePath from 'shared-modules/images/checkbox-unchecked-white.png';
-import blackCheckboxCheckedImagePath from 'shared-modules/images/checkbox-checked-black.png';
-import blackCheckboxUncheckedImagePath from 'shared-modules/images/checkbox-unchecked-black.png';
-import { Styling } from 'ui/theme/general';
-import { width, height } from 'libs/dimensions';
-import { isAndroid } from 'libs/device';
-import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import InfoBox from './InfoBox';
-import ModalButtons from './ModalButtons';
-
-const styles = StyleSheet.create({
- infoText: {
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
- textAlign: 'left',
- backgroundColor: 'transparent',
- },
- infoTextNormal: {
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
- textAlign: 'left',
- backgroundColor: 'transparent',
- },
- infoTextBold: {
- fontFamily: 'SourceSansPro-Bold',
- fontSize: Styling.fontSize3,
- textAlign: 'left',
- backgroundColor: 'transparent',
- },
- infoLinkWrapper: {
- paddingTop: height / 40,
- textAlign: 'center',
- },
- infoLink: {
- fontFamily: 'SourceSansPro-Bold',
- fontSize: width / 27.6,
- textDecorationLine: 'underline',
- },
- checkboxContainer: {
- flexDirection: 'row',
- justifyContent: 'space-between',
- alignItems: 'center',
- height: height / 14,
- marginVertical: height / 30,
- },
- checkboxText: {
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
- },
- checkbox: {
- width: width / 20,
- height: width / 20,
- },
-});
-
-export class PasswordManagerModal extends PureComponent {
- static propTypes = {
- /** Hides active modal */
- hideModal: PropTypes.func.isRequired,
- /** Copy or add to password manager */
- copy: PropTypes.func.isRequired,
- /** @ignore */
- theme: PropTypes.object.isRequired,
- /** @ignore */
- t: PropTypes.func.isRequired,
- /** @ignore */
- hasVisitedSeedShareTutorial: PropTypes.bool.isRequired,
- /** @ignore */
- setSeedShareTutorialVisitationStatus: PropTypes.func.isRequired,
- };
-
- constructor(props) {
- super(props);
- this.state = {
- checked: false,
- };
- }
-
- componentDidMount() {
- leaveNavigationBreadcrumb('PasswordManagerModal');
- }
-
- onCopyPress() {
- if (this.state.checked || this.props.hasVisitedSeedShareTutorial) {
- this.props.copy();
- }
- }
-
- getCheckbox() {
- const { theme: { body } } = this.props;
- const { checked } = this.state;
- const isBgDark = tinycolor(body.bg).isDark();
- if (checked) {
- return isBgDark ? whiteCheckboxCheckedImagePath : blackCheckboxCheckedImagePath;
- }
- return isBgDark ? whiteCheckboxUncheckedImagePath : blackCheckboxUncheckedImagePath;
- }
-
- render() {
- const { t, theme: { body }, hasVisitedSeedShareTutorial } = this.props;
- const { checked } = this.state;
- const textColor = { color: body.color };
- const iOSOpacity = checked ? 1 : 0.1;
- const androidOpacity = hasVisitedSeedShareTutorial ? 1 : 0.1;
-
- return (
-
-
-
- {t('global:masterKey')}
-
- {t('global:mustBeStoredAppropriately')}{' '}
- {t('global:androidInsecureClipboardWarning')}
-
-
-
- {`${t(
- 'followTutorialToSecurelyShareSeed',
- )}:`}
-
-
- {
- this.props.setSeedShareTutorialVisitationStatus(true);
- Linking.openURL(
- 'https://gist.github.com/marcusjang/0491b719ace4b1875147568431b70ebd',
- );
- }}
- >
- {t('global:usingTrinityWalletWithKeePass')}
-
-
-
- {t('global:androidCopyPasteWarning')}
-
-
- this.props.hideModal()}
- onRightButtonPress={() => this.onCopyPress(hasVisitedSeedShareTutorial)}
- leftText={t('global:back')}
- rightText={t('global:proceed').toUpperCase()}
- opacity={androidOpacity}
- containerWidth={{ width: width / 1.25 }}
- buttonWidth={{ width: width / 2.85 }}
- />
-
-
- ) : (
-
-
- {t('global:masterKey')}
- {t('storeEncrypted')}
-
-
- {t('tapConfirm')}
-
- this.setState({ checked: !checked })}
- >
-
- {t('passwordManagerCheckbox')}
-
- {t('doNotOpen')}
-
- this.props.hideModal()}
- onRightButtonPress={() => this.onCopyPress()}
- leftText={t('global:back')}
- rightText={t('copy')}
- opacity={iOSOpacity}
- containerWidth={{ width: width / 1.25 }}
- buttonWidth={{ width: width / 2.85 }}
- />
-
-
- )
- }
- />
-
- );
- }
-}
-
-export default withNamespaces(['copyToClipboard', 'global'])(PasswordManagerModal);
diff --git a/src/mobile/src/ui/components/PasswordValidationModal.js b/src/mobile/src/ui/components/PasswordValidationModal.js
index dcfe22c0ff..72ca97dd0a 100644
--- a/src/mobile/src/ui/components/PasswordValidationModal.js
+++ b/src/mobile/src/ui/components/PasswordValidationModal.js
@@ -1,25 +1,25 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { TouchableWithoutFeedback, View, Text, StyleSheet, Keyboard } from 'react-native';
+import { View, TouchableWithoutFeedback, Text, StyleSheet, Keyboard } from 'react-native';
import { withNamespaces } from 'react-i18next';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
-import InfoBox from './InfoBox';
+import { Icon } from 'ui/theme/icons';
+import { isAndroid } from 'libs/device';
import CustomTextInput from './CustomTextInput';
-import ModalButtons from './ModalButtons';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
- container: {
- width,
- height,
- alignItems: 'center',
- justifyContent: 'center',
+ questionText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize6,
+ textAlign: 'center',
},
- modalText: {
- color: 'white',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
- textAlign: 'left',
+ icon: {
+ opacity: 0.6,
+ paddingTop: height / 20,
+ paddingBottom: height / 30,
backgroundColor: 'transparent',
},
});
@@ -34,6 +34,12 @@ export class PasswordValidationModal extends PureComponent {
theme: PropTypes.object.isRequired,
/** Validate password provided by user */
validatePassword: PropTypes.func.isRequired,
+ /** Determines if modal is triggered from the wallet dashboard, in case the topbar should be displayed */
+ isDashboard: PropTypes.bool,
+ };
+
+ static defaultProps = {
+ isDashboard: false,
};
constructor() {
@@ -44,58 +50,38 @@ export class PasswordValidationModal extends PureComponent {
}
render() {
- const { t, theme } = this.props;
+ const { t, theme, isDashboard } = this.props;
const { password } = this.state;
return (
-
-
-
-
-
-
- {t('seedVault:enterKeyExplanation')}
-
-
- this.setState({ password })}
- containerStyle={{ width: width / 1.3 }}
- autoCapitalize="none"
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- secureTextEntry
- onSubmitEditing={() => this.props.validatePassword(password)}
- theme={theme}
- value={this.state.password}
- />
-
-
- this.props.hideModal()}
- onRightButtonPress={() => this.props.validatePassword(password)}
- leftText={t('global:back').toUpperCase()}
- rightText={t('okay').toUpperCase()}
- containerWidth={{ width: width / 1.3 }}
- buttonWidth={{ width: width / 3 }}
- />
-
-
- }
- />
-
-
+
+
+ this.props.hideModal()}
+ onRightButtonPress={() => this.props.validatePassword(password)}
+ leftButtonText={t('back')}
+ rightButtonText={t('okay')}
+ >
+
+ {t('seedVault:enterKeyExplanation')}
+
+
+ this.setState({ password })}
+ containerStyle={{ width: Styling.contentWidth }}
+ autoCapitalize="none"
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ secureTextEntry
+ onSubmitEditing={() => this.props.validatePassword(password)}
+ theme={theme}
+ value={this.state.password}
+ />
+
);
diff --git a/src/mobile/src/ui/components/PrintModal.js b/src/mobile/src/ui/components/PrintModal.js
index dbb16100b3..ee421fffbb 100644
--- a/src/mobile/src/ui/components/PrintModal.js
+++ b/src/mobile/src/ui/components/PrintModal.js
@@ -1,51 +1,33 @@
import React, { PureComponent } from 'react';
import { withNamespaces } from 'react-i18next';
import PropTypes from 'prop-types';
-import { View, Text, StyleSheet, TouchableOpacity, Image } from 'react-native';
-import tinycolor from 'tinycolor2';
-import whiteCheckboxCheckedImagePath from 'shared-modules/images/checkbox-checked-white.png';
-import whiteCheckboxUncheckedImagePath from 'shared-modules/images/checkbox-unchecked-white.png';
-import blackCheckboxCheckedImagePath from 'shared-modules/images/checkbox-checked-black.png';
-import blackCheckboxUncheckedImagePath from 'shared-modules/images/checkbox-unchecked-black.png';
+import { View, Text, StyleSheet } from 'react-native';
+import timer from 'react-native-timer';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
+import ModalView from './ModalView';
import InfoBox from './InfoBox';
-import ModalButtons from './ModalButtons';
+import Slider from './Slider';
const styles = StyleSheet.create({
- checkboxContainer: {
- flexDirection: 'row',
- justifyContent: 'center',
- alignItems: 'center',
- height: height / 14,
- },
- checkboxText: {
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
- paddingLeft: width / 20,
- flex: 6,
- },
- checkbox: {
- width: width / 20,
- height: width / 20,
- },
- infoText: {
+ infoTextLarge: {
fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
- textAlign: 'left',
+ fontSize: Styling.fontSize6,
+ textAlign: 'center',
backgroundColor: 'transparent',
+ width: width / 1.3,
},
infoTextNormal: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
infoTextBold: {
fontFamily: 'SourceSansPro-Bold',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
});
@@ -65,8 +47,9 @@ export class RootDetectionModal extends PureComponent {
constructor(props) {
super(props);
this.state = {
- publicWifiChecked: false,
- publicPrinterChecked: false,
+ publicWifiConfirmed: false,
+ publicPrinterConfirmed: false,
+ confirmationText: props.t('wifiConfirmation'),
};
}
@@ -74,85 +57,66 @@ export class RootDetectionModal extends PureComponent {
leaveNavigationBreadcrumb('PrintModal');
}
- onPublicWifiCheckboxPress() {
- this.setState({
- publicWifiChecked: !this.state.publicWifiChecked,
- });
+ componentWillUnmount() {
+ timer.clearTimeout('delayTextChange');
}
- onPublicPrinterCheckboxPress() {
- this.setState({
- publicPrinterChecked: !this.state.publicPrinterChecked,
- });
- }
-
- onPrintPress() {
- const { publicPrinterChecked, publicWifiChecked } = this.state;
- if (publicWifiChecked && publicPrinterChecked) {
- this.props.print();
+ onSwipeSuccess() {
+ const { t } = this.props;
+ if (!this.state.publicWifiConfirmed) {
+ timer.setTimeout(
+ 'delayTextChange',
+ () => this.setState({ confirmationText: t('printerConfirmation') }),
+ 1000,
+ );
+ return this.setState({ publicWifiConfirmed: true });
}
+ this.setState({ publicPrinterConfirmed: true });
}
- getCheckbox(checkboxChecked) {
- const { theme: { body } } = this.props;
- const isBgDark = tinycolor(body.bg).isDark();
- if (checkboxChecked) {
- return isBgDark ? whiteCheckboxCheckedImagePath : blackCheckboxCheckedImagePath;
- }
- return isBgDark ? whiteCheckboxUncheckedImagePath : blackCheckboxUncheckedImagePath;
+ onPrintPress() {
+ this.props.print();
}
render() {
- const { t, theme: { body } } = this.props;
- const { publicPrinterChecked, publicWifiChecked } = this.state;
- const opacity = publicWifiChecked && publicPrinterChecked ? 1 : 0.1;
+ const { t, theme: { body, input, dark, secondary, primary } } = this.props;
const textColor = { color: body.color };
return (
-
-
-
- {t('paperConvenience')}
- {t('publicInsecure')}
-
-
- {t('tapCheckboxes')}
-
-
- this.onPublicWifiCheckboxPress()}
- >
-
- {t('wifiCheckbox')}
-
- this.onPublicPrinterCheckboxPress()}
- >
-
- {t('printerCheckbox')}
-
-
-
- this.props.hideModal()}
- onRightButtonPress={() => this.onPrintPress()}
- leftText={t('global:back').toUpperCase()}
- rightText={t('print')}
- opacity={opacity}
- containerWidth={{ width: width / 1.25 }}
- buttonWidth={{ width: width / 2.85 }}
- />
-
-
- }
+ this.props.hideModal()}
+ onRightButtonPress={() => this.onPrintPress()}
+ leftButtonText={t('global:back')}
+ rightButtonText={t('print')}
+ disableRightButton={!this.state.publicPrinterConfirmed}
+ >
+
+ {t('pleaseCheck')}
+
+
+ {t('paperConvenience')}
+
+ {t('publicInsecure')}
+
+
+
+ {this.state.confirmationText}
+
+ {
+ this.onSwipeSuccess();
+ }}
+ sliderReset={this.state.publicWifiConfirmed}
+ numberOfSliders={2}
/>
-
+
+
);
}
}
diff --git a/src/mobile/src/ui/components/ProgressBar.js b/src/mobile/src/ui/components/ProgressBar.js
index f81b32f0c6..074f9f3d94 100644
--- a/src/mobile/src/ui/components/ProgressBar.js
+++ b/src/mobile/src/ui/components/ProgressBar.js
@@ -1,75 +1,406 @@
-import React from 'react';
+import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import { StyleSheet, View, Text } from 'react-native';
-import * as Progress from 'react-native-progress';
-import { width, height } from 'libs/dimensions';
+import { PanResponder, Easing, Animated, StyleSheet, View } from 'react-native';
+import LottieView from 'lottie-react-native';
+import sliderLoadingAnimation from 'shared-modules/animations/slider-loader.json';
+import sliderSuccessAnimation from 'shared-modules/animations/slider-success.json';
+import timer from 'react-native-timer';
+import { height as deviceHeight } from 'libs/dimensions';
+import { Styling } from 'ui/theme/general';
+import { Icon } from 'ui/theme/icons';
const styles = StyleSheet.create({
container: {
alignItems: 'center',
- marginBottom: height / 30,
- },
- textWrapper: {
- flex: 1,
+ borderRadius: deviceHeight / 10,
+ overflow: 'hidden',
+ justifyContent: 'center',
},
text: {
- color: 'white',
- marginBottom: height / 40,
- fontFamily: 'SourceSansPro-Light',
+ fontFamily: 'SourceSansPro-Regular',
+ fontSize: Styling.fontSize3,
+ position: 'absolute',
+ backgroundColor: 'transparent',
+ },
+ slider: {
+ justifyContent: 'center',
+ alignItems: 'center',
},
});
-const ProgressBar = (props) => {
- return (
-
-
- {props.children}
+class ProgressBar extends Component {
+ static propTypes = {
+ /** Index of active progress step */
+ activeStepIndex: PropTypes.number.isRequired,
+ /** Total number of progress steps */
+ totalSteps: PropTypes.number,
+ /** Filled bar color */
+ filledColor: PropTypes.string,
+ /** Unfilled bar color */
+ unfilledColor: PropTypes.string,
+ /** Progress bar width */
+ channelWidth: PropTypes.number,
+ /** Progress bar height */
+ channelHeight: PropTypes.number,
+ /** Progress bar text color */
+ textColor: PropTypes.string,
+ /** Progress bar text */
+ progressText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
+ /** Slider color before successful swipe */
+ preSwipeColor: PropTypes.string,
+ /** Slider color after successful swipe */
+ postSwipeColor: PropTypes.string,
+ /** Text displayed when not in progress */
+ staticText: PropTypes.string,
+ /** Called on successful swipe */
+ onSwipeSuccess: PropTypes.func,
+ /** Interupts the progress bar when changed */
+ interupt: PropTypes.bool,
+ };
+
+ static defaultProps = {
+ channelWidth: Styling.contentWidth,
+ channelHeight: deviceHeight / 12,
+ };
+
+ constructor(props) {
+ super(props);
+ const isAlreadyInProgress = props.totalSteps > 0 && props.activeStepIndex !== props.totalSteps;
+ const sliderEndPosition = props.channelWidth - props.channelHeight;
+ const progress = isAlreadyInProgress ? props.activeStepIndex / props.totalSteps : -1;
+ this.state = {
+ animatedProgressValue: new Animated.Value(isAlreadyInProgress ? progress : 0),
+ sliderPosition: new Animated.Value(isAlreadyInProgress ? sliderEndPosition : props.channelHeight * 0.1),
+ thresholdDistance: sliderEndPosition,
+ sliderColor: isAlreadyInProgress ? props.postSwipeColor : props.preSwipeColor,
+ textOpacity: new Animated.Value(1),
+ sliderOpacity: new Animated.Value(1),
+ progressText: isAlreadyInProgress ? props.progressText : '',
+ inProgress: isAlreadyInProgress,
+ sliderAnimation: sliderLoadingAnimation,
+ sliderSize: new Animated.Value(isAlreadyInProgress ? props.channelHeight : props.channelHeight * 0.8),
+ };
+ // Global progress
+ this.globalProgress = progress;
+ // Local progress (arbitrarily increments)
+ this.localProgressWithIncrement = progress;
+ // Total steps for most recent progress instance
+ this.latestTotalSteps = props.totalSteps;
+ }
+
+ componentWillMount() {
+ if (this.props.totalSteps > 0 && this.props.activeStepIndex !== this.props.totalSteps) {
+ this.animateProgressBar();
+ }
+ this._panResponder = PanResponder.create({
+ onStartShouldSetPanResponder: () => true,
+ onStartShouldSetPanResponderCapture: () => true,
+ onMoveShouldSetPanResponder: () => true,
+ onMoveShouldSetPanResponderCapture: () => true,
+ onPanResponderMove: (evt, gestureState) => {
+ if (this.state.inProgress) {
+ return;
+ }
+ Animated.timing(this.state.sliderSize, {
+ toValue: this.props.channelHeight,
+ duration: 100,
+ }).start();
+ const moveValue = gestureState.dx;
+ const sliderPosition = moveValue / this.state.thresholdDistance;
+ this.state.textOpacity.setValue(1 - sliderPosition * 2);
+ this.state.sliderOpacity.setValue(1 - sliderPosition / 2.5);
+ if (moveValue >= 0 && moveValue <= this.state.thresholdDistance) {
+ this.state.sliderPosition.setValue(gestureState.dx);
+ }
+ },
+ onPanResponderRelease: (evt, gestureState) => {
+ if (this.state.inProgress) {
+ return;
+ }
+ const releaseValue = gestureState.dx;
+ if (releaseValue >= this.state.thresholdDistance && this.props.activeStepIndex < 0) {
+ this.onCompleteSwipe();
+ } else {
+ this.resetSlider();
+ }
+ },
+ onPanResponderTerminate: () => {},
+ onPanResponderTerminationRequest: () => true,
+ });
+ }
+
+ componentDidMount() {
+ if (this.props.totalSteps > 0 && this.props.activeStepIndex !== this.props.totalSteps) {
+ this.sliderAnimation.play();
+ }
+ }
+
+ componentWillReceiveProps(newProps) {
+ if (this.props.activeStepIndex !== newProps.activeStepIndex) {
+ // On first progress change
+ if (this.props.activeStepIndex < 0) {
+ this.setState({ inProgress: true });
+ this.animateProgressBar();
+ this.sliderAnimation.play();
+ }
+ // On every progress change
+ this.latestTotalSteps = newProps.totalSteps > 0 ? newProps.totalSteps : this.latestTotalSteps;
+ const progress = newProps.activeStepIndex / this.latestTotalSteps;
+ // Updates local and global progress, and ensures totalSteps > 0
+ this.globalProgress = progress;
+ this.localProgressWithIncrement = progress;
+ this.onActiveStepChange(newProps.progressText);
+ // On last progress change
+ if (this.props.totalSteps > 0 && newProps.activeStepIndex === this.props.totalSteps) {
+ this.onProgressComplete();
+ }
+ }
+ if (this.props.interupt !== newProps.interupt && this.props.activeStepIndex !== this.props.totalSteps) {
+ this.onInterupt();
+ }
+ }
+
+ componentWillUnmount() {
+ timer.clearTimeout('delayProgressTextChange' + this.props.activeStepIndex);
+ timer.clearTimeout('delayProgressTextFadeOut');
+ timer.clearTimeout('delaySliderReset');
+ timer.clearTimeout('delaySuccessAnimation');
+ timer.clearTimeout('delaySliderOpacityIncreaseAnimation');
+ }
+
+ onProgressComplete() {
+ this.sliderAnimation.reset();
+ this.setState({ sliderAnimation: sliderSuccessAnimation, shouldLoopSliderAnimation: false });
+ timer.setTimeout(
+ 'delaySliderOpacityIncreaseAnimation',
+ () => {
+ Animated.timing(this.state.sliderOpacity, {
+ toValue: 1,
+ duration: 300,
+ easing: Easing.ease,
+ }).start();
+ },
+ 900,
+ );
+ timer.setTimeout(
+ 'delaySuccessAnimation',
+ () => {
+ this.sliderAnimation.play();
+ },
+ 1200,
+ );
+ timer.setTimeout(
+ 'delaySliderReset',
+ () => {
+ this.sliderAnimation.reset();
+ this.globalProgress = -1;
+ this.setState({
+ inProgress: false,
+ sliderAnimation: sliderLoadingAnimation,
+ shouldLoopSliderAnimation: true,
+ });
+ this.state.animatedProgressValue.setValue(0);
+ this.resetSlider();
+ },
+ 5000,
+ );
+ }
+
+ onInterupt() {
+ this.sliderAnimation.reset();
+ this.globalProgress = -1;
+ this.setState({ inProgress: false });
+ Animated.timing(this.state.animatedProgressValue).stop();
+ this.state.animatedProgressValue.setValue(0);
+ Animated.timing(this.state.sliderPosition).stop();
+ this.resetSlider();
+ }
+
+ onCompleteSwipe() {
+ Animated.timing(this.state.sliderPosition, {
+ toValue: this.props.channelWidth - this.props.channelHeight,
+ duration: 50,
+ }).start();
+ this.setState({ sliderColor: this.props.postSwipeColor });
+ this.props.onSwipeSuccess();
+ }
+
+ onActiveStepChange(progressText) {
+ // On first step change
+ if (this.globalProgress === 0) {
+ this.setState({ progressText });
+ return Animated.timing(this.state.textOpacity, {
+ toValue: 1,
+ duration: 100,
+ }).start();
+ }
+
+ // On all but first step changes
+ if (this.globalProgress >= 0) {
+ timer.setTimeout(
+ 'delayProgressTextChange' + this.props.activeStepIndex,
+ () => {
+ Animated.timing(this.state.textOpacity, {
+ toValue: 0,
+ duration: 100,
+ }).start(() => {
+ this.setState({ progressText });
+ Animated.timing(this.state.textOpacity, {
+ toValue: 1,
+ duration: 100,
+ }).start();
+ });
+ },
+ 300,
+ );
+ }
+
+ // On last step change
+ if (this.globalProgress === 1) {
+ return timer.setTimeout(
+ 'delayProgressTextFadeOut',
+ () => {
+ Animated.timing(this.state.textOpacity, {
+ toValue: 0,
+ duration: 100,
+ }).start();
+ },
+ 5000,
+ );
+ }
+ }
+
+ animateProgressBar() {
+ const stepSize = 1 / this.latestTotalSteps;
+ const nextStep = this.globalProgress + stepSize;
+ const increment = stepSize / 100;
+ const updatedIncrement = this.localProgressWithIncrement + increment;
+ if (this.localProgressWithIncrement < nextStep - stepSize / 5) {
+ this.localProgressWithIncrement = updatedIncrement;
+ }
+ Animated.timing(this.state.animatedProgressValue, {
+ toValue: Math.max(this.globalProgress, this.localProgressWithIncrement),
+ useNativeDriver: true,
+ easing: Easing.ease,
+ }).start(() => {
+ if (this.localProgressWithIncrement <= 1 && this.state.inProgress) {
+ this.animateProgressBar();
+ }
+ });
+ }
+
+ resetSlider() {
+ const duration = 500;
+ this.setState({ sliderColor: this.props.preSwipeColor });
+ Animated.parallel([
+ Animated.spring(this.state.sliderPosition, {
+ toValue: this.props.channelHeight * 0.1,
+ duration,
+ }),
+ Animated.timing(this.state.sliderOpacity, {
+ toValue: 1,
+ duration,
+ }),
+ Animated.timing(this.state.textOpacity, {
+ toValue: 1,
+ duration,
+ }),
+ Animated.timing(this.state.sliderSize, {
+ toValue: this.props.channelHeight * 0.8,
+ duration: 100,
+ }),
+ ]).start(() => {
+ this.setState({
+ sliderPosition: new Animated.Value(this.props.channelHeight * 0.1),
+ sliderOpacity: new Animated.Value(1),
+ textOpacity: new Animated.Value(1),
+ sliderSize: new Animated.Value(this.props.channelHeight * 0.8),
+ });
+ });
+ }
+
+ render() {
+ const { channelHeight, channelWidth, textColor, staticText, unfilledColor, filledColor } = this.props;
+ return (
+
+
+
+ {(this.state.inProgress && (
+
+ {this.state.progressText}
+
+ )) || (
+
+ {staticText}
+
+ )}
+
+
+
+ {
+ this.sliderAnimation = animation;
+ }}
+ source={this.state.sliderAnimation}
+ style={{ width: channelHeight * 0.9, height: channelHeight * 0.9, position: 'absolute' }}
+ loop={this.state.shouldLoopSliderAnimation}
+ />
+ {!this.state.inProgress && (
+
+ )}
+
+
-
-
- );
-};
-
-ProgressBar.propTypes = {
- /** Progress percentage number */
- progress: PropTypes.number.isRequired,
- /** Children content */
- children: PropTypes.node,
- /** Bar color */
- color: PropTypes.string,
- /** When true, progress prop will be ignored */
- indeterminate: PropTypes.bool,
- /** Type of animation for progress bar */
- animationType: PropTypes.string,
- /** Progress bar width */
- width: PropTypes.number,
- /** Progress bar height */
- height: PropTypes.number,
- /** Progress bar text color */
- textColor: PropTypes.string,
- /** Default style object */
- style: PropTypes.object,
-};
-
-ProgressBar.defaultProps = {
- animationType: 'timing',
- width: width / 2,
- height: height / 40,
- indeterminate: false,
- color: 'rgba(247, 208, 2, 0.75)',
- textColor: 'rgba(247, 208, 2, 0.75)',
- style: {
- textWrapper: {},
- },
-};
+ );
+ }
+}
export default ProgressBar;
diff --git a/src/mobile/src/ui/components/QrScanner.js b/src/mobile/src/ui/components/QrScanner.js
index 35b86cb3b7..0ef3c13c5e 100644
--- a/src/mobile/src/ui/components/QrScanner.js
+++ b/src/mobile/src/ui/components/QrScanner.js
@@ -1,40 +1,27 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import { View, Text, StyleSheet, PermissionsAndroid } from 'react-native';
+import { Text, StyleSheet, PermissionsAndroid } from 'react-native';
import QRCodeScanner from 'react-native-qrcode-scanner';
import { withNamespaces } from 'react-i18next';
import { Styling } from 'ui/theme/general';
-import { isAndroid, isIPhoneX } from 'libs/device';
-import { width, height } from 'libs/dimensions';
+import { isAndroid } from 'libs/device';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import SingleFooterButton from 'ui/components/SingleFooterButton';
-import DynamicStatusBar from './DynamicStatusBar';
+import { height } from 'libs/dimensions';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
qrInfoText: {
fontFamily: 'SourceSansPro-Regular',
textAlign: 'center',
fontSize: Styling.fontSize4,
- },
- closeButton: {
- flexDirection: 'row',
- borderRadius: Styling.borderRadius,
- width: width / 2.5,
- height: height / 14,
justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: '#009f3f',
- borderWidth: 1.2,
- },
- closeButtonText: {
- color: 'white',
- fontFamily: 'SourceSansPro-SemiBold',
- fontSize: Styling.fontSize3,
- backgroundColor: 'transparent',
},
- modalContent: {
- alignItems: 'center',
+ textContainer: {
justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: 'red',
+ height: height / 6,
+ paddingBottom: height / 12,
},
});
@@ -61,10 +48,13 @@ export class QRScanner extends Component {
onMount: PropTypes.func,
/** Unmount lifecycle method calback function */
onUnmount: PropTypes.func,
+ /** Determines whether to display top bar */
+ displayTopBar: PropTypes.bool,
};
static defaultProps = {
ctaBorderColor: 'transparent',
+ displayTopBar: false,
};
componentDidMount() {
@@ -85,23 +75,21 @@ export class QRScanner extends Component {
}
render() {
- const { t, theme: { body } } = this.props;
+ const { t, theme: { body }, displayTopBar } = this.props;
return (
-
-
-
-
- {t('scan')}
- this.props.onQRRead(data.data)} />
-
- this.props.hideModal()}
- testID="qrScanner-next"
- buttonText={t('global:close')}
- />
-
-
-
+ this.props.hideModal()}
+ buttonText={t('global:close')}
+ >
+ {t('scan')}}
+ onRead={(data) => this.props.onQRRead(data.data)}
+ />
+
);
}
}
diff --git a/src/mobile/src/ui/components/RootDetectionModal.js b/src/mobile/src/ui/components/RootDetectionModal.js
index 3b6a98a0b3..4048900114 100644
--- a/src/mobile/src/ui/components/RootDetectionModal.js
+++ b/src/mobile/src/ui/components/RootDetectionModal.js
@@ -1,37 +1,39 @@
import React, { PureComponent } from 'react';
import { withNamespaces } from 'react-i18next';
import PropTypes from 'prop-types';
-import { View, Text, StyleSheet } from 'react-native';
+import { Text, StyleSheet } from 'react-native';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import ModalButtons from './ModalButtons';
+import { Icon } from 'ui/theme/icons';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
- modalContent: {
- justifyContent: 'space-between',
- alignItems: 'center',
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- paddingVertical: height / 30,
- width: Styling.contentWidth,
- paddingHorizontal: width / 50,
- },
warningText: {
backgroundColor: 'transparent',
fontFamily: 'SourceSansPro-Regular',
fontSize: Styling.fontSize6,
textAlign: 'center',
color: 'red',
- paddingVertical: height / 25,
+ },
+ icon: {
+ opacity: 0.8,
+ paddingVertical: height / 30,
+ backgroundColor: 'transparent',
+ },
+ infoTextBold: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Bold',
+ fontSize: Styling.fontSize4,
+ textAlign: 'center',
+ width: width / 1.2,
},
infoText: {
backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
+ fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- paddingBottom: height / 35,
textAlign: 'center',
- width: width / 1.3,
+ width: width / 1.2,
},
});
@@ -43,14 +45,8 @@ export class RootDetectionModal extends PureComponent {
hideModal: PropTypes.func.isRequired,
/** @ignore */
t: PropTypes.func.isRequired,
- /** Modal background color */
- backgroundColor: PropTypes.string.isRequired,
- /** Modal text color */
- textColor: PropTypes.object.isRequired,
- /** Modal border color */
- borderColor: PropTypes.object.isRequired,
- /** Modal warning text color */
- warningColor: PropTypes.object.isRequired,
+ /** @ignore */
+ theme: PropTypes.object.isRequired,
};
componentDidMount() {
@@ -58,26 +54,24 @@ export class RootDetectionModal extends PureComponent {
}
render() {
- const { t, backgroundColor, textColor, borderColor, warningColor } = this.props;
+ const { t, theme: { body, negative } } = this.props;
+ const textColor = { color: body.color };
return (
-
-
- {t('warning')}
-
- {t('appearsRooted')}
- {t('securityRisk')}
- {t('continueDepsiteRisk')}
-
- this.props.closeApp()}
- onRightButtonPress={() => this.props.hideModal()}
- leftText={t('global:no')}
- rightText={t('global:yes')}
- buttonWidth={{ width: width / 3.2 }}
- containerWidth={{ width: width / 1.4 }}
- />
-
-
+ this.props.closeApp()}
+ onRightButtonPress={() => this.props.hideModal()}
+ leftButtonText={t('no')}
+ rightButtonText={t('yes')}
+ >
+ {t('warning')}
+
+
+ {t('appearsRooted')}
+
+ {t('securityRisk')}
+ {t('continueDepsiteRisk')}
+
);
}
}
diff --git a/src/mobile/src/ui/components/RouteMonitor.js b/src/mobile/src/ui/components/RouteMonitor.js
deleted file mode 100644
index 626000307b..0000000000
--- a/src/mobile/src/ui/components/RouteMonitor.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { Navigation } from 'react-native-navigation';
-import { setRoute } from 'shared-modules/actions/ui';
-import { connect } from 'react-redux';
-
-export default function RouteMonitor(C) {
- class EnhancedComponent extends Component {
- static propTypes = {
- /** @ignore */
- setRoute: PropTypes.func.isRequired,
- };
-
- componentWillMount() {
- Navigation.events().registerComponentDidAppearListener((componentId) => {
- if (componentId.componentName) {
- this.props.setRoute(componentId.componentName);
- }
- });
- }
-
- render() {
- return ;
- }
- }
-
- const mapDispatchToProps = {
- setRoute,
- };
-
- return connect(null, mapDispatchToProps)(EnhancedComponent);
-}
diff --git a/src/mobile/src/ui/components/SafeAreaView.js b/src/mobile/src/ui/components/SafeAreaView.js
index 07339d9eb9..d44adaef01 100644
--- a/src/mobile/src/ui/components/SafeAreaView.js
+++ b/src/mobile/src/ui/components/SafeAreaView.js
@@ -1,12 +1,11 @@
import React, { Component } from 'react';
-import { View } from 'react-native';
import SafeAreaView from 'react-native-safe-area-view';
import PropTypes from 'prop-types';
import { Navigation } from 'react-native-navigation';
import { connect } from 'react-redux';
import hoistNonReactStatics from 'hoist-non-react-statics';
import { getBackgroundColor } from 'ui/theme/general';
-import { isIPhoneFailingSafeAreaView } from 'libs/device';
+import { width, height } from 'libs/dimensions';
export default function withSafeAreaView(WrappedComponent) {
class EnhancedComponent extends Component {
@@ -15,6 +14,8 @@ export default function withSafeAreaView(WrappedComponent) {
theme: PropTypes.object.isRequired,
/** @ignore */
inactive: PropTypes.bool.isRequired,
+ /** @ignore */
+ isModalActive: PropTypes.bool.isRequired,
};
constructor(props) {
@@ -36,22 +37,12 @@ export default function withSafeAreaView(WrappedComponent) {
return (
- {isIPhoneFailingSafeAreaView && (
-
- )}
);
}
@@ -60,6 +51,7 @@ export default function withSafeAreaView(WrappedComponent) {
const mapStateToProps = (state) => ({
theme: state.settings.theme,
inactive: state.ui.inactive,
+ isModalActive: state.ui.isModalActive,
});
return hoistNonReactStatics(connect(mapStateToProps)(EnhancedComponent), WrappedComponent);
diff --git a/src/mobile/src/ui/components/SeedInfoModal.js b/src/mobile/src/ui/components/SeedInfoModal.js
index 439244d50b..15de471305 100644
--- a/src/mobile/src/ui/components/SeedInfoModal.js
+++ b/src/mobile/src/ui/components/SeedInfoModal.js
@@ -1,34 +1,37 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
+import { Text, StyleSheet } from 'react-native';
import { withNamespaces, Trans } from 'react-i18next';
import { MAX_SEED_LENGTH } from 'shared-modules/libs/iota/utils';
import { Styling } from 'ui/theme/general';
-import InfoBox from 'ui/components/InfoBox';
-import { width, height } from 'libs/dimensions';
+import { height, width } from 'libs/dimensions';
+import { Icon } from 'ui/theme/icons';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
- infoTextLight: {
+ questionText: {
+ color: 'white',
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize6,
+ textAlign: 'center',
+ backgroundColor: 'transparent',
+ },
+ infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
+ textAlign: 'center',
backgroundColor: 'transparent',
+ width: width - width / 6,
},
infoTextBold: {
fontFamily: 'SourceSansPro-Bold',
fontSize: Styling.fontSize3,
backgroundColor: 'transparent',
+ textAlign: 'center',
},
- okButton: {
- borderWidth: 1.2,
- borderRadius: Styling.borderRadius,
- width: width / 2.7,
- height: height / 14,
- alignItems: 'center',
- justifyContent: 'space-around',
- },
- okText: {
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
+ icon: {
+ opacity: 0.6,
+ paddingVertical: height / 20,
backgroundColor: 'transparent',
},
});
@@ -44,43 +47,26 @@ export class SeedInfoModal extends PureComponent {
};
render() {
- const { t, theme: { body, primary } } = this.props;
+ const { t, theme: { body } } = this.props;
const textColor = { color: body.color };
return (
-
-
-
- {t('walletSetup:seedExplanation', { maxLength: MAX_SEED_LENGTH })}
-
-
-
- You can use it to access your funds from
- any wallet
- , on
- any device
-
- . But if you lose your seed, you also lose your IOTA.
-
-
-
-
- this.props.hideModal()}>
-
-
- {t('global:okay')}
-
-
-
-
-
- }
- />
-
+ this.props.hideModal()} buttonText={t('okay')}>
+ {t('newSeedSetup:whatIsASeed')}
+
+
+ {t('walletSetup:seedExplanation', { maxLength: MAX_SEED_LENGTH })}
+
+
+
+ You can use it to access your funds from
+ any wallet
+ , on
+ any device
+ . But if you lose your seed, you also lose your IOTA.
+
+
+
);
}
}
diff --git a/src/mobile/src/ui/components/SeedPicker.js b/src/mobile/src/ui/components/SeedPicker.js
index 05b97c0227..737a443c5a 100644
--- a/src/mobile/src/ui/components/SeedPicker.js
+++ b/src/mobile/src/ui/components/SeedPicker.js
@@ -79,11 +79,15 @@ export default class SeedPicker extends Component {
/** @ignore */
seed: PropTypes.string.isRequired,
/** Callback for value change event */
- onValueChange: PropTypes.func.isRequired,
+ onValueChange: PropTypes.func,
/** @ignore */
theme: PropTypes.object.isRequired,
};
+ static defaultProps = {
+ onValueChange: () => {},
+ };
+
constructor(props, context) {
super(props, context);
this.state = {
diff --git a/src/mobile/src/ui/components/SeedVaultExportComponent.js b/src/mobile/src/ui/components/SeedVaultExportComponent.js
index a0e2346832..6c6b5d5583 100644
--- a/src/mobile/src/ui/components/SeedVaultExportComponent.js
+++ b/src/mobile/src/ui/components/SeedVaultExportComponent.js
@@ -1,8 +1,8 @@
-import map from 'lodash/map';
+import values from 'lodash/values';
import isEqual from 'lodash/isEqual';
import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import { Animated, Text, View, StyleSheet, Keyboard } from 'react-native';
+import { Animated, Text, View, StyleSheet, Keyboard, Easing } from 'react-native';
import { connect } from 'react-redux';
import { withNamespaces } from 'react-i18next';
import { generateAlert } from 'shared-modules/actions/alerts';
@@ -25,7 +25,6 @@ import PasswordFields from './PasswordFields';
const steps = [
'isValidatingWalletPassword',
'isViewingGeneralInfo',
- 'isViewingPasswordInfo',
'isSettingPassword',
'isExporting',
'isSelectingSaveMethodAndroid',
@@ -53,7 +52,7 @@ const styles = StyleSheet.create({
color: 'white',
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
});
@@ -69,7 +68,7 @@ class SeedVaultExportComponent extends Component {
/** @ignore */
generateAlert: PropTypes.func.isRequired,
/** Name for selected account */
- selectedAccountName: PropTypes.string.isRequired,
+ selectedAccountName: PropTypes.string,
/** Type for selected account */
selectedAccountMeta: PropTypes.object.isRequired,
/** Returns to page before starting the Seed Vault Export process */
@@ -105,7 +104,7 @@ class SeedVaultExportComponent extends Component {
componentWillMount() {
const { isAuthenticated, onRef } = this.props;
onRef(this);
- this.animatedValue = new Animated.Value(isAuthenticated ? width * 1.5 : width * 2.5);
+ this.animatedValue = new Animated.Value(isAuthenticated ? width : width * 2);
nodejs.start('main.js');
nodejs.channel.addListener(
'message',
@@ -145,13 +144,12 @@ class SeedVaultExportComponent extends Component {
.replace(/[-:]/g, '')
.replace('T', '-')}.kdbx`;
this.setState({ path });
- const vaultParsed = map(vault.split(','), (num) => parseInt(num));
RNFetchBlob.fs.exists(path).then((fileExists) => {
if (fileExists) {
RNFetchBlob.fs.unlink(path);
}
RNFetchBlob.fs
- .createFile(path, vaultParsed, 'ascii')
+ .createFile(path, values(vault), 'ascii')
.then(() => {
if (this.state.saveToDownloadFolder) {
return this.onExportSuccess();
@@ -179,8 +177,6 @@ class SeedVaultExportComponent extends Component {
if (step === 'isValidatingWalletPassword') {
return this.validateWalletPassword();
} else if (step === 'isViewingGeneralInfo') {
- return this.navigateToStep('isViewingPasswordInfo');
- } else if (step === 'isViewingPasswordInfo') {
return this.navigateToStep('isSettingPassword');
} else if (step === 'isExporting') {
return this.navigateToStep('isSelectingSaveMethodAndroid');
@@ -238,10 +234,8 @@ class SeedVaultExportComponent extends Component {
*/
onBackPress() {
const { step } = this.props;
- if (step === 'isViewingPasswordInfo') {
+ if (step === 'isSettingPassword') {
return this.navigateToStep('isViewingGeneralInfo');
- } else if (step === 'isSettingPassword') {
- return this.navigateToStep('isViewingPasswordInfo');
} else if (step === 'isExporting') {
return this.navigateToStep('isSettingPassword');
} else if (step === 'isSelectingSaveMethodAndroid') {
@@ -300,24 +294,23 @@ class SeedVaultExportComponent extends Component {
*/
navigateToStep(nextStep) {
const stepIndex = steps.indexOf(nextStep);
- const animatedValue = [2.5, 1.5, 0.5, -0.5, -1.5, -2.5];
- Animated.spring(this.animatedValue, {
+ const animatedValue = [2, 1, 0, -1, -2];
+ Animated.timing(this.animatedValue, {
toValue: animatedValue[stepIndex] * width,
- velocity: 3,
- tension: 2,
- friction: 8,
+ duration: 500,
+ easing: Easing.bezier(0.25, 1, 0.25, 1),
}).start();
this.props.setProgressStep(nextStep);
}
render() {
- const { t, theme } = this.props;
+ const { t, theme, isAuthenticated } = this.props;
const { password, reentry } = this.state;
const textColor = { color: theme.body.color };
return (
-
+
{t('login:enterPassword')}
@@ -336,23 +329,21 @@ class SeedVaultExportComponent extends Component {
/>
- {t('seedVaultExplanation')}}
- />
-
-
- {t('seedVaultKeyExplanation')}}
- />
+
+ {t('seedVaultExplanation')}
+
+
+ {t('seedVaultKeyExplanation')}
+
{
this.passwordFields = ref;
}}
onAcceptPassword={() => this.navigateToStep('isExporting')}
+ passwordLabel={t('twoFA:key')}
+ reentryLabel={t('retypeKey')}
password={password}
reentry={reentry}
setPassword={(password) => this.setState({ password })}
@@ -360,47 +351,48 @@ class SeedVaultExportComponent extends Component {
/>
- {t('seedVaultWarning')}}
- />
+
+ {t('seedVaultWarning')}
+
-
-
-
+
+
+
+
);
diff --git a/src/mobile/src/ui/components/SeedVaultImportComponent.js b/src/mobile/src/ui/components/SeedVaultImportComponent.js
index e9c2eae433..6e67434a31 100644
--- a/src/mobile/src/ui/components/SeedVaultImportComponent.js
+++ b/src/mobile/src/ui/components/SeedVaultImportComponent.js
@@ -8,7 +8,7 @@ import { generateAlert } from 'shared-modules/actions/alerts';
import nodejs from 'nodejs-mobile-react-native';
import RNFetchBlob from 'rn-fetch-blob';
import { withNamespaces } from 'react-i18next';
-import { width } from 'libs/dimensions';
+import { height, width } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
import { Icon } from 'ui/theme/icons';
import { isAndroid } from 'libs/device';
@@ -19,6 +19,15 @@ const styles = StyleSheet.create({
fontFamily: 'SourceSansPro-Regular',
paddingLeft: width / 70,
},
+ button: {
+ justifyContent: 'center',
+ },
+ container: {
+ flexDirection: 'row',
+ justifyContent: 'center',
+ alignItems: 'center',
+ height: height / 20,
+ },
});
export class SeedVaultImportComponent extends Component {
@@ -115,49 +124,60 @@ export class SeedVaultImportComponent extends Component {
* @method importSeedVault
*/
importSeedVault() {
- const { t } = this.props;
- (isAndroid ? this.grantPermissions() : Promise.resolve()).then(() => {
- DocumentPicker.show(
- {
- filetype: isAndroid
- ? ['application/octet-stream']
- : ['public.data', 'public.item', 'dyn.ah62d4rv4ge8003dcta'],
- },
- (error, res) => {
- if (error) {
- return this.props.generateAlert(
- 'error',
- t('global:somethingWentWrong'),
- t('global:somethingWentWrongTryAgain'),
- );
- }
- let path = res.uri;
- if (path.startsWith('file://')) {
- path = path.slice(7);
- }
- RNFetchBlob.fs
- .readFile(path, 'ascii')
- .then((data) => {
- this.setState({ seedVault: data });
- this.props.openPasswordValidationModal();
- })
- .catch(() =>
- this.props.generateAlert(
+ const { t, generateAlert } = this.props;
+ (isAndroid ? this.grantPermissions() : Promise.resolve())
+ .then(() => {
+ DocumentPicker.show(
+ {
+ filetype: isAndroid
+ ? ['application/octet-stream']
+ : ['public.data', 'public.item', 'dyn.ah62d4rv4ge8003dcta'],
+ },
+ (error, res) => {
+ if (error) {
+ return generateAlert(
'error',
- t('seedVault:seedFileError'),
- t('seedVault:seedFileErrorExplanation'),
- ),
- );
- },
- );
- });
+ t('global:somethingWentWrong'),
+ t('global:somethingWentWrongTryAgain'),
+ );
+ }
+ let path = res.uri;
+ if (path.startsWith('file://')) {
+ path = path.slice(7);
+ }
+ RNFetchBlob.fs
+ .readFile(path, 'ascii')
+ .then((data) => {
+ this.setState({ seedVault: data });
+ this.props.openPasswordValidationModal();
+ })
+ .catch(() =>
+ generateAlert(
+ 'error',
+ t('seedVault:seedFileError'),
+ t('seedVault:seedFileErrorExplanation'),
+ ),
+ );
+ },
+ );
+ })
+ .catch((err) => {
+ if (err.message === 'Read permissions not granted.') {
+ return generateAlert(
+ 'error',
+ t('receive:missingPermission'),
+ t('receive:missingPermissionExplanation'),
+ );
+ }
+ throw err;
+ });
}
render() {
const { t, theme } = this.props;
return (
- this.importSeedVault()} style={{ flex: 0.7, justifyContent: 'center' }}>
-
+ this.importSeedVault()} style={styles.button}>
+
{t('seedVault:importSeedVault')}
diff --git a/src/mobile/src/ui/components/SingleFooterButton.js b/src/mobile/src/ui/components/SingleFooterButton.js
index 41c6128d26..c2c37c5505 100644
--- a/src/mobile/src/ui/components/SingleFooterButton.js
+++ b/src/mobile/src/ui/components/SingleFooterButton.js
@@ -1,4 +1,5 @@
import merge from 'lodash/merge';
+import debounce from 'lodash/debounce';
import PropTypes from 'prop-types';
import React, { PureComponent } from 'react';
import { connect } from 'react-redux';
@@ -29,20 +30,28 @@ class SingleFooterButton extends PureComponent {
onButtonPress: PropTypes.func.isRequired,
/** Optional styles to override the default ones */
buttonStyle: PropTypes.object,
+ /** Timeframe to debounce button presses */
+ debounceTime: PropTypes.number,
};
static defaultProps = {
buttonStyle: {},
rightButtonStyle: {},
+ debounceTime: 300,
};
+ constructor(props) {
+ super(props);
+ this.debounce = debounce(props.onButtonPress, props.debounceTime, { leading: true, trailing: false });
+ }
+
render() {
- const { buttonText, onButtonPress, buttonTestID, buttonStyle, theme: { primary } } = this.props;
+ const { theme: { primary }, buttonText, buttonTestID, buttonStyle } = this.props;
return (
-
+
+ completeTransitionTask()} buttonText={t('done')}>
+ {t('global:isYourBalanceCorrect')}
+
+ {t('global:ifYourBalanceIsNotCorrect')}
+
+ {t('global:headToAdvancedSettingsForTransition')}
+
+
);
}
}
diff --git a/src/mobile/src/ui/components/SnapshotTransitionModalContent.js b/src/mobile/src/ui/components/SnapshotTransitionModalContent.js
deleted file mode 100644
index e888d8d928..0000000000
--- a/src/mobile/src/ui/components/SnapshotTransitionModalContent.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import React, { PureComponent } from 'react';
-import tinycolor from 'tinycolor2';
-import PropTypes from 'prop-types';
-import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
-import { Styling } from 'ui/theme/general';
-import { width, height } from 'libs/dimensions';
-import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import InfoBox from './InfoBox';
-
-const styles = StyleSheet.create({
- infoTextBold: {
- fontFamily: 'SourceSansPro-Bold',
- fontSize: Styling.fontSize4,
- textAlign: 'left',
- backgroundColor: 'transparent',
- },
- infoTextLight: {
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
- textAlign: 'left',
- backgroundColor: 'transparent',
- },
- button: {
- borderWidth: 1.2,
- borderRadius: Styling.borderRadius,
- height: height / 14,
- width: width / 2.7,
- alignItems: 'center',
- justifyContent: 'center',
- },
- buttonText: {
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
- backgroundColor: 'transparent',
- textAlign: 'center',
- },
-});
-
-export default class SnapshotTransitionModalContent extends PureComponent {
- static propTypes = {
- /** @ignore */
- theme: PropTypes.object.isRequired,
- /** @ignore */
- t: PropTypes.func.isRequired,
- /** Container element callback function */
- onPress: PropTypes.func.isRequired,
- };
-
- componentDidMount() {
- leaveNavigationBreadcrumb('SnapshotTransitionModalContent');
- }
-
- render() {
- const { theme, t, onPress } = this.props;
-
- const textColor = { color: theme.body.color };
- const isBgLight = tinycolor(theme.body.bg).isLight();
- const buttonTextColor = { color: isBgLight ? theme.primary.body : theme.primary.color };
- const borderColor = { borderColor: isBgLight ? 'transparent' : theme.primary.color };
- const backgroundColor = { backgroundColor: isBgLight ? theme.primary.color : 'transparent' };
-
- return (
-
-
-
- {t('global:isYourBalanceCorrect')}
-
-
- {t('global:ifYourBalanceIsNotCorrect')}
-
-
- {t('global:headToAdvancedSettingsForTransition')}
-
-
-
-
- {t('global:okay')}
-
-
-
-
- }
- />
-
- );
- }
-}
diff --git a/src/mobile/src/ui/components/StatefulDropdownAlert.js b/src/mobile/src/ui/components/StatefulDropdownAlert.js
index 25b179bd37..01315d8b53 100644
--- a/src/mobile/src/ui/components/StatefulDropdownAlert.js
+++ b/src/mobile/src/ui/components/StatefulDropdownAlert.js
@@ -1,3 +1,4 @@
+import last from 'lodash/last';
import { withNamespaces } from 'react-i18next';
import React, { Component } from 'react';
import PropTypes from 'prop-types';
@@ -6,7 +7,6 @@ import { connect } from 'react-redux';
import tinycolor from 'tinycolor2';
import DropdownAlert from 'react-native-dropdownalert/DropdownAlert';
import { width, height } from 'libs/dimensions';
-import { isAndroid } from 'libs/device';
import { Styling, getBackgroundColor } from 'ui/theme/general';
import { rgbToHex } from 'shared-modules/libs/utils';
@@ -34,7 +34,7 @@ class StatefulDropdownAlert extends Component {
/** @ignore */
theme: PropTypes.object.isRequired,
/** @ignore */
- currentRoute: PropTypes.string.isRequired,
+ navStack: PropTypes.array,
/** @ignore */
forceUpdate: PropTypes.bool.isRequired,
/** @ignore */
@@ -55,7 +55,7 @@ class StatefulDropdownAlert extends Component {
}
componentWillReceiveProps(newProps) {
- const { alerts, currentRoute } = this.props;
+ const { alerts, navStack } = this.props;
const hasAnAlert = newProps.alerts.category && newProps.alerts.title && newProps.alerts.message;
const alertIsNew = alerts.message !== newProps.alerts.message;
const alertIsNotEmpty = newProps.alerts.message !== '';
@@ -65,7 +65,7 @@ class StatefulDropdownAlert extends Component {
this.dropdown.alertWithType(newProps.alerts.category, newProps.alerts.title, newProps.alerts.message);
}
}
- if (currentRoute !== newProps.currentRoute && this.dropdown) {
+ if (last(navStack) !== last(newProps.navStack) && this.dropdown) {
this.dropdown.closeDirectly(false);
}
this.disposeIfConnectionIsRestored(newProps);
@@ -105,7 +105,7 @@ class StatefulDropdownAlert extends Component {
* @returns {string}
*/
getStatusBarStyle() {
- return tinycolor(getBackgroundColor(this.props.currentRoute, this.props.theme)).isDark()
+ return tinycolor(getBackgroundColor(last(this.props.navStack), this.props.theme)).isDark()
? 'light-content'
: 'dark-content';
}
@@ -146,7 +146,7 @@ class StatefulDropdownAlert extends Component {
render() {
const { closeInterval } = this.props.alerts;
- const { onRef, theme: { positive, negative }, currentRoute, dismissAlert, forceUpdate } = this.props;
+ const { onRef, theme: { positive, negative }, navStack, dismissAlert, forceUpdate } = this.props;
const closeAfter = closeInterval;
const statusBarStyle = this.getStatusBarStyle();
return (
@@ -188,12 +188,11 @@ class StatefulDropdownAlert extends Component {
alignSelf: 'center',
}}
inactiveStatusBarStyle={statusBarStyle}
- inactiveStatusBarBackgroundColor={this.getStatusBarColor(currentRoute)}
+ inactiveStatusBarBackgroundColor={this.getStatusBarColor(last(navStack))}
onCancel={dismissAlert}
onClose={dismissAlert}
closeInterval={closeAfter}
tapToCloseEnabled={this.props.hasConnection && forceUpdate === false}
- translucent={isAndroid}
/>
);
}
@@ -205,7 +204,7 @@ const mapStateToProps = (state) => ({
shouldUpdate: state.wallet.shouldUpdate,
forceUpdate: state.wallet.forceUpdate,
theme: state.settings.theme,
- currentRoute: state.ui.currentRoute,
+ navStack: state.wallet.navStack,
});
const mapDispatchToProps = { dismissAlert };
diff --git a/src/mobile/src/ui/components/Tab.js b/src/mobile/src/ui/components/Tab.js
index 48f2321c02..85dd6a71e2 100644
--- a/src/mobile/src/ui/components/Tab.js
+++ b/src/mobile/src/ui/components/Tab.js
@@ -1,12 +1,18 @@
-import React, { PureComponent } from 'react';
+import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import { StyleSheet, Text, TouchableWithoutFeedback, View } from 'react-native';
+import { Animated, StyleSheet, TouchableWithoutFeedback, View } from 'react-native';
import { Icon } from 'ui/theme/icons';
import { width, height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
import { isIPhoneX } from 'libs/device';
const styles = StyleSheet.create({
+ container: {
+ height: width / 8.5,
+ width: width / 5,
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ },
button: {
width: width / 5,
height: parseInt(width / 5 + height / (isIPhoneX ? 120 : 160)),
@@ -18,14 +24,12 @@ const styles = StyleSheet.create({
iconTitle: {
fontWeight: 'bold',
textAlign: 'center',
- paddingTop: height / 80,
fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize1,
backgroundColor: 'transparent',
},
});
-class Tab extends PureComponent {
+class Tab extends Component {
static propTypes = {
/** Tab icon name */
icon: PropTypes.string.isRequired,
@@ -46,6 +50,39 @@ class Tab extends PureComponent {
isActive: false,
};
+ constructor(props) {
+ super(props);
+ this.iconSize = new Animated.Value(props.isActive ? width / 14 : width / 18);
+ this.fontSize = new Animated.Value(props.isActive ? width / 42 : Styling.fontSize1);
+ }
+
+ componentWillReceiveProps(newProps) {
+ if (!this.props.isActive && newProps.isActive) {
+ Animated.parallel([
+ Animated.timing(this.iconSize, {
+ toValue: width / 14,
+ duration: 150,
+ }),
+ Animated.timing(this.fontSize, {
+ toValue: width / 42,
+ duration: 150,
+ }),
+ ]).start();
+ }
+ if (this.props.isActive && !newProps.isActive) {
+ Animated.parallel([
+ Animated.timing(this.iconSize, {
+ toValue: width / 18,
+ duration: 150,
+ }),
+ Animated.timing(this.fontSize, {
+ toValue: Styling.fontSize1,
+ duration: 150,
+ }),
+ ]).start();
+ }
+ }
+
getPosition() {
const { name } = this.props;
const names = ['balance', 'send', 'receive', 'history', 'settings'];
@@ -53,29 +90,26 @@ class Tab extends PureComponent {
}
render() {
- const { onPress, icon, text, theme: { bar, primary }, isActive } = this.props;
+ const { onPress, icon, text, theme: { bar } } = this.props;
+ const AnimatedIcon = Animated.createAnimatedComponent(Icon);
+ AnimatedIcon.displayName = 'AnimatedIcon';
return (
-
-
-
- {text}
-
+
+
+
+
+ {text}
+
+
);
diff --git a/src/mobile/src/ui/components/TabContent.js b/src/mobile/src/ui/components/TabContent.js
index 0084b44b67..581730da21 100644
--- a/src/mobile/src/ui/components/TabContent.js
+++ b/src/mobile/src/ui/components/TabContent.js
@@ -1,6 +1,7 @@
import React, { PureComponent } from 'react';
+import timer from 'react-native-timer';
import PropTypes from 'prop-types';
-import { View } from 'react-native';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { connect } from 'react-redux';
import BalanceComponent from 'ui/views/wallet/Balance';
import SendComponent from 'ui/views/wallet/Send';
@@ -17,37 +18,101 @@ const routeToComponent = {
};
class TabContent extends PureComponent {
+ constructor(props) {
+ super(props);
+ this.state = {
+ nextRoute: props.currentRoute,
+ };
+ }
+
+ componentWillReceiveProps(newProps) {
+ if (this.props.currentRoute !== newProps.currentRoute) {
+ this.animationOutType = this.getAnimation(this.props.currentRoute, newProps.currentRoute, false);
+ this.animationInType = this.getAnimation(this.props.currentRoute, newProps.currentRoute);
+ timer.setTimeout(
+ 'delayRouteChange' + newProps.currentRoute,
+ () => this.setState({ nextRoute: newProps.currentRoute }),
+ 150,
+ );
+ }
+
+ if (this.props.inactive && newProps.inactive) {
+ this.animationInType = ['fadeIn'];
+ }
+ }
+
+ componentWillUnmount() {
+ timer.clearTimeout('delaySettingChange' + this.props.currentRoute);
+ }
+
+ /**
+ * Gets settings animation according to current and next home route
+ *
+ * @param {string} currentHomeRoute
+ * @param {string} nextHomeRoute
+ * @param {bool} animationIn
+ * @returns {object}
+ */
+ getAnimation(currentHomeRoute, nextHomeRoute, animationIn = true) {
+ const routes = ['balance', 'send', 'receive', 'history', 'settings'];
+ if (routes.indexOf(currentHomeRoute) < routes.indexOf(nextHomeRoute)) {
+ if (animationIn) {
+ return ['slideInRightSmall', 'fadeIn'];
+ }
+ return ['slideOutLeftSmall', 'fadeOut'];
+ } else if (routes.indexOf(currentHomeRoute) > routes.indexOf(nextHomeRoute)) {
+ if (animationIn) {
+ return ['slideInLeftSmall', 'fadeIn'];
+ }
+ return ['slideOutRightSmall', 'fadeOut'];
+ }
+ }
+
render() {
- const { currentRoute, isKeyboardActive } = this.props;
- const Content = routeToComponent[currentRoute];
+ const { isKeyboardActive } = this.props;
+ const { nextRoute } = this.state;
+ const Content = routeToComponent[nextRoute];
return (
-
+
this.props.handleCloseTopBar()}
isKeyboardActive={isKeyboardActive}
onTabSwitch={(name) => this.props.onTabSwitch(name)}
/>
-
+
);
}
}
const mapStateToProps = (state) => ({
currentRoute: state.home.childRoute,
+ inactive: state.ui.inactive,
+ isKeyboardActive: state.ui.isKeyboardActive,
});
TabContent.propTypes = {
- /** Currently selected home screen route */
+ /** @ignore */
currentRoute: PropTypes.oneOf(Object.keys(routeToComponent)),
/** onTabSwitch callback function
* @param {string} name - Next route name
*/
onTabSwitch: PropTypes.func.isRequired,
+ /** Closes topbar */
handleCloseTopBar: PropTypes.func.isRequired,
- /** Determines whether keyboard is open on iOS */
+ /** @ignore */
+
isKeyboardActive: PropTypes.bool.isRequired,
+ /** @ignore */
+ inactive: PropTypes.bool.isRequired,
};
TabContent.defaultProps = {
diff --git a/src/mobile/src/ui/components/Tabs.js b/src/mobile/src/ui/components/Tabs.js
index ccbf278ae3..066414ec50 100644
--- a/src/mobile/src/ui/components/Tabs.js
+++ b/src/mobile/src/ui/components/Tabs.js
@@ -1,8 +1,9 @@
import React, { Component, Children, cloneElement } from 'react';
import PropTypes from 'prop-types';
-import { StyleSheet, View } from 'react-native';
+import { StyleSheet, View, Animated, Easing } from 'react-native';
import { connect } from 'react-redux';
import { isIPhoneX } from 'libs/device';
+import { Styling } from 'ui/theme/general';
import { height, width } from 'libs/dimensions';
const styles = StyleSheet.create({
@@ -23,27 +24,69 @@ const styles = StyleSheet.create({
height: height / 5,
marginTop: isIPhoneX ? height / 120 : 0,
},
+ activeTab: {
+ width: width / 5,
+ height: parseInt(width / 5 + height / (isIPhoneX ? 120 : 160)),
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderTopColor: 'transparent',
+ borderTopWidth: parseInt(height / (isIPhoneX ? 120 : 160)),
+ position: 'absolute',
+ },
});
class Tabs extends Component {
- render() {
- const { children, onPress, currentRoute, theme: { bar } } = this.props;
+ constructor(props) {
+ super(props);
+ this.activeTabPosition = new Animated.Value(this.getPosition(props.currentRoute));
+ }
+ componentWillReceiveProps(newProps) {
+ if (this.props.currentRoute !== newProps.currentRoute) {
+ this.animateActiveTab(newProps.currentRoute);
+ }
+ }
+
+ getPosition(route) {
+ const routes = ['balance', 'send', 'receive', 'history', 'settings'];
+ return routes.indexOf(route) * width / 5;
+ }
+
+ animateActiveTab(currentRoute) {
+ Animated.timing(this.activeTabPosition, {
+ toValue: this.getPosition(currentRoute),
+ duration: 150,
+ easing: Easing.bezier(0.25, 1, 0.25, 1),
+ }).start();
+ }
+
+ render() {
+ const { currentRoute, children, onPress, theme: { bar, primary } } = this.props;
const childComponents = Children.map(children, (child) =>
cloneElement(child, {
onPress: () => onPress(child.props.name),
isActive: child.props.name === currentRoute,
}),
);
-
- const tabContainer = (
+ return (
+
{childComponents}
);
-
- return tabContainer;
}
}
diff --git a/src/mobile/src/ui/components/TextWithLetterSpacing.js b/src/mobile/src/ui/components/TextWithLetterSpacing.js
index 157a16da26..fd74d2a392 100644
--- a/src/mobile/src/ui/components/TextWithLetterSpacing.js
+++ b/src/mobile/src/ui/components/TextWithLetterSpacing.js
@@ -28,7 +28,7 @@ const TextWithLetterSpacing = (props) => {
TextWithLetterSpacing.propTypes = {
/** Children content */
- children: PropTypes.string.isRequired,
+ children: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
/** Spacing for letter text */
spacing: PropTypes.number.isRequired,
/** View container styles */
diff --git a/src/mobile/src/ui/components/TopBar.js b/src/mobile/src/ui/components/TopBar.js
index e35aa15a8a..c14714478d 100644
--- a/src/mobile/src/ui/components/TopBar.js
+++ b/src/mobile/src/ui/components/TopBar.js
@@ -16,7 +16,6 @@ import {
selectAccountInfo,
} from 'shared-modules/selectors/accounts';
import {
- StatusBar,
View,
Text,
StyleSheet,
@@ -31,7 +30,7 @@ import { setPollFor } from 'shared-modules/actions/polling';
import { roundDown } from 'shared-modules/libs/utils';
import { formatValue, formatUnit } from 'shared-modules/libs/iota/utils';
import { Icon } from 'ui/theme/icons';
-import { isAndroid, isIPhoneX } from 'libs/device';
+import { isIPhoneX } from 'libs/device';
import { Styling } from 'ui/theme/general';
const { height, width } = Dimensions.get('window');
@@ -39,7 +38,6 @@ const { height, width } = Dimensions.get('window');
const styles = StyleSheet.create({
container: {
width,
- elevation: 7,
flexDirection: 'row',
justifyContent: 'center',
alignItems: 'center',
@@ -64,23 +62,29 @@ const styles = StyleSheet.create({
childView: {
height: height / 14,
width,
- paddingHorizontal: width / 18,
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
+ paddingHorizontal: width / 27,
},
centralView: {
alignItems: 'center',
},
- chevronWrapper: {
+ barWrapper: {
+ width,
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ balanceWrapper: {
justifyContent: 'center',
alignItems: 'center',
- marginRight: width / 18,
+ width: width - width / 4.5,
},
- notificationContainer: {
+ iconWrapper: {
justifyContent: 'center',
alignItems: 'center',
- marginLeft: width / 18,
+ width: width / 9,
},
disabled: {
color: '#a9a9a9',
@@ -91,10 +95,6 @@ const styles = StyleSheet.create({
scrollViewContainer: {
maxHeight: height,
},
- empty: {
- height: width / 18,
- width: width / 18,
- },
});
class TopBar extends Component {
@@ -135,7 +135,7 @@ class TopBar extends Component {
clearLog: PropTypes.func.isRequired,
/** Top bar height */
topBarHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),
- /** Determines if on screen keyboard is active */
+ /** @ignore */
isKeyboardActive: PropTypes.bool.isRequired,
/** @ignore */
isTransitioning: PropTypes.bool.isRequired,
@@ -149,6 +149,8 @@ class TopBar extends Component {
currentRoute: PropTypes.string.isRequired,
/** @ignore */
toggleModalActivity: PropTypes.func.isRequired,
+ /** @ignore */
+ isModalActive: PropTypes.bool.isRequired,
};
static filterSeedTitles(accountNames, currentSeedIndex) {
@@ -251,25 +253,24 @@ class TopBar extends Component {
isSyncing,
isTransitioning,
isFetchingLatestAccountInfo,
+ isModalActive,
} = this.props;
return (
isGeneratingReceiveAddress ||
isSendingTransfer ||
isSyncing ||
isTransitioning ||
- isFetchingLatestAccountInfo
+ isFetchingLatestAccountInfo ||
+ isModalActive
);
}
showModal() {
- const { isTransitioning, theme: { bar }, notificationLog } = this.props;
+ const { isTransitioning, theme, notificationLog } = this.props;
if (!isTransitioning) {
this.props.toggleModalActivity('notificationLog', {
- backgroundColor: bar.bg,
hideModal: () => this.hideModal(),
- textColor: { color: bar.color },
- borderColor: { borderColor: bar.color },
- barColor: bar.color,
+ theme,
notificationLog,
clearLog: this.props.clearLog,
});
@@ -314,7 +315,7 @@ class TopBar extends Component {
const shouldDisable = this.shouldDisable();
const baseContent = (
-
+
{
if (!shouldDisable) {
@@ -326,54 +327,32 @@ class TopBar extends Component {
>
{(!isKeyboardActive &&
!minimised && (
-
- {hasNotifications && !isKeyboardActive && mode === 'Advanced' ? (
- this.showModal()}
- >
-
-
-
-
- ) : (
-
-
-
- )}
-
+
+
+
+ {(hasNotifications &&
+ !isKeyboardActive &&
+ mode === 'Advanced' && (
+ this.showModal()}
+ style={[styles.iconWrapper, { flex: 1, alignItems: 'flex-end' }]}
+ >
+
+
+ )) || }
+
+
+
{selectedTitle}
@@ -393,26 +372,20 @@ class TopBar extends Component {
{selectedSubtitle}
-
-
- {hasMultipleSeeds ? (
-
+
+
+
+ {(hasMultipleSeeds && (
-
- ) : (
-
- )}
+ )) || }
+
)) || }
@@ -554,6 +527,8 @@ const mapStateToProps = (state) => ({
notificationLog: state.alerts.notificationLog,
isFetchingLatestAccountInfo: state.ui.isFetchingAccountInfo,
currentRoute: state.home.childRoute,
+ isKeyboardActive: state.ui.isKeyboardActive,
+ isModalActive: state.ui.isModalActive,
});
const mapDispatchToProps = {
diff --git a/src/mobile/src/ui/components/TransactionHistoryModal.js b/src/mobile/src/ui/components/TransactionHistoryModal.js
new file mode 100644
index 0000000000..fd09841663
--- /dev/null
+++ b/src/mobile/src/ui/components/TransactionHistoryModal.js
@@ -0,0 +1,433 @@
+import assign from 'lodash/assign';
+import React, { PureComponent } from 'react';
+import SafeAreaView from 'react-native-safe-area-view';
+import PropTypes from 'prop-types';
+import { Clipboard, TouchableOpacity, View, Text, StyleSheet, FlatList, ScrollView, StatusBar } from 'react-native';
+import { formatModalTime, convertUnixTimeToJSDate } from 'shared-modules/libs/date';
+import { Styling } from 'ui/theme/general';
+import { width, height } from 'libs/dimensions';
+import { isAndroid, locale, timezone } from 'libs/device';
+import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
+import DualFooterButtons from './DualFooterButtons';
+import SingleFooterButton from './SingleFooterButton';
+
+const contentWidth = width - width / 10;
+
+const styles = StyleSheet.create({
+ container: {
+ alignItems: 'center',
+ width,
+ justifyContent: 'flex-end',
+ height,
+ flex: 1,
+ },
+ modalContainer: {
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ width,
+ height: height - Styling.topbarHeight,
+ },
+ historyContent: {
+ width: contentWidth,
+ justifyContent: 'center',
+ alignItems: 'flex-start',
+ },
+ statusContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ statusText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Regular',
+ fontSize: Styling.fontSize6,
+ },
+ unitText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Regular',
+ fontSize: Styling.fontSize4,
+ marginTop: height / 100,
+ },
+ confirmationWrapper: {
+ alignItems: 'center',
+ marginBottom: height / 40,
+ width: contentWidth,
+ },
+ bundleWrapper: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ bundleInnerWrapper: {
+ flex: 7,
+ },
+ bundleHash: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceCodePro-Medium',
+ fontSize: Styling.fontSize2,
+ marginTop: 2,
+ width: width / 1.4,
+ },
+ bundleSeparator: {
+ flex: 1,
+ },
+ confirmation: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Regular',
+ fontSize: Styling.fontSize2,
+ paddingRight: width / 25,
+ },
+ timestamp: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Regular',
+ fontSize: Styling.fontSize3,
+ paddingTop: height / 50,
+ },
+ heading: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Bold',
+ fontSize: Styling.fontSize3,
+ paddingTop: height / 50,
+ paddingBottom: height / 300,
+ },
+ text: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceCodePro-Medium',
+ fontSize: Styling.fontSize1,
+ },
+ messageText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceCodePro-Medium',
+ fontSize: Styling.fontSize1,
+ },
+ addressRowContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ paddingVertical: 2,
+ },
+ addressRowTopWrapper: {
+ flex: 4.7,
+ },
+ addressRowBottomWrapper: {
+ flex: 1.3,
+ },
+ addressRowText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceCodePro-Medium',
+ fontSize: Styling.fontSize1,
+ textAlign: 'left',
+ width: width / 1.4,
+ height: height / 20,
+ },
+ addressRowValue: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Bold',
+ fontSize: Styling.fontSize1,
+ textAlign: 'right',
+ },
+});
+
+export default class TransactionHistoryModal extends PureComponent {
+ static propTypes = {
+ /** Container element press event callback function */
+ hideModal: PropTypes.func.isRequired,
+ /** @ignore */
+ t: PropTypes.func.isRequired,
+ /** Promotes bundle
+ * @param {string} bundle - bundle hash
+ */
+ promote: PropTypes.func.isRequired,
+ /** Bundle outputs */
+ outputs: PropTypes.array.isRequired,
+ /** Determines whether transaction is sent or received */
+ incoming: PropTypes.bool.isRequired,
+ /** Transaction boolean confirmation state */
+ persistence: PropTypes.bool.isRequired,
+ /** Currently selected mode */
+ mode: PropTypes.oneOf(['Advanced', 'Standard']).isRequired,
+ /** Transaction value */
+ value: PropTypes.number.isRequired,
+ /** Transaction value without rounding */
+ fullValue: PropTypes.number.isRequired,
+ /** Transaction unit */
+ unit: PropTypes.string.isRequired,
+ /** Transaction time */
+ time: PropTypes.number.isRequired,
+ /** Transaction message */
+ message: PropTypes.string,
+ /** Transaction bundle hash */
+ bundle: PropTypes.string.isRequired,
+ /** Determines whether the modal buttons should disable onPress event */
+ disableWhen: PropTypes.bool.isRequired,
+ /** Transaction addresses */
+ relevantAddresses: PropTypes.arrayOf(
+ PropTypes.shape({
+ address: PropTypes.string.isRequired,
+ value: PropTypes.number.isRequired,
+ unit: PropTypes.string.isRequired,
+ }),
+ ).isRequired,
+ /** @ignore */
+ generateAlert: PropTypes.func.isRequired,
+ /** Content styles */
+ style: PropTypes.shape({
+ titleColor: PropTypes.string.isRequired,
+ defaultTextColor: PropTypes.shape({ color: PropTypes.string.isRequired }).isRequired,
+ backgroundColor: PropTypes.string.isRequired,
+ }).isRequired,
+ /** Determines whether the current bundle is being promoted */
+ bundleIsBeingPromoted: PropTypes.bool.isRequired,
+ /* eslint-disable react/no-unused-prop-types */
+ /** Checks if the bundle hash belongs to a failed transaction
+ * @param {string} bundleHash
+ */
+ isFailedTransaction: PropTypes.func.isRequired,
+ /** @ignore */
+ retryFailedTransaction: PropTypes.func.isRequired,
+ /** @ignore */
+ isRetryingFailedTransaction: PropTypes.bool.isRequired,
+ };
+
+ static defaultProps = {
+ message: 'Empty',
+ };
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ addressesScrollable: false,
+ messagesScrollable: false,
+ };
+ }
+
+ componentDidMount() {
+ leaveNavigationBreadcrumb('HistoryModalContent');
+ }
+
+ setAddressesScrollable(y) {
+ if (y >= height / 5.3) {
+ return this.setState({ addressesScrollable: true });
+ }
+ this.setState({ addressesScrollable: false });
+ }
+
+ setMessagesScrollable(y) {
+ if (y >= height / 7.2) {
+ return this.setState({ messagesScrollable: true });
+ }
+ this.setState({ messagesScrollable: false });
+ }
+
+ copy(item, type) {
+ const { t } = this.props;
+
+ const types = {
+ bundle: [t('bundleHashCopied'), t('bundleHashCopiedExplanation')],
+ address: [t('addressCopied'), t('addressCopiedExplanation')],
+ message: [t('messageCopied'), t('messageCopiedExplanation')],
+ };
+
+ Clipboard.setString(item);
+
+ if (types[type]) {
+ this.props.generateAlert('success', ...types[type]);
+ }
+ }
+
+ computeStatusText(outputs, persistence, incoming) {
+ const { t } = this.props;
+ const receiveStatus = persistence ? t('global:youReceived') : t('global:receiving');
+ const sendStatus = persistence ? t('global:youSent') : t('global:sending');
+ return incoming ? receiveStatus : sendStatus;
+ }
+
+ renderAddressRow(address) {
+ const { style } = this.props;
+
+ return (
+
+ this.copy(address.address, 'address')}
+ style={styles.addressRowTopWrapper}
+ >
+
+ {address.address}
+
+
+
+
+ {address.value} {address.unit}
+
+
+
+ );
+ }
+
+ renderAddresses() {
+ const { relevantAddresses } = this.props;
+ return (
+ index}
+ renderItem={({ item }) => this.renderAddressRow(item)}
+ ItemSeparatorComponent={() => }
+ scrollEnabled={false}
+ />
+ );
+ }
+
+ renderButton(buttonProps) {
+ const { disableWhen, t, hideModal, bundleIsBeingPromoted, isRetryingFailedTransaction } = this.props;
+ const opacity = { opacity: disableWhen ? (isAndroid ? 0.3 : 0.2) : 1 };
+ const defaultProps = {
+ onRightButtonPress: () => {
+ hideModal();
+ },
+ leftButtonStyle: { children: opacity },
+ leftButtonText: t('global:retry'),
+ rightButtonText: t('global:done'),
+ isLeftButtonLoading: bundleIsBeingPromoted || isRetryingFailedTransaction,
+ };
+ const props = assign({}, defaultProps, buttonProps);
+ return ;
+ }
+
+ render() {
+ const {
+ hideModal,
+ fullValue,
+ unit,
+ outputs,
+ incoming,
+ persistence,
+ time,
+ bundle,
+ message,
+ t,
+ style,
+ mode,
+ disableWhen,
+ retryFailedTransaction,
+ promote,
+ isFailedTransaction,
+ bundleIsBeingPromoted,
+ } = this.props;
+ const { addressesScrollable, messagesScrollable } = this.state;
+ const isFailed = isFailedTransaction(bundle);
+
+ return (
+
+
+
+
+
+
+
+ {this.computeStatusText(outputs, persistence, incoming)}
+
+
+ {' ' + fullValue + ' '}
+
+ {unit}
+
+
+ {formatModalTime(locale, timezone, convertUnixTimeToJSDate(time))}
+
+
+ {t('bundleHash')}:
+
+ this.copy(bundle, 'bundle')}
+ style={styles.bundleInnerWrapper}
+ >
+
+ {bundle}
+
+
+
+
+ {mode === 'Advanced' && (
+
+ {t('addresses')}:
+ this.setAddressesScrollable(y)}
+ >
+ {this.renderAddresses()}
+
+
+ )}
+ {t('send:message')}:
+ this.setMessagesScrollable(y)}
+ >
+
+ this.copy(message, 'message')}>
+ {message}
+
+
+
+
+
+ {(!persistence &&
+ !isFailed &&
+ this.renderButton({
+ onLeftButtonPress: () => {
+ if (!disableWhen) {
+ return promote(bundle);
+ }
+ if (!bundleIsBeingPromoted) {
+ this.props.generateAlert(
+ 'error',
+ t('history:promotingAnotherBundle'),
+ t('history:pleaseWait'),
+ );
+ }
+ },
+ })) ||
+ (isFailed &&
+ this.renderButton({
+ onLeftButtonPress: () => {
+ if (!disableWhen) {
+ return retryFailedTransaction(bundle);
+ }
+ this.props.generateAlert(
+ 'error',
+ t('history:promotingAnotherBundle'),
+ t('history:pleaseWait'),
+ );
+ },
+ })) || }
+
+
+ );
+ }
+}
diff --git a/src/mobile/src/ui/components/TransferConfirmationModal.js b/src/mobile/src/ui/components/TransferConfirmationModal.js
index b1291435c7..ab4999ff14 100644
--- a/src/mobile/src/ui/components/TransferConfirmationModal.js
+++ b/src/mobile/src/ui/components/TransferConfirmationModal.js
@@ -1,60 +1,55 @@
import React, { Component } from 'react';
import { withNamespaces } from 'react-i18next';
import PropTypes from 'prop-types';
-import { View, Text, StyleSheet } from 'react-native';
+import { View, Text, StyleSheet, ScrollView } from 'react-native';
+import LottieView from 'lottie-react-native';
+import arrowAnimation from 'shared-modules/animations/arrow-transfer.json';
import { round } from 'shared-modules/libs/utils';
import { formatValue, formatUnit } from 'shared-modules/libs/iota/utils';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import ModalButtons from './ModalButtons';
+import ModalView from './ModalView';
+import TextWithLetterSpacing from './TextWithLetterSpacing';
const styles = StyleSheet.create({
- modalContainer: {
- flex: 1,
- alignItems: 'center',
- width,
- height,
- justifyContent: 'center',
- },
- modalContent: {
- justifyContent: 'space-between',
- alignItems: 'center',
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- borderColor: 'rgba(255, 255, 255, 0.8)',
- paddingVertical: height / 30,
- width: Styling.contentWidth,
- paddingHorizontal: width / 20,
+ titleText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Regular',
+ fontSize: Styling.fontSize4,
},
- textContainer: {
- alignItems: 'center',
+ addressText: {
+ fontFamily: 'SourceCodePro-Medium',
+ fontSize: Styling.fontSize3,
+ textAlign: 'center',
+ lineHeight: width / 17,
justifyContent: 'center',
},
- text: {
+ valueTextLarge: {
backgroundColor: 'transparent',
fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize2,
+ fontSize: Styling.fontSize7,
},
- regularText: {
+ messageText: {
backgroundColor: 'transparent',
fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize2,
+ fontSize: Styling.fontSize3,
},
- boldText: {
+ valueTextSmall: {
backgroundColor: 'transparent',
fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
+ fontSize: Styling.fontSize4,
},
- addressText: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceCodePro-Medium',
- fontSize: Styling.fontSize3,
+ itemContainer: {
+ borderRadius: Styling.borderRadiusExtraLarge,
+ width: Styling.contentWidth,
+ alignItems: 'center',
+ paddingVertical: height / 25,
},
- iotaText: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
+ valueContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
},
});
@@ -68,10 +63,6 @@ class TransferConfirmationModal extends Component {
t: PropTypes.func.isRequired,
/** Receive address */
address: PropTypes.string.isRequired,
- /** Content text color */
- textColor: PropTypes.object.isRequired,
- /** Content border color */
- borderColor: PropTypes.object.isRequired,
/** Transaction value */
value: PropTypes.number.isRequired,
/** Set a flag for a transfer in progress */
@@ -80,38 +71,45 @@ class TransferConfirmationModal extends Component {
conversionText: PropTypes.string.isRequired,
/** Transaction value as a string */
amount: PropTypes.string.isRequired,
- /** Theme setting */
- body: PropTypes.object.isRequired,
+ /** @ignore */
+ theme: PropTypes.object.isRequired,
/** Name for selected account */
selectedAccountName: PropTypes.string.isRequired,
/** @ignore */
isFingerprintEnabled: PropTypes.bool.isRequired,
/** Activates fingerprint scanner */
activateFingerprintScanner: PropTypes.func.isRequired,
+ /** Cancels send and closes modal */
+ cancel: PropTypes.func.isRequired,
+ /** Transaction message */
+ message: PropTypes.string,
+ };
+
+ static defaultProps = {
+ message: '',
};
constructor() {
super();
this.state = {
sending: false,
+ scrollable: false,
};
}
componentDidMount() {
leaveNavigationBreadcrumb('TransferConfirmationModal');
+ this.animation.play();
}
onSendPress() {
const { hideModal, sendTransfer, setSendingTransferFlag, isFingerprintEnabled, value } = this.props;
const { sending } = this.state;
-
// Prevent multiple spends
if (sending) {
return;
}
-
this.setState({ sending: true });
-
if (isFingerprintEnabled && value > 0) {
this.props.activateFingerprintScanner();
} else {
@@ -121,86 +119,110 @@ class TransferConfirmationModal extends Component {
}
}
- render() {
- const { t, body, textColor, borderColor, value, conversionText, amount, selectedAccountName } = this.props;
- // TODO: fix this using trans component
-
- /*
- let transferContents = null;
- if (value === 0) {
- transferContents = {t('transferConfirmation:aMessage')};
- } else {
- transferContents = (
-
- {formatValue(value)} {formatUnit(value)}
-
- );
+ setScrollable(y) {
+ if (y >= height / 5.8) {
+ return this.setState({ scrollable: true });
}
- */
-
- // Hotfix
+ this.setState({ scrollable: false });
+ }
- let transferContents = null;
- /* eslint-disable eqeqeq */
- if (value === 0 || amount === '') {
- /* eslint-enable eqeqeq */
- // doesn't work with === for some reason
- transferContents = a message;
- } else {
- transferContents = (
-
- {' '}
- {round(formatValue(value), 3)} {formatUnit(value)} ({conversionText}){' '}
-
- );
- }
+ render() {
+ const {
+ t,
+ theme: { body, dark, primary },
+ value,
+ conversionText,
+ amount,
+ selectedAccountName,
+ message,
+ } = this.props;
+ const isMessage = value === 0 || amount === '';
return (
-
-
- {(value !== 0 && (
-
-
- Sending {transferContents} from
-
-
- {selectedAccountName}
-
- to
-
- {this.props.address.substring(0, 30)}
-
- {this.props.address.substring(30, 60)}
-
- {this.props.address.substring(60, 90)}
-
-
- )) || (
-
-
-
- You are about to send {transferContents}
+ this.props.cancel()}
+ onRightButtonPress={() => this.onSendPress()}
+ leftButtonText={t('global:cancel')}
+ rightButtonText={t('global:confirm')}
+ >
+
+
+ {isMessage
+ ? message.length > 0
+ ? t('sendingAMessage').toUpperCase()
+ : t('sendingAnEmptyMessage').toUpperCase()
+ : t('fromAccount', { selectedAccountName }).toUpperCase()}
+
+ {isMessage &&
+ message.length > 0 && (
+ this.setScrollable(y)}
+ >
+
+ {message}
+
+
+ )}
+ {!isMessage && (
+
+
+
+ {round(formatValue(value), 3)}
+
+
+ {formatUnit(value)}
-
- to
-
- {this.props.address.substring(0, 30)}
-
- {this.props.address.substring(30, 60)}
-
- {this.props.address.substring(60, 90)}
+
+
+ {conversionText}
)}
- this.props.hideModal()}
- onRightButtonPress={() => this.onSendPress()}
- leftText={t('global:cancel').toUpperCase()}
- rightText={t('global:send')}
- buttonWidth={{ width: width / 3.2 }}
- containerWidth={{ width: width / 1.4 }}
+
+
+ {
+ this.animation = animation;
+ }}
/>
-
+
+ {t('toAddress').toUpperCase()}
+
+ {this.props.address.substring(0, 30)}
+
+
+ {this.props.address.substring(30, 60)}
+
+
+ {this.props.address.substring(60, 90)}
+
+
+
);
}
}
diff --git a/src/mobile/src/ui/components/UnitInfoModal.js b/src/mobile/src/ui/components/UnitInfoModal.js
index d0eb0132cb..4bcadf463e 100644
--- a/src/mobile/src/ui/components/UnitInfoModal.js
+++ b/src/mobile/src/ui/components/UnitInfoModal.js
@@ -1,75 +1,70 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
-import { View, StyleSheet, TouchableOpacity } from 'react-native';
+import { View, Text, StyleSheet } from 'react-native';
import { withNamespaces } from 'react-i18next';
import { width, height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
-import { Icon } from 'ui/theme/icons';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
import TextWithLetterSpacing from './TextWithLetterSpacing';
+import ModalView from './ModalView';
const styles = StyleSheet.create({
- modalContainer: {
- flex: 1,
+ unitsContainer: {
alignItems: 'center',
- justifyContent: 'center',
- width,
- height,
+ width: width - width / 10,
},
- modalContent: {
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- paddingBottom: height / 30,
- paddingTop: height / 50,
- width: Styling.contentWidth,
+ unitRow: {
alignItems: 'center',
- justifyContent: 'center',
- },
- unitsContainer: {
flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
+ justifyContent: 'space-between',
+ width: width - width / 10,
},
denominationText: {
backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
+ fontFamily: 'SourceSansPro-Bold',
fontSize: Styling.fontSize3,
paddingVertical: width / 40,
+ width: width / 8,
},
titleText: {
backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
+ fontFamily: 'SourceSansPro-Light',
+ fontSize: Styling.fontSize6,
+ paddingBottom: height / 25,
+ },
+ infoText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- paddingVertical: width / 18,
+ paddingBottom: height / 25,
+ width: width - width / 8,
+ textAlign: 'center',
},
numberText: {
+ backgroundColor: 'transparent',
+ fontFamily: 'SourceSansPro-Regular',
+ fontSize: Styling.fontSize3,
+ paddingVertical: width / 40,
+ },
+ digitText: {
backgroundColor: 'transparent',
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
paddingVertical: width / 40,
},
line: {
- borderLeftWidth: 0.5,
- width: 1,
- height: width / 2.3,
- marginHorizontal: width / 75,
- },
- iotaText: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize2,
- paddingTop: width / 80,
+ borderBottomWidth: 0.5,
+ height: 1,
+ width: width - width / 10,
},
});
class UnitInfoModal extends PureComponent {
static propTypes = {
- /** Modal border color */
- borderColor: PropTypes.object.isRequired,
/** Line color */
lineColor: PropTypes.object.isRequired,
- /** Modal bar colors */
- bar: PropTypes.object.isRequired,
+ /** @ignore */
+ theme: PropTypes.object.isRequired,
/** Modal content text color */
textColor: PropTypes.object.isRequired,
/** Closes active modal */
@@ -83,75 +78,64 @@ class UnitInfoModal extends PureComponent {
}
render() {
- const { t, textColor, borderColor, lineColor, bar } = this.props;
+ const { t, textColor, lineColor, theme: { primary } } = this.props;
return (
- this.props.hideModal()} style={styles.modalContainer}>
-
-
-
- IOTA
-
-
- {t('unitSystem')}
-
-
-
-
- Ti
-
-
- Gi
-
-
- Mi
-
-
- Ki
-
-
- i
-
+
+ {'IOTA ' + t('unitSystem')}
+ {t('unitInfoExplanation')}
+
+
+ Ti
+
+ {t('trillion')}
-
-
-
- {t('trillion')}
-
-
- {t('billion')}
-
-
- {t('million')}
-
-
- {t('thousand')}
-
-
- {t('one')}
-
+
+ 1 000 000 000 000
+
+
+
+
+ Gi
+
+ {t('billion')}
+
+
+ 1 000 000 000
+
+
+
+
+ Mi
+
+ {t('million')}
-
-
-
- 1 000 000 000 000
-
-
- 1 000 000 000
-
-
- 1 000 000
-
-
- 1 000
-
-
- 1
-
+
+ 1 000 000
+
+
+
+
+ Ki
+
+ {t('thousand')}
+
+
+ 1 000
+
+
+
+
+ i
+
+ {t('one')}
+
+ 1
+
-
+
);
}
}
diff --git a/src/mobile/src/ui/components/UsedAddressModal.js b/src/mobile/src/ui/components/UsedAddressModal.js
deleted file mode 100644
index f8b3ac4f33..0000000000
--- a/src/mobile/src/ui/components/UsedAddressModal.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import React, { PureComponent } from 'react';
-import { withNamespaces } from 'react-i18next';
-import PropTypes from 'prop-types';
-import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
-import { Styling } from 'ui/theme/general';
-import { width, height } from 'libs/dimensions';
-import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-
-const styles = StyleSheet.create({
- modalContainer: {
- flex: 1,
- alignItems: 'center',
- justifyContent: 'center',
- width,
- height,
- },
- modalContent: {
- justifyContent: 'space-between',
- alignItems: 'center',
- borderRadius: Styling.borderRadius,
- borderWidth: 2,
- borderColor: 'rgba(255, 255, 255, 0.8)',
- paddingTop: height / 20,
- paddingBottom: height / 25,
- width: Styling.contentWidth,
- paddingHorizontal: width / 20,
- },
- textContainer: {
- alignItems: 'center',
- justifyContent: 'center',
- },
- regularText: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize3,
- },
- boldText: {
- backgroundColor: 'transparent',
- fontFamily: 'SourceSansPro-Regular',
- fontSize: Styling.fontSize3,
- textAlign: 'justify',
- },
-});
-
-class UsedAddressModal extends PureComponent {
- static propTypes = {
- /** Closes acive modal */
- hideModal: PropTypes.func.isRequired,
- /** @ignore */
- t: PropTypes.func.isRequired,
- /** Content text color */
- textColor: PropTypes.object.isRequired,
- /** Content border color */
- borderColor: PropTypes.object.isRequired,
- /** Theme body */
- body: PropTypes.object.isRequired,
- };
-
- componentDidMount() {
- leaveNavigationBreadcrumb('UsedAddressModal');
- }
-
- render() {
- const { t, body, textColor, borderColor } = this.props;
-
- return (
- this.props.hideModal()} style={styles.modalContainer}>
-
-
-
- {t('cantSpendFullBalanceQuestion')}
-
- {t('spentAddressExplanation')}
-
-
- {t('discordInformation')}
-
-
-
-
-
- );
- }
-}
-
-export default withNamespaces(['usedAddressModal', 'global'])(UsedAddressModal);
diff --git a/src/mobile/src/ui/routes/entry.js b/src/mobile/src/ui/routes/entry.js
index 15f504b751..c391c1b5b8 100644
--- a/src/mobile/src/ui/routes/entry.js
+++ b/src/mobile/src/ui/routes/entry.js
@@ -7,6 +7,7 @@ import { Provider } from 'react-redux';
import { changeIotaNode, SwitchingConfig } from 'shared-modules/libs/iota';
import sharedStore from 'shared-modules/store';
import iotaNativeBindings, { overrideAsyncTransactionObject } from 'shared-modules/libs/iota/nativeBindings';
+import { assignAccountIndexIfNecessary } from 'shared-modules/actions/accounts';
import { fetchNodeList as fetchNodes } from 'shared-modules/actions/polling';
import { setCompletedForcedPasswordUpdate } from 'shared-modules/actions/settings';
import { ActionTypes } from 'shared-modules/actions/wallet';
@@ -38,6 +39,9 @@ const launch = (store) => {
store.dispatch(setCompletedForcedPasswordUpdate());
}
+ // Assign accountIndex to every account in accountInfo if it is not assigned already
+ store.dispatch(assignAccountIndexIfNecessary(get(state, 'accounts.accountInfo')));
+
// Set default language
i18next.changeLanguage(getLocaleFromLabel(state.settings.language));
@@ -50,7 +54,7 @@ const launch = (store) => {
const initialScreen = state.accounts.onboardingComplete
? navigateToForceChangePassword ? 'forceChangePassword' : 'login'
: 'languageSetup';
- renderInitialScreen(initialScreen, state);
+ renderInitialScreen(initialScreen, state, store);
};
const onAppStart = () => {
@@ -58,7 +62,25 @@ const onAppStart = () => {
return new Promise((resolve) => Navigation.events().registerAppLaunchedListener(resolve));
};
-const renderInitialScreen = (initialScreen, state) => {
+const renderInitialScreen = (initialScreen, state, store) => {
+ Navigation.setDefaultOptions({
+ layout: {
+ backgroundColor: state.settings.theme.body.bg,
+ orientation: ['portrait'],
+ },
+ topBar: {
+ visible: false,
+ drawBehind: false,
+ elevation: 0,
+ background: {
+ color: 'black',
+ },
+ },
+ statusBar: {
+ drawBehind: false,
+ backgroundColor: state.settings.theme.body.bg,
+ },
+ });
Navigation.setRoot({
root: {
stack: {
@@ -67,30 +89,13 @@ const renderInitialScreen = (initialScreen, state) => {
{
component: {
name: initialScreen,
- options: {
- layout: {
- backgroundColor: state.settings.theme.body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- background: {
- color: state.settings.theme.body.bg,
- },
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: state.settings.theme.body.bg,
- },
- },
},
},
],
},
},
});
+ store.dispatch({ type: ActionTypes.RESET_ROUTE, payload: initialScreen });
};
/**
diff --git a/src/mobile/src/ui/routes/navigation.js b/src/mobile/src/ui/routes/navigation.js
index 21f1f41c50..a409efb3e6 100644
--- a/src/mobile/src/ui/routes/navigation.js
+++ b/src/mobile/src/ui/routes/navigation.js
@@ -2,8 +2,9 @@ import { Navigation } from 'react-native-navigation';
import withSafeAreaView from 'ui/components/SafeAreaView';
import withDropdownAlert from 'ui/components/WithDropdownAlert';
import withModal from 'ui/components/ModalComponent';
-import withRouteMonitor from 'ui/components/RouteMonitor';
import withStatusBar from 'ui/components/WithStatusBar';
+import withBackPress from 'ui/components/BackPress';
+import withKeyboardMonitor from 'ui/components/KeyboardMonitor';
import Home from 'ui/views/wallet/Home';
import Loading from 'ui/views/wallet/Loading';
import NewSeedSetup from 'ui/views/onboarding/NewSeedSetup';
@@ -28,13 +29,16 @@ import TermsAndConditions from 'ui/views/onboarding/TermsAndConditions';
import PrivacyPolicy from 'ui/views/onboarding/PrivacyPolicy';
import ForceChangePassword from 'ui/views/wallet/ForceChangePassword';
import SeedVaultBackupComponent from 'ui/views/onboarding/SeedVaultBackup';
-import { isIPhoneX } from 'libs/device';
+import { isIPhoneX, isAndroid } from 'libs/device';
function applyHOCs(screen) {
- const withHOCs = (c) => withDropdownAlert(withStatusBar(withModal(withRouteMonitor(c))));
+ const withHOCs = (c) => withKeyboardMonitor(withDropdownAlert(withStatusBar(withModal(c))));
if (isIPhoneX) {
return withHOCs(withSafeAreaView(screen));
}
+ if (isAndroid) {
+ return withBackPress(withHOCs(screen));
+ }
return withHOCs(screen);
}
diff --git a/src/mobile/src/ui/theme/general.js b/src/mobile/src/ui/theme/general.js
index 230d5b1787..33c82ef565 100644
--- a/src/mobile/src/ui/theme/general.js
+++ b/src/mobile/src/ui/theme/general.js
@@ -1,21 +1,24 @@
-import { width } from 'libs/dimensions';
-import { isIPhoneX } from 'libs/device';
+import { width, height } from 'libs/dimensions';
+import { isIPhoneX, isAndroid } from 'libs/device';
export const Styling = {
contentWidth: isIPhoneX ? width / 1.08 : width / 1.15,
- borderRadius: width / 60,
- borderRadiusSmall: width / 90,
- borderRadiusLarge: width / 40,
+ borderRadius: isIPhoneX ? width / 40 : width / 60,
+ borderRadiusSmall: parseInt(width / 90),
+ borderRadiusLarge: parseInt(width / 40),
+ borderRadiusExtraLarge: parseInt(width / 20),
fontSize0: width / 37,
fontSize1: width / 34,
fontSize2: width / 31,
fontSize3: width / 25,
fontSize4: width / 22,
fontSize5: width / 19,
- fontSize6: width / 8,
+ fontSize6: width / 14,
+ fontSize7: width / 8,
+ topbarHeight: isAndroid ? height / 10 : height / 8.8,
};
-export function getBackgroundColor(screen, theme, footerColour = false, inactive = false) {
+export function getBackgroundColor(screen, theme, inactive = false) {
const { bar, body } = theme;
const screenMap = {
home: inactive ? body.bg : bar.alt,
@@ -38,8 +41,8 @@ export function getBackgroundColor(screen, theme, footerColour = false, inactive
twoFactorSetupEnterToken: body.bg,
disable2FA: body.bg,
fingerprintSetup: body.bg,
- termsAndConditions: footerColour ? 'white' : bar.bg,
- privacyPolicy: footerColour ? 'white' : bar.bg,
+ termsAndConditions: bar.bg,
+ privacyPolicy: bar.bg,
forceChangePassword: body.bg,
seedVaultBackup: body.bg,
};
diff --git a/src/mobile/src/ui/views/onboarding/EnterSeed.js b/src/mobile/src/ui/views/onboarding/EnterSeed.js
index c66952286f..cf643246e8 100644
--- a/src/mobile/src/ui/views/onboarding/EnterSeed.js
+++ b/src/mobile/src/ui/views/onboarding/EnterSeed.js
@@ -1,7 +1,7 @@
import React from 'react';
import { withNamespaces } from 'react-i18next';
import { StyleSheet, View, Text, TouchableWithoutFeedback, Keyboard } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { setOnboardingSeed, toggleModalActivity } from 'shared-modules/actions/ui';
import { setAccountInfoDuringSetup } from 'shared-modules/actions/accounts';
import { VALID_SEED_REGEX, MAX_SEED_LENGTH } from 'shared-modules/libs/iota/utils';
@@ -14,9 +14,9 @@ import CustomTextInput from 'ui/components/CustomTextInput';
import InfoBox from 'ui/components/InfoBox';
import DualFooterButtons from 'ui/components/DualFooterButtons';
import SeedVaultImport from 'ui/components/SeedVaultImportComponent';
-import { width, height } from 'libs/dimensions';
-import { Icon } from 'ui/theme/icons';
-import { isAndroid, isIPhone11 } from 'libs/device';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
+import { width } from 'libs/dimensions';
+import { isAndroid } from 'libs/device';
import { Styling } from 'ui/theme/general';
import Header from 'ui/components/Header';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -30,16 +30,15 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
- paddingTop: height / 16,
+ flex: 1.4,
alignItems: 'center',
justifyContent: 'flex-start',
},
midContainer: {
- flex: 3,
+ flex: 2.6,
alignItems: 'center',
width,
- justifyContent: 'flex-start',
+ justifyContent: 'space-between',
},
bottomContainer: {
flex: 0.5,
@@ -49,15 +48,20 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
warningText: {
fontFamily: 'SourceSansPro-Bold',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
+ seedVaultImportContainer: {
+ flex: 0.5,
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
});
/** Enter seed component */
@@ -121,37 +125,23 @@ class EnterSeed extends React.Component {
FlagSecure.deactivate();
}
this.props.setOnboardingSeed(seed, true);
-
// Since this seed was not generated in Trinity, mark "usedExistingSeed" as true.
this.props.setAccountInfoDuringSetup({ usedExistingSeed: true });
-
- Navigation.push('appStack', {
- component: {
- name: 'setAccountName',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('setAccountName', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
}
@@ -161,7 +151,7 @@ class EnterSeed extends React.Component {
* @method onBackPress
*/
onBackPress() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
/**
@@ -225,34 +215,65 @@ class EnterSeed extends React.Component {
{!minimised && (
-
-
- {t('seedReentry:enterYourSeed')}
+
+ {t('seedReentry:enterYourSeed')}
+
-
- {
- if (text.match(VALID_SEED_REGEX) || text.length === 0) {
- this.setState({ seed: text.toUpperCase() });
- }
- }}
- containerStyle={{ width: Styling.contentWidth }}
- theme={theme}
- autoCapitalize="characters"
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- onSubmitEditing={() => this.onDonePress()}
- value={seed}
- widget="qr"
- onQRPress={() => this.onQRPress()}
- testID="enterSeed-seedbox"
- seed={seed}
- />
-
- {!isIPhone11 && (
+
+
+
+ {t('seedExplanation', { maxLength: MAX_SEED_LENGTH })}
+
+
+ {'\n'}
+ {t('neverShare')}
+
+
+
+
+
+ {
+ if (text.match(VALID_SEED_REGEX) || text.length === 0) {
+ this.setState({ seed: text.toUpperCase() });
+ }
+ }}
+ theme={theme}
+ autoCapitalize="characters"
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ onSubmitEditing={() => this.onDonePress()}
+ maxLength={MAX_SEED_LENGTH}
+ value={seed}
+ widget="qr"
+ onQRPress={() => this.onQRPress()}
+ testID="enterSeed-seedbox"
+ seed={seed}
+ isSeedInput
+ />
+
+
+
this.showModal('passwordValidation')}
onSeedImport={(seed) => {
@@ -263,33 +284,24 @@ class EnterSeed extends React.Component {
this.SeedVaultImport = ref;
}}
/>
- )}
-
-
-
- {t('seedExplanation', { maxLength: MAX_SEED_LENGTH })}
-
-
- {'\n'}
- {t('neverShare')}
-
-
- }
- />
-
+
+
- this.onBackPress()}
- onRightButtonPress={() => this.onDonePress()}
- leftButtonText={t('global:goBack')}
- rightButtonText={t('global:continue')}
- leftButtonTestID="enterSeed-back"
- rightButtonTestID="enterSeed-next"
- />
+
+ this.onBackPress()}
+ onRightButtonPress={() => this.onDonePress()}
+ leftButtonText={t('global:goBack')}
+ rightButtonText={t('global:continue')}
+ leftButtonTestID="enterSeed-back"
+ rightButtonTestID="enterSeed-next"
+ />
+
)}
diff --git a/src/mobile/src/ui/views/onboarding/LanguageSetup.js b/src/mobile/src/ui/views/onboarding/LanguageSetup.js
index 0a5f0269d2..d65556a27e 100644
--- a/src/mobile/src/ui/views/onboarding/LanguageSetup.js
+++ b/src/mobile/src/ui/views/onboarding/LanguageSetup.js
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import { StyleSheet, View, TouchableWithoutFeedback, Image } from 'react-native';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import SplashScreen from 'react-native-splash-screen';
import { getDeviceLocale } from 'react-native-device-info';
import { I18N_LOCALE_LABELS, getLabelFromLocale, getLocaleFromLabel, detectLocale } from 'shared-modules/libs/i18n';
@@ -11,7 +11,7 @@ import helloBackImagePath from 'shared-modules/images/hello-back.png';
import { connect } from 'react-redux';
import { setSetting } from 'shared-modules/actions/wallet';
import i18next from 'shared-modules/libs/i18next';
-import WithBackPressCloseApp from 'ui/components/BackPressCloseApp';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { width, height } from 'libs/dimensions';
import { isAndroid } from 'libs/device';
import DropdownComponent from 'ui/components/Dropdown';
@@ -42,7 +42,6 @@ const styles = StyleSheet.create({
justifyContent: 'flex-end',
},
helloBackground: {
- position: 'absolute',
width,
height: width / 0.95,
},
@@ -85,32 +84,20 @@ class LanguageSetup extends Component {
if (forceUpdate) {
return;
}
- Navigation.push('appStack', {
- component: {
- name: this.getNextRoute(),
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: !acceptedTerms || !acceptedPrivacy ? bar.bg : body.bg,
- },
+ navigator.push(this.getNextRoute(), {
+ animations: {
+ push: {
+ enable: false,
},
+ pop: {
+ enable: false,
+ },
+ },
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: !acceptedTerms || !acceptedPrivacy ? bar.bg : body.bg,
},
});
}
@@ -149,28 +136,54 @@ class LanguageSetup extends Component {
>
-
+
+
+
-
+
+
+
-
- {
- this.dropdown = c;
- }}
- title={t('language')}
- defaultOption={defaultLanguageLabel}
- options={I18N_LOCALE_LABELS}
- saveSelection={(language) => this.clickDropdownItem(language)}
- />
+
+
+ {
+ this.dropdown = c;
+ }}
+ title={t('language')}
+ defaultOption={defaultLanguageLabel}
+ options={I18N_LOCALE_LABELS}
+ saveSelection={(language) => this.clickDropdownItem(language)}
+ />
+
- this.onNextPress()}
- testID="languageSetup-next"
- buttonText={t('letsGetStarted')}
- />
+
+ this.onNextPress()}
+ testID="languageSetup-next"
+ buttonText={t('letsGetStarted')}
+ />
+
@@ -192,6 +205,4 @@ const mapDispatchToProps = {
setLocale,
};
-export default WithBackPressCloseApp()(
- withNamespaces(['languageSetup', 'global'])(connect(mapStateToProps, mapDispatchToProps)(LanguageSetup)),
-);
+export default withNamespaces(['languageSetup', 'global'])(connect(mapStateToProps, mapDispatchToProps)(LanguageSetup));
diff --git a/src/mobile/src/ui/views/onboarding/NewSeedSetup.js b/src/mobile/src/ui/views/onboarding/NewSeedSetup.js
index 4610b28c8b..1a00cf55e4 100644
--- a/src/mobile/src/ui/views/onboarding/NewSeedSetup.js
+++ b/src/mobile/src/ui/views/onboarding/NewSeedSetup.js
@@ -3,7 +3,8 @@ import React, { Component } from 'react';
import { withNamespaces } from 'react-i18next';
import PropTypes from 'prop-types';
import { StyleSheet, View, Text, TouchableHighlight, FlatList, BackHandler, TouchableOpacity } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import timer from 'react-native-timer';
+import { navigator } from 'libs/navigation';
import { connect } from 'react-redux';
import { clearSeed } from 'shared-modules/actions/wallet';
import { setOnboardingSeed, toggleModalActivity } from 'shared-modules/actions/ui';
@@ -11,6 +12,7 @@ import { MAX_SEED_LENGTH } from 'shared-modules/libs/iota/utils';
import { generateSecureRandom } from 'react-native-securerandom';
import { generateAlert } from 'shared-modules/actions/alerts';
import { generateNewSeed, randomiseSeedCharacter } from 'shared-modules/libs/crypto';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import FlagSecure from 'react-native-flag-secure-android';
import WithUserActivity from 'ui/components/UserActivity';
import CtaButton from 'ui/components/CtaButton';
@@ -18,6 +20,7 @@ import { width, height } from 'libs/dimensions';
import DualFooterButtons from 'ui/components/DualFooterButtons';
import { Styling } from 'ui/theme/general';
import { Icon } from 'ui/theme/icons';
+import Header from 'ui/components/Header';
import { isAndroid } from 'libs/device';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -27,15 +30,14 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1.75,
+ flex: 1.5,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 5.65,
+ flex: 5.9,
alignItems: 'center',
- justifyContent: 'center',
+ justifyContent: 'flex-start',
},
bottomContainer: {
flex: 0.6,
@@ -73,7 +75,7 @@ const styles = StyleSheet.create({
textAlign: 'center',
},
info: {
- height: height / 14,
+ height: height / 16,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
@@ -134,6 +136,7 @@ class NewSeedSetup extends Component {
if (isAndroid) {
FlagSecure.deactivate();
}
+ timer.clearTimeout('newSeedSetup');
}
async onGeneratePress() {
@@ -159,36 +162,26 @@ class NewSeedSetup extends Component {
FlagSecure.deactivate();
}
if (this.state.randomised) {
- Navigation.push('appStack', {
- component: {
- name: 'saveYourSeed',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- title: {
- color: body.color,
- },
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('saveYourSeed', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
+ },
+ },
+ layout: {
+ backgroundColor: body.bg,
+ },
+ topBar: {
+ title: {
+ color: body.color,
},
},
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
} else {
this.props.generateAlert('error', t('seedNotGenerated'), t('seedNotGeneratedExplanation'));
@@ -197,7 +190,7 @@ class NewSeedSetup extends Component {
onBackPress() {
this.props.clearSeed();
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
openModal() {
@@ -240,26 +233,42 @@ class NewSeedSetup extends Component {
{!minimised && (
-
-
- {
- this.onGeneratePress();
- }}
- ctaWidth={width / 1.6}
- testID="newSeedSetup-newSeed"
- />
+
+
+
+
+ {
+ this.onGeneratePress();
+ }}
+ ctaWidth={width / 1.6}
+ testID="newSeedSetup-newSeed"
+ />
+
this.openModal()}
style={{ marginTop: height / 65, marginBottom: height / 80 }}
>
-
+
{t('whatIsASeed')}
-
+
- index}
- renderItem={({ item, index }) => this.renderChequerboard(item, index)}
- initialNumToRender={MAX_SEED_LENGTH}
- scrollEnabled={false}
- />
+
+ index.toString()}
+ renderItem={({ item, index }) => this.renderChequerboard(item, index)}
+ initialNumToRender={MAX_SEED_LENGTH}
+ scrollEnabled={false}
+ />
+
- this.onBackPress()}
- onRightButtonPress={() => this.onNextPress()}
- leftButtonText={t('global:goBack')}
- rightButtonText={t('saveYourSeed:saveYourSeed')}
- leftButtonTestID="newSeedSetup-back"
- rightButtonTestID="newSeedSetup-next"
- rightButtonStyle={{ wrapper: { opacity } }}
- />
+
+ this.onBackPress()}
+ onRightButtonPress={() => this.onNextPress()}
+ leftButtonText={t('global:goBack')}
+ rightButtonText={t('saveYourSeed:saveYourSeed')}
+ leftButtonTestID="newSeedSetup-back"
+ rightButtonTestID="newSeedSetup-next"
+ rightButtonStyle={{ wrapper: { opacity } }}
+ />
+
)}
diff --git a/src/mobile/src/ui/views/onboarding/OnboardingComplete.js b/src/mobile/src/ui/views/onboarding/OnboardingComplete.js
index 63a29bec09..55a703f1be 100644
--- a/src/mobile/src/ui/views/onboarding/OnboardingComplete.js
+++ b/src/mobile/src/ui/views/onboarding/OnboardingComplete.js
@@ -2,14 +2,14 @@ import React, { Component } from 'react';
import { withNamespaces } from 'react-i18next';
import { StyleSheet, View, Text, Image } from 'react-native';
import PropTypes from 'prop-types';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import balloonsImagePath from 'shared-modules/images/balloons.png';
import { connect } from 'react-redux';
-import WithBackPressCloseApp from 'ui/components/BackPressCloseApp';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import { Icon } from 'ui/theme/icons';
import SingleFooterButton from 'ui/components/SingleFooterButton';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
const styles = StyleSheet.create({
@@ -53,7 +53,7 @@ const styles = StyleSheet.create({
width,
height: width,
position: 'absolute',
- top: -height / 10,
+ top: height / 5,
},
});
@@ -72,30 +72,18 @@ class OnboardingComplete extends Component {
onNextPress() {
const { theme: { body } } = this.props;
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'loading',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.setStackRoot('loading', {
+ animations: {
+ setStackRoot: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -104,24 +92,40 @@ class OnboardingComplete extends Component {
return (
-
+
+
+
-
+
{t('walletReady')}
-
-
+
+
+
+
- this.onNextPress()}
- testID="languageSetup-next"
- buttonStyle={{
- wrapper: { backgroundColor: primary.color },
- children: { color: primary.body },
- }}
- buttonText={t('openYourWallet')}
- />
+
+ this.onNextPress()}
+ testID="languageSetup-next"
+ buttonStyle={{
+ wrapper: { backgroundColor: primary.color },
+ children: { color: primary.body },
+ }}
+ buttonText={t('openYourWallet')}
+ />
+
);
@@ -132,6 +136,4 @@ const mapStateToProps = (state) => ({
theme: state.settings.theme,
});
-export default WithBackPressCloseApp()(
- withNamespaces(['onboardingComplete', 'global'])(connect(mapStateToProps)(OnboardingComplete)),
-);
+export default withNamespaces(['onboardingComplete', 'global'])(connect(mapStateToProps)(OnboardingComplete));
diff --git a/src/mobile/src/ui/views/onboarding/PrivacyPolicy.js b/src/mobile/src/ui/views/onboarding/PrivacyPolicy.js
index d0abb80fe4..f84f43f96b 100644
--- a/src/mobile/src/ui/views/onboarding/PrivacyPolicy.js
+++ b/src/mobile/src/ui/views/onboarding/PrivacyPolicy.js
@@ -4,7 +4,7 @@ import Markdown from 'react-native-markdown-renderer';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { withNamespaces } from 'react-i18next';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { acceptPrivacy } from 'shared-modules/actions/settings';
import {
enPrivacyPolicyAndroid,
@@ -13,6 +13,7 @@ import {
dePrivacyPolicyIOS,
} from 'shared-modules/markdown';
import i18next from 'shared-modules/libs/i18next';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import SingleFooterButton from 'ui/components/SingleFooterButton';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
@@ -22,14 +23,13 @@ import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
const styles = StyleSheet.create({
container: {
flex: 1,
- justifyContent: 'center',
alignItems: 'center',
+ height,
},
titleText: {
fontFamily: 'SourceSansPro-SemiBold',
fontSize: Styling.fontSize4,
textAlign: 'center',
- paddingTop: height / 55,
},
titleContainer: {
height: height / 8,
@@ -43,6 +43,7 @@ const styles = StyleSheet.create({
width,
paddingHorizontal: width / 20,
paddingVertical: height / 75,
+ height: height,
},
});
@@ -77,7 +78,6 @@ class PrivacyPolicy extends Component {
constructor() {
super();
-
this.state = { hasReadPrivacyPolicy: false };
}
@@ -88,32 +88,20 @@ class PrivacyPolicy extends Component {
onNextPress() {
const { theme: { body } } = this.props;
this.props.acceptPrivacy();
- Navigation.push('appStack', {
- component: {
- name: 'walletSetup',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('walletSetup', {
+ animations: {
+ push: {
+ enable: false,
},
+ pop: {
+ enable: false,
+ },
+ },
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
},
});
}
@@ -124,37 +112,51 @@ class PrivacyPolicy extends Component {
return (
-
+
{t('privacyPolicy')}
-
- {
- let paddingToBottom = height / 35;
- paddingToBottom += e.nativeEvent.layoutMeasurement.height;
+
+
+ {
+ let paddingToBottom = height / 35;
+ paddingToBottom += e.nativeEvent.layoutMeasurement.height;
- if (e.nativeEvent.contentOffset.y >= e.nativeEvent.contentSize.height - paddingToBottom) {
- if (!this.state.hasReadPrivacyPolicy) {
- this.setState({ hasReadPrivacyPolicy: true });
+ if (e.nativeEvent.contentOffset.y >= e.nativeEvent.contentSize.height - paddingToBottom) {
+ if (!this.state.hasReadPrivacyPolicy) {
+ this.setState({ hasReadPrivacyPolicy: true });
+ }
}
- }
- }}
- scrollEventThrottle={400}
- style={styles.scrollView}
- >
-
- {PrivacyPolicy.getPrivacyPolicy()}
-
-
+ }}
+ scrollEventThrottle={400}
+ style={styles.scrollView}
+ >
+
+ {PrivacyPolicy.getPrivacyPolicy()}
+
+
+
+
{this.state.hasReadPrivacyPolicy && (
- this.onNextPress()}
- buttonStyle={{
- wrapper: { backgroundColor: primary.color },
- children: { color: primary.body },
- }}
- buttonText={t('agree')}
- />
+
+ this.onNextPress()}
+ buttonStyle={{
+ wrapper: { backgroundColor: primary.color },
+ children: { color: primary.body },
+ }}
+ buttonText={t('agree')}
+ />
+
)}
diff --git a/src/mobile/src/ui/views/onboarding/SaveSeedConfirmation.js b/src/mobile/src/ui/views/onboarding/SaveSeedConfirmation.js
index 70dcc66d70..3d6196a629 100644
--- a/src/mobile/src/ui/views/onboarding/SaveSeedConfirmation.js
+++ b/src/mobile/src/ui/views/onboarding/SaveSeedConfirmation.js
@@ -1,23 +1,19 @@
-import map from 'lodash/map';
import React, { Component } from 'react';
import { withNamespaces } from 'react-i18next';
-import { StyleSheet, View, Text, TouchableOpacity, Image, ScrollView } from 'react-native';
+import { StyleSheet, View, Text, ScrollView } from 'react-native';
import PropTypes from 'prop-types';
-import { Navigation } from 'react-native-navigation';
-import whiteCheckboxCheckedImagePath from 'shared-modules/images/checkbox-checked-white.png';
-import whiteCheckboxUncheckedImagePath from 'shared-modules/images/checkbox-unchecked-white.png';
-import blackCheckboxCheckedImagePath from 'shared-modules/images/checkbox-checked-black.png';
-import blackCheckboxUncheckedImagePath from 'shared-modules/images/checkbox-unchecked-black.png';
+import { navigator } from 'libs/navigation';
import { connect } from 'react-redux';
-import tinycolor from 'tinycolor2';
+import timer from 'react-native-timer';
import DualFooterButtons from 'ui/components/DualFooterButtons';
import InfoBox from 'ui/components/InfoBox';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import Header from 'ui/components/Header';
+import Slider from 'ui/components/Slider';
import { Styling } from 'ui/theme/general';
-import { Icon } from 'ui/theme/icons';
import { isAndroid } from 'libs/device';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import { width, height } from 'libs/dimensions';
+import { height } from 'libs/dimensions';
const styles = StyleSheet.create({
container: {
@@ -26,56 +22,34 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
+ flex: 1.4,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 3,
+ flex: 2.6,
alignItems: 'center',
- },
- bottomMidContainer: {
- flex: 1,
- justifyContent: 'flex-start',
+ justifyContent: 'space-between',
},
bottomContainer: {
flex: 0.5,
alignItems: 'center',
justifyContent: 'flex-end',
},
- checkboxContainer: {
- height: height / 15,
- flexDirection: 'row',
- paddingTop: height / 50,
- },
- checkbox: {
- width: width / 20,
- height: width / 20,
- },
- checkboxText: {
- fontFamily: 'SourceSansPro-Light',
- fontSize: Styling.fontSize4,
- color: 'white',
- backgroundColor: 'transparent',
- marginLeft: width / 40,
- },
infoText: {
fontFamily: 'SourceSansPro-Light',
- fontSize: width / 27.6,
- textAlign: 'left',
+ fontSize: Styling.fontSize3,
+ textAlign: 'center',
backgroundColor: 'transparent',
},
infoTextNormal: {
fontFamily: 'SourceSansPro-Light',
- fontSize: width / 27.6,
- textAlign: 'left',
+ fontSize: Styling.fontSize3,
backgroundColor: 'transparent',
},
infoTextBold: {
fontFamily: 'SourceSansPro-Bold',
- fontSize: width / 27.6,
- textAlign: 'left',
+ fontSize: Styling.fontSize3,
backgroundColor: 'transparent',
},
infoBox: {
@@ -96,103 +70,56 @@ class SaveSeedConfirmation extends Component {
constructor(props) {
super(props);
-
- const checkBoxImagePath = tinycolor(props.theme.body.bg).isDark()
- ? whiteCheckboxUncheckedImagePath
- : blackCheckboxUncheckedImagePath;
-
this.state = {
- checkBoxesDetails: [
- {
- path: checkBoxImagePath,
- text: this.props.t('saveSeedConfirmation:alreadyHave'),
- },
- {
- path: checkBoxImagePath,
- text: this.props.t('global:willNotCopyPasteSeed'),
- },
- ],
- hasSavedSeed: false,
+ hasConfirmedBackup: false,
hasAgreedToNotCopyPaste: !isAndroid,
- showCheckbox: false,
+ confirmationText: isAndroid ? props.t('willNotCopyPasteSeed') : props.t('iHaveBackedUp'),
};
}
componentDidMount() {
leaveNavigationBreadcrumb('SaveSeedConfirmation');
- this.timeout = setTimeout(this.onTimerComplete.bind(this), 3000);
}
- onTimerComplete() {
- this.setState({ showCheckbox: true });
+ componentWillUnmount() {
+ timer.clearTimeout('delayTextUpdate');
}
onBackPress() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
onNextPress() {
const { theme: { body } } = this.props;
- const { hasSavedSeed, hasAgreedToNotCopyPaste } = this.state;
- if (hasSavedSeed && hasAgreedToNotCopyPaste) {
- Navigation.push('appStack', {
- component: {
- name: 'seedReentry',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
- },
+ navigator.push('seedReentry', {
+ animations: {
+ push: {
+ enable: false,
},
- });
- }
- }
-
- onCheckboxPress(checkboxIndex) {
- const isFirstCheckbox = checkboxIndex === 0;
- const setCheckboxImagePath = (checkBoxDetail, idx) => ({
- ...checkBoxDetail,
- path: idx === checkboxIndex ? this.getCheckboxImagePath(checkboxIndex) : checkBoxDetail.path,
- });
-
- this.setState({
- checkBoxesDetails: map(this.state.checkBoxesDetails, setCheckboxImagePath),
- ...(isFirstCheckbox
- ? { hasSavedSeed: !this.state.hasSavedSeed }
- : { hasAgreedToNotCopyPaste: !this.state.hasAgreedToNotCopyPaste }),
+ pop: {
+ enable: false,
+ },
+ },
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
- getCheckboxImagePath(checkboxIndex) {
- const { theme: { body } } = this.props;
- const checkboxUncheckedImagePath = tinycolor(body.bg).isDark()
- ? whiteCheckboxUncheckedImagePath
- : blackCheckboxUncheckedImagePath;
- const checkboxCheckedImagePath = tinycolor(body.bg).isDark()
- ? whiteCheckboxCheckedImagePath
- : blackCheckboxCheckedImagePath;
-
- return this.state.checkBoxesDetails[checkboxIndex].path === checkboxCheckedImagePath
- ? checkboxUncheckedImagePath
- : checkboxCheckedImagePath;
+ onSwipeSuccess() {
+ const { t } = this.props;
+ if (!this.state.hasAgreedToNotCopyPaste) {
+ this.setState({ hasAgreedToNotCopyPaste: true });
+ return timer.setTimeout(
+ 'delayTextUpdate',
+ () => this.setState({ confirmationText: t('iHaveBackedUp') }),
+ 1000,
+ );
+ }
+ this.setState({ hasConfirmedBackup: true });
}
renderInfoBoxContent() {
@@ -201,74 +128,85 @@ class SaveSeedConfirmation extends Component {
return (
-
+
{t('reenterSeed')}
{t('reenterSeedWarning')}
+ {t('pleaseConfirm')}
{isAndroid && (
-
- {t('global:androidInsecureClipboardWarning')}
- {t('global:androidCopyPasteWarning')}
-
+
+
+ {t('global:androidInsecureClipboardWarning')}{' '}
+
+ {t('global:androidCopyPasteWarning')}
+
)}
- {t('pleaseConfirm')}
);
}
render() {
- const { t, theme: { body } } = this.props;
- const { hasSavedSeed, hasAgreedToNotCopyPaste } = this.state;
- const textColor = { color: body.color };
- const opacity = hasSavedSeed && hasAgreedToNotCopyPaste ? 1 : 0.4;
- const isSecondCheckbox = (idx) => idx === 1;
-
+ const { t, theme: { body, input, dark, primary, secondary } } = this.props;
return (
-
-
-
+
+
+
+
+ {this.renderInfoBoxContent()}
+
-
+
+ {this.state.confirmationText}
+
-
- {this.state.showCheckbox ? (
-
- {map(this.state.checkBoxesDetails, (detail, idx) => {
- if (!isAndroid && isSecondCheckbox(idx)) {
- return null;
- }
-
- return (
- this.onCheckboxPress(idx)}
- >
-
- {detail.text}
-
- );
- })}
-
- ) : (
-
- )}
-
+
+ {
+ this.onSwipeSuccess();
+ }}
+ sliderReset={this.state.hasAgreedToNotCopyPaste}
+ numberOfSliders={isAndroid ? 2 : 1}
+ />
+
+
- this.onBackPress()}
- onRightButtonPress={() => this.onNextPress()}
- leftButtonText={t('global:goBack')}
- rightButtonText={t('global:continue')}
- rightButtonStyle={{ wrapper: { opacity } }}
- />
+
+ this.onBackPress()}
+ onRightButtonPress={() => this.onNextPress()}
+ leftButtonText={t('global:goBack')}
+ rightButtonText={t('global:continue')}
+ disableRightButton={!this.state.hasConfirmedBackup}
+ />
+
);
diff --git a/src/mobile/src/ui/views/onboarding/SaveYourSeed.js b/src/mobile/src/ui/views/onboarding/SaveYourSeed.js
index 0106735c8b..6f800941c7 100644
--- a/src/mobile/src/ui/views/onboarding/SaveYourSeed.js
+++ b/src/mobile/src/ui/views/onboarding/SaveYourSeed.js
@@ -6,6 +6,7 @@ import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import RNPrint from 'react-native-print';
import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { getChecksum } from 'shared-modules/libs/iota/utils';
import { generateAlert } from 'shared-modules/actions/alerts';
import { paperWalletFilled } from 'shared-modules/images/PaperWallets.js';
@@ -15,12 +16,12 @@ import timer from 'react-native-timer';
import QRCode from 'qr.js/lib/QRCode';
import Button from 'ui/components/Button';
import DualFooterButtons from 'ui/components/DualFooterButtons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import Header from 'ui/components/Header';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
-import { isAndroid, isIPhone11 } from 'libs/device';
-import { Icon } from 'ui/theme/icons';
+import { isAndroid } from 'libs/device';
const styles = StyleSheet.create({
container: {
@@ -29,13 +30,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
+ flex: 1.4,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 3,
+ flex: 2.6,
alignItems: 'center',
justifyContent: 'center',
},
@@ -102,6 +102,7 @@ class SaveYourSeed extends Component {
timer.clearTimeout('delayPrint');
timer.clearTimeout('clipboardClear');
timer.clearTimeout('delayAlert');
+ timer.clearTimeout('saveYourSeed');
}
/**
@@ -110,33 +111,21 @@ class SaveYourSeed extends Component {
*/
onDonePress() {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'saveSeedConfirmation',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('saveSeedConfirmation', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -145,7 +134,7 @@ class SaveYourSeed extends Component {
* @method onBackPress
*/
onBackPress() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
/**
@@ -154,33 +143,21 @@ class SaveYourSeed extends Component {
*/
onWriteSeedDownPress() {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'writeSeedDown',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('writeSeedDown', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -194,33 +171,21 @@ class SaveYourSeed extends Component {
onExportSeedVaultPress() {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'seedVaultBackup',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('seedVaultBackup', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -383,24 +348,75 @@ class SaveYourSeed extends Component {
return (
-
-
-
+
+
+
-
-
- You must save your seed with
- at least one
- of the options listed below.
-
-
+
+
+
+ You must save your seed with
+ at least one
+ of the options listed below.
+
+
+
- {t('mostSecure')}
-
- {!isIPhone11 && (
+
+ {t('mostSecure')}
+
+
+
+
+
+
+
+
+
+
+
- )}
- {!isIPhone11 && }
-
+
- {t('saveYourSeed:writeYourSeedDown')}
-
-
+
+
{/* FIXME Temporarily disable paper wallet on Android */}
{!isAndroid && (
-
-
+
+
+
+
+
)}
- {t('leastSecure')}
+
+ {t('leastSecure')}
+
- this.onBackPress()}
- onRightButtonPress={() => this.onDonePress()}
- leftButtonText={t('global:goBack')}
- rightButtonText={t('iHavesavedMySeed')}
- />
+
+ this.onBackPress()}
+ onRightButtonPress={() => this.onDonePress()}
+ leftButtonText={t('global:goBack')}
+ rightButtonText={t('iHavesavedMySeed')}
+ />
+
);
diff --git a/src/mobile/src/ui/views/onboarding/SeedReentry.js b/src/mobile/src/ui/views/onboarding/SeedReentry.js
index 5f395275e4..ac7ad73552 100644
--- a/src/mobile/src/ui/views/onboarding/SeedReentry.js
+++ b/src/mobile/src/ui/views/onboarding/SeedReentry.js
@@ -4,7 +4,7 @@ import { withNamespaces } from 'react-i18next';
import { Keyboard, StyleSheet, View, Text, TouchableWithoutFeedback } from 'react-native';
import { connect } from 'react-redux';
import { MAX_SEED_LENGTH, VALID_SEED_REGEX } from 'shared-modules/libs/iota/utils';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { generateAlert } from 'shared-modules/actions/alerts';
import { toggleModalActivity } from 'shared-modules/actions/ui';
import FlagSecure from 'react-native-flag-secure-android';
@@ -14,10 +14,10 @@ import CustomTextInput from 'ui/components/CustomTextInput';
import { Styling } from 'ui/theme/general';
import InfoBox from 'ui/components/InfoBox';
import DualFooterButtons from 'ui/components/DualFooterButtons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import SeedVaultImport from 'ui/components/SeedVaultImportComponent';
-import { Icon } from 'ui/theme/icons';
import Header from 'ui/components/Header';
-import { isAndroid, isIPhone11 } from 'libs/device';
+import { isAndroid } from 'libs/device';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
const styles = StyleSheet.create({
@@ -27,13 +27,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
- paddingTop: height / 16,
+ flex: 1.4,
justifyContent: 'flex-start',
alignItems: 'center',
},
midContainer: {
- flex: 3,
+ flex: 2.6,
alignItems: 'center',
justifyContent: 'space-between',
width,
@@ -46,13 +45,19 @@ const styles = StyleSheet.create({
infoTextBottom: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
warningText: {
fontFamily: 'SourceSansPro-Bold',
fontSize: Styling.fontSize3,
paddingTop: height / 60,
+ textAlign: 'center',
+ },
+ seedVaultImportContainer: {
+ flex: 0.5,
+ alignItems: 'center',
+ justifyContent: 'center',
},
});
@@ -105,33 +110,21 @@ class SeedReentry extends Component {
if (isAndroid) {
FlagSecure.deactivate();
}
- Navigation.push('appStack', {
- component: {
- name: 'setAccountName',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('setAccountName', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
this.setState({ seed: '' });
} else if (this.state.seed.length === MAX_SEED_LENGTH && this.state.seed.match(VALID_SEED_REGEX)) {
@@ -150,7 +143,7 @@ class SeedReentry extends Component {
* @method onBackPress
*/
onBackPress() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
/**
@@ -190,7 +183,6 @@ class SeedReentry extends Component {
case 'qrScanner':
return this.props.toggleModalActivity(modalContent, {
theme,
- print: () => this.print(),
hideModal: () => this.props.toggleModalActivity(),
onQRRead: (data) => this.onQRRead(data),
});
@@ -215,33 +207,63 @@ class SeedReentry extends Component {
-
-
- {t('pleaseConfirmYourSeed')}
+
+ {t('pleaseConfirmYourSeed')}
+
-
- {
- if (text.match(VALID_SEED_REGEX) || text.length === 0) {
- this.setState({ seed: text.toUpperCase() });
- }
- }}
- containerStyle={{ width: Styling.contentWidth }}
- maxLength={MAX_SEED_LENGTH}
- autoCapitalize="characters"
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- onSubmitEditing={() => this.onDonePress()}
- theme={theme}
- value={seed}
- widget="qr"
- onQRPress={() => this.onQRPress()}
- seed={seed}
- />
- {!isIPhone11 && (
+
+
+
+ {t('ifYouHaveNotSaved')}
+
+
+ {t('trinityWillNeverAskToReenter')}
+
+
+
+
+
+ {
+ if (text.match(VALID_SEED_REGEX) || text.length === 0) {
+ this.setState({ seed: text.toUpperCase() });
+ }
+ }}
+ maxLength={MAX_SEED_LENGTH}
+ autoCapitalize="characters"
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ onSubmitEditing={() => this.onDonePress()}
+ theme={theme}
+ value={seed}
+ widget="qr"
+ onQRPress={() => this.onQRPress()}
+ seed={seed}
+ isSeedInput
+ />
+
+
+
this.showModal('passwordValidation')}
onSeedImport={(seed) => {
@@ -252,29 +274,22 @@ class SeedReentry extends Component {
this.SeedVaultImport = ref;
}}
/>
- )}
-
-
- {t('ifYouHaveNotSaved')}
-
-
- {t('trinityWillNeverAskToReenter')}
-
-
- }
- />
-
+
+
- this.onBackPress()}
- onRightButtonPress={() => this.onDonePress()}
- leftButtonText={t(':goBack')}
- rightButtonText={t('global:done')}
- />
+
+ this.onBackPress()}
+ onRightButtonPress={() => this.onDonePress()}
+ leftButtonText={t(':goBack')}
+ rightButtonText={t('global:done')}
+ />
+
diff --git a/src/mobile/src/ui/views/onboarding/SeedVaultBackup.js b/src/mobile/src/ui/views/onboarding/SeedVaultBackup.js
index ad8ccf4068..9bd7d300e8 100644
--- a/src/mobile/src/ui/views/onboarding/SeedVaultBackup.js
+++ b/src/mobile/src/ui/views/onboarding/SeedVaultBackup.js
@@ -1,16 +1,16 @@
import React, { Component } from 'react';
import { withNamespaces } from 'react-i18next';
-import { StyleSheet, View, Keyboard, TouchableWithoutFeedback, KeyboardAvoidingView } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { StyleSheet, View, Keyboard, TouchableWithoutFeedback } from 'react-native';
+import { navigator } from 'libs/navigation';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
-import { width, height } from 'libs/dimensions';
import DualFooterButtons from 'ui/components/DualFooterButtons';
-import { Icon } from 'ui/theme/icons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import Header from 'ui/components/Header';
-import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
import SeedVaultExportComponent from 'ui/components/SeedVaultExportComponent';
+import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
import { isAndroid } from 'libs/device';
+import { height } from 'libs/dimensions';
const styles = StyleSheet.create({
container: {
@@ -19,19 +19,18 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
+ flex: 1.4,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 3,
+ flex: 2.6,
alignItems: 'center',
- justifyContent: 'center',
+ justifyContent: 'flex-start',
paddingBottom: height / 16,
},
bottomContainer: {
- flex: 1,
+ flex: 0.5,
justifyContent: 'flex-end',
},
});
@@ -82,7 +81,7 @@ class SeedVaultBackup extends Component {
* @method goBack
*/
goBack() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
render() {
@@ -91,14 +90,23 @@ class SeedVaultBackup extends Component {
return (
-
-
-
-
-
+
+
+
-
-
+
+
+
+
+
this.setState({ step })}
@@ -110,8 +118,10 @@ class SeedVaultBackup extends Component {
seed={seed}
setSeed={(seed) => this.setState({ seed })}
/>
-
-
+
+
+
+
this.SeedVaultExportComponent.onBackPress()}
onRightButtonPress={() => this.onRightButtonPress()}
@@ -122,7 +132,7 @@ class SeedVaultBackup extends Component {
: step === 'isSelectingSaveMethodAndroid' ? t('global:done') : t('global:next')
}
/>
-
+
diff --git a/src/mobile/src/ui/views/onboarding/SetAccountName.js b/src/mobile/src/ui/views/onboarding/SetAccountName.js
index d2d2a25be2..aac6f917a2 100644
--- a/src/mobile/src/ui/views/onboarding/SetAccountName.js
+++ b/src/mobile/src/ui/views/onboarding/SetAccountName.js
@@ -4,7 +4,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { Keyboard, StyleSheet, View, Text, TouchableWithoutFeedback, Clipboard } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { generateAlert } from 'shared-modules/actions/alerts';
import { setAccountInfoDuringSetup } from 'shared-modules/actions/accounts';
import { connect } from 'react-redux';
@@ -13,10 +13,10 @@ import { getAccountNamesFromState } from 'shared-modules/selectors/accounts';
import { VALID_SEED_REGEX } from 'shared-modules/libs/iota/utils';
import CustomTextInput from 'ui/components/CustomTextInput';
import DualFooterButtons from 'ui/components/DualFooterButtons';
-import { width, height } from 'libs/dimensions';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
+import { width } from 'libs/dimensions';
import SeedStore from 'libs/SeedStore';
import InfoBox from 'ui/components/InfoBox';
-import { Icon } from 'ui/theme/icons';
import { Styling } from 'ui/theme/general';
import Header from 'ui/components/Header';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -28,13 +28,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
+ flex: 1.4,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 3,
+ flex: 2.6,
justifyContent: 'flex-start',
alignItems: 'center',
width,
@@ -47,8 +46,7 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
- paddingTop: height / 60,
+ textAlign: 'center',
backgroundColor: 'transparent',
},
});
@@ -159,7 +157,7 @@ export class SetAccountName extends Component {
* @method onBackPress
*/
onBackPress() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
/**
@@ -169,33 +167,21 @@ export class SetAccountName extends Component {
*/
navigateTo(screen) {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: screen,
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push(screen, {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -209,45 +195,56 @@ export class SetAccountName extends Component {
-
-
-
+
+
+
-
- this.setState({ accountName: text })}
- containerStyle={{ width: Styling.contentWidth }}
- autoCapitalize="words"
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- onSubmitEditing={() => this.onDonePress()}
- theme={theme}
- value={accountName}
- />
+
+
+ {t('canUseMultipleSeeds')}
+ {t('youCanAdd')}
+
+
-
- {t('canUseMultipleSeeds')}
- {t('youCanAdd')}
-
- }
- />
-
+
+ this.setState({ accountName: text })}
+ autoCapitalize="words"
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ onSubmitEditing={() => this.onDonePress()}
+ theme={theme}
+ value={accountName}
+ />
+
+
- this.onBackPress()}
- onRightButtonPress={() => this.onDonePress()}
- leftButtonText={t('global:goBack')}
- rightButtonText={t('global:done')}
- leftButtonTestID="setSeedName-back"
- rightButtonTestID="setSeedName-done"
- />
+
+ this.onBackPress()}
+ onRightButtonPress={() => this.onDonePress()}
+ leftButtonText={t('global:goBack')}
+ rightButtonText={t('global:done')}
+ leftButtonTestID="setSeedName-back"
+ rightButtonTestID="setSeedName-done"
+ />
+
diff --git a/src/mobile/src/ui/views/onboarding/SetPassword.js b/src/mobile/src/ui/views/onboarding/SetPassword.js
index 8363ae4daf..0388eea5e7 100644
--- a/src/mobile/src/ui/views/onboarding/SetPassword.js
+++ b/src/mobile/src/ui/views/onboarding/SetPassword.js
@@ -2,9 +2,8 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { StyleSheet, View, Text, TouchableWithoutFeedback, Keyboard } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { connect } from 'react-redux';
-import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
import { setOnboardingComplete } from 'shared-modules/actions/accounts';
import { clearWalletData, clearSeed, setPassword } from 'shared-modules/actions/wallet';
import { generateAlert } from 'shared-modules/actions/alerts';
@@ -12,13 +11,12 @@ import SeedStore from 'libs/SeedStore';
import { storeSaltInKeychain } from 'libs/keychain';
import { generatePasswordHash, getSalt } from 'libs/crypto';
import DualFooterButtons from 'ui/components/DualFooterButtons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { width, height } from 'libs/dimensions';
import InfoBox from 'ui/components/InfoBox';
-import { Icon } from 'ui/theme/icons';
import { Styling } from 'ui/theme/general';
import Header from 'ui/components/Header';
import PasswordFields from 'ui/components/PasswordFields';
-import { isIPhoneX } from 'libs/device';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
console.ignoredYellowBox = ['Native TextInput']; // eslint-disable-line no-console
@@ -30,13 +28,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
+ flex: 1.4,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 3,
+ flex: 2.6,
justifyContent: 'space-around',
alignItems: 'center',
width,
@@ -49,13 +46,13 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
warningText: {
fontFamily: 'SourceSansPro-Bold',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
paddingTop: height / 70,
backgroundColor: 'transparent',
},
@@ -144,38 +141,26 @@ class SetPassword extends Component {
* @method onBackPress
*/
onBackPress() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
navigateToOnboardingComplete() {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'onboardingComplete',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('onboardingComplete', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -184,34 +169,36 @@ class SetPassword extends Component {
const { password, reentry } = this.state;
return (
-
-
-
-
-
-
+
+
+
+
-
-
-
-
- {t('anEncryptedCopy')}
-
-
- {t('changePassword:ensureStrongPassword')}
-
-
- }
- />
-
+
+
+
+
+
+ {t('anEncryptedCopy')}
+
+ {t('changePassword:ensureStrongPassword')}
+
+
+
+
+
{
this.passwordFields = ref;
@@ -222,19 +209,21 @@ class SetPassword extends Component {
setPassword={(password) => this.setState({ password })}
setReentry={(reentry) => this.setState({ reentry })}
/>
-
-
-
+
+
+
+
+
this.onBackPress()}
onRightButtonPress={() => this.onDonePress()}
leftButtonText={t('global:goBack')}
rightButtonText={t('global:done')}
/>
-
+
-
-
+
+
);
}
}
diff --git a/src/mobile/src/ui/views/onboarding/TermsAndConditions.js b/src/mobile/src/ui/views/onboarding/TermsAndConditions.js
index 93aed0d8ac..56f5517edc 100644
--- a/src/mobile/src/ui/views/onboarding/TermsAndConditions.js
+++ b/src/mobile/src/ui/views/onboarding/TermsAndConditions.js
@@ -1,6 +1,6 @@
import React, { Component } from 'react';
import { StyleSheet, View, Text, ScrollView } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import PropTypes from 'prop-types';
import Markdown from 'react-native-markdown-renderer';
import {
@@ -13,6 +13,7 @@ import { connect } from 'react-redux';
import { withNamespaces } from 'react-i18next';
import { acceptTerms } from 'shared-modules/actions/settings';
import SingleFooterButton from 'ui/components/SingleFooterButton';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
import i18next from 'shared-modules/libs/i18next';
@@ -21,15 +22,14 @@ import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
const styles = StyleSheet.create({
container: {
- flex: 1,
- justifyContent: 'center',
alignItems: 'center',
+ height,
+ flex: 1,
},
titleText: {
fontFamily: 'SourceSansPro-SemiBold',
fontSize: Styling.fontSize4,
textAlign: 'center',
- paddingTop: height / 55,
},
titleContainer: {
height: height / 8,
@@ -43,6 +43,7 @@ const styles = StyleSheet.create({
width,
paddingHorizontal: width / 20,
paddingVertical: height / 75,
+ height: height,
},
});
@@ -90,34 +91,22 @@ class TermsAndConditions extends Component {
* @method onNextPress
*/
onNextPress() {
- const { theme: { bar } } = this.props;
+ const { theme: { body, bar } } = this.props;
this.props.acceptTerms();
- Navigation.push('appStack', {
- component: {
- name: 'privacyPolicy',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: 'white',
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: bar.bg,
- },
+ navigator.push('privacyPolicy', {
+ animations: {
+ push: {
+ enable: false,
},
+ pop: {
+ enable: false,
+ },
+ },
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: bar.bg,
},
});
}
@@ -128,37 +117,51 @@ class TermsAndConditions extends Component {
return (
-
+
{t('termsAndConditions')}
-
- {
- let paddingToBottom = height / 35;
- paddingToBottom += e.nativeEvent.layoutMeasurement.height;
+
+
+ {
+ let paddingToBottom = height / 35;
+ paddingToBottom += e.nativeEvent.layoutMeasurement.height;
- if (e.nativeEvent.contentOffset.y >= e.nativeEvent.contentSize.height - paddingToBottom) {
- if (!this.state.hasReadTerms) {
- this.setState({ hasReadTerms: true });
+ if (e.nativeEvent.contentOffset.y >= e.nativeEvent.contentSize.height - paddingToBottom) {
+ if (!this.state.hasReadTerms) {
+ this.setState({ hasReadTerms: true });
+ }
}
- }
- }}
- scrollEventThrottle={400}
- style={styles.scrollView}
- >
-
- {TermsAndConditions.getTermsAndConditions()}
-
-
+ }}
+ scrollEventThrottle={400}
+ style={styles.scrollView}
+ >
+
+ {TermsAndConditions.getTermsAndConditions()}
+
+
+
+
{this.state.hasReadTerms && (
- this.onNextPress()}
- buttonStyle={{
- wrapper: { backgroundColor: primary.color },
- children: { color: primary.body },
- }}
- buttonText={t('accept')}
- />
+
+ this.onNextPress()}
+ buttonStyle={{
+ wrapper: { backgroundColor: primary.color },
+ children: { color: primary.body },
+ }}
+ buttonText={t('accept')}
+ />
+
)}
diff --git a/src/mobile/src/ui/views/onboarding/WalletSetup.js b/src/mobile/src/ui/views/onboarding/WalletSetup.js
index f250f26e93..036fe2b4ee 100644
--- a/src/mobile/src/ui/views/onboarding/WalletSetup.js
+++ b/src/mobile/src/ui/views/onboarding/WalletSetup.js
@@ -3,7 +3,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces, Trans } from 'react-i18next';
import { StyleSheet, View, Text } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { connect } from 'react-redux';
import { MAX_SEED_LENGTH } from 'shared-modules/libs/iota/utils';
import RNExitApp from 'react-native-exit-app';
@@ -12,10 +12,10 @@ import { generateAlert } from 'shared-modules/actions/alerts';
import { toggleModalActivity } from 'shared-modules/actions/ui';
import DualFooterButtons from 'ui/components/DualFooterButtons';
import InfoBox from 'ui/components/InfoBox';
-import { Icon } from 'ui/theme/icons';
import { width, height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
import Header from 'ui/components/Header';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
import { doAttestationFromSafetyNet } from 'libs/safetynet';
import { isAndroid } from 'libs/device';
@@ -27,13 +27,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topContainer: {
- flex: 1,
+ flex: 1.4,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
- flex: 3,
+ flex: 2.6,
alignItems: 'center',
},
bottomContainer: {
@@ -44,8 +43,7 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
- paddingTop: height / 60,
+ textAlign: 'center',
backgroundColor: 'transparent',
},
infoTextLight: {
@@ -94,74 +92,26 @@ class WalletSetup extends Component {
}
/**
- * Navigates to enter seed screen
- * @method redirectToEnterSeedScreen
+ * Navigates to chosen screen
+ * @method redirectToScreen
*/
- redirectToEnterSeedScreen() {
+ redirectToScreen(screen) {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'enterSeed',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push(screen, {
+ animations: {
+ push: {
+ enable: false,
},
- },
- });
- }
-
- /**
- * Navigates to new seed setup screen
- * @method redirectToNewSeedSetupScreen
- */
- redirectToNewSeedSetupScreen() {
- const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'newSeedSetup',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -208,15 +158,12 @@ class WalletSetup extends Component {
}
showModal() {
- const { theme: { negative, body } } = this.props;
+ const { theme } = this.props;
this.props.toggleModalActivity('rootDetection', {
style: { flex: 1 },
hideModal: () => this.hideModal(),
closeApp: () => this.closeApp(),
- backgroundColor: body.bg,
- warningColor: { color: negative.color },
- textColor: { color: body.color },
- borderColor: { borderColor: body.color },
+ theme,
});
}
@@ -244,47 +191,60 @@ class WalletSetup extends Component {
return (
-
-
-
+
+
+
-
-
- {t('doYouNeedASeed')}
-
-
-
-
- {t('seedExplanation', { maxLength: MAX_SEED_LENGTH })}
+
+
+
+
+ {t('seedExplanation', { maxLength: MAX_SEED_LENGTH })}
+
+
+
+ You can use it to access your funds from
+ any wallet
+ , on
+ any device.
-
-
-
- You can use it to access your funds from
-
- any wallet
- , on
- any device.
-
-
- {t('loseSeed')}
-
- }
- />
+
+
+ {t('loseSeed')}
+
+
+
+
+
+
+ {t('doYouNeedASeed')}
+
+
- this.redirectToEnterSeedScreen()}
- onRightButtonPress={() => this.redirectToNewSeedSetupScreen()}
- leftButtonText={t('noIHaveOne')}
- rightButtonText={t('yesINeedASeed')}
- leftButtonTestID="walletSetup-no"
- rightButtonTestID="walletSetup-yes"
- />
+
+ this.redirectToScreen('enterSeed')}
+ onRightButtonPress={() => this.redirectToScreen('newSeedSetup')}
+ leftButtonText={t('noIHaveOne')}
+ rightButtonText={t('yesINeedASeed')}
+ leftButtonTestID="walletSetup-no"
+ rightButtonTestID="walletSetup-yes"
+ />
+
);
diff --git a/src/mobile/src/ui/views/onboarding/WriteSeedDown.js b/src/mobile/src/ui/views/onboarding/WriteSeedDown.js
index c805161a6d..143cbe2666 100644
--- a/src/mobile/src/ui/views/onboarding/WriteSeedDown.js
+++ b/src/mobile/src/ui/views/onboarding/WriteSeedDown.js
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withNamespaces, Trans } from 'react-i18next';
import { StyleSheet, View, Text } from 'react-native';
import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import FlagSecure from 'react-native-flag-secure-android';
@@ -11,9 +12,9 @@ import { toggleModalActivity } from 'shared-modules/actions/ui';
import SeedPicker from 'ui/components/SeedPicker';
import WithUserActivity from 'ui/components/UserActivity';
import DualFooterButtons from 'ui/components/DualFooterButtons';
-import { width, height } from 'libs/dimensions';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
+import { height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
-import { Icon } from 'ui/theme/icons';
import { isAndroid } from 'libs/device';
import Header from 'ui/components/Header';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -29,7 +30,6 @@ const styles = StyleSheet.create({
flex: 1,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midContainer: {
flex: 3,
@@ -50,6 +50,7 @@ const styles = StyleSheet.create({
fontSize: Styling.fontSize3,
textAlign: 'center',
backgroundColor: 'transparent',
+ width: Styling.contentWidth,
},
infoTextNormal: {
fontFamily: 'SourceSansPro-Light',
@@ -84,9 +85,6 @@ class WriteSeedDown extends Component {
constructor(props) {
super(props);
- this.state = {
- isCopyComplete: false,
- };
this.openModal = this.openModal.bind(this);
Navigation.events().bindComponent(this);
}
@@ -114,10 +112,10 @@ class WriteSeedDown extends Component {
/**
* Navigates back to the previous active screen in navigation stack
- * @method onDonePress
+ * @method onBackPress
*/
- onDonePress() {
- Navigation.pop(this.props.componentId);
+ onBackPress() {
+ navigator.pop(this.props.componentId);
}
/**
@@ -190,7 +188,6 @@ class WriteSeedDown extends Component {
render() {
const { t, theme, seed, minimised } = this.props;
- const { isCopyComplete } = this.state;
const textColor = { color: theme.body.color };
return (
@@ -198,44 +195,60 @@ class WriteSeedDown extends Component {
{!minimised && (
-
-
- {t('saveYourSeed:writeYourSeedDown')}
+
+ {t('saveYourSeed:writeYourSeedDown')}
+
-
-
-
-
- Write down your seed and checksum and{' '}
-
- triple check
- that they are correct.
-
-
-
+
+
+
+
+
+ Write down your seed and checksum and{' '}
+
+ triple check
+ that they are correct.
+
+
+
+
- {
- if (index === 8) {
- this.setState({ isCopyComplete: true });
- }
- }}
- />
+
+
+
-
+
+
+
- this.onPrintPress()}
- onRightButtonPress={() => (isCopyComplete ? this.onDonePress() : null)}
- leftButtonText={t('saveYourSeed:printBlankWallet')}
- rightButtonText={isCopyComplete ? t('global:done') : t('scrollToBottom')}
- rightButtonStyle={{ wrapper: { opacity: isCopyComplete ? 1 : 0.2 } }}
- />
+
+ this.onPrintPress()}
+ onRightButtonPress={() => this.onBackPress()}
+ leftButtonText={t('saveYourSeed:printBlankWallet')}
+ rightButtonText={t('global:back')}
+ />
+
)}
diff --git a/src/mobile/src/ui/views/wallet/AddCustomNode.js b/src/mobile/src/ui/views/wallet/AddCustomNode.js
index ab35841634..3b3a4100b5 100644
--- a/src/mobile/src/ui/views/wallet/AddCustomNode.js
+++ b/src/mobile/src/ui/views/wallet/AddCustomNode.js
@@ -243,7 +243,6 @@ class AddCustomNode extends Component {
this.setState({ customNode })}
- containerStyle={{ width: Styling.contentWidth }}
autoCapitalize="none"
autoCorrect={false}
enablesReturnKeyAutomatically
diff --git a/src/mobile/src/ui/views/wallet/AddNewAccount.js b/src/mobile/src/ui/views/wallet/AddNewAccount.js
index 5a924cf697..3f2c72b67b 100644
--- a/src/mobile/src/ui/views/wallet/AddNewAccount.js
+++ b/src/mobile/src/ui/views/wallet/AddNewAccount.js
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { BackHandler, View, StyleSheet } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { setSetting } from 'shared-modules/actions/wallet';
import { withNamespaces } from 'react-i18next';
import timer from 'react-native-timer';
@@ -47,32 +47,20 @@ class AddNewAccount extends Component {
*/
addNewSeed() {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'newSeedSetup',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('newSeedSetup', {
+ animations: {
+ push: {
+ enable: false,
},
+ pop: {
+ enable: false,
+ },
+ },
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
},
});
timer.clearInterval('inactivityTimer');
@@ -91,7 +79,7 @@ class AddNewAccount extends Component {
const rows = [
{ name: t('useExistingSeed'), icon: 'key', function: () => this.props.setSetting('addExistingSeed') },
{ name: t('createNewSeed'), icon: 'plusAlt', function: this.addNewSeed },
- { name: 'back', function: () => this.props.setSetting('mainSettings') },
+ { name: 'back', function: () => this.props.setSetting('accountManagement') },
];
return renderSettingsRows(rows, theme);
}
diff --git a/src/mobile/src/ui/views/wallet/AdvancedSettings.js b/src/mobile/src/ui/views/wallet/AdvancedSettings.js
index 3f473088c0..bba0fd9a68 100644
--- a/src/mobile/src/ui/views/wallet/AdvancedSettings.js
+++ b/src/mobile/src/ui/views/wallet/AdvancedSettings.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { connect } from 'react-redux';
import { StyleSheet, View } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { setSetting } from 'shared-modules/actions/wallet';
import { generateAlert } from 'shared-modules/actions/alerts';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -98,32 +98,20 @@ export class AdvancedSettings extends PureComponent {
*/
reset() {
const { theme: { body } } = this.props;
- Navigation.push('appStack', {
- component: {
- name: 'walletResetConfirm',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('walletResetConfirm', {
+ animations: {
+ push: {
+ enable: false,
},
+ pop: {
+ enable: false,
+ },
+ },
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
},
});
}
diff --git a/src/mobile/src/ui/views/wallet/AutoPromotion.js b/src/mobile/src/ui/views/wallet/AutoPromotion.js
index 2196454b22..88723ceb64 100644
--- a/src/mobile/src/ui/views/wallet/AutoPromotion.js
+++ b/src/mobile/src/ui/views/wallet/AutoPromotion.js
@@ -35,7 +35,7 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
itemLeft: {
@@ -108,17 +108,10 @@ class AutoPromotion extends Component {
-
- {t('autoPromotionExplanation')}
-
- {t('autoPromotionPoW')}
-
-
- }
- />
+
+ {t('autoPromotionExplanation')}
+ {t('autoPromotionPoW')}
+
index}
+ keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => }
contentContainerStyle={styles.listView}
ItemSeparatorComponent={() => }
diff --git a/src/mobile/src/ui/views/wallet/ChangePassword.js b/src/mobile/src/ui/views/wallet/ChangePassword.js
index 43c82374f7..4599ebbfc1 100644
--- a/src/mobile/src/ui/views/wallet/ChangePassword.js
+++ b/src/mobile/src/ui/views/wallet/ChangePassword.js
@@ -38,7 +38,7 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
itemLeft: {
@@ -141,15 +141,9 @@ class ChangePassword extends Component {
-
- {t('ensureStrongPassword')}
-
- }
- />
-
+
+ {t('ensureStrongPassword')}
+
{
this.currentPassword = c;
@@ -160,7 +154,6 @@ class ChangePassword extends Component {
returnKeyType="next"
theme={theme}
widget="empty"
- containerStyle={{ width: Styling.contentWidth }}
autoCapitalize="none"
autoCorrect={false}
enablesReturnKeyAutomatically
diff --git a/src/mobile/src/ui/views/wallet/DeleteAccount.js b/src/mobile/src/ui/views/wallet/DeleteAccount.js
index 4be5d57267..179ee04894 100644
--- a/src/mobile/src/ui/views/wallet/DeleteAccount.js
+++ b/src/mobile/src/ui/views/wallet/DeleteAccount.js
@@ -73,12 +73,12 @@ const styles = StyleSheet.create({
infoBoxText: {
fontFamily: Fonts.secondary,
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
},
infoBoxTitleText: {
fontFamily: Fonts.secondary,
fontSize: Styling.fontSize4,
- textAlign: 'left',
+ textAlign: 'center',
},
warningText: {
fontFamily: Fonts.secondary,
@@ -142,20 +142,22 @@ class DeleteAccount extends Component {
}
/**
- * Displays a confirmation modal for account deletion if user entered password is correct/valid
+ * Deletes account if user entered correct/valid password
* Otherwise generates an alert
*
* @method onContinuePress
*/
async onContinuePress() {
- const { password, t } = this.props;
+ const { password, t, isAutoPromoting } = this.props;
if (!this.state.pressedContinue) {
return this.setState({ pressedContinue: true });
}
const pwdHash = await hash(this.state.password);
-
if (isEqual(password, pwdHash)) {
- return this.showModal();
+ if (isAutoPromoting || this.props.shouldPreventAction) {
+ return this.props.generateAlert('error', t('global:pleaseWait'), t('global:pleaseWaitExplanation'));
+ }
+ return this.delete();
}
return this.props.generateAlert(
'error',
@@ -164,29 +166,6 @@ class DeleteAccount extends Component {
);
}
- /**
- * Deletes account
- *
- * @method onYesPress
- */
- onYesPress() {
- const { t, isAutoPromoting } = this.props;
- if (isAutoPromoting || this.props.shouldPreventAction) {
- return this.props.generateAlert('error', t('global:pleaseWait'), t('global:pleaseWaitExplanation'));
- }
- this.hideModal();
- this.delete();
- }
-
- /**
- * Hides account deletion confirmation modal
- *
- * @method onNoPress
- */
- onNoPress() {
- this.hideModal();
- }
-
/**
* Deletes account information from keychain and store
*
@@ -228,22 +207,17 @@ class DeleteAccount extends Component {
{!this.state.pressedContinue && (
-
-
- {t('global:account')}: {selectedAccountName}
-
-
- {t('areYouSure')}
-
-
- {t('yourSeedWillBeRemoved')}
-
-
- }
- />
+
+
+ {t('global:account')}: {selectedAccountName}
+
+
+ {t('areYouSure')}
+
+
+ {t('yourSeedWillBeRemoved')}
+
+
)}
{this.state.pressedContinue && (
@@ -255,7 +229,6 @@ class DeleteAccount extends Component {
this.setState({ password })}
- containerStyle={{ width: Styling.contentWidth }}
autoCapitalize="none"
autoCorrect={false}
enablesReturnKeyAutomatically
@@ -284,7 +257,9 @@ class DeleteAccount extends Component {
hitSlop={{ top: height / 55, bottom: height / 55, left: width / 55, right: width / 55 }}
>
- {t('global:continue')}
+
+ {this.state.pressedContinue ? t('delete') : t('global:continue')}
+
diff --git a/src/mobile/src/ui/views/wallet/Disable2FA.js b/src/mobile/src/ui/views/wallet/Disable2FA.js
index 1b4b67c227..753c7c17fe 100644
--- a/src/mobile/src/ui/views/wallet/Disable2FA.js
+++ b/src/mobile/src/ui/views/wallet/Disable2FA.js
@@ -4,16 +4,16 @@ import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import authenticator from 'authenticator';
import { StyleSheet, View, Text, TouchableWithoutFeedback, Keyboard } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { resetWallet, set2FAStatus } from 'shared-modules/actions/settings';
import { generateAlert } from 'shared-modules/actions/alerts';
import { getTwoFactorAuthKeyFromKeychain } from 'libs/keychain';
-import WithBackPressGoToHome from 'ui/components/BackPressGoToHome';
import Fonts from 'ui/theme/fonts';
import CustomTextInput from 'ui/components/CustomTextInput';
import DualFooterButtons from 'ui/components/DualFooterButtons';
-import { width, height } from 'libs/dimensions';
-import { Icon } from 'ui/theme/icons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
+import Header from 'ui/components/Header';
+import { height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -24,10 +24,9 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topWrapper: {
- flex: 1.3,
+ flex: 1.6,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midWrapper: {
flex: 1.6,
@@ -107,7 +106,7 @@ class Disable2FA extends Component {
* @method goBack
*/
goBack() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
render() {
@@ -120,30 +119,49 @@ class Disable2FA extends Component {
-
+
+
+
- Enter your token to disable 2FA
- this.setState({ token })}
- containerStyle={{ width: Styling.contentWidth }}
- autoCapitalize="none"
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- value={this.state.token}
- keyboardType="numeric"
- theme={theme}
- />
+
+ Enter your token to disable 2FA
+
+
+ this.setState({ token })}
+ autoCapitalize="none"
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ value={this.state.token}
+ keyboardType="numeric"
+ theme={theme}
+ />
+
-
+
+
+
@@ -163,6 +181,6 @@ const mapDispatchToProps = {
set2FAStatus,
};
-export default WithBackPressGoToHome()(
- withNamespaces(['resetWalletRequirePassword', 'global'])(connect(mapStateToProps, mapDispatchToProps)(Disable2FA)),
+export default withNamespaces(['resetWalletRequirePassword', 'global'])(
+ connect(mapStateToProps, mapDispatchToProps)(Disable2FA),
);
diff --git a/src/mobile/src/ui/views/wallet/EditAccountName.js b/src/mobile/src/ui/views/wallet/EditAccountName.js
index b581911595..b25fea4593 100644
--- a/src/mobile/src/ui/views/wallet/EditAccountName.js
+++ b/src/mobile/src/ui/views/wallet/EditAccountName.js
@@ -158,7 +158,6 @@ export class EditAccountName extends Component {
this.setState({ accountName })}
- containerStyle={{ width: Styling.contentWidth }}
autoCapitalize="none"
autoCorrect={false}
enablesReturnKeyAutomatically
diff --git a/src/mobile/src/ui/views/wallet/FingerprintSetup.js b/src/mobile/src/ui/views/wallet/FingerprintSetup.js
index a7f7213dd4..ce09134a48 100644
--- a/src/mobile/src/ui/views/wallet/FingerprintSetup.js
+++ b/src/mobile/src/ui/views/wallet/FingerprintSetup.js
@@ -1,19 +1,20 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { StyleSheet, View, Text, TouchableOpacity, Alert } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { setFingerprintStatus } from 'shared-modules/actions/settings';
import { toggleModalActivity } from 'shared-modules/actions/ui';
import { generateAlert } from 'shared-modules/actions/alerts';
import { connect } from 'react-redux';
import FingerprintScanner from 'react-native-fingerprint-scanner';
import { withNamespaces } from 'react-i18next';
-import WithBackPressGoToHome from 'ui/components/BackPressGoToHome';
import Fonts from 'ui/theme/fonts';
import { width, height } from 'libs/dimensions';
import { Styling } from 'ui/theme/general';
import { Icon } from 'ui/theme/icons';
+import Header from 'ui/components/Header';
import SingleFooterButton from 'ui/components/SingleFooterButton';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { isAndroid, isIPhoneX } from 'libs/device';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -24,14 +25,13 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topWrapper: {
- flex: 0.3,
+ flex: 0.65,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
width,
},
midWrapper: {
- flex: 2,
+ flex: 3.9,
alignItems: 'center',
justifyContent: 'flex-start',
paddingHorizontal: width / 10,
@@ -46,18 +46,18 @@ const styles = StyleSheet.create({
fontSize: Styling.fontSize5,
textAlign: 'center',
backgroundColor: 'transparent',
+ paddingTop: height / 20,
},
infoText: {
fontFamily: Fonts.secondary,
fontSize: Styling.fontSize4,
textAlign: 'center',
backgroundColor: 'transparent',
+ width: width / 1.2,
},
button: {
width: width / 1.65,
- height: height / 3.3,
alignItems: 'center',
- justifyContent: 'space-between',
padding: width / 12,
borderRadius: Styling.borderRadius,
borderWidth: 1,
@@ -134,11 +134,12 @@ class FingerprintEnable extends Component {
activateFingerprintScanner() {
const { t } = this.props;
- if (isAndroid) {
- this.openModal();
- }
+
FingerprintScanner.isSensorAvailable()
- .then(
+ .then(() => {
+ if (isAndroid) {
+ this.openModal();
+ }
FingerprintScanner.authenticate({
description: t('instructionsEnable'),
onAttempt: this.handleAuthenticationAttempted,
@@ -162,8 +163,8 @@ class FingerprintEnable extends Component {
t('fingerprintAuthFailed'),
t('fingerprintAuthFailedExplanation'),
);
- }),
- )
+ });
+ })
.catch(() => {
this.props.generateAlert('error', t('fingerprintUnavailable'), t('fingerprintUnavailableExplanation'));
});
@@ -202,7 +203,7 @@ class FingerprintEnable extends Component {
}
navigateToHome() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
hideModal() {
@@ -219,29 +220,49 @@ class FingerprintEnable extends Component {
return (
-
+
+
+
- {instructions}
+
+ {instructions}
+
-
-
- {authenticationStatus}
-
+
+
+ {authenticationStatus}
+
+
- this.navigateToHome()}
- buttonStyle={{
- wrapper: { backgroundColor: theme.primary.color },
- children: { color: theme.primary.body },
- }}
- buttonText={t('global:done')}
- />
+
+ this.navigateToHome()}
+ buttonStyle={{
+ wrapper: { backgroundColor: theme.primary.color },
+ children: { color: theme.primary.body },
+ }}
+ buttonText={t('global:done')}
+ />
+
);
@@ -259,6 +280,6 @@ const mapDispatchToProps = {
toggleModalActivity,
};
-export default WithBackPressGoToHome()(
- withNamespaces(['fingerprintSetup', 'global'])(connect(mapStateToProps, mapDispatchToProps)(FingerprintEnable)),
+export default withNamespaces(['fingerprintSetup', 'global'])(
+ connect(mapStateToProps, mapDispatchToProps)(FingerprintEnable),
);
diff --git a/src/mobile/src/ui/views/wallet/ForceChangePassword.js b/src/mobile/src/ui/views/wallet/ForceChangePassword.js
index 5009c3626b..e123b10db4 100644
--- a/src/mobile/src/ui/views/wallet/ForceChangePassword.js
+++ b/src/mobile/src/ui/views/wallet/ForceChangePassword.js
@@ -4,7 +4,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { StyleSheet, View, Text, TouchableWithoutFeedback, TouchableOpacity, Keyboard } from 'react-native';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { connect } from 'react-redux';
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
import { zxcvbn } from 'shared-modules/libs/exports';
@@ -46,7 +46,7 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
itemLeft: {
@@ -167,30 +167,18 @@ class ForceChangePassword extends Component {
navigateToLogin() {
const { theme: { body } } = this.props;
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'login',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.setStackRoot('login', {
+ animations: {
+ setStackRoot: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -259,18 +247,13 @@ class ForceChangePassword extends Component {
-
-
- With update 0.5.0, it is necessary to change your password before using
- Trinity. If your current password fulfils the password strength requirements
- then you may use your current password again.
-
-
- }
- />
+
+
+ With update 0.5.0, it is necessary to change your password before using Trinity. If
+ your current password fulfils the password strength requirements then you may use
+ your current password again.
+
+
{this.renderTextField(
(c) => {
diff --git a/src/mobile/src/ui/views/wallet/History.js b/src/mobile/src/ui/views/wallet/History.js
index 657602d27b..e95fe2dce2 100644
--- a/src/mobile/src/ui/views/wallet/History.js
+++ b/src/mobile/src/ui/views/wallet/History.js
@@ -131,7 +131,7 @@ class History extends Component {
theme: { primary, secondary },
} = this.props;
// FIXME: Overly-complex ugly code. Think of a new updateModalProps approach.
- if (isModalActive && modalContent === 'historyContent') {
+ if (isModalActive && modalContent === 'transactionHistory') {
const newBundleProps = newProps.transfers[modalProps.bundle];
if (
isRetryingFailedTransaction !== newProps.isRetryingFailedTransaction ||
@@ -150,11 +150,8 @@ class History extends Component {
if (modalProps.bundle in newProps.transfers && newBundleProps.persistence !== modalProps.persistence) {
this.props.updateModalProps({
persistence: newBundleProps.persistence,
- status: computeStatusText(
- newBundleProps.outputs,
- newBundleProps.persistence,
- newBundleProps.incoming,
- ),
+ outputs: newBundleProps.outputs,
+ incoming: newBundleProps.incoming,
style: { titleColor: modalProps.incoming ? primary.color : secondary.color },
});
}
@@ -230,7 +227,7 @@ class History extends Component {
return;
}
this.props.toggleModalActivity(
- 'historyContent',
+ 'transactionHistory',
merge({}, props, {
disableWhen: isAutoPromoting || isPromotingTransaction || isRetryingFailedTransaction,
isRetryingFailedTransaction,
@@ -283,7 +280,7 @@ class History extends Component {
data={data}
initialNumToRender={8} // TODO: Should be dynamically computed.
removeClippedSubviews
- keyExtractor={(item, index) => index}
+ keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => }
refreshControl={
{
- const { inactive, minimised } = this.props;
- if (inactive || minimised) {
- return;
- }
- this.handleCloseTopBar();
- this.setState({ isKeyboardActive: true });
- Animated.timing(this.viewFlex, {
- duration: event.duration,
- toValue: 0.2,
- }).start();
- Animated.timing(this.topBarHeight, {
- duration: event.duration,
- toValue: isIPhoneX ? 0 : 20,
- }).start();
- };
-
- keyboardWillHide = (event) => {
- timer.setTimeout('iOSKeyboardTimeout', () => this.setState({ isKeyboardActive: false }), event.duration);
- Animated.timing(this.viewFlex, {
- duration: event.duration,
- toValue: 0.7,
- }).start();
- Animated.timing(this.topBarHeight, {
- duration: event.duration,
- toValue: height / 8.8,
- }).start();
- };
-
- keyboardDidShow = () => {
- const { inactive, minimised } = this.props;
- if (inactive || minimised) {
- return;
- }
- this.handleCloseTopBar();
- this.topBarHeight = 20;
- this.viewFlex = 0.2;
- this.setState({ isKeyboardActive: true });
- };
-
- keyboardDidHide = () => {
- this.topBarHeight = height / 8.8;
- this.viewFlex = 0.7;
- this.setState({ isKeyboardActive: false });
- };
-
/**
* Mark the task of displaying snapshot transition modal as done
*/
@@ -319,7 +304,6 @@ class Home extends Component {
render() {
const { t, inactive, minimised, isFingerprintEnabled, theme: { body, negative, positive }, theme } = this.props;
- const { isKeyboardActive } = this.state;
const textColor = { color: body.color };
return (
@@ -341,7 +325,6 @@ class Home extends Component {
this.onTabSwitch(name)}
handleCloseTopBar={() => this.handleCloseTopBar()}
- isKeyboardActive={isKeyboardActive}
/>
@@ -375,11 +358,7 @@ class Home extends Component {
/>
-
+
)) || (
@@ -416,11 +395,13 @@ const mapStateToProps = (state) => ({
isTransitioning: state.ui.isTransitioning,
currentSetting: state.wallet.currentSetting,
isTopBarActive: state.home.isTopBarActive,
+ currentRoute: state.home.childRoute,
isFingerprintEnabled: state.settings.isFingerprintEnabled,
isModalActive: state.ui.isModalActive,
shouldTransitionForSnapshot: shouldTransitionForSnapshot(state),
hasDisplayedSnapshotTransitionGuide: hasDisplayedSnapshotTransitionGuide(state),
selectedAccountName: getSelectedAccountName(state),
+ isKeyboardActive: state.ui.isKeyboardActive,
});
const mapDispatchToProps = {
@@ -436,5 +417,5 @@ const mapDispatchToProps = {
};
export default WithUserActivity()(
- WithBackPress()(withNamespaces(['home', 'global', 'login'])(connect(mapStateToProps, mapDispatchToProps)(Home))),
+ withNamespaces(['home', 'global', 'login'])(connect(mapStateToProps, mapDispatchToProps)(Home)),
);
diff --git a/src/mobile/src/ui/views/wallet/Loading.js b/src/mobile/src/ui/views/wallet/Loading.js
index a92fe59c43..c9309debd4 100644
--- a/src/mobile/src/ui/views/wallet/Loading.js
+++ b/src/mobile/src/ui/views/wallet/Loading.js
@@ -8,14 +8,13 @@ import whiteWelcomeAnimationPartOne from 'shared-modules/animations/welcome-part
import whiteWelcomeAnimationPartTwo from 'shared-modules/animations/welcome-part-two-white.json';
import blackWelcomeAnimationPartOne from 'shared-modules/animations/welcome-part-one-black.json';
import blackWelcomeAnimationPartTwo from 'shared-modules/animations/welcome-part-two-black.json';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { withNamespaces } from 'react-i18next';
import { connect } from 'react-redux';
import KeepAwake from 'react-native-keep-awake';
import LottieView from 'lottie-react-native';
import { getAccountInfo, getFullAccountInfo } from 'shared-modules/actions/accounts';
import { setLoginRoute } from 'shared-modules/actions/ui';
-import tinycolor from 'tinycolor2';
import { getMarketData, getChartData, getPrice } from 'shared-modules/actions/marketData';
import { getCurrencyData } from 'shared-modules/actions/settings';
import { setSetting } from 'shared-modules/actions/wallet';
@@ -28,9 +27,10 @@ import {
} from 'shared-modules/selectors/accounts';
import { Styling } from 'ui/theme/general';
import SeedStore from 'libs/SeedStore';
-import { isAndroid } from 'libs/device';
+import { isAndroid, isIPhoneX } from 'libs/device';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
import SingleFooterButton from 'ui/components/SingleFooterButton';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { width, height } from 'libs/dimensions';
@@ -66,13 +66,18 @@ const styles = StyleSheet.create({
infoTextContainer: {
flex: 1,
justifyContent: 'flex-end',
- paddingBottom: height / 20,
+ paddingBottom: isIPhoneX ? height / 40 : height / 20,
},
- nodeChangeContainer: {
+ bottomContainer: {
position: 'absolute',
bottom: 0,
alignItems: 'center',
justifyContent: 'center',
+ width,
+ },
+ loadingAnimationContainer: {
+ height,
+ justifyContent: 'center',
},
});
@@ -125,15 +130,18 @@ class Loading extends Component {
setLoginRoute: PropTypes.func.isRequired,
/** All stored account names */
accountNames: PropTypes.array.isRequired,
+ /** @ignore */
+ isThemeDark: PropTypes.bool.isRequired,
};
- constructor() {
- super();
+ constructor(props) {
+ super(props);
this.state = {
elipsis: '',
animationPartOneDone: false,
displayNodeChangeOption: false,
};
+ this.welcomeAnimationPath = props.isThemeDark ? whiteWelcomeAnimationPartOne : blackWelcomeAnimationPartOne;
this.onChangeNodePress = this.onChangeNodePress.bind(this);
}
@@ -147,7 +155,7 @@ class Loading extends Component {
password,
deepLinkActive,
} = this.props;
-
+ this.props.setLoginRoute('login');
leaveNavigationBreadcrumb('Loading');
KeepAwake.activate();
this.animation.play();
@@ -228,7 +236,7 @@ class Loading extends Component {
}
setAnimationOneTimout() {
- timer.setTimeout('animationTimeout', () => this.playAnimationTwo(), 2000);
+ timer.setTimeout('animationTimeout', () => this.playAnimationTwo(), 1900);
}
/**
@@ -244,7 +252,12 @@ class Loading extends Component {
}
playAnimationTwo() {
- this.setState({ animationPartOneDone: true });
+ this.welcomeAnimationPath = this.props.isThemeDark
+ ? whiteWelcomeAnimationPartTwo
+ : blackWelcomeAnimationPartTwo;
+ this.setState({
+ animationPartOneDone: true,
+ });
this.animation.play();
}
@@ -272,30 +285,18 @@ class Loading extends Component {
*/
redirectToLogin() {
const { theme: { body } } = this.props;
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'login',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.setStackRoot('login', {
+ animations: {
+ setStackRoot: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -306,48 +307,36 @@ class Loading extends Component {
*/
redirectToHome() {
const { theme: { body, bar } } = this.props;
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'home',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: bar.alt,
- },
+ navigator.setStackRoot('home', {
+ animations: {
+ setStackRoot: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: bar.alt,
+ },
});
}
render() {
- const { t, addingAdditionalAccount, theme: { body, primary } } = this.props;
- const { displayNodeChangeOption } = this.state;
+ const { t, addingAdditionalAccount, theme: { body, primary }, isThemeDark } = this.props;
const textColor = { color: body.color };
- const isBgLight = tinycolor(body.bg).isLight();
- const loadingAnimationPath = isBgLight ? blackLoadingAnimation : whiteLoadingAnimation;
- const welcomeAnimationPartOnePath = isBgLight ? blackWelcomeAnimationPartOne : whiteWelcomeAnimationPartOne;
- const welcomeAnimationPartTwoPath = isBgLight ? blackWelcomeAnimationPartTwo : whiteWelcomeAnimationPartTwo;
+ const loadingAnimationPath = isThemeDark ? whiteLoadingAnimation : blackLoadingAnimation;
if (addingAdditionalAccount) {
return (
-
-
+
{
this.animation = animation;
@@ -356,22 +345,29 @@ class Loading extends Component {
style={styles.animationNewSeed}
loop
/>
-
+
-
-
- {t('loadingFirstTime')}
- {t('doNotMinimise')}
-
- {t('thisMayTake')}
-
-
- {isAndroid ? '..' : this.state.elipsis}
-
+
+
+
+ {t('loadingFirstTime')}
+ {t('doNotMinimise')}
+
+ {t('thisMayTake')}
+
+
+ {isAndroid ? '..' : this.state.elipsis}
+
+
-
+
);
}
@@ -379,28 +375,22 @@ class Loading extends Component {
return (
-
- {(!this.state.animationPartOneDone && (
- {
- this.animation = animation;
- }}
- source={welcomeAnimationPartOnePath}
- style={styles.animationLoading}
- />
- )) || (
- {
- this.animation = animation;
- }}
- source={welcomeAnimationPartTwoPath}
- style={styles.animationLoading}
- loop
- />
- )}
-
- {displayNodeChangeOption && (
-
+
+ {
+ this.animation = animation;
+ }}
+ source={this.welcomeAnimationPath}
+ style={styles.animationLoading}
+ />
+
+ {this.state.displayNodeChangeOption && (
+
{t('takingAWhile')}...
-
+
)}
@@ -430,6 +420,7 @@ const mapStateToProps = (state) => ({
ready: state.wallet.ready,
password: state.wallet.password,
theme: state.settings.theme,
+ isThemeDark: state.settings.theme.isDark,
currency: state.settings.currency,
deepLinkActive: state.wallet.deepLinkActive,
});
diff --git a/src/mobile/src/ui/views/wallet/Login.js b/src/mobile/src/ui/views/wallet/Login.js
index 70a2bd3239..ea458c52b8 100644
--- a/src/mobile/src/ui/views/wallet/Login.js
+++ b/src/mobile/src/ui/views/wallet/Login.js
@@ -5,16 +5,17 @@ import authenticator from 'authenticator';
import PropTypes from 'prop-types';
import KeepAwake from 'react-native-keep-awake';
import SplashScreen from 'react-native-splash-screen';
-import { Navigation } from 'react-native-navigation';
-import { Linking, StyleSheet, View } from 'react-native';
+import { navigator } from 'libs/navigation';
+import { Linking, StyleSheet } from 'react-native';
+import timer from 'react-native-timer';
import { parseAddress } from 'shared-modules/libs/iota/utils';
import { setFullNode } from 'shared-modules/actions/settings';
import { setPassword, setSetting, setDeepLink } from 'shared-modules/actions/wallet';
import { setUserActivity, setLoginPasswordField, setLoginRoute } from 'shared-modules/actions/ui';
import { generateAlert } from 'shared-modules/actions/alerts';
-import WithBackPressCloseApp from 'ui/components/BackPressCloseApp';
import NodeOptionsOnLogin from 'ui/views/wallet/NodeOptionsOnLogin';
import EnterPasswordOnLoginComponent from 'ui/components/EnterPasswordOnLogin';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import Enter2FAComponent from 'ui/components/Enter2FA';
import { authorize, getTwoFactorAuthKeyFromKeychain, hash } from 'libs/keychain';
import { isAndroid } from 'libs/device';
@@ -62,9 +63,11 @@ class Login extends Component {
forceUpdate: PropTypes.bool.isRequired,
};
- constructor() {
- super();
-
+ constructor(props) {
+ super(props);
+ this.state = {
+ nextLoginRoute: props.loginRoute,
+ };
this.onComplete2FA = this.onComplete2FA.bind(this);
this.onLoginPress = this.onLoginPress.bind(this);
this.setDeepUrl = this.setDeepUrl.bind(this);
@@ -82,8 +85,24 @@ class Login extends Component {
this.props.setUserActivity({ inactive: false });
}
+ componentWillReceiveProps(newProps) {
+ if (this.props.loginRoute !== newProps.loginRoute) {
+ this.animationOutType = this.getAnimation(this.props.loginRoute, newProps.loginRoute, false);
+ this.animationInType = this.getAnimation(this.props.loginRoute, newProps.loginRoute);
+ timer.setTimeout(
+ 'delayRouteChange' + newProps.loginRoute,
+ () => {
+ this.setState({ nextLoginRoute: newProps.loginRoute });
+ },
+ 150,
+ );
+ }
+ }
+
componentWillUnmount() {
Linking.removeEventListener('url');
+ timer.clearTimeout('delayRouteChange' + this.props.loginRoute);
+ timer.clearTimeout('delayNavigation');
}
/**
@@ -143,7 +162,6 @@ class Login extends Component {
const verified = authenticator.verifyToken(key, token);
if (verified) {
this.navigateToLoading();
- this.props.setLoginRoute('login');
} else {
this.props.generateAlert('error', t('twoFA:wrongCode'), t('twoFA:wrongCodeExplanation'));
}
@@ -152,6 +170,29 @@ class Login extends Component {
}
}
+ /**
+ * Gets animation according to current and next login route
+ *
+ * @param {string} currentLoginRoute
+ * @param {string} nextLoginRoute
+ * @param {bool} animationIn
+ * @returns {object}
+ */
+ getAnimation(currentLoginRoute, nextLoginRoute, animationIn = true) {
+ const routes = ['login', 'nodeOptions', 'customNode', 'nodeSelection', 'complete2FA'];
+ if (routes.indexOf(currentLoginRoute) < routes.indexOf(nextLoginRoute)) {
+ if (animationIn) {
+ return ['slideInRightSmall', 'fadeIn'];
+ }
+ return ['slideOutLeftSmall', 'fadeOut'];
+ } else if (routes.indexOf(currentLoginRoute) > routes.indexOf(nextLoginRoute)) {
+ if (animationIn) {
+ return ['slideInLeftSmall', 'fadeIn'];
+ }
+ return ['slideOutRightSmall', 'fadeOut'];
+ }
+ }
+
/**
* Parses deep link data and sets send fields
* FIXME: Temporarily disabled to improve security
@@ -173,10 +214,11 @@ class Login extends Component {
*/
navigateToLoading() {
const { theme: { body } } = this.props;
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'loading',
- options: {
+ this.animationOutType = ['fadeOut'];
+ timer.setTimeout(
+ 'delayNavigation',
+ () => {
+ navigator.setStackRoot('loading', {
animations: {
setStackRoot: {
enable: false,
@@ -184,28 +226,31 @@ class Login extends Component {
},
layout: {
backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
},
statusBar: {
- drawBehind: true,
backgroundColor: body.bg,
},
- },
+ });
},
- });
+ 150,
+ );
}
render() {
- const { theme, password, loginRoute, isFingerprintEnabled } = this.props;
+ const { theme, password, isFingerprintEnabled } = this.props;
+ const { nextLoginRoute } = this.state;
const body = theme.body;
return (
-
- {loginRoute === 'login' && (
+
+ {nextLoginRoute === 'login' && (
)}
- {loginRoute === 'complete2FA' && (
+ {nextLoginRoute === 'complete2FA' && (
this.props.setLoginRoute('login')}
theme={theme}
/>
)}
- {loginRoute !== 'complete2FA' && loginRoute !== 'login' && }
-
+ {nextLoginRoute !== 'complete2FA' &&
+ nextLoginRoute !== 'login' && }
+
);
}
}
@@ -253,6 +299,4 @@ const mapDispatchToProps = {
setLoginRoute,
};
-export default WithBackPressCloseApp()(
- withNamespaces(['login', 'global', 'twoFA'])(connect(mapStateToProps, mapDispatchToProps)(Login)),
-);
+export default withNamespaces(['login', 'global', 'twoFA'])(connect(mapStateToProps, mapDispatchToProps)(Login));
diff --git a/src/mobile/src/ui/views/wallet/MainSettings.js b/src/mobile/src/ui/views/wallet/MainSettings.js
index 509f29e2a0..5fb3bec715 100644
--- a/src/mobile/src/ui/views/wallet/MainSettings.js
+++ b/src/mobile/src/ui/views/wallet/MainSettings.js
@@ -4,7 +4,8 @@ import { withNamespaces } from 'react-i18next';
import { connect } from 'react-redux';
import { StyleSheet, View } from 'react-native';
import i18next from 'shared-modules/libs/i18next';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
+import timer from 'react-native-timer';
import { toggleModalActivity } from 'shared-modules/actions/ui';
import { getLabelFromLocale } from 'shared-modules/libs/i18n';
import { setSetting, clearWalletData, setPassword } from 'shared-modules/actions/wallet';
@@ -51,19 +52,21 @@ export class MainSettings extends Component {
leaveNavigationBreadcrumb('MainSettings');
}
+ componentWillUnmount() {
+ timer.clearTimeout('delayLogout');
+ }
+
/**
* Opens or closes modal
* @method openLogoutModal
*/
openLogoutModal() {
- const { theme: { body } } = this.props;
+ const { theme } = this.props;
this.props.toggleModalActivity('logoutConfirmation', {
style: { flex: 1 },
hideModal: () => this.props.toggleModalActivity(),
logout: this.logout,
- backgroundColor: { backgroundColor: body.bg },
- textColor: { color: body.color },
- borderColor: { borderColor: body.color },
+ theme,
});
}
@@ -74,12 +77,10 @@ export class MainSettings extends Component {
logout() {
const { theme: { body } } = this.props;
this.props.toggleModalActivity();
- this.props.clearWalletData();
- this.props.setPassword({});
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'login',
- options: {
+ timer.setTimeout(
+ 'delayLogout',
+ () => {
+ navigator.setStackRoot('login', {
animations: {
setStackRoot: {
enable: false,
@@ -87,20 +88,16 @@ export class MainSettings extends Component {
},
layout: {
backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
},
statusBar: {
- drawBehind: true,
backgroundColor: body.bg,
},
- },
+ });
+ this.props.clearWalletData();
+ this.props.setPassword({});
},
- });
+ 500,
+ );
}
renderSettingsContent() {
diff --git a/src/mobile/src/ui/views/wallet/ManualSync.js b/src/mobile/src/ui/views/wallet/ManualSync.js
index 0e4638b120..c6afc27a55 100644
--- a/src/mobile/src/ui/views/wallet/ManualSync.js
+++ b/src/mobile/src/ui/views/wallet/ManualSync.js
@@ -50,14 +50,14 @@ const styles = StyleSheet.create({
marginLeft: width / 20,
},
syncButtonContainer: {
- flex: 1,
+ flex: 0.7,
alignItems: 'center',
justifyContent: 'center',
},
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
activityIndicator: {
@@ -118,17 +118,12 @@ export class ManualSync extends Component {
{!isSyncing && (
-
- {t('manualSync:outOfSync')}
-
- {t('manualSync:pressToSync')}
-
-
- }
- />
+
+ {t('manualSync:outOfSync')}
+
+ {t('manualSync:pressToSync')}
+
+
-
-
- {t('manualSync:syncingYourAccount')}
-
-
- {t('manualSync:thisMayTake')}
-
-
- {t('manualSync:doNotClose')}
-
-
- }
- />
+
+ {t('manualSync:syncingYourAccount')}
+
+ {t('manualSync:thisMayTake')}
+
+
+ {t('manualSync:doNotClose')}
+
+
-
- {t('advancedModeExplanation')}
-
- {t('modesExplanation')}
-
-
- }
- />
+
+ {t('advancedModeExplanation')}
+
+ {t('modesExplanation')}
+
+
({
theme: state.settings.theme,
- loginRoute: state.ui.loginRoute,
});
const mapDispatchToProps = {
diff --git a/src/mobile/src/ui/views/wallet/Pow.js b/src/mobile/src/ui/views/wallet/Pow.js
index 71198e15d3..357583db49 100644
--- a/src/mobile/src/ui/views/wallet/Pow.js
+++ b/src/mobile/src/ui/views/wallet/Pow.js
@@ -35,7 +35,7 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
itemLeft: {
@@ -99,17 +99,12 @@ class Pow extends Component {
-
- {t('feeless')}
-
- {t('localOrRemote')}
-
-
- }
- />
+
+ {t('feeless')}
+
+ {t('localOrRemote')}
+
+
0) {
- timer.setTimeout(
- 'addressPasteAlertDelay',
- () => this.detectAddressInClipboard(),
- isKeyboardActive ? 1000 : 250,
- );
- }
+ this.showModal('transferConfirmation');
}
onQRRead(data) {
@@ -402,23 +387,13 @@ export class Send extends Component {
return 1;
}
- getProgressSummary() {
- const { timeTakenByEachProgressStep } = this.props;
- const totalTimeTaken = reduce(timeTakenByEachProgressStep, (acc, time) => acc + Number(time), 0);
-
- return (
-
-
- {map(timeTakenByEachProgressStep, (time, index) => {
- if (index === size(timeTakenByEachProgressStep) - 1) {
- return `${time} = ${totalTimeTaken.toFixed(1)} s`;
- }
-
- return `${time} + `;
- })}
-
-
- );
+ getProgressBarText() {
+ const { t, activeStepIndex, activeSteps } = this.props;
+ const totalSteps = size(activeSteps);
+ if (activeStepIndex === totalSteps) {
+ return t('progressSteps:transferComplete');
+ }
+ return activeSteps[activeStepIndex] ? activeSteps[activeStepIndex] : '';
}
getConversionTextIOTA() {
@@ -442,7 +417,7 @@ export class Send extends Component {
* @method setMaxPressed
**/
setMaxPressed() {
- const { primary, t } = this.props;
+ const { theme: { primary }, t } = this.props;
this.setState({
maxPressed: true,
maxColor: primary.color,
@@ -450,12 +425,16 @@ export class Send extends Component {
});
}
+ interuptSendAnimation() {
+ this.setState({ shouldInteruptSendAnimation: !this.state.shouldInteruptSendAnimation });
+ }
+
/**
* Turns off send max toggle
* @method resetMaxPressed
**/
resetMaxPressed() {
- const { body, t } = this.props;
+ const { theme: { body }, t } = this.props;
this.setState({
maxPressed: false,
maxColor: body.color,
@@ -482,16 +461,6 @@ export class Send extends Component {
Keyboard.dismiss();
}
- openTransferConfirmationModal() {
- const { isKeyboardActive } = this.props;
- if (isKeyboardActive) {
- this.blurTextFields();
- timer.setTimeout('modalShow', () => this.showModal('transferConfirmation'), 500);
- } else {
- this.showModal('transferConfirmation');
- }
- }
-
/**
* Shows specific modal
*
@@ -499,7 +468,15 @@ export class Send extends Component {
* @param {String} modalContent
*/
showModal(modalContent) {
- const { bar, theme, body, address, amount, selectedAccountName, isFingerprintEnabled } = this.props;
+ const {
+ theme,
+ theme: { bar, body },
+ address,
+ amount,
+ selectedAccountName,
+ isFingerprintEnabled,
+ message,
+ } = this.props;
switch (modalContent) {
case 'qrScanner':
return this.props.toggleModalActivity(modalContent, {
@@ -508,6 +485,7 @@ export class Send extends Component {
theme,
onMount: () => this.props.setDoNotMinimise(true),
onUnmount: () => this.props.setDoNotMinimise(false),
+ displayTopBar: true,
});
case 'transferConfirmation':
return this.props.toggleModalActivity(modalContent, {
@@ -516,22 +494,25 @@ export class Send extends Component {
conversionText: this.getConversionTextIOTA(),
address: address,
sendTransfer: () => this.sendWithDelay(),
+ cancel: () => {
+ this.interuptSendAnimation();
+ this.hideModal();
+ },
hideModal: (callback) => this.hideModal(callback),
- body,
- borderColor: { borderColor: body.color },
- textColor: { color: body.color },
setSendingTransferFlag: () => this.setSendingTransferFlag(),
selectedAccountName,
activateFingerprintScanner: () => this.activateFingerprintScanner(),
isFingerprintEnabled,
+ theme,
+ message,
});
case 'unitInfo':
return this.props.toggleModalActivity(modalContent, {
hideModal: () => this.hideModal(),
textColor: { color: bar.color },
- lineColor: { borderLeftColor: bar.color },
+ lineColor: { borderBottomColor: bar.color },
borderColor: { borderColor: bar.color },
- bar,
+ theme,
});
case 'usedAddress':
return this.props.toggleModalActivity(modalContent, {
@@ -647,9 +628,7 @@ export class Send extends Component {
try {
const seedStore = new SeedStore[selectedAccountMeta.type](password, selectedAccountName);
this.props.getFromKeychainSuccess('send', 'makeTransaction');
-
const powFn = getPowFn();
-
return this.props.makeTransaction(seedStore, address, value, message, selectedAccountName, powFn);
} catch (error) {
this.props.getFromKeychainError('send', 'makeTransaction');
@@ -702,30 +681,17 @@ export class Send extends Component {
this.messageField.blur();
}
- renderProgressBarChildren() {
- const { activeStepIndex, activeSteps } = this.props;
- const totalSteps = size(activeSteps);
-
- if (activeStepIndex === totalSteps) {
- return this.getProgressSummary();
- }
-
- return activeSteps[activeStepIndex] ? activeSteps[activeStepIndex] : null;
- }
-
render() {
const { maxPressed, maxColor, maxText, sending } = this.state;
const {
t,
isSendingTransfer,
- isGettingSensitiveInfoToMakeTransaction,
address,
amount,
message,
denomination,
theme,
- body,
- primary,
+ theme: { body, primary, input, dark, secondary },
isKeyboardActive,
} = this.props;
const textColor = { color: body.color };
@@ -748,7 +714,6 @@ export class Send extends Component {
this.props.setSendAddressField(text);
}
}}
- containerStyle={{ width: Styling.contentWidth }}
autoCapitalize="characters"
autoCorrect={false}
enablesReturnKeyAutomatically
@@ -768,7 +733,6 @@ export class Send extends Component {
value={address}
editable={!isSending}
selectTextOnFocus={!isSending}
- detectAddressInClipboard={this.detectAddressInClipboard}
/>
{
this.amountField = c;
}}
@@ -796,7 +759,7 @@ export class Send extends Component {
-
+
{
this.messageField = c;
@@ -831,56 +794,49 @@ export class Send extends Component {
keyboardType="default"
label={t('message')}
onChangeText={(text) => this.props.setSendMessageField(text)}
- containerStyle={{ width: Styling.contentWidth }}
autoCorrect={false}
enablesReturnKeyAutomatically
- returnKeyType="send"
+ returnKeyType="done"
blurOnSubmit
- onSubmitEditing={() => this.onSendPress()}
+ onSubmitEditing={() => Keyboard.dismiss()}
theme={theme}
value={message}
editable={!isSending}
selectTextOnFocus={!isSending}
multiplier={this.getUnitMultiplier()}
/>
+
- {!isSendingTransfer &&
- !isGettingSensitiveInfoToMakeTransaction && (
-
- {
- this.onSendPress();
- if (address === '' && amount === '' && message && '') {
- this.blurTextFields();
- }
- }}
- />
-
- )}
- {(isGettingSensitiveInfoToMakeTransaction || isSendingTransfer) && (
-
+ {
+ this.onSendPress();
+ if (address === '' && amount === '' && message && '') {
+ this.blurTextFields();
+ }
}}
- >
-
- {this.renderProgressBarChildren()}
-
-
- )}
+ />
+
+
this.showModal('unitInfo')}
hitSlop={{ top: width / 30, bottom: width / 30, left: width / 30, right: width / 30 }}
@@ -917,9 +873,6 @@ const mapStateToProps = (state) => ({
usdPrice: state.marketData.usdPrice,
isGettingSensitiveInfoToMakeTransaction: state.keychain.isGettingSensitiveInfo.send.makeTransaction,
theme: state.settings.theme,
- body: state.settings.theme.body,
- primary: state.settings.theme.primary,
- bar: state.settings.theme.bar,
isTransitioning: state.ui.isTransitioning,
address: state.ui.sendAddressFieldText,
amount: state.ui.sendAmountFieldText,
@@ -927,11 +880,11 @@ const mapStateToProps = (state) => ({
denomination: state.ui.sendDenomination,
activeStepIndex: state.progress.activeStepIndex,
activeSteps: state.progress.activeSteps,
- timeTakenByEachProgressStep: state.progress.timeTakenByEachStep,
remotePoW: state.settings.remotePoW,
password: state.wallet.password,
deepLinkActive: state.wallet.deepLinkActive,
isFingerprintEnabled: state.settings.isFingerprintEnabled,
+ isKeyboardActive: state.ui.isKeyboardActive,
});
const mapDispatchToProps = {
diff --git a/src/mobile/src/ui/views/wallet/Settings.js b/src/mobile/src/ui/views/wallet/Settings.js
index 7e95f573a6..c3bbeab7a5 100644
--- a/src/mobile/src/ui/views/wallet/Settings.js
+++ b/src/mobile/src/ui/views/wallet/Settings.js
@@ -1,10 +1,12 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { StyleSheet, View, TouchableWithoutFeedback } from 'react-native';
+import timer from 'react-native-timer';
import { connect } from 'react-redux';
import { setSetting } from 'shared-modules/actions/wallet';
import KeepAwake from 'react-native-keep-awake';
import SettingsContent from 'ui/components/SettingsContent';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { height } from 'libs/dimensions';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -35,6 +37,13 @@ class Settings extends Component {
closeTopBar: PropTypes.func.isRequired,
};
+ constructor(props) {
+ super(props);
+ this.state = {
+ nextSetting: 'mainSettings',
+ };
+ }
+
componentDidMount() {
leaveNavigationBreadcrumb('Settings');
}
@@ -45,6 +54,21 @@ class Settings extends Component {
} else if (this.props.isSyncing && !newProps.isSyncing) {
KeepAwake.deactivate();
}
+ if (this.props.currentSetting !== newProps.currentSetting) {
+ this.animationOutType = this.getAnimation(this.props.currentSetting, newProps.currentSetting, false);
+ this.animationInType = this.getAnimation(this.props.currentSetting, newProps.currentSetting);
+ timer.setTimeout(
+ 'delaySettingChange' + newProps.currentSetting,
+ () => {
+ this.setState({ nextSetting: newProps.currentSetting });
+ },
+ 150,
+ );
+ }
+ }
+
+ componentWillUnmount() {
+ timer.clearTimeout('delaySettingChange' + this.props.currentSetting);
}
/**
@@ -66,6 +90,58 @@ class Settings extends Component {
return props[child] || {};
}
+ /**
+ * Gets settings animation according to current and next menu tier
+ * 0 = main settings menu, 1 = first tier settings menu, 2 = second tier settings menu, 3 = final tier settings menu
+ *
+ * @param {string} currentSetting
+ * @param {string} nextSetting
+ * @param {bool} animationIn
+ * @returns {object}
+ */
+ getAnimation(currentSetting, nextSetting, animationIn = true) {
+ const indexedSettings = {
+ mainSettings: 0,
+ accountManagement: 1,
+ securitySettings: 1,
+ advancedSettings: 1,
+ addNewAccount: 2,
+ addExistingSeed: 3,
+ modeSelection: 3,
+ themeCustomisation: 3,
+ currencySelection: 3,
+ languageSelection: 3,
+ viewAddresses: 3,
+ editAccountName: 3,
+ deleteAccount: 3,
+ viewSeed: 3,
+ exportSeedVault: 3,
+ changePassword: 3,
+ nodeSelection: 3,
+ addCustomNode: 3,
+ pow: 3,
+ autoPromotion: 3,
+ snapshotTransition: 3,
+ manualSync: 3,
+ about: 3,
+ };
+
+ if (animationIn) {
+ if (indexedSettings[currentSetting] === indexedSettings[nextSetting]) {
+ return ['fadeIn'];
+ } else if (indexedSettings[currentSetting] < indexedSettings[nextSetting]) {
+ return ['slideInLeftSmall', 'fadeIn'];
+ } else if (indexedSettings[currentSetting] > indexedSettings[nextSetting]) {
+ return ['slideInRightSmall', 'fadeIn'];
+ }
+ }
+ if (indexedSettings[currentSetting] < indexedSettings[nextSetting]) {
+ return ['slideOutLeftSmall', 'fadeOut'];
+ } else if (indexedSettings[currentSetting] > indexedSettings[nextSetting]) {
+ return ['slideOutRightSmall', 'fadeOut'];
+ }
+ }
+
render() {
const childrenProps = this.getChildrenProps(this.props.currentSetting);
@@ -73,12 +149,17 @@ class Settings extends Component {
this.props.closeTopBar()}>
-
-
-
+
+
+
diff --git a/src/mobile/src/ui/views/wallet/SnapshotTransition.js b/src/mobile/src/ui/views/wallet/SnapshotTransition.js
index b6ea4df814..bb29ecc257 100644
--- a/src/mobile/src/ui/views/wallet/SnapshotTransition.js
+++ b/src/mobile/src/ui/views/wallet/SnapshotTransition.js
@@ -67,7 +67,7 @@ const styles = StyleSheet.create({
marginLeft: width / 20,
},
transitionButtonContainer: {
- flex: 1,
+ flex: 0.7,
alignItems: 'center',
justifyContent: 'center',
},
@@ -79,7 +79,7 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Light',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
buttonQuestionText: {
@@ -151,12 +151,12 @@ class SnapshotTransition extends Component {
cancelSnapshotTransition: PropTypes.func.isRequired,
};
- static renderProgressBarChildren(activeStepIndex, sizeOfActiveSteps) {
+ static renderProgressBarChildren(activeStepIndex, sizeOfActiveSteps, t) {
if (activeStepIndex === -1) {
return null;
}
- return `Attaching address ${activeStepIndex + 1} / ${sizeOfActiveSteps}`;
+ return t('attachProgress', { currentAddress: activeStepIndex + 1, totalAddresses: sizeOfActiveSteps });
}
constructor() {
@@ -248,17 +248,12 @@ class SnapshotTransition extends Component {
{!isTransitioning && (
-
- {t('snapshotExplanation')}
-
- {t('hasSnapshotTakenPlace')}
-
-
- }
- />
+
+ {t('snapshotExplanation')}
+
+ {t('hasSnapshotTakenPlace')}
+
+
{(balanceCheckFlag && (
-
-
-
- {t('detectedBalance', {
- amount: round(formatValue(transitionBalance), 1),
- unit: formatUnit(transitionBalance),
- })}
-
-
- {t('isThisCorrect')}
-
-
- this.onBalanceIncompletePress()}
- onRightButtonPress={() => this.onBalanceCompletePress()}
- leftText={t('global:no')}
- rightText={t('global:yes')}
- containerWidth={{ width: width / 1.25 }}
- buttonWidth={{ width: width / 2.85 }}
- />
+
+
+
+
+ {t('detectedBalance', {
+ amount: round(formatValue(transitionBalance), 1),
+ unit: formatUnit(transitionBalance),
+ })}
+
+
+ {t('isThisCorrect')}
+
- }
- />
+ this.onBalanceIncompletePress()}
+ onRightButtonPress={() => this.onBalanceCompletePress()}
+ leftText={t('global:no')}
+ rightText={t('global:yes')}
+ containerWidth={{ width: width / 1.25 }}
+ buttonWidth={{ width: width / 2.85 }}
+ />
+
+
)) || (
-
- {t('attaching')}
-
- {t('loading:thisMayTake')}
-
-
- {t('global:pleaseWaitEllipses')}
-
-
- }
- />
+
+ {t('attaching')}
+
+ {t('loading:thisMayTake')}
+
+
+ {t('global:pleaseWaitEllipses')}
+
+
diff --git a/src/mobile/src/ui/views/wallet/ThemeCustomisation.js b/src/mobile/src/ui/views/wallet/ThemeCustomisation.js
index e2e19add14..4121e0837e 100644
--- a/src/mobile/src/ui/views/wallet/ThemeCustomisation.js
+++ b/src/mobile/src/ui/views/wallet/ThemeCustomisation.js
@@ -138,7 +138,7 @@ class ThemeCustomisation extends Component {
this.state = {
theme: props.theme,
themeName: props.themeName,
- themes: Object.keys(THEMES),
+ themes: Object.keys(THEMES).map((theme, index) => ({ theme, index })),
};
}
@@ -165,14 +165,20 @@ class ThemeCustomisation extends Component {
getLocalizedThemes() {
const localizedThemes = this.state.themes.map((item) => {
- return this.getLocalizedThemeName(item);
+ return {
+ ...item,
+ theme: this.getLocalizedThemeName(item.theme),
+ };
});
+
return localizedThemes;
}
getThemeName(localizedThemeName) {
const localizedThemes = this.getLocalizedThemes();
- return this.state.themes[localizedThemes.indexOf(localizedThemeName)];
+ const { index } = localizedThemes.find(({ theme }) => theme === localizedThemeName);
+
+ return this.state.themes.find((value) => value.index === index).theme;
}
render() {
@@ -201,7 +207,7 @@ class ThemeCustomisation extends Component {
background
shadow
defaultOption={this.getLocalizedThemeName(themeName)}
- options={this.getLocalizedThemes()}
+ options={this.getLocalizedThemes().map(({ theme }) => theme)}
saveSelection={(localizedSelection) => {
const selection = this.getThemeName(localizedSelection);
const newTHEMES = cloneDeep(THEMES);
diff --git a/src/mobile/src/ui/views/wallet/TwoFactorSetupAddKey.js b/src/mobile/src/ui/views/wallet/TwoFactorSetupAddKey.js
index 23b82f3707..930c4bde15 100644
--- a/src/mobile/src/ui/views/wallet/TwoFactorSetupAddKey.js
+++ b/src/mobile/src/ui/views/wallet/TwoFactorSetupAddKey.js
@@ -4,16 +4,16 @@ import authenticator from 'authenticator';
import { generateAlert } from 'shared-modules/actions/alerts';
import { connect } from 'react-redux';
import QRCode from 'react-native-qrcode-svg';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { Clipboard, StyleSheet, View, Text, TouchableOpacity } from 'react-native';
import { withNamespaces } from 'react-i18next';
-import WithBackPressGoToHome from 'ui/components/BackPressGoToHome';
import { storeTwoFactorAuthKeyInKeychain } from 'libs/keychain';
import Fonts from 'ui/theme/fonts';
import DualFooterButtons from 'ui/components/DualFooterButtons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { Styling } from 'ui/theme/general';
import { width, height } from 'libs/dimensions';
-import { Icon } from 'ui/theme/icons';
+import Header from 'ui/components/Header';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
const styles = StyleSheet.create({
@@ -23,10 +23,9 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topWrapper: {
- flex: 0.3,
+ flex: 0.9,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
width,
},
midWrapper: {
@@ -49,7 +48,6 @@ const styles = StyleSheet.create({
infoText: {
fontSize: Styling.fontSize3,
textAlign: 'center',
- paddingTop: height / 60,
backgroundColor: 'transparent',
},
infoTextLight: {
@@ -61,7 +59,8 @@ const styles = StyleSheet.create({
backgroundColor: 'white',
borderRadius: Styling.borderRadiusLarge,
padding: width / 30,
- marginBottom: height / 25,
+ marginBottom: height / 15,
+ alignItems: 'center',
},
});
@@ -114,7 +113,7 @@ export class TwoFactorSetupAddKey extends Component {
* @method goBack
*/
goBack() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
/**
@@ -124,36 +123,23 @@ export class TwoFactorSetupAddKey extends Component {
navigateToEnterToken() {
Clipboard.setString(' ');
const { t, theme: { body }, password } = this.props;
-
return storeTwoFactorAuthKeyInKeychain(password, this.state.authKey)
.then(() => {
- Navigation.push('appStack', {
- component: {
- name: 'twoFactorSetupEnterToken',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('twoFactorSetupEnterToken', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
})
.catch(() =>
@@ -173,34 +159,59 @@ export class TwoFactorSetupAddKey extends Component {
return (
-
+
+
+
-
- {t('addKey')}
-
-
-
- this.onKeyPress(this.state.authKey)}>
-
- {t('key')}
- :
- {this.state.authKey}
-
-
+
+ {t('addKey')}
+
+
+
+
+
+
+
+ this.onKeyPress(this.state.authKey)}>
+
+ {t('key')}
+ :
+ {this.state.authKey}
+
+
+
-
+
+
+
);
@@ -215,6 +226,4 @@ const mapStateToProps = (state) => ({
password: state.wallet.password,
});
-export default WithBackPressGoToHome()(
- withNamespaces(['twoFA', 'global'])(connect(mapStateToProps, mapDispatchToProps)(TwoFactorSetupAddKey)),
-);
+export default withNamespaces(['twoFA', 'global'])(connect(mapStateToProps, mapDispatchToProps)(TwoFactorSetupAddKey));
diff --git a/src/mobile/src/ui/views/wallet/TwoFactorSetupEnterToken.js b/src/mobile/src/ui/views/wallet/TwoFactorSetupEnterToken.js
index 493faa0fa4..2223ef4a3c 100644
--- a/src/mobile/src/ui/views/wallet/TwoFactorSetupEnterToken.js
+++ b/src/mobile/src/ui/views/wallet/TwoFactorSetupEnterToken.js
@@ -4,15 +4,16 @@ import authenticator from 'authenticator';
import { set2FAStatus } from 'shared-modules/actions/settings';
import { generateAlert } from 'shared-modules/actions/alerts';
import { connect } from 'react-redux';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { StyleSheet, View, Text, TouchableWithoutFeedback, Keyboard, BackHandler } from 'react-native';
import { withNamespaces } from 'react-i18next';
import CustomTextInput from 'ui/components/CustomTextInput';
import Fonts from 'ui/theme/fonts';
import { getTwoFactorAuthKeyFromKeychain } from 'libs/keychain';
import DualFooterButtons from 'ui/components/DualFooterButtons';
-import { width, height } from 'libs/dimensions';
-import { Icon } from 'ui/theme/icons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
+import { height, width } from 'libs/dimensions';
+import Header from 'ui/components/Header';
import { Styling } from 'ui/theme/general';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -23,19 +24,18 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topWrapper: {
- flex: 0.3,
+ flex: 1.6,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
width,
},
midWrapper: {
- flex: 2,
+ flex: 1.6,
alignItems: 'center',
justifyContent: 'flex-start',
},
bottomWrapper: {
- flex: 0.3,
+ flex: 2,
alignItems: 'center',
justifyContent: 'flex-end',
},
@@ -44,7 +44,7 @@ const styles = StyleSheet.create({
fontSize: Styling.fontSize4,
textAlign: 'center',
backgroundColor: 'transparent',
- marginBottom: height / 8,
+ paddingBottom: height / 10,
},
});
@@ -67,10 +67,8 @@ class TwoFactorSetupEnterToken extends Component {
constructor() {
super();
-
this.goBack = this.goBack.bind(this);
this.check2FA = this.check2FA.bind(this);
-
this.state = {
code: '',
};
@@ -93,7 +91,7 @@ class TwoFactorSetupEnterToken extends Component {
* @method goBack
*/
goBack() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
/**
@@ -102,30 +100,18 @@ class TwoFactorSetupEnterToken extends Component {
*/
navigateToHome() {
const { theme: { body, bar } } = this.props;
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'home',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: bar.alt,
- },
+ navigator.setStackRoot('home', {
+ animations: {
+ setStackRoot: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: bar.alt,
+ },
});
}
@@ -167,31 +153,50 @@ class TwoFactorSetupEnterToken extends Component {
-
+
+
+
-
- {t('enterCode')}
- this.setState({ code })}
- containerStyle={{ width: Styling.contentWidth }}
- autoCapitalize="none"
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- onSubmitEditing={this.check2FA}
- theme={theme}
- keyboardType="numeric"
- />
+
+ {t('enterCode')}
+
+
+ this.setState({ code })}
+ containerStyle={{ width: Styling.contentWidth }}
+ autoCapitalize="none"
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ onSubmitEditing={this.check2FA}
+ theme={theme}
+ keyboardType="numeric"
+ />
+
-
+
+
+
diff --git a/src/mobile/src/ui/views/wallet/UseExistingSeed.js b/src/mobile/src/ui/views/wallet/UseExistingSeed.js
index d69d5123dd..fbe0a800f1 100644
--- a/src/mobile/src/ui/views/wallet/UseExistingSeed.js
+++ b/src/mobile/src/ui/views/wallet/UseExistingSeed.js
@@ -3,7 +3,7 @@ import React, { Component } from 'react';
import { connect } from 'react-redux';
import { withNamespaces } from 'react-i18next';
import PropTypes from 'prop-types';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { StyleSheet, View, Text, TouchableOpacity, TouchableWithoutFeedback, Keyboard } from 'react-native';
import { MAX_SEED_LENGTH, VALID_SEED_REGEX } from 'shared-modules/libs/iota/utils';
import { setSetting } from 'shared-modules/actions/wallet';
@@ -18,7 +18,6 @@ import SeedVaultImport from 'ui/components/SeedVaultImportComponent';
import CustomTextInput from 'ui/components/CustomTextInput';
import { width, height } from 'libs/dimensions';
import { Icon } from 'ui/theme/icons';
-import { isIPhone11 } from 'libs/device';
import { Styling } from 'ui/theme/general';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -171,30 +170,18 @@ class UseExistingSeed extends Component {
usedExistingSeed: true,
});
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'loading',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.setStackRoot('loading', {
+ animations: {
+ setStackRoot: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -264,12 +251,14 @@ class UseExistingSeed extends Component {
hideModal: () => this.hideModal(),
onMount: () => this.props.setDoNotMinimise(true),
onUnmount: () => this.props.setDoNotMinimise(false),
+ displayTopBar: true,
});
case 'passwordValidation':
return this.props.toggleModalActivity(modalContent, {
theme,
validatePassword: (password) => this.SeedVaultImport.validatePassword(password),
hideModal: () => this.hideModal(),
+ isDashboard: true,
});
}
};
@@ -290,6 +279,22 @@ class UseExistingSeed extends Component {
{t('useExistingSeed:title')}
+ {
+ this.accountNameField = c;
+ }}
+ label={t('addAdditionalSeed:accountName')}
+ onChangeText={(value) => this.setState({ accountName: value })}
+ containerStyle={{ width: Styling.contentWidth }}
+ autoCapitalize="words"
+ maxLength={MAX_SEED_LENGTH}
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ theme={theme}
+ value={accountName}
+ />
+
{
@@ -315,33 +320,15 @@ class UseExistingSeed extends Component {
seed={seed}
/>
- {!isIPhone11 && (
- this.showModal('passwordValidation')}
- onSeedImport={(seed) => {
- this.setState({ seed });
- this.hideModal();
- }}
- onRef={(ref) => {
- this.SeedVaultImport = ref;
- }}
- />
- )}
-
- {
- this.accountNameField = c;
+ this.showModal('passwordValidation')}
+ onSeedImport={(seed) => {
+ this.setState({ seed });
+ this.hideModal();
+ }}
+ onRef={(ref) => {
+ this.SeedVaultImport = ref;
}}
- label={t('addAdditionalSeed:accountName')}
- onChangeText={(value) => this.setState({ accountName: value })}
- containerStyle={{ width: Styling.contentWidth }}
- autoCapitalize="words"
- maxLength={MAX_SEED_LENGTH}
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- theme={theme}
- value={accountName}
/>
diff --git a/src/mobile/src/ui/views/wallet/ViewAddresses.js b/src/mobile/src/ui/views/wallet/ViewAddresses.js
index f5946f0190..2610d75df3 100644
--- a/src/mobile/src/ui/views/wallet/ViewAddresses.js
+++ b/src/mobile/src/ui/views/wallet/ViewAddresses.js
@@ -138,23 +138,22 @@ export class ViewAddresses extends Component {
const isSpent = spent.local || spent.remote;
return (
-
+
this.copy(address.address)}
style={{ alignItems: 'flex-start', flex: 8, justifyContent: 'center' }}
>
-
-
- {address.address}
-
-
+
+ {address.address}
+
@@ -175,7 +174,7 @@ export class ViewAddresses extends Component {
contentContainerStyle={noAddresses ? styles.flatList : null}
data={addresses}
initialNumToRender={10} // TODO: Should be dynamically computed.
- keyExtractor={(item, index) => index}
+ keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => this.renderAddress(item)}
ItemSeparatorComponent={() => }
ListEmptyComponent={
diff --git a/src/mobile/src/ui/views/wallet/ViewSeed.js b/src/mobile/src/ui/views/wallet/ViewSeed.js
index 7670b1c215..6710e1383d 100644
--- a/src/mobile/src/ui/views/wallet/ViewSeed.js
+++ b/src/mobile/src/ui/views/wallet/ViewSeed.js
@@ -83,13 +83,13 @@ const styles = StyleSheet.create({
infoText: {
fontFamily: 'SourceSansPro-Regular',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
infoTextBold: {
fontFamily: 'SourceSansPro-Bold',
fontSize: Styling.fontSize3,
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
viewSeedButton: {
@@ -280,42 +280,27 @@ class ViewSeed extends Component {
{this.state.isConfirming &&
!this.state.showSeed && (
-
-
- {t('global:masterKey')}
- {t('walletSetup:seedThief')}
-
- {t('walletSetup:keepSafe')}{' '}
+
+
+ {t('global:masterKey')}
+ {t('walletSetup:seedThief')}
+ {t('walletSetup:keepSafe')}
+
+
+ this.setState({ isConfirming: false })}>
+
+
+ {t('viewSeed:viewSeed').toUpperCase()}
-
-
- this.setState({ isConfirming: false })}
- >
-
-
- {t('viewSeed:viewSeed').toUpperCase()}
-
-
-
-
- }
- />
+
+
+
)}
diff --git a/src/mobile/src/ui/views/wallet/WalletResetConfirmation.js b/src/mobile/src/ui/views/wallet/WalletResetConfirmation.js
index 18ba7f9839..1a4afe7d68 100644
--- a/src/mobile/src/ui/views/wallet/WalletResetConfirmation.js
+++ b/src/mobile/src/ui/views/wallet/WalletResetConfirmation.js
@@ -3,12 +3,11 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { StyleSheet, View, Text } from 'react-native';
import { connect } from 'react-redux';
-import { Navigation } from 'react-native-navigation';
-import WithBackPressGoToHome from 'ui/components/BackPressGoToHome';
-import { width, height } from 'libs/dimensions';
+import { navigator } from 'libs/navigation';
import Fonts from 'ui/theme/fonts';
import DualFooterButtons from 'ui/components/DualFooterButtons';
-import { Icon } from 'ui/theme/icons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
+import Header from 'ui/components/Header';
import InfoBox from 'ui/components/InfoBox';
import { Styling } from 'ui/theme/general';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -20,13 +19,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topWrapper: {
- flex: 1.3,
+ flex: 1.6,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midWrapper: {
- flex: 2.1,
+ flex: 1.8,
alignItems: 'center',
justifyContent: 'space-between',
},
@@ -44,7 +42,7 @@ const styles = StyleSheet.create({
infoText: {
fontSize: Styling.fontSize3,
fontFamily: 'SourceSansPro-Light',
- textAlign: 'left',
+ textAlign: 'center',
backgroundColor: 'transparent',
},
infoTextLight: {
@@ -94,34 +92,21 @@ class WalletResetConfirmation extends Component {
*/
navigateToPasswordConfirmation() {
const { theme: { body } } = this.props;
-
- Navigation.push('appStack', {
- component: {
- name: 'walletResetRequirePassword',
- options: {
- animations: {
- push: {
- enable: false,
- },
- pop: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.push('walletResetRequirePassword', {
+ animations: {
+ push: {
+ enable: false,
+ },
+ pop: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -130,7 +115,7 @@ class WalletResetConfirmation extends Component {
* @method goBack
*/
goBack() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
render() {
@@ -142,16 +127,39 @@ class WalletResetConfirmation extends Component {
return (
-
+
+
+
- {t('global:continue?')}
-
- {t('walletResetConfirmation:cannotUndo')}
-
-
+ {t('global:continue?')}
+
+
+
+
+ {t('walletResetConfirmation:cannotUndo')}
+
+
+
+
+
All of your wallet data including your
@@ -161,16 +169,19 @@ class WalletResetConfirmation extends Component {
will be lost.
- }
- />
+
+
+
-
+
+
+
);
@@ -181,6 +192,4 @@ const mapStateToProps = (state) => ({
theme: state.settings.theme,
});
-export default WithBackPressGoToHome()(
- withNamespaces(['walletResetConfirmation', 'global'])(connect(mapStateToProps)(WalletResetConfirmation)),
-);
+export default withNamespaces(['walletResetConfirmation', 'global'])(connect(mapStateToProps)(WalletResetConfirmation));
diff --git a/src/mobile/src/ui/views/wallet/WalletResetRequirePassword.js b/src/mobile/src/ui/views/wallet/WalletResetRequirePassword.js
index e3a97eb5ca..ecacda5e4e 100644
--- a/src/mobile/src/ui/views/wallet/WalletResetRequirePassword.js
+++ b/src/mobile/src/ui/views/wallet/WalletResetRequirePassword.js
@@ -3,17 +3,18 @@ import React, { Component } from 'react';
import { withNamespaces } from 'react-i18next';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
-import { Navigation } from 'react-native-navigation';
+import { navigator } from 'libs/navigation';
import { resetWallet, setCompletedForcedPasswordUpdate } from 'shared-modules/actions/settings';
import { generateAlert } from 'shared-modules/actions/alerts';
-import { StyleSheet, View, Keyboard, TouchableWithoutFeedback, BackHandler } from 'react-native';
+import { Text, StyleSheet, View, Keyboard, TouchableWithoutFeedback, BackHandler } from 'react-native';
import DualFooterButtons from 'ui/components/DualFooterButtons';
+import AnimatedComponent from 'ui/components/AnimatedComponent';
import { persistConfig } from 'libs/store';
import { purgeStoredState } from 'shared-modules/store';
import { clearKeychain, hash } from 'libs/keychain';
import CustomTextInput from 'ui/components/CustomTextInput';
-import { Icon } from 'ui/theme/icons';
-import { width, height } from 'libs/dimensions';
+import InfoBox from 'ui/components/InfoBox';
+import Header from 'ui/components/Header';
import { Styling } from 'ui/theme/general';
import { leaveNavigationBreadcrumb } from 'libs/bugsnag';
@@ -24,13 +25,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
},
topWrapper: {
- flex: 0.5,
+ flex: 0.9,
alignItems: 'center',
justifyContent: 'flex-start',
- paddingTop: height / 16,
},
midWrapper: {
- flex: 3.7,
+ flex: 4.6,
alignItems: 'center',
justifyContent: 'center',
},
@@ -39,6 +39,12 @@ const styles = StyleSheet.create({
alignItems: 'center',
justifyContent: 'flex-end',
},
+ infoText: {
+ fontSize: Styling.fontSize3,
+ fontFamily: 'SourceSansPro-Light',
+ textAlign: 'center',
+ backgroundColor: 'transparent',
+ },
});
/**
@@ -90,7 +96,7 @@ class WalletResetRequirePassword extends Component {
* @method goBack
*/
goBack() {
- Navigation.pop(this.props.componentId);
+ navigator.pop(this.props.componentId);
}
/**
@@ -109,30 +115,18 @@ class WalletResetRequirePassword extends Component {
*/
redirectToInitialScreen() {
const { theme: { body } } = this.props;
- Navigation.setStackRoot('appStack', {
- component: {
- name: 'languageSetup',
- options: {
- animations: {
- setStackRoot: {
- enable: false,
- },
- },
- layout: {
- backgroundColor: body.bg,
- orientation: ['portrait'],
- },
- topBar: {
- visible: false,
- drawBehind: true,
- elevation: 0,
- },
- statusBar: {
- drawBehind: true,
- backgroundColor: body.bg,
- },
+ navigator.setStackRoot('languageSetup', {
+ animations: {
+ setStackRoot: {
+ enable: false,
},
},
+ layout: {
+ backgroundColor: body.bg,
+ },
+ statusBar: {
+ backgroundColor: body.bg,
+ },
});
}
@@ -178,30 +172,56 @@ class WalletResetRequirePassword extends Component {
-
+
+
+
- this.setState({ password })}
- value={this.state.password}
- containerStyle={{ width: Styling.contentWidth }}
- autoCapitalize="none"
- autoCorrect={false}
- enablesReturnKeyAutomatically
- returnKeyType="done"
- theme={theme}
- secureTextEntry
- />
-
+
+
+
+ {t('enterPassword')}
+
+
+
+
+
+ this.setState({ password })}
+ value={this.state.password}
+ containerStyle={{ width: Styling.contentWidth }}
+ autoCapitalize="none"
+ autoCorrect={false}
+ enablesReturnKeyAutomatically
+ returnKeyType="done"
+ theme={theme}
+ secureTextEntry
+ />
+
+
-
+
+
+
diff --git a/src/mobile/yarn.lock b/src/mobile/yarn.lock
index 6aa7841269..9a69a630aa 100644
--- a/src/mobile/yarn.lock
+++ b/src/mobile/yarn.lock
@@ -5204,18 +5204,18 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
-lottie-ios@^2.1.3, lottie-ios@^2.1.5:
+lottie-ios@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/lottie-ios/-/lottie-ios-2.5.0.tgz#55c808e785d4a6933b0c10b395530b17098b05de"
integrity sha1-VcgI54XUppM7DBCzlVMLFwmLBd4=
-lottie-react-native@2.2.7:
- version "2.2.7"
- resolved "https://registry.yarnpkg.com/lottie-react-native/-/lottie-react-native-2.2.7.tgz#d89cf6e0a093693d5fed2999a986cbcb1a090955"
- integrity sha1-2Jz24KCTaT1f7SmZqYbLyxoJCVU=
+lottie-react-native@^2.5.10:
+ version "2.5.10"
+ resolved "https://registry.yarnpkg.com/lottie-react-native/-/lottie-react-native-2.5.10.tgz#703f2fe8305dcb53e993654f7ecd96c2f04c672c"
+ integrity sha512-+uCQ6y4iEamenmL5rKCWOybjC1Ii12FSd+cR1nTdLsJEmKmU7ckoJTtwChj4DHQqnRDzx0oUr9yoJIGPavcaDQ==
dependencies:
invariant "^2.2.2"
- lottie-ios "^2.1.3"
+ lottie-ios "^2.5.0"
prop-types "^15.5.10"
react-native-safe-module "^1.1.0"
@@ -5889,9 +5889,9 @@ nodejs-mobile-gyp@^0.2.0:
tar "^3.1.3"
which "1"
-"nodejs-mobile-react-native@https://github.com/rajivshah3/nodejs-mobile-react-native":
- version "0.2.1"
- resolved "https://github.com/rajivshah3/nodejs-mobile-react-native#e8337cfb03f72cfa88acf7b2d16d29fe848af174"
+"nodejs-mobile-react-native@https://github.com/rajivshah3/nodejs-mobile-react-native#ab4a655d30a51115c34dbdb30b98df6f130467ff":
+ version "0.3.2"
+ resolved "https://github.com/rajivshah3/nodejs-mobile-react-native#ab4a655d30a51115c34dbdb30b98df6f130467ff"
dependencies:
mkdirp "^0.5.1"
ncp "^2.0.0"
@@ -6846,9 +6846,9 @@ react-native-animatable@^1.2.4:
prop-types "^15.5.10"
react-native-camera@^1.1.4:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-1.4.2.tgz#d4f90863f2e4cf4603d9cc4b9eac0341536afa63"
- integrity sha512-R8CzoAeZU/tkLKuwpvTbW2uns7iWRhQotKuM3urtKGBB8zmLzCySsDtn043Bt8JUGbLYtfassKRI39RJRhiwzA==
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-1.5.1.tgz#c241cc0456e5dd31f1d05812bf3d0e86fb6931a3"
+ integrity sha512-qD3XTNU2Zh13vfiWZPCtXSFDFFBq8cKyDiaes+viMTCLP1VE81Uklbi21VdoOdTcTgrZe0OOCYUrZ3vj58RxWw==
dependencies:
lodash "^4.17.10"
prop-types "^15.6.2"
@@ -6998,14 +6998,14 @@ react-native-markdown-renderer@^3.2.1:
react-native-fit-image "^1.5.2"
react-native-modal-translucent@^1.1.3:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/react-native-modal-translucent/-/react-native-modal-translucent-1.1.6.tgz#faa72d8c1c8b902cc9252476036dadba93aa120c"
- integrity sha512-eEMarVkOUpkPoK5oIv0lxahI1UxTuTAUycUWpEv4MBH8mkjzuHxSxw4MKXd1C2Yt+tzDv3De0rMFTKnQjw2Fqw==
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/react-native-modal-translucent/-/react-native-modal-translucent-1.1.7.tgz#ca2599c0090a7b764c1044a03a13d44e83c95edd"
+ integrity sha512-HMH76pMO+yg55xubjboqlr6TFWo5fHSZtyBBllDPiKcaECrd9Q/gpD/flaFRxgx3Cd8QPLiMh270SBpEDBs1fQ==
-react-native-modal@^6.5.0:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/react-native-modal/-/react-native-modal-6.5.0.tgz#46220b2289a41597d344c1db17454611b426a758"
- integrity sha512-ewchdETAGd32xLGLK93NETEGkRcePtN7ZwjmLSQnNW1Zd0SRUYE8NqftjamPyfKvK0i2DZjX4YAghGZTqaRUbA==
+react-native-modal@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/react-native-modal/-/react-native-modal-7.0.1.tgz#120df1966f5da96e9d89bf384f22b79ab6ca97b1"
+ integrity sha512-I/BZ4ZkVLjD/wApvSjqp/w9+J100czFNGB+SNm3oYHKAfPfm5g1OoB9UQT6DvChmG4TiVX8kiDXTm8FNrbkWpQ==
dependencies:
prop-types "^15.6.1"
react-native-animatable "^1.2.4"
diff --git a/src/shared/__tests__/actions/accounts.spec.js b/src/shared/__tests__/actions/accounts.spec.js
new file mode 100644
index 0000000000..6a013075e8
--- /dev/null
+++ b/src/shared/__tests__/actions/accounts.spec.js
@@ -0,0 +1,64 @@
+import configureMockStore from 'redux-mock-store';
+import thunk from 'redux-thunk';
+import { expect } from 'chai';
+import * as actions from '../../actions/accounts';
+
+const middlewares = [thunk];
+const mockStore = configureMockStore(middlewares);
+
+describe('actions: accounts', () => {
+ describe('#assignAccountIndexIfNecessary', () => {
+ describe('provided param is empty', () => {
+ it('should not create an action of type IOTA/ACCOUNTS/ASSIGN_ACCOUNT_INDEX', () => {
+ const store = mockStore({});
+
+ // Dispatch action
+ store.dispatch(actions.assignAccountIndexIfNecessary({}));
+
+ expect(store.getActions()).to.eql([]);
+ });
+ });
+
+ describe('provided param is not empty', () => {
+ describe('when some accounts in accountInfo object have an index property with a non-numeric value', () => {
+ it('should not create an action of type IOTA/ACCOUNTS/ASSIGN_ACCOUNT_INDEX', () => {
+ const store = mockStore({});
+
+ let accountInfo = { foo: {}, baz: { index: 2 } };
+
+ const expectedActions = [
+ {
+ type: 'IOTA/ACCOUNTS/ASSIGN_ACCOUNT_INDEX',
+ },
+ ];
+
+ // Dispatch action
+ store.dispatch(actions.assignAccountIndexIfNecessary(accountInfo));
+ expect(store.getActions()).to.eql(expectedActions);
+
+ // Clear actions
+ store.clearActions();
+
+ // Reassign account info and check for undefined values
+ accountInfo = { foo: { index: undefined }, baz: { index: 1 } };
+
+ // Dispatch action
+ store.dispatch(actions.assignAccountIndexIfNecessary(accountInfo));
+ expect(store.getActions()).to.eql(expectedActions);
+ });
+ });
+
+ describe('when every account in accountInfo object has an index property with a numeric value', () => {
+ it('should not create an action of type IOTA/ACCOUNTS/ASSIGN_ACCOUNT_INDEX', () => {
+ const store = mockStore({});
+
+ const accountInfo = { foo: { index: 0 }, baz: { index: 1 } };
+
+ // Dispatch action
+ store.dispatch(actions.assignAccountIndexIfNecessary(accountInfo));
+ expect(store.getActions()).to.eql([]);
+ });
+ });
+ });
+ });
+});
diff --git a/src/shared/__tests__/reducers/accounts.spec.js b/src/shared/__tests__/reducers/accounts.spec.js
index bbe3015018..123c729c09 100644
--- a/src/shared/__tests__/reducers/accounts.spec.js
+++ b/src/shared/__tests__/reducers/accounts.spec.js
@@ -1,5 +1,5 @@
import { expect } from 'chai';
-import reducer, { mergeAddressData } from '../../reducers/accounts';
+import reducer, { mergeAddressData, removeAccountAndReorderIndexes } from '../../reducers/accounts';
import * as actions from '../../actions/accounts';
describe('Reducer: accounts', () => {
@@ -456,157 +456,6 @@ describe('Reducer: accounts', () => {
});
});
- describe('FULL_ACCOUNT_INFO_FETCH_SUCCESS', () => {
- it('should merge unconfirmedBundleTails in payload to unconfirmedBundleTails in state', () => {
- const initialState = {
- unconfirmedBundleTails: { foo: {} },
- };
-
- const action = actions.fullAccountInfoFetchSuccess({ unconfirmedBundleTails: { baz: {} } });
-
- const newState = reducer(initialState, action);
- const expectedState = {
- unconfirmedBundleTails: { baz: {}, foo: {} },
- };
-
- expect(newState.unconfirmedBundleTails).to.eql(expectedState.unconfirmedBundleTails);
- });
-
- it('should merge addresses in payload to accountName in accountInfo', () => {
- const initialState = {
- accountInfo: {
- foo: {
- addresses: { foo: {} },
- transfers: {},
- balance: 0,
- },
- },
- };
-
- const action = actions.fullAccountInfoFetchSuccess({
- accountName: 'foo',
- accountMeta: { type: 'bar' },
- addresses: { foo: {}, baz: {} },
- transfers: {},
- balance: 100,
- hashes: [],
- });
-
- const newState = reducer(initialState, action);
- const expectedState = {
- accountInfo: {
- foo: {
- meta: { type: 'bar' },
- addresses: { foo: {}, baz: {} },
- transfers: {},
- balance: 100,
- hashes: [],
- },
- },
- };
-
- expect(newState.accountInfo).to.eql(expectedState.accountInfo);
- });
-
- it('should assign transfers and set balance in payload to accountName in accountInfo', () => {
- const initialState = {
- accountInfo: {
- foo: {
- meta: { type: 'bar' },
- addresses: { foo: {} },
- transfers: { foo: { value: 20 }, baz: { value: 0 } },
- balance: 0,
- },
- },
- };
-
- const action = actions.fullAccountInfoFetchSuccess({
- accountName: 'foo',
- accountMeta: { type: 'bar' },
- addresses: { foo: {}, baz: {} },
- transfers: { foo: { value: 0 } },
- balance: 100,
- hashes: [],
- });
-
- const newState = reducer(initialState, action);
- const expectedState = {
- accountInfo: {
- foo: {
- meta: { type: 'bar' },
- addresses: { foo: {}, baz: {} },
- transfers: { foo: { value: 0 }, baz: { value: 0 } },
- balance: 100,
- hashes: [],
- },
- },
- };
-
- expect(newState.accountInfo).to.eql(expectedState.accountInfo);
- });
-
- it('should set hashes in payload to accountName in accountInfo', () => {
- const initialState = {
- accountInfo: {
- foo: {
- meta: { type: 'bar' },
- balance: 0,
- transfers: {},
- addresses: {},
- hashes: ['baz'],
- },
- },
- };
-
- const action = actions.fullAccountInfoFetchSuccess({
- accountName: 'foo',
- accountMeta: { type: 'bar' },
- hashes: ['baz', 'bar'],
- transfers: {},
- balance: 0,
- addresses: {},
- });
-
- const newState = reducer(initialState, action);
- const expectedState = {
- accountInfo: {
- foo: {
- meta: { type: 'bar' },
- balance: 0,
- transfers: {},
- addresses: {},
- hashes: ['baz', 'bar'],
- },
- },
- };
-
- expect(newState.accountInfo).to.eql(expectedState.accountInfo);
- });
-
- it('should reset accountInfoDuringSetup to default state', () => {
- const initialState = {
- accountInfoDuringSetup: {
- name: 'foo',
- meta: { bar: {} },
- usedExistingSeed: true,
- },
- };
-
- const action = actions.fullAccountInfoFetchSuccess({});
-
- const newState = reducer(initialState, action);
- const expectedState = {
- accountInfoDuringSetup: {
- name: '',
- meta: {},
- usedExistingSeed: false,
- },
- };
-
- expect(newState.accountInfoDuringSetup).to.eql(expectedState.accountInfoDuringSetup);
- });
- });
-
describe('FULL_ACCOUNT_INFO_FETCH_SUCCESS', () => {
it('should merge addresses in payload to accountName in accountInfo', () => {
const initialState = {
@@ -622,6 +471,7 @@ describe('Reducer: accounts', () => {
const action = actions.fullAccountInfoFetchSuccess({
accountName: 'foo',
+ accountIndex: 0,
accountMeta: { type: 'bar' },
addresses: { foo: {}, baz: {} },
transfers: {},
@@ -634,6 +484,7 @@ describe('Reducer: accounts', () => {
accountInfo: {
foo: {
meta: { type: 'bar' },
+ index: 0,
addresses: { foo: {}, baz: {} },
transfers: {},
balance: 100,
@@ -659,6 +510,7 @@ describe('Reducer: accounts', () => {
const action = actions.fullAccountInfoFetchSuccess({
accountName: 'foo',
+ accountIndex: 0,
accountMeta: { type: 'bar' },
addresses: { foo: {}, baz: {} },
transfers: { foo: { value: 0 } },
@@ -671,6 +523,7 @@ describe('Reducer: accounts', () => {
accountInfo: {
foo: {
meta: { type: 'bar' },
+ index: 0,
hashes: [],
addresses: { foo: {}, baz: {} },
transfers: { foo: { value: 0 }, baz: { value: 0 } },
@@ -696,6 +549,7 @@ describe('Reducer: accounts', () => {
const action = actions.fullAccountInfoFetchSuccess({
accountName: 'foo',
+ accountIndex: 0,
accountMeta: { type: 'bar' },
hashes: ['baz', 'bar'],
transfers: {},
@@ -708,6 +562,7 @@ describe('Reducer: accounts', () => {
accountInfo: {
foo: {
meta: { type: 'bar' },
+ index: 0,
balance: 0,
transfers: {},
addresses: {},
@@ -1070,6 +925,31 @@ describe('Reducer: accounts', () => {
});
});
+ describe('IOTA/ACCOUNTS/ASSIGN_ACCOUNT_INDEX', () => {
+ it('should assign "index" to each account in accountInfo state prop', () => {
+ const initialState = {
+ accountInfo: {
+ foo: { addresses: { ['U'.repeat(81)]: {} }, transfers: {} },
+ baz: { addresses: {}, transfers: {} },
+ },
+ };
+
+ const action = {
+ type: 'IOTA/ACCOUNTS/ASSIGN_ACCOUNT_INDEX',
+ };
+
+ const newState = reducer(initialState, action);
+ const expectedState = {
+ accountInfo: {
+ foo: { index: 0, addresses: { ['U'.repeat(81)]: {} }, transfers: {} },
+ baz: { index: 1, addresses: {}, transfers: {} },
+ },
+ };
+
+ expect(newState).to.eql(expectedState);
+ });
+ });
+
[
'IOTA/ACCOUNTS/UPDATE_ACCOUNT_INFO_AFTER_SPENDING',
'IOTA/ACCOUNTS/SYNC_ACCOUNT_BEFORE_MANUAL_PROMOTION',
@@ -1083,6 +963,7 @@ describe('Reducer: accounts', () => {
const initialState = {
accountInfo: {
dummy: {
+ index: 1,
meta: { type: 'bar' },
balance: 0,
addresses: { foo: {} },
@@ -1106,6 +987,7 @@ describe('Reducer: accounts', () => {
const expectedState = {
accountInfo: {
dummy: {
+ index: 1,
meta: { type: 'bar' },
balance: 0,
addresses: { foo: {}, baz: {} },
@@ -1259,4 +1141,36 @@ describe('Reducer: accounts', () => {
});
});
});
+
+ describe('#removeAccountAndReorderIndexes', () => {
+ describe('when accountName does not exist in accountInfo', () => {
+ it('should return existing accountInfo', () => {
+ const accountInfo = { foo: { index: 0 } };
+
+ expect(removeAccountAndReorderIndexes(accountInfo, 'baz')).to.eql(accountInfo);
+ });
+ });
+
+ describe('when accountName exists in accountInfo', () => {
+ it('should remove account from accountInfo', () => {
+ const accountInfo = { foo: { index: 0 }, baz: { index: 1 } };
+
+ expect(removeAccountAndReorderIndexes(accountInfo, 'baz')).to.eql({ foo: { index: 0 } });
+ });
+
+ it('should reorder account indexes (Fill missing indexes)', () => {
+ expect(
+ removeAccountAndReorderIndexes({ foo: { index: 0 }, baz: { index: 1 }, bar: { index: 2 } }, 'baz'),
+ ).to.eql({ foo: { index: 0 }, bar: { index: 1 } });
+
+ expect(
+ removeAccountAndReorderIndexes({ foo: { index: 0 }, baz: { index: 1 }, bar: { index: 2 } }, 'bar'),
+ ).to.eql({ foo: { index: 0 }, baz: { index: 1 } });
+
+ expect(
+ removeAccountAndReorderIndexes({ foo: { index: 0 }, baz: { index: 1 }, bar: { index: 2 } }, 'foo'),
+ ).to.eql({ baz: { index: 0 }, bar: { index: 1 } });
+ });
+ });
+ });
});
diff --git a/src/shared/__tests__/reducers/progress.spec.js b/src/shared/__tests__/reducers/progress.spec.js
index 9560cf4036..6afb97915c 100644
--- a/src/shared/__tests__/reducers/progress.spec.js
+++ b/src/shared/__tests__/reducers/progress.spec.js
@@ -46,38 +46,6 @@ describe('Reducer: progress', () => {
expect(newState.activeStepIndex).to.eql(expectedState.activeStepIndex);
});
-
- it('should set current time to "lastStepInitializationTime" prop in state', () => {
- const initialState = {
- lastStepInitializationTime: 1520808410000,
- timeTakenByEachStep: [],
- };
-
- const action = actions.setNextStepAsActive();
-
- const newState = reducer(initialState, action);
- const expectedState = {
- lastStepInitializationTime: Date.now(),
- };
-
- expect(newState.lastStepInitializationTime).to.eql(expectedState.lastStepInitializationTime);
- });
-
- it('should always convert time to seconds before adding it to "timeTakenByEachStep" prop in state', () => {
- const initialState = {
- lastStepInitializationTime: 1520808410000,
- timeTakenByEachStep: ['1s'],
- };
-
- const action = actions.setNextStepAsActive();
-
- const newState = reducer(initialState, action);
- const expectedState = {
- timeTakenByEachStep: ['1s', '10.0'],
- };
-
- expect(newState.timeTakenByEachStep).to.eql(expectedState.timeTakenByEachStep);
- });
});
describe('START_TRACKING_PROGRESS ', () => {
@@ -96,36 +64,6 @@ describe('Reducer: progress', () => {
expect(newState.activeStepIndex).to.eql(expectedState.activeStepIndex);
});
- it('should set "timeTakenByEachStep" prop in state to an empty array', () => {
- const initialState = {
- timeTakenByEachStep: ['1s', '2s'],
- };
-
- const action = actions.startTrackingProgress([{}]);
-
- const newState = reducer(initialState, action);
- const expectedState = {
- timeTakenByEachStep: [],
- };
-
- expect(newState.timeTakenByEachStep).to.eql(expectedState.timeTakenByEachStep);
- });
-
- it('should set "lastStepInitializationTime" prop in state to current time', () => {
- const initialState = {
- lastStepInitializationTime: 1520808410000,
- };
-
- const action = actions.startTrackingProgress([{}]);
-
- const newState = reducer(initialState, action);
- const expectedState = {
- lastStepInitializationTime: Date.now(),
- };
-
- expect(newState.lastStepInitializationTime).to.eql(expectedState.lastStepInitializationTime);
- });
-
it('should set "activeSteps" prop in state to "payload" prop in action', () => {
const initialState = {
activeSteps: [{}],
diff --git a/src/shared/__tests__/reducers/ui.spec.js b/src/shared/__tests__/reducers/ui.spec.js
index df3d3dd44e..24c9487495 100644
--- a/src/shared/__tests__/reducers/ui.spec.js
+++ b/src/shared/__tests__/reducers/ui.spec.js
@@ -43,6 +43,7 @@ describe('Reducer: ui', () => {
modalProps: {},
currentRoute: 'login',
hadErrorGeneratingNewAddress: false,
+ isKeyboardActive: false,
};
expect(reducer(undefined, {})).to.eql(initialState);
diff --git a/src/shared/__tests__/reducers/wallet.spec.js b/src/shared/__tests__/reducers/wallet.spec.js
index f43d210745..4e7178c0b7 100644
--- a/src/shared/__tests__/reducers/wallet.spec.js
+++ b/src/shared/__tests__/reducers/wallet.spec.js
@@ -16,8 +16,9 @@ describe('Reducer: wallet', () => {
deepLinkActive: false,
hasConnection: true,
isValidatingAddress: false,
+ navStack: [],
forceUpdate: false,
- shouldUpdate: false
+ shouldUpdate: false,
};
expect(reducer(undefined, {})).to.eql(initialState);
diff --git a/src/shared/__tests__/selectors/accounts.spec.js b/src/shared/__tests__/selectors/accounts.spec.js
index af26d783f5..95a238735a 100644
--- a/src/shared/__tests__/selectors/accounts.spec.js
+++ b/src/shared/__tests__/selectors/accounts.spec.js
@@ -157,8 +157,10 @@ describe('selectors: accounts', () => {
});
describe('when "accountInfo" prop is defined as a nested prop under "accounts" prop in argument', () => {
- it('should return value for "accountNames" prop', () => {
- expect(getAccountNamesFromState({ accounts: { accountInfo: { a: {}, b: [] } } })).to.eql(['a', 'b']);
+ it('should return sorted account names by indes', () => {
+ expect(
+ getAccountNamesFromState({ accounts: { accountInfo: { a: { index: 1 }, b: { index: 0 } } } }),
+ ).to.eql(['b', 'a']);
});
});
});
diff --git a/src/shared/actions/accounts.js b/src/shared/actions/accounts.js
index f3d41837ed..8bdad53798 100644
--- a/src/shared/actions/accounts.js
+++ b/src/shared/actions/accounts.js
@@ -1,3 +1,6 @@
+import some from 'lodash/some';
+import isEmpty from 'lodash/isEmpty';
+import isNumber from 'lodash/isNumber';
import {
selectedAccountStateFactory,
getAccountNamesFromState,
@@ -48,6 +51,7 @@ export const ActionTypes = {
MARK_BUNDLE_BROADCAST_STATUS_COMPLETE: 'IOTA/ACCOUNTS/MARK_BUNDLE_BROADCAST_STATUS_COMPLETE',
SYNC_ACCOUNT_BEFORE_SWEEPING: 'IOTA/ACCOUNTS/SYNC_ACCOUNT_BEFORE_SWEEPING',
OVERRIDE_ACCOUNT_INFO: 'IOTA/ACCOUNTS/OVERRIDE_ACCOUNT_INFO',
+ ASSIGN_ACCOUNT_INDEX: 'IOTA/ACCOUNTS/ASSIGN_ACCOUNT_INDEX',
};
/**
@@ -401,6 +405,17 @@ export const overrideAccountInfo = (payload) => ({
payload,
});
+/**
+ * Dispatch to (automatically) assign accountIndex to every account in state
+ *
+ * @method assignAccountIndex
+ *
+ * @returns {{type: {string} }}
+ */
+export const assignAccountIndex = () => ({
+ type: ActionTypes.ASSIGN_ACCOUNT_INDEX,
+});
+
/**
* Gets full account information for the first seed added to the wallet.
*
@@ -425,10 +440,14 @@ export const getFullAccountInfo = (seedStore, accountName) => {
.then(({ node, result }) => {
dispatch(changeNode(node));
- dispatch(setSeedIndex(existingAccountNames.length));
+ const seedIndex = existingAccountNames.length;
+
+ dispatch(setSeedIndex(seedIndex));
dispatch(setBasicAccountInfo({ accountName, usedExistingSeed }));
+ // Assign account meta
result.accountMeta = getAccountInfoDuringSetup(getState()).meta;
+ result.accountIndex = seedIndex;
dispatch(fullAccountInfoFetchSuccess(result));
})
@@ -556,3 +575,17 @@ export const cleanUpAccountState = (seedStore, accountName) => (dispatch, getSta
return result;
});
};
+
+/**
+ * Assign account index to each account if not already assigned
+ *
+ * @method assignAccountIndexIfNecessary
+ * @param {object} accountInfo
+ *
+ * @returns {function(*)}
+ */
+export const assignAccountIndexIfNecessary = (accountInfo) => (dispatch) => {
+ if (!isEmpty(accountInfo) && some(accountInfo, ({ index }) => !isNumber(index))) {
+ dispatch(assignAccountIndex());
+ }
+};
diff --git a/src/shared/actions/settings.js b/src/shared/actions/settings.js
index 2357a1cd06..9209d363fe 100644
--- a/src/shared/actions/settings.js
+++ b/src/shared/actions/settings.js
@@ -1,6 +1,6 @@
import get from 'lodash/get';
import keys from 'lodash/keys';
-import { changeIotaNode } from '../libs/iota';
+import { changeIotaNode } from '../libs/iota/index';
import { generateAlert } from './alerts';
import i18next from '../libs/i18next';
import { checkAttachToTangleAsync } from '../libs/iota/extendedApi';
diff --git a/src/shared/actions/transfers.js b/src/shared/actions/transfers.js
index c74eb028e1..b910441ea0 100644
--- a/src/shared/actions/transfers.js
+++ b/src/shared/actions/transfers.js
@@ -696,18 +696,18 @@ export const makeTransaction = (seedStore, receiveAddress, value, message, accou
.then(({ newState }) => {
dispatch(updateAccountInfoAfterSpending(newState));
- // Progressbar => (Progress summary)
+ // Progressbar => (Progress complete)
dispatch(setNextStepAsActive());
dispatch(generateTransactionSuccessAlert(isZeroValue));
setTimeout(() => {
dispatch(completeTransfer());
dispatch(resetProgress());
- }, 5000);
+ }, 3500);
})
.catch((error) => {
dispatch(sendTransferError());
-
+ dispatch(resetProgress());
// Only keep the failed trytes locally if the bundle was valid
// In case the bundle is invalid, discard the signing as it was never broadcast
if (hasSignedInputs && isValidBundle) {
diff --git a/src/shared/actions/ui.js b/src/shared/actions/ui.js
index 57586468ab..0c6956e956 100644
--- a/src/shared/actions/ui.js
+++ b/src/shared/actions/ui.js
@@ -17,6 +17,7 @@ export const ActionTypes = {
SET_QR_DENOMINATION: 'IOTA/UI/SET_QR_DENOMINATION',
SET_SELECTED_QR_TAB: 'IOTA/UI/SET_SELECTED_QR_TAB',
SET_ROUTE: 'IOTA/UI/SET_ROUTE',
+ SET_KEYBOARD_ACTIVITY: 'IOTA/UI/SET_KEYBOARD_ACTIVITY',
};
/**
@@ -250,16 +251,16 @@ export const setLoginRoute = (payload) => {
};
/**
- * Dispatch to set active route
+ * Dispatch to set the keyboard as active (mobile only)
*
- * @method setRoute
+ * @method setKeyboardActivity
* @param {string} payload
*
* @returns {{type: {string}, payload: {string} }}
*/
-export const setRoute = (payload) => {
+export const setKeyboardActivity = (payload) => {
return {
- type: ActionTypes.SET_ROUTE,
+ type: ActionTypes.SET_KEYBOARD_ACTIVITY,
payload,
};
};
diff --git a/src/shared/actions/wallet.js b/src/shared/actions/wallet.js
index 36471d9c65..027499bf63 100644
--- a/src/shared/actions/wallet.js
+++ b/src/shared/actions/wallet.js
@@ -52,6 +52,9 @@ export const ActionTypes = {
SET_DEEP_LINK_INACTIVE: 'IOTA/APP/WALLET/SET_DEEP_LINK_INACTIVE',
ADDRESS_VALIDATION_REQUEST: 'IOTA/APP/WALLET/ADDRESS_VALIDATION_REQUEST',
ADDRESS_VALIDATION_SUCCESS: 'IOTA/APP/WALLET/ADDRESS_VALIDATION_SUCCESS',
+ PUSH_ROUTE: 'IOTA/APP/WALLET/PUSH_ROUTE',
+ POP_ROUTE: 'IOTA/APP/WALLET/POP_ROUTE',
+ RESET_ROUTE: 'IOTA/APP/WALLET/RESET_ROUTE',
};
/**
@@ -548,6 +551,49 @@ export const addressValidationSuccess = () => ({
type: ActionTypes.ADDRESS_VALIDATION_SUCCESS,
});
+/**
+ * Dispatch to push to navigation stack
+ *
+ * @method pushRoute
+ * @param {string} payload
+ *
+ * @returns {{ type: {string}, payload: {string} }}
+ */
+export const pushRoute = (payload) => {
+ return {
+ type: ActionTypes.PUSH_ROUTE,
+ payload,
+ };
+};
+
+/**
+ * Dispatch to pop from navigation stack
+ *
+ * @method popRoute
+ *
+ * @returns {{type: {string}}}
+ */
+export const popRoute = () => {
+ return {
+ type: ActionTypes.POP_ROUTE,
+ };
+};
+
+/**
+ * Dispatch to set navigation root
+ *
+ * @method resetRoute
+ * @param {string} payload
+ *
+ * @returns {{ type: {string}, payload: {string} }}
+ */
+export const resetRoute = (payload) => {
+ return {
+ type: ActionTypes.RESET_ROUTE,
+ payload,
+ };
+};
+
/**
* Dispatch to suggest that user should update
*
diff --git a/src/shared/animations/arrow-transfer.json b/src/shared/animations/arrow-transfer.json
new file mode 100644
index 0000000000..ea61b3b080
--- /dev/null
+++ b/src/shared/animations/arrow-transfer.json
@@ -0,0 +1,594 @@
+{
+ "v": "5.0.0",
+ "fr": 30,
+ "ip": 0,
+ "op": 60.99,
+ "w": 54,
+ "h": 90,
+ "ddd": 0,
+ "assets": [],
+ "layers": [
+ {
+ "ddd": 0,
+ "ind": 3,
+ "ty": 4,
+ "nm": "Layer 3",
+ "ks": {
+ "p": { "a": 0, "k": [26.789, 45] },
+ "a": { "a": 0, "k": [26.789, 42.242, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 20
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [2.943, 60.454] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [10.5, 12] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 15 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 20
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [6.123, 40.36] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [9.1, 10.4] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 15 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 20
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [9.302, 21.648] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [7.7, 8.8] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 15 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 1
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [10.891, 2.245] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [7, 8] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 15 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 60.99,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 2,
+ "ty": 4,
+ "nm": "Layer 2",
+ "ks": {
+ "p": { "a": 0, "k": [20.358, 219.898] },
+ "a": { "a": 0, "k": [370, 228.082, 0] },
+ "s": { "a": 0, "k": [8, 7, 100] },
+ "r": { "a": 0, "k": 90 },
+ "o": { "a": 0, "k": 100 }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 1
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [86.432, 227.082] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-100, 100] },
+ "r": { "a": 0, "k": 90 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [-2229.693, 136.242] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 1,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 25 }
+ ]
+ },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Group 1-18",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 20
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [86.432, 227.082] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-100, 100] },
+ "r": { "a": 0, "k": 90 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [-1978.511, 136.241] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-110, 110] },
+ "r": { "a": 0, "k": 0 },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 5,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 30 }
+ ]
+ },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Group 1-27",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 20
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [86.432, 227.082] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-100, 100] },
+ "r": { "a": 0, "k": 90 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [-1727.328, 136.241] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-130, 130] },
+ "r": { "a": 0, "k": 0 },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 8,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 33 }
+ ]
+ },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Group 1-28",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0], [0, 0]],
+ "v": [[0, 0], [229.241, 175], [454.163, 0]],
+ "c": false
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [1, 1, 1, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 40 },
+ "lc": 2,
+ "lj": 2,
+ "ml": 20
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [86.432, 227.082] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-150, 150] },
+ "r": { "a": 0, "k": 90 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [-1502.076, 249.782] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [-100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 11,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 36 }
+ ]
+ },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Group 1-29",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 60.99,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 1,
+ "ty": 4,
+ "nm": "Layer 1",
+ "ks": {
+ "p": { "a": 0, "k": [0, 0] },
+ "a": { "a": 0, "k": [0, 0, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 }
+ },
+ "ao": 0,
+ "shapes": [],
+ "ip": 0,
+ "op": 60.99,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ }
+ ]
+}
diff --git a/src/shared/animations/slider-loader.json b/src/shared/animations/slider-loader.json
new file mode 100644
index 0000000000..8d68116ebb
--- /dev/null
+++ b/src/shared/animations/slider-loader.json
@@ -0,0 +1,240 @@
+{
+ "v": "5.0.0",
+ "fr": 30,
+ "ip": 0,
+ "op": 19.98,
+ "w": 92,
+ "h": 92,
+ "ddd": 0,
+ "assets": [],
+ "layers": [
+ {
+ "ddd": 0,
+ "ind": 3,
+ "ty": 4,
+ "nm": "Ellipse 1-3",
+ "ks": {
+ "p": { "a": 0, "k": [73.981, 46] },
+ "a": { "a": 0, "k": [0, 0, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 7.2,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 10.8,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 14.4,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 18 }
+ ]
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ { "d": 1, "ty": "el", "s": { "a": 0, "k": [10, 10] }, "p": { "a": 0, "k": [0, 0] } },
+ {
+ "ty": "fl",
+ "c": { "a": 0, "k": [0, 0, 0, 1] },
+ "nm": "Fill 1",
+ "mn": "ADBE Vector Graphic - Fill",
+ "hd": false,
+ "o": { "a": 0, "k": 100 },
+ "r": 1
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [-6.481, 0] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Ellipse Path 1-3",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 19.98,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 2,
+ "ty": 4,
+ "nm": "Ellipse 1-2",
+ "ks": {
+ "p": { "a": 0, "k": [45.856, 46] },
+ "a": { "a": 0, "k": [0, 0, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 3.6,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 7.2,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 10.8,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 14.4 }
+ ]
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ { "d": 1, "ty": "el", "s": { "a": 0, "k": [10, 10] }, "p": { "a": 0, "k": [0, 0] } },
+ {
+ "ty": "fl",
+ "c": { "a": 0, "k": [0, 0, 0, 1] },
+ "nm": "Fill 1",
+ "mn": "ADBE Vector Graphic - Fill",
+ "hd": false,
+ "o": { "a": 0, "k": 100 },
+ "r": 1
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [1.144, 0] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Ellipse Path 1-2",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 19.98,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 1,
+ "ty": 4,
+ "nm": "Ellipse 1",
+ "ks": {
+ "p": { "a": 0, "k": [17.731, 46] },
+ "a": { "a": 0, "k": [0, 0, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 3.6,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 7.2,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 10.8 }
+ ]
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ { "d": 1, "ty": "el", "s": { "a": 0, "k": [10, 10] }, "p": { "a": 0, "k": [0, 0] } },
+ {
+ "ty": "fl",
+ "c": { "a": 0, "k": [0, 0, 0, 1] },
+ "nm": "Fill 1",
+ "mn": "ADBE Vector Graphic - Fill",
+ "hd": false,
+ "o": { "a": 0, "k": 100 },
+ "r": 1
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [8.769, 0] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0, "ix": 5 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Ellipse Path 1",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 19.98,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ }
+ ]
+}
diff --git a/src/shared/animations/slider-success.json b/src/shared/animations/slider-success.json
new file mode 100644
index 0000000000..d9335b6a1f
--- /dev/null
+++ b/src/shared/animations/slider-success.json
@@ -0,0 +1,455 @@
+{
+ "v": "5.0.0",
+ "fr": 10,
+ "ip": 0,
+ "op": 30,
+ "w": 92,
+ "h": 92,
+ "ddd": 0,
+ "assets": [],
+ "layers": [
+ {
+ "ddd": 0,
+ "ind": 5,
+ "ty": 4,
+ "nm": "Layer 5",
+ "ks": {
+ "p": { "a": 0, "k": [45.5, 46.5] },
+ "a": { "a": 0, "k": [-0.5, 0.5, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [720]
+ },
+ { "t": 4 }
+ ]
+ },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ {
+ "t": 2,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [0]
+ },
+ { "t": 4 }
+ ]
+ }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [25.405, 0], [0, 25.405], [-25.405, 0], [0, -25.405]],
+ "o": [[0, 25.405], [-25.405, 0], [0, -25.405], [25.405, 0], [0, 0]],
+ "v": [[46, 0], [0, 46], [-46, 0], [0, -46], [46, 0]],
+ "c": true
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [0.004, 0.004, 0.004, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "t": 0,
+ "s": [100],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [100]
+ },
+ { "t": 4 }
+ ]
+ },
+ "w": { "a": 0, "k": 3 },
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "d": [
+ { "n": "d", "nm": "dash", "v": { "a": 0, "k": 80 } },
+ { "n": "g", "nm": "gap", "v": { "a": 0, "k": 80 } },
+ { "n": "o", "nm": "offset", "v": { "a": 0, "k": 80 } }
+ ]
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [0, 0] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 30,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 4,
+ "ty": 4,
+ "nm": "Layer 4",
+ "ks": {
+ "p": { "a": 0, "k": [42, 59] },
+ "a": { "a": 0, "k": [0, 0, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 1,
+ "k": [
+ {
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "t": 7,
+ "s": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [0, 0]],
+ "c": false
+ }
+ ],
+ "e": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [24, -25]],
+ "c": false
+ }
+ ]
+ },
+ {
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "t": 8,
+ "s": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [24, -25]],
+ "c": false
+ }
+ ],
+ "e": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [24, -25]],
+ "c": false
+ }
+ ]
+ },
+ { "t": 30 }
+ ],
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [0, 0, 0, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": {
+ "a": 1,
+ "k": [
+ {
+ "t": 7,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [3]
+ },
+ { "t": 8 }
+ ]
+ },
+ "lc": 2,
+ "lj": 1,
+ "ml": 4
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [0, 0] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 30,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 3,
+ "ty": 4,
+ "nm": "Layer 3",
+ "ks": {
+ "p": { "a": 0, "k": [29, 46] },
+ "a": { "a": 0, "k": [0, 0, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 1,
+ "k": [
+ {
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "t": 5,
+ "s": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [0, 0]],
+ "c": false
+ }
+ ],
+ "e": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [13, 13]],
+ "c": false
+ }
+ ]
+ },
+ {
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "t": 6,
+ "s": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [13, 13]],
+ "c": false
+ }
+ ],
+ "e": [
+ {
+ "i": [[0, 0], [0, 0]],
+ "o": [[0, 0], [0, 0]],
+ "v": [[0, 0], [13, 13]],
+ "c": false
+ }
+ ]
+ },
+ { "t": 30 }
+ ],
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [0, 0, 0, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": {
+ "a": 1,
+ "k": [
+ {
+ "t": 5,
+ "s": [0],
+ "i": { "x": [0.833], "y": [0.833] },
+ "o": { "x": [0.167], "y": [0.167] },
+ "e": [3]
+ },
+ { "t": 6 }
+ ]
+ },
+ "lc": 2,
+ "lj": 1,
+ "ml": 4
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [0, 0] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 30,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 2,
+ "ty": 4,
+ "nm": "Layer 2",
+ "ks": {
+ "p": { "a": 0, "k": [631.375, 910.5] },
+ "a": { "a": 0, "k": [-0.5, 0.5, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 0 }
+ },
+ "ao": 0,
+ "shapes": [
+ {
+ "ty": "gr",
+ "it": [
+ {
+ "ty": "sh",
+ "d": 1,
+ "ks": {
+ "a": 0,
+ "k": {
+ "i": [[0, 0], [25.405, 0], [0, 25.405], [-25.405, 0], [0, -25.405]],
+ "o": [[0, 25.405], [-25.405, 0], [0, -25.405], [25.405, 0], [0, 0]],
+ "v": [[46, 0], [0, 46], [-46, 0], [0, -46], [46, 0]],
+ "c": true
+ },
+ "nm": "Name",
+ "mn": "ADBE Vector Shape - Group",
+ "hd": false
+ }
+ },
+ {
+ "ty": "st",
+ "c": { "a": 0, "k": [0.004, 0.004, 0.004, 1] },
+ "nm": "Stroke 1",
+ "mn": "ADBE Vector Graphic - Stroke",
+ "o": { "a": 0, "k": 100 },
+ "w": { "a": 0, "k": 4 },
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "d": [
+ { "n": "d", "nm": "dash", "v": { "a": 0, "k": 80 } },
+ { "n": "g", "nm": "gap", "v": { "a": 0, "k": 80 } },
+ { "n": "o", "nm": "offset", "v": { "a": 0, "k": 80 } }
+ ]
+ },
+ {
+ "ty": "tr",
+ "p": { "a": 0, "k": [0, 0] },
+ "a": { "a": 0, "k": [0, 0] },
+ "s": { "a": 0, "k": [100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 },
+ "sk": { "a": 0, "k": 0 },
+ "sa": { "a": 0, "k": 0 },
+ "nm": "Transform"
+ }
+ ],
+ "nm": "Object",
+ "mn": "ADBE Vector Group",
+ "hd": false
+ }
+ ],
+ "ip": 0,
+ "op": 30,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ },
+ {
+ "ddd": 0,
+ "ind": 1,
+ "ty": 4,
+ "nm": "Tick",
+ "ks": {
+ "p": { "a": 0, "k": [634.019, 911] },
+ "a": { "a": 0, "k": [20.5, 15.5, 0] },
+ "s": { "a": 0, "k": [100, 100, 100] },
+ "r": { "a": 0, "k": 0 },
+ "o": { "a": 0, "k": 100 }
+ },
+ "ao": 0,
+ "shapes": [],
+ "ip": 0,
+ "op": 30,
+ "st": 0,
+ "bm": 0,
+ "sr": 1
+ }
+ ]
+}
diff --git a/src/shared/containers/global/Alerts.js b/src/shared/containers/global/Alerts.js
index 1a13f0c3f2..887fbb0e1d 100644
--- a/src/shared/containers/global/Alerts.js
+++ b/src/shared/containers/global/Alerts.js
@@ -28,7 +28,7 @@ export default function withAlertsData(AlertsComponent) {
const mapStateToProps = (state) => ({
alerts: state.alerts,
forceUpdate: state.wallet.forceUpdate,
- shouldUpdate: state.wallet.shouldUpdate
+ shouldUpdate: state.wallet.shouldUpdate,
});
const mapDispatchToProps = {
diff --git a/src/shared/icons/Icons.svg b/src/shared/icons/Icons.svg
index 451a293f78..bbc9ad0b6a 100644
--- a/src/shared/icons/Icons.svg
+++ b/src/shared/icons/Icons.svg
@@ -106,6 +106,9 @@
+
@@ -139,6 +142,9 @@
+
@@ -156,22 +162,16 @@
horiz-adv-x="1024" d="M947.2 819.2H870.4000000000001V947.2C870.4000000000001 989.542 835.9420000000001 1024 793.6000000000001 1024H230.4C188.058 1024 153.6 989.542 153.6 947.2V819.2H76.8C34.458 819.2 0 784.742 0 742.4V281.5999999999999C0 239.2579999999999 34.458 204.8 76.8 204.8H153.6V76.8C153.6 34.458 188.058 0 230.4 0H793.6C835.942 0 870.4 34.458 870.4 76.8V204.8H947.2C989.542 204.8 1023.9999999999998 239.2579999999999 1023.9999999999998 281.5999999999999V742.4C1023.9999999999998 784.742 989.542 819.2 947.2 819.2zM204.8000000000001 947.2C204.8000000000001 961.331 216.2690000000001 972.8 230.4000000000001 972.8H793.6000000000001C807.7310000000001 972.8 819.2000000000002 961.331 819.2000000000002 947.2V819.2H204.8V947.2zM793.6 51.2H230.4C216.269 51.2 204.8 62.6690000000001 204.8 76.8000000000001V409.6H819.2V76.8C819.2 62.669 807.731 51.1999999999999 793.6 51.1999999999999zM972.8 281.6C972.8 267.4690000000001 961.331 256 947.2 256H870.4V409.6H896C910.131 409.6 921.6 421.0690000000001 921.6 435.2000000000001S910.131 460.8000000000001 896 460.8000000000001H128C113.869 460.8000000000001 102.4 449.331 102.4 435.2000000000001S113.869 409.6 128 409.6H153.6V256H76.8C62.669 256 51.2 267.4690000000001 51.2 281.6V742.4C51.2 756.531 62.669 768 76.8 768H947.2C961.331 768 972.8 756.531 972.8 742.4V281.5999999999999zM742.4 307.2000000000001H281.6C267.4690000000001 307.2000000000001 256 318.6690000000001 256 332.8000000000001S267.469 358.4000000000001 281.6 358.4000000000001H742.4000000000001C756.5310000000001 358.4000000000001 768.0000000000001 346.9310000000001 768.0000000000001 332.8000000000001S756.5310000000001 307.2000000000001 742.4000000000001 307.2000000000001zM742.4 204.8000000000001H281.6C267.4690000000001 204.8000000000001 256 216.2690000000001 256 230.4000000000001S267.469 256.0000000000001 281.6 256.0000000000001H742.4000000000001C756.5310000000001 256.0000000000001 768.0000000000001 244.5310000000001 768.0000000000001 230.4000000000001S756.5310000000001 204.8000000000001 742.4000000000001 204.8000000000001zM742.4 102.4000000000001H281.6C267.4690000000001 102.4000000000001 256 113.8690000000002 256 128.0000000000001S267.469 153.6000000000001 281.6 153.6000000000001H742.4000000000001C756.5310000000001 153.6000000000001 768.0000000000001 142.1310000000001 768.0000000000001 128.0000000000001S756.5310000000001 102.4000000000001 742.4000000000001 102.4000000000001zM844.8 563.2C802.458 563.2 768 597.6580000000001 768 640.0000000000001S802.458 716.8000000000002 844.8 716.8000000000002S921.6 682.3420000000001 921.6 640.0000000000001S887.1419999999999 563.2 844.8 563.2zM844.8 665.6000000000001C830.669 665.6000000000001 819.1999999999999 654.1310000000001 819.1999999999999 640.0000000000001S830.669 614.4000000000001 844.8 614.4000000000001S870.4 625.8690000000001 870.4 640.0000000000001S858.9309999999999 665.6000000000001 844.8 665.6000000000001z" />
-
+ horiz-adv-x="992.23" d="M496.11 0A491.00000000000006 491.00000000000006 0 0 0 303.3300000000001 39.08A499.93 499.93 0 0 0 39.08 303.3300000000001A491.05000000000007 491.05000000000007 0 0 0 0 496.12C0 508.32 10.7 519.02 22.9 519.02S45.8 508.32 45.8 496.12A466.25999999999993 466.25999999999993 0 0 1 49.15 441.3L49.15 441.2A450.91999999999996 450.91999999999996 0 0 1 441.15 49.1999999999999H441.27A464.15 464.15 0 0 1 496.08 45.8399999999999C508.28 45.8399999999999 518.98 35.1399999999999 518.98 22.9399999999999S508.31 0 496.11 0zM496.11 136.4400000000001A362.69 362.69 0 0 0 401.44 148.9300000000001C278.94 182.1500000000001 182.15 278.9300000000001 148.91 401.5A362.81 362.81 0 0 0 136.44 496.12A359.45 359.45 0 0 0 496.11 855.79A362.71000000000004 362.71000000000004 0 0 0 590.79 843.3C713.29 810.08 810.0799999999999 713.3 843.31 590.73A362.32000000000005 362.32000000000005 0 0 0 855.79 496.12C855.79 483.92 845.0799999999999 473.22 832.89 473.22C825.97 473.22 821.28 474.97 816.83 479.22C812.5400000000001 484.41 809.99 490.68 809.99 496.09A310.61 310.61 0 0 1 785.24 618.09A314.09 314.09 0 0 1 496.11 809.99A313.56 313.56 0 0 1 274.35 274.35A313.78 313.78 0 0 1 374.12 206.99A310.61 310.61 0 0 1 496.12 182.24C502.74 182.24 508.9 180.05 511.81 176.65C516.32 171.38 519.02 164.91 519.02 159.34C519 147.15 508.31 136.4400000000001 496.11 136.4400000000001zM84.62 710.36A21.75 21.75 0 0 0 73.93 713.64L73.44 713.94L72.92 714.2A19 19 0 0 0 63.53 726.77C62.08 733.3199999999999 62.98 740.06 65.94 744.77L66.07 744.97L66.19 745.17C133.43 860.78 242.06 942.91 372.08 976.46L372.59 976.59L373.08 976.76A21.84 21.84 0 0 0 378.08 977.07C388.08 977.07 396.73 970.42 397.86 961.93L397.99 961L398.23 960.1A23.13 23.13 0 0 0 396 942.48A22.870000000000005 22.870000000000005 0 0 0 381.92 931.87C263.52 901.69 164.92 826.95 104.21 721.3900000000001A24.3 24.3 0 0 0 84.62 710.36zM496.11 272.89C483.91 272.89 473.21 283.5900000000001 473.21 295.79S483.92 318.69 496.1200000000001 318.69A177.52 177.52 0 1 1 318.69 496.12C318.69 483.92 307.98 473.22 295.78 473.22S272.88 483.92 272.88 496.12C272.88 555.48 296.18 611.47 338.4700000000001 653.76S436.75 719.35 496.11 719.35S611.46 696.05 653.76 653.76S719.34 555.48 719.34 496.12A225.93 225.93 0 0 0 692.94 390.53C672.7 352.07 641.1300000000001 320.53 601.6200000000001 299.25A225.75 225.75 0 0 0 496.11 272.89zM669.37 184.09C663.2 184.09 654.83 185.9300000000001 650.05 194.6900000000001L649.8399999999999 195.0800000000001L649.6099999999999 195.4500000000001C646.6099999999999 200.2900000000001 645.7699999999999 205.99 647.1999999999999 212.4000000000001C648.3299999999999 217.4900000000001 651.8799999999999 221.9400000000001 657.7499999999999 225.6200000000001C702.7499999999999 252.8800000000001 738.2599999999999 287.6200000000001 763.3199999999999 329.0100000000001C768.03 336.3200000000001 775.04 340.3500000000002 783.0699999999999 340.3500000000002C786.3699999999999 340.3500000000002 790.3299999999999 339.2000000000002 795.16 336.8600000000002C804.9599999999999 330.2900000000001 808.0699999999999 316.0000000000001 801.76 305.8600000000002C771 257.1800000000001 729.52 216.29 681.68 187.6900000000001C676.74 185.23 672.71 184.09 669.37 184.09zM969.33 473.23C957.13 473.23 946.43 483.93 946.43 496.13A466 466 0 0 1 943.08 550.94L943.08 551.05A450.9 450.9 0 0 1 551.08 943.05L550.97 943.05A466.25999999999993 466.25999999999993 0 0 1 496.15 946.4C483.95 946.4 473.2500000000001 957.1 473.2500000000001 969.3S483.91 992.23 496.11 992.23A491.05000000000007 491.05000000000007 0 0 0 688.9 953.15A499.93 499.93 0 0 0 953.15 688.9000000000001A491.00000000000006 491.00000000000006 0 0 0 992.23 496.12C992.23 483.92 981.53 473.23 969.33 473.23zM659.63 29.23A22.58 22.58 0 0 0 638.07 44.04C635.94 50.54 636.07 56.25 638.5500000000001 61.9699999999999C641.47 67.6499999999999 646.1300000000001 71.8899999999999 651.3700000000001 73.6299999999999L651.7900000000001 73.7799999999999A433.45 433.45 0 0 1 778.5300000000001 146.6699999999999A452.2300000000001 452.2300000000001 0 0 1 873.6600000000001 253.0099999999999C899.6600000000001 293.0099999999999 919.2 337.8599999999999 931.8600000000002 386.1799999999999A23.339999999999996 23.339999999999996 0 0 0 954.17 403.1799999999999A21.31 21.31 0 0 0 959.17 402.8599999999998L960.05 402.5699999999998L960.96 402.3899999999999C969.28 400.7199999999999 972.09 398.1099999999999 974.61 393.5699999999998A25.170000000000005 25.170000000000005 0 0 0 977.45 375.0599999999999A496.52 496.52 0 0 0 865.45 165.0599999999998A506.00000000000006 506.00000000000006 0 0 0 668.1500000000001 30.7599999999998A39.87 39.87 0 0 0 659.63 29.23z" />
+ horiz-adv-x="992.2" d="M496.1 0A492.32 492.32 0 0 0 232.9000000000001 75.9C241.4000000000001 84.5 266.1 109.1 266.1 109.1A451.08 451.08 0 0 1 441.2000000000001 49.1H441.3000000000001A456.38 456.38 0 0 1 496.1000000000001 45.7C508.3000000000001 45.7 519.0000000000001 35 519.0000000000001 22.8000000000001S508.3 0 496.1 0zM71.6 239.9A492.84 492.84 0 0 0 0 496.1999999999999C0 508.3999999999999 10.7 519.0999999999999 22.9 519.0999999999999S45.8 508.3999999999999 45.8 496.1999999999999A456.38 456.38 0 0 1 49.2 441.4V441.3A450.62999999999994 450.62999999999994 0 0 1 104.9 273.3S84.5 252.8 77.3 245.7zM171.8 340.2A356.2900000000001 356.2900000000001 0 0 0 148.9 401.4999999999999A362.07 362.07 0 0 0 136.4 496.0999999999999A359.64 359.64 0 0 0 496.2 855.8A362.82 362.82 0 0 0 590.9 843.3A345.67999999999995 345.67999999999995 0 0 0 651.3 820.8C645.1999999999999 814.6999999999999 616.5 785.9 616.5 785.9A313.57 313.57 0 0 1 374.2 785.1999999999999A313.76 313.76 0 0 1 206.6 375C197.3 365.8 171.8 340.2 171.8 340.2zM496.1 136.5A357 357 0 0 0 332.4000000000001 175.7000000000001S358.2000000000001 201.5 366.9000000000001 210.3000000000001A309.88 309.88 0 0 1 496.1 182.4000000000001C502.7 182.4000000000001 508.9 180.2000000000001 511.8 176.8000000000001C516.3 171.5000000000001 519 165.1 519 159.5000000000001C519 147.1999999999999 508.3 136.5 496.1 136.5zM832.9 473.1999999999999C826 473.1999999999999 821.3 474.9999999999999 816.8 479.1999999999999C812.5 484.3999999999999 810 490.6999999999999 810 496.0999999999999A310.23 310.23 0 0 1 781.8 625.9999999999999L816.3 660.5999999999999A352.77 352.77 0 0 0 843.4 590.8A361.52 361.52 0 0 0 855.9 496.1999999999999C855.8 483.9999999999999 845.1 473.1999999999999 832.9 473.1999999999999zM84.7 710.4A21.76 21.76 0 0 0 74 713.6999999999999L73.5 714L73 714.3A19.14 19.14 0 0 0 63.6 726.9C62.1 733.5 63 740.2 66 744.9L66.1 745.0999999999999L66.2 745.3C133.5 860.8 242.1 942.9 372.1 976.5L372.6 976.6L373.1 976.8A22.37 22.37 0 0 0 378.1 977.1C388.1 977.1 396.8 970.5 397.9000000000001 962L398.0000000000001 961.1L398.2000000000001 960.2A22.85 22.85 0 0 0 381.9000000000001 932C263.5 901.7 164.9 827 104.2000000000001 721.4A24.27 24.27 0 0 0 84.7 710.4zM496.1 272.9C483.9 272.9 473.2 283.6 473.2 295.8S483.9 318.7 496.1 318.7A177.2 177.2 0 0 1 673.5 496.1A171.49 171.49 0 0 1 672.3 516.4L711.1999999999999 555.4A222.58999999999997 222.58999999999997 0 0 0 719.1999999999999 496.1A225.48999999999998 225.48999999999998 0 0 0 692.8 390.5C672.5999999999999 352 641 320.5 601.5 299.2000000000001A225.19 225.19 0 0 0 496.1 272.9zM295.8 473.3C283.6 473.3 272.9000000000001 483.9999999999999 272.9000000000001 496.1999999999999C272.9000000000001 555.5999999999999 296.2000000000001 611.5 338.5 653.8S436.8 719.4 496.1 719.4A218.5 218.5 0 0 0 544.6 714L504.2 673.4C501.5000000000001 673.5 498.8000000000001 673.5999999999999 496.2 673.5999999999999A177.2 177.2 0 0 1 318.8 496.1999999999999A22.37 22.37 0 0 0 314.7 483.3999999999999L308.7 477.3999999999999A22.449999999999996 22.449999999999996 0 0 0 295.8 473.3zM669.4 184.0999999999999C663.1999999999999 184.0999999999999 654.9 185.8999999999999 650.1 194.6999999999999L649.9 195.0999999999999L649.6999999999999 195.4999999999999C646.6999999999999 200.2999999999999 645.9 205.9999999999999 647.3 212.3999999999999C648.4 217.4999999999999 652 221.8999999999999 657.8 225.5999999999999C702.8 252.8999999999999 738.3 287.5999999999999 763.4 328.9999999999999C768.1 336.2999999999999 775.1 340.2999999999999 783.1 340.2999999999999C786.4 340.2999999999999 790.4 339.1999999999998 795.2 336.7999999999999C805 330.1999999999998 808.1 315.8999999999999 801.8000000000001 305.7999999999999C771.1 257.0999999999998 729.6 216.1999999999998 681.7 187.5999999999998C676.8 185.3 672.7 184.0999999999999 669.4 184.0999999999999zM718.1 887.8A451.2099999999999 451.2099999999999 0 0 1 551.1 943.1H551A456.38 456.38 0 0 1 496.2 946.5C484 946.5 473.3 957.2 473.3 969.4S484 992.3 496.2 992.3A493 493 0 0 0 751.5 921.3zM969.4 473.1999999999999C957.2 473.1999999999999 946.5 483.8999999999999 946.5 496.0999999999999A455.13000000000005 455.13000000000005 0 0 1 943.1 550.8999999999999V551A448.82 448.82 0 0 1 882.6 727.0999999999999L915.7 760.3A492.28000000000003 492.28000000000003 0 0 0 992.2 496.1C992.3 483.9999999999999 981.6 473.1999999999999 969.4 473.1999999999999zM659.7 29.3A22.67 22.67 0 0 0 638.1 44.0999999999999C636 50.5999999999999 636.1 56.3 638.6 61.9999999999999A23.420000000000005 23.420000000000005 0 0 0 651.4 73.6999999999999L651.8 73.8A432.36000000000007 432.36000000000007 0 0 1 778.5 146.6999999999999A451.38000000000005 451.38000000000005 0 0 1 873.6 252.9999999999999C899.6 292.9999999999999 919.1 337.7999999999999 931.8 386.1999999999998A23.37 23.37 0 0 0 954.1 403.1999999999998A22.37 22.37 0 0 0 959.1 402.8999999999999L960 402.5999999999999L960.9 402.3999999999999C969.2 400.6999999999998 972 398.0999999999999 974.6 393.5999999999999A24.57 24.57 0 0 0 977.4 375.0999999999999A496.91 496.91 0 0 0 865.4 165.0999999999999A506.00000000000006 506.00000000000006 0 0 0 668.1 30.8A37.39 37.39 0 0 0 659.7 29.3zM18.3 51.6999999999999C329.8 362.5 642.7 675.4 945.6 978.4L973.9 950.1C671 647.1999999999999 358.2 334.4 46.6 23.4z" />
-
diff --git a/src/shared/icons/Icons.ttf b/src/shared/icons/Icons.ttf
index 7abffa854e..8cd02a37c5 100644
Binary files a/src/shared/icons/Icons.ttf and b/src/shared/icons/Icons.ttf differ
diff --git a/src/shared/icons/icons.js b/src/shared/icons/icons.js
index 38e4dce01a..ee8ca9c36e 100644
--- a/src/shared/icons/icons.js
+++ b/src/shared/icons/icons.js
@@ -32,6 +32,7 @@ module.exports = {
plusAlt: '➕',
minus: '➖',
cross: '╳',
+ attention: '⚡',
bookmark: '📖',
trash: '🗑',
chart: '📊',
@@ -43,15 +44,14 @@ module.exports = {
tick: '✅',
tickRound: '☑',
key: '🔑',
+ keyVertical: '🔐',
sync: '🔄',
biometric: '🙎',
security: '🔰',
copy: '📋',
print: '🖨',
fingerprint: '🖕',
- fingerprintLarge: '🖕🏻',
fingerprintDisabled: '👇',
write: '✍️',
search: '🔍',
- warning: '⚠️',
};
diff --git a/src/shared/icons/icons/attention.svg b/src/shared/icons/icons/attention.svg
new file mode 100644
index 0000000000..18215849de
--- /dev/null
+++ b/src/shared/icons/icons/attention.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/shared/icons/icons/fingerprint.svg b/src/shared/icons/icons/fingerprint.svg
index d8bcce9ae6..a00853a724 100644
--- a/src/shared/icons/icons/fingerprint.svg
+++ b/src/shared/icons/icons/fingerprint.svg
@@ -1,38 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/src/shared/icons/icons/fingerprintDisabled.svg b/src/shared/icons/icons/fingerprintDisabled.svg
index 02ed05d274..d79f06e8dc 100644
--- a/src/shared/icons/icons/fingerprintDisabled.svg
+++ b/src/shared/icons/icons/fingerprintDisabled.svg
@@ -1,54 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/src/shared/icons/icons/fingerprintLarge.svg b/src/shared/icons/icons/fingerprintLarge.svg
deleted file mode 100644
index aba4228790..0000000000
--- a/src/shared/icons/icons/fingerprintLarge.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
diff --git a/src/shared/icons/icons/keyVertical.svg b/src/shared/icons/icons/keyVertical.svg
new file mode 100644
index 0000000000..a5d98c9e5e
--- /dev/null
+++ b/src/shared/icons/icons/keyVertical.svg
@@ -0,0 +1,23 @@
+
+
+
+
diff --git a/src/shared/icons/icons/warning.svg b/src/shared/icons/icons/warning.svg
deleted file mode 100644
index d85277c34d..0000000000
--- a/src/shared/icons/icons/warning.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/shared/images/checkbox-checked-black.png b/src/shared/images/checkbox-checked-black.png
deleted file mode 100644
index 9ff9be88a0..0000000000
Binary files a/src/shared/images/checkbox-checked-black.png and /dev/null differ
diff --git a/src/shared/images/checkbox-checked-white.png b/src/shared/images/checkbox-checked-white.png
deleted file mode 100644
index 073aea198e..0000000000
Binary files a/src/shared/images/checkbox-checked-white.png and /dev/null differ
diff --git a/src/shared/images/checkbox-unchecked-black.png b/src/shared/images/checkbox-unchecked-black.png
deleted file mode 100644
index a27204c178..0000000000
Binary files a/src/shared/images/checkbox-unchecked-black.png and /dev/null differ
diff --git a/src/shared/images/checkbox-unchecked-white.png b/src/shared/images/checkbox-unchecked-white.png
deleted file mode 100644
index d6fcd2eb1e..0000000000
Binary files a/src/shared/images/checkbox-unchecked-white.png and /dev/null differ
diff --git a/src/shared/libs/utils.js b/src/shared/libs/utils.js
index f77fa4c26e..38d306e52a 100644
--- a/src/shared/libs/utils.js
+++ b/src/shared/libs/utils.js
@@ -340,9 +340,7 @@ export const removeNonAlphaNumeric = (source, fallback = '') => {
*
* @returns {Promise<*>}
*/
-export const fetchVersions = (
- url = VERSIONS_URL,
-) => {
+export const fetchVersions = (url = VERSIONS_URL) => {
return fetch(url)
.then((response) => response.json())
.then((response) => {
diff --git a/src/shared/locales/ar/translation.json b/src/shared/locales/ar/translation.json
index 80880db5bd..9b56dcf59a 100644
--- a/src/shared/locales/ar/translation.json
+++ b/src/shared/locales/ar/translation.json
@@ -74,6 +74,8 @@
"wallet": "المحفظة",
"all": "All",
"sent": "أرسلت",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "تلقي",
"sending": "إرسال",
"receiving": "تلقي",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "أوتورياتاتشينج إلى تشابك",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "كلمتي المرور لا تتطابق",
"passwordMismatchExplanation": "كلمتي المرور المدخلة لا تتطابق، يرجى المحاولة مرة أخرى.",
- "anEncryptedCopy": "سيتم تخزين نسخة مشفرة من السييد الخاص بك على الجهاز الخاص بك. وسوف تستخدم كلمة المرور هذه للوصول إلى المحفظة الخاصة بك في المستقبل.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "أعد كتابة كلمة المرور"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "تحميل البذور لأول مرة.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "لا تقم ابداً بمشاركة السييد الخاص بك مع اي شخص.",
"iotaLogo": "شعار IOTA",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "لا توجد عناوين",
"spent": "اُنفق",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "علامة",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "عرض السييد",
@@ -504,18 +512,21 @@
"currency": "عملة"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "هل أنت متأكد أنك تريد تسجيل الخروج؟"
+ "logoutConfirmation": "هل أنت متأكد أنك تريد تسجيل الخروج؟",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "مسح رمز QR"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "تريليون",
"billion": "مليار",
"million": "مليون",
"thousand": "ألف",
- "one": "واحد"
+ "one": "واحد",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "جاري مزامنة حسابك."
},
"useExistingSeed": {
- "title": "أدخل سييد واسم حساب.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "لقد حفظت السييد الخاص بي",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "الحالة",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "رسالة"
+ "aMessage": "رسالة",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "القيمة السوقية",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/bg/translation.json b/src/shared/locales/bg/translation.json
index 2c2b684ea7..245d044153 100644
--- a/src/shared/locales/bg/translation.json
+++ b/src/shared/locales/bg/translation.json
@@ -74,6 +74,8 @@
"wallet": "Wallet",
"all": "All",
"sent": "Sent",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Received",
"sending": "Sending",
"receiving": "Receiving",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed contains invalid characters",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "Passwords do not match",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Loading seed for the first time.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Tag",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must back up your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Currency"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have backed up my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/cs/translation.json b/src/shared/locales/cs/translation.json
index 0b5d0caed7..8b93976989 100644
--- a/src/shared/locales/cs/translation.json
+++ b/src/shared/locales/cs/translation.json
@@ -6,7 +6,7 @@
"noTransactions": "ŽÁDNÁ NEDÁVNÁ HISTORIE",
"refresh": "Obnovit",
"balanceError": "Nedostatečný zůstatek",
- "balanceErrorMessage": "Nemáte dostatek IOTA k dokončení této transakce.",
+ "balanceErrorMessage": "Nemáte dostatek peněz na vytvoření této bedny.",
"totalBalance": "Celkový zůstatek",
"transferError": "Chyba transakce",
"transferErrorMessage": "Došlo k chybě při odesílání transakce. Prosím zkuste to znovu.",
@@ -74,6 +74,8 @@
"wallet": "Peněženka",
"all": "Vše ",
"sent": "Odesláno",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Přijato",
"sending": "Odesílání",
"receiving": "Příjem",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "VAROVÁNÍ: Zjištěny prostředky na již použitých adresách",
"discordInformation": "Odesílání ze stejné adresy více než jednou je nebezpečné. Pro více informací je vám k dispozici kanál #help na službě Discord.",
"androidInsecureClipboardWarning": "Schránka v systému Android není bezpečná.",
- "androidCopyPasteWarning": "Nikdy nekopírujte/nevkládejte Váš Seed na Android zařízení.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Nebudu kopírovat/vkládat svůj seed",
"mustBeStoredAppropriately": "Musí být uloženo odpovídajícím způsobem.",
"deviceMayBecomeUnresponsive": "Vaše zařízení může na chvíli přestat reagovat.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Chyba klíčenky",
"errorAccessingKeychainExplanation": "Nelze získat přístup k úložišti klíčů.",
"mainWallet": "HLAVNÍ ÚČET",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "Nová aktualizace je k dispozici",
"shouldUpdateExplanation": "Byla vydána nová aktualizace. Doporučujeme aktualizovat na nejnovější verzi.",
"forceUpdate": "Chcete-li pokračovat, aktualizujte aplikaci",
- "forceUpdateExplanation": "Byla vydána kritická aktualizace. Aktualizujte aplikaci nyní."
+ "forceUpdateExplanation": "Byla vydána kritická aktualizace. Aktualizujte aplikaci nyní.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed obsahuje neplatné znaky",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Heslo musí obsahovat minimálně {{minLength}} znaků. Nyní je {{currentLength}} znaků dlouhé. Prosím zkuste to znovu.",
"passwordMismatch": "Hesla se neshodují",
"passwordMismatchExplanation": "Zadané heslo je neplatné. Prosím zkuste znovu.",
- "anEncryptedCopy": "V zařízení se uloží zašifrovaná kopie Vašeho Seedu. Tímto heslem se budete přihlašovat k Vaší peněžence.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Znovu zadejte heslo"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Přihlásit se",
"setNode": "Nastavit Node",
"whyBiometricDisabled": "Proč je biometrické ověřování vypnuté?",
- "whyBiometricDisabledExplanation": "Biometrické přihlášení je zakázané při prvním načítání aplikace pro Vaší bezpečnost. Když budete při používání Trinity odhlášeni z důvodu nečinnosti, poté se můžete přihlásit zpět pomocí biometrického ověření."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "První načítání Seedu.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nikdy s nikým nesdílejte Váš Seed!",
"iotaLogo": "IOTA logo",
- "print": "TISK",
+ "print": "Print",
"paperConvenience": "Vytištění papírové kopie vašeho seedu je vhodný způsob, jak ho uchovat.",
"publicInsecure": "Ale tisk na veřejné wifi síti, nebo na veřejné tiskárně není bezpečné.",
- "tapCheckboxes": "Pro potvrzení, prosím, zaškrtněte políčka níže.",
- "wifiCheckbox": "Nebudu tisknout na veřejné wifi síti",
- "printerCheckbox": "Nebudu tisknout na veřejné tiskárně"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Vaše adresa",
@@ -285,8 +292,6 @@
"generateNewAddress": "Vygenerovat adresu",
"noAddresses": "ŽÁDNÉ ADRESY",
"spent": "Utraceno",
- "missingPermission": "Požadovaný přístup k souborovému systému",
- "missingPermissionExplanation": "Aby bylo možné sdílet QR kódy, musí být povolen přístup do souborového systému.",
"tag": "Značka",
"generateAnAddress": "Vygenerovat adresu",
"generateAnAddressTitle": "Vygenerovat adresu",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Zapište si někam Váš Seed",
"youCanHighlightCharacters": "Můžete zvýraznit 9 znaků najednou",
"printBlankWallet": "Tisk prázdné peněženky",
- "whatIsChecksum": "Každý Seed má odpovídající 3-znakový kontrolní součet",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Svůj Seed mám uložený",
"checksumExplanation": "Vždy, když přidáte Seed do Vaší peněženky, byste se měli ujistit, že kontrolní součet vygenerovaný peněženkou odpovídá tomu, který jste si zapsali.",
"mustSaveYourSeed": "<0><0>Musíte uložit nejméně 0><1>jeden Seed1><2>z níže uvedených možností.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Celkový čas",
"addressPasteDetected": "Zjištěno kopírování adresy",
"addressPasteExplanation": "Vaše adresa byla zkopírována ze schránky. Zkontrolujte, že vložená adresa je opravdu ta, kam chcete prostředky poslat.",
- "invalid": "NEPLATNÉ"
+ "invalid": "NEPLATNÉ",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Přidejte jméno",
@@ -446,7 +453,8 @@
"empty": "Prázdné",
"retrying": "Opakování",
"yesterday": "Včera",
- "promotingAnotherBundle": "Podpora dalšího balíčku"
+ "promotingAnotherBundle": "Podpora dalšího balíčku",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Zobrazit Seed",
@@ -504,18 +512,21 @@
"currency": "Měna"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Opravdu se chcete odhlásit?"
+ "logoutConfirmation": "Opravdu se chcete odhlásit?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Naskenujte Váš QR kód"
},
"unitInfoModal": {
- "unitSystem": "JEDNOTKOVÝ SYSTÉM",
+ "unitSystem": "Unit System",
"trillion": "Bilion",
"billion": "Miliard",
"million": "Milion",
"thousand": "Tisíc",
- "one": "Jedna"
+ "one": "Jedna",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Proč nemohu použít celý zůstatek mého účtu?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Synchronizuji Váš účet."
},
"useExistingSeed": {
- "title": "Zadejte Seed a název účtu.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Nesprávný formát Seedu",
"validSeedExplanation": "Platný Seed má 81 znaků a obsahuje pouze A-Z nebo 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Zazálohovali jste si Váš Seed?",
- "alreadyHave": "Svůj Seed mám uložený",
- "reenterSeed": "V dalším kroku budete požádáni o znovu vložení Vašeho Seedu.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Pokud jste si nezálohovali Váš Seed a Vaše zařízení bude poškozeno, ztratíte všechny Vaše IOTY.",
"pleaseConfirm": "Prosím potvrďte, že máte bezpečně uložen Váš Seed."
},
@@ -572,15 +583,19 @@
"status": "Stav",
"fingerprintUnavailable": "Biometrická autentizace není k dispozici",
"fingerprintUnavailableExplanation": "Vaše zařízení nepodporuje biometrickou autentizaci, nebo v nastavení zařízení nebylo povoleno její používání.",
- "buttonInstructionsDisable": "Stisknutím tlačítka níže vypnete ověřování otisku prstů.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Stisknutím tlačítka níže aktivujete ověření otisků prstů.",
- "buttonInstructionsDisableIPhoneX": "Stisknutím tlačítka níže vypnete ověření pomocí rozpoznávání obličeje.",
- "buttonInstructionsEnableIPhoneX": "Stisknutím tlačítka níže zapnete ověření pomocí rozpoznávání obličeje.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Pro přihlášení přiložte prst na čtečku"
},
"transferConfirmation": {
"youAreAbout": "Chystáte se odeslat {{contents}} na adresu",
- "aMessage": "zpráva"
+ "aMessage": "zpráva",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Nesprávný kód",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Exportovat SeedVault",
- "seedVaultExplanation": "SeedVault je šifrovaný soubor pro bezpečné uložení Vašeho Seedu. Seed je šifrován heslem a není k dispozici bez jeho zadání.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Ujistěte se, že si zálohujete soubor na více místech (například pevný disk, cloud, USB). Pokud ztratíte tento soubor a nebudete mít uložený Váš Seed jiným způsobem, ztratíte Vaše IOTA.",
"exportFail": "Export SeedVault se nezdařil",
"exportFailExplanation": "Během exportování Vašeho SeedVault nastal problém. Zkontrolujte zda máte oprávnění na zápis souboru a dostatek volného místa.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Váš Seed byl úspěšně importován.",
"saveToDownloadFolder": "Uložit do složky pro stahování",
"importSeedVault": "Importovat SeedVault",
- "dropSeedVaultHere": "Přetáhněte SeedVault sem <1>1> nebo klepněte na tlačítko Procházet",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Zadejte Vaše heslo k otevření souboru SeedVault",
"noSeedFound": "SeedVault neobsahuje platný Seed",
"noSeedFoundExplanation": "SeedVault je buď prázdný, nebo obsahuje Seed v neplatném formátu.",
"seedFileError": "Otevření SeedVault se nezdařilo",
"seedFileErrorExplanation": "Během otevírání SeedVault nastal problém. Jestliže jste zvolili správný soubor, je možné, že je poškozený.",
- "seedVaultKeyExplanation": "Nejprve potřebujeme zabezpečit Váš SeedVault. Zadejte heslo k zašifrování souboru. Toto heslo budete potřebovat k obnovení Vašeho Seedu ze zálohy souboru SeedVault. Můžete použít stejné heslo, které používáte pro přihlášení do Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Příprava transakce",
"gettingTransactionsToApprove": "Získávání transakcí ke schválení",
"proofOfWork": "Dokončení proof of work",
- "broadcasting": "Odesílání transakcí do sítě"
+ "broadcasting": "Odesílání transakcí do sítě",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Není možné dokončit aktualizaci údajů po Snapshotu",
@@ -669,7 +687,8 @@
"transition": "Aktualizace",
"transitioning": "Aktualizace údajů po Snapshotu.",
"generatingAndDetecting": "Generuji adresy a zjišťuji zůstatek.",
- "attaching": "Připojuji adresy do sítě Tangle."
+ "attaching": "Připojuji adresy do sítě Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automatické vyplňování úspěšné",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Pomocí proxy serveru",
- "proxyExplanation": "Rozpoznat a použít systémové nastavení proxy serveru. Po změně tohoto nastavení restartujte peněženku."
+ "proxyExplanation": "Rozpoznat a použít systémové nastavení proxy serveru. Po změně tohoto nastavení musí být peněženka restartována."
},
"notifications": {
"notifications": "Oznámení",
diff --git a/src/shared/locales/da/translation.json b/src/shared/locales/da/translation.json
index 741e145948..31d196c246 100644
--- a/src/shared/locales/da/translation.json
+++ b/src/shared/locales/da/translation.json
@@ -74,6 +74,8 @@
"wallet": "Tegnebog",
"all": "Alle",
"sent": "Sendt",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Modtaget",
"sending": "Sender",
"receiving": "Modtager",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "ADVARSEL: Værdier på en brugt adresse",
"discordInformation": "At sende fra samme adresse mere end én gang er risikabelt. Gå venligst til #help-kanalen på Discord for at finde ud af, hvad du kan gøre.",
"androidInsecureClipboardWarning": "Android har ikke en sikker Udklipsholder.",
- "androidCopyPasteWarning": "Kopiér/indsæt aldrig din seed på en Android-enhed.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Jeg vil ikke kopiere/indsætte min seed",
"mustBeStoredAppropriately": "Det skal opbevares hensigtsmæssigt.",
"deviceMayBecomeUnresponsive": "Din enhed kan ophøre med at reagere i et stykke tid.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Nøgleringsfejl",
"errorAccessingKeychainExplanation": "Kan ikke tilgå nødvendig nøglering til sikker lagring.",
"mainWallet": "HOVEDKONTO",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "Ny opdateringer er tilgængelig",
"shouldUpdateExplanation": "En ny opdatering er frigivet. Det anbefales at opdatere til den seneste version.",
"forceUpdate": "Opdatér app'en for at fortsætte",
- "forceUpdateExplanation": "En kritisk opdatering er frigivet. Opdatér venligst app'en nu."
+ "forceUpdateExplanation": "En kritisk opdatering er frigivet. Opdatér venligst app'en nu.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Hovednøglen indeholder ugyldige tegn",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Din adgangskode skal indeholde mindst {{minLength}} tegn. Den indeholder i øjeblikket {{currentLength}} tegn. Prøv venligst igen.",
"passwordMismatch": "Adgangskoderne er ikke ens",
"passwordMismatchExplanation": "Adgangskoderne, du har indtastet, er ikke ens. Prøv venligst igen.",
- "anEncryptedCopy": "En krypteret kopi af din hovednøgle lagres på din enhed. Du skal fremadrettet benytte denne adgangskode for at tilgå din tegnebog.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Gentag adgangskode"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log ind",
"setNode": "Indstil node",
"whyBiometricDisabled": "Hvorfor er biometrisk autentificering deaktiveret?",
- "whyBiometricDisabledExplanation": "Biometrisk login er deaktiveret ved første app-start grundet din sikkerhed. Benyttes Trinity, vil du blive logget af pga. inaktivitet. Du kan derefter logge ind igen med biometrisk autentificering."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Indlæser hovednøgle for første gang.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Del aldrig din hovednøgle med nogen.",
"iotaLogo": "IOTA-logo",
- "print": "UDSKRIV",
+ "print": "Print",
"paperConvenience": "Udskrivning af en papirkopi af din hovednøgle er en praktisk måde at gemme den på.",
"publicInsecure": "Men at udskrive på et offentligt wifi-netværk eller printer er usikkert.",
- "tapCheckboxes": "Tryk på afkrydsningsfelterne nedenfor for at bekræfte.",
- "wifiCheckbox": "Jeg printer ikke via offentlige Wi-Fi-netværk",
- "printerCheckbox": "Jeg printer ikke via en offentlig printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Din adresse",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generér adresse",
"noAddresses": "INGEN ADRESSER",
"spent": "Brugt",
- "missingPermission": "Filsystemrettighed kræves",
- "missingPermissionExplanation": "Adgang til filsystemet er nødvendig for at dele QR-koder.",
"tag": "Tag",
"generateAnAddress": "Generér adresse",
"generateAnAddressTitle": "Generér en adresse",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Lad os skrive din hovednøgle ned",
"youCanHighlightCharacters": "Du kan markere 9 tegn ad gangen",
"printBlankWallet": "Udskriv en tom tegnebog",
- "whatIsChecksum": "Hver hovednøgle har en korresponderende 3-tegns kontrolsum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Jeg har gemt min hovednøgle",
"checksumExplanation": "Når du tilføjer en hovednøgle i din tegnebog, skal du sikre dig, at den genererede kontrolsum matcher den, du har nedskrevet.",
"mustSaveYourSeed": "<0><0>Du skal sikkerhedskopiere din hovednøgle med 0><1>mindst én1><2> af valgmulighederne nedenfor.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Tid i alt",
"addressPasteDetected": "Adresseindsættelse registreret",
"addressPasteExplanation": "Det ser ud til, at du har indsat en adresse. Kontrollér venligst, at adressen matcher den, du ønsker at sende til.",
- "invalid": "UGYLDIG"
+ "invalid": "UGYLDIG",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Lad os tilføje et navn",
@@ -446,7 +453,8 @@
"empty": "Tom",
"retrying": "Forsøger igen",
"yesterday": "I går",
- "promotingAnotherBundle": "Forfremmer et anden bundt"
+ "promotingAnotherBundle": "Forfremmer et anden bundt",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Se hovednøgle",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Er du sikker på, at du vil logge ud?"
+ "logoutConfirmation": "Er du sikker på, at du vil logge ud?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skan din QR-kode"
},
"unitInfoModal": {
- "unitSystem": "ENHED SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Milliard",
"million": "Million",
"thousand": "Tusind",
- "one": "En"
+ "one": "En",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Hvorfor kan jeg ikke bruge hele saldoen?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Synkroniserer din konto."
},
"useExistingSeed": {
- "title": "Angiv en hovednøgle og et kontonavn.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Forkert hovednøgleformat",
"validSeedExplanation": "Gyldige hovednøgler skal være på 81 tegn og må kun indeholde A-Z eller 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Sikkerhedskopierede du din hovednøgle?",
- "alreadyHave": "Jeg har sikkerhedskopieret min hovednøgle",
- "reenterSeed": "På næste trin vil du blive bedt om at genindtaste din hovednøgle.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Har du ikke sikkerhedskopieret din hovednøgle, og fejler din enhed, mister du alle dine IOTA.",
"pleaseConfirm": "Bekræft, at du har lagret din hovednøgle forsvarligt."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometrisk autentificering utilgængelig",
"fingerprintUnavailableExplanation": "Din enhed understøtter ikke biometrisk godkendelse, eller også er dette ikke konfigureret under indstillingerne på din enhed.",
- "buttonInstructionsDisable": "Tryk på knappen nedenfor for at deaktivere godkendelse med fingeraftryk.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Tryk på knappen nedenfor for at aktivere godkendelse med fingeraftryk.",
- "buttonInstructionsDisableIPhoneX": "Tryk på knappen herunder for at deaktivere ansigtsgenkendelse.",
- "buttonInstructionsEnableIPhoneX": "Tryk på knappen herunder for at aktivere ansigtsgenkendelse.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Berør fingeraftrykslæseren for at logge ind"
},
"transferConfirmation": {
"youAreAbout": "Du er ved at sende {{contents}} til adressen",
- "aMessage": "en besked"
+ "aMessage": "en besked",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Forkert kode",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Eksportere SeedVault",
- "seedVaultExplanation": "En SeedVault er en krypteret fil til sikker lagring af din hovednøgle. Hovednøglen er krypteret bag en SeedVault-nøgle og kan ikke tilgås uden denne nøgle.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Sørg for, at du opretter flere sikkerhedskopier af filen (på f.eks. harddisk, Sky, USB-nøgle). Mister du denne fil, og har du ikke lagret din hovednøgle andetsteds, vil du miste dine IOTA.",
"exportFail": "SeedVault-eksport mislykkedes",
"exportFailExplanation": "Der opstod et problem ved eksport af SeedVault. Kontrollér at du har de nødvendige tilladelser og tilstrækkelig ledig lagerplads.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Din hovednøgle er importeret.",
"saveToDownloadFolder": "Gem i Download-mappe",
"importSeedVault": "Impotér SeedVault",
- "dropSeedVaultHere": "Slip SeedVault hér <1>1> eller klik for at gennemse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Angiv din nøgle for at nulstille denne SeedVault",
"noSeedFound": "SeedVault indeholder ikke en gyldig hovednøgle",
"noSeedFoundExplanation": "SeedVault er enten tom eller indeholder en hovednøgle i et ugyldigt format.",
"seedFileError": "Kunne ikke åbne SeedVault",
"seedFileErrorExplanation": "Der var problemer med at åbne af SeedVault. Har du valgt den korrekte fil, kan denne være beskadiget.",
- "seedVaultKeyExplanation": "Din SeedVault skal først sikres. Vælg en nøgle til at kryptering af filen. Du skal benytte denne nøgle til at genoprette din hovednøgle fra SeedVault-sikkerhedskopien. Nøglen kan være den samme som den adgangskode, du benytter til Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Forbererder transaktioner",
"gettingTransactionsToApprove": "Modtager transaktion til godkendelse",
"proofOfWork": "Fuldfører PoW",
- "broadcasting": "Sender transaktion til netværk"
+ "broadcasting": "Sender transaktion til netværk",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Kan ikke fuldføre snapshot synkroniseringen",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Synkronisere til nyeste snapshot.",
"generatingAndDetecting": "Genererer adresser og registrerer saldo.",
- "attaching": "Knytter adresse til Tangle."
+ "attaching": "Knytter adresse til Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autoudfyldning fuldendt",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/de/translation.json b/src/shared/locales/de/translation.json
index c9804e9ee0..f6a713f6fa 100644
--- a/src/shared/locales/de/translation.json
+++ b/src/shared/locales/de/translation.json
@@ -74,6 +74,8 @@
"wallet": "Wallet",
"all": "Alle",
"sent": "Gesendet",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Empfangen",
"sending": "Sende...",
"receiving": "Empfange...",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNUNG: Guthaben auf verwendeten Adressen",
"discordInformation": "Es ist gefährlich, mehr als einmal von der gleichen Adresse zu senden. Bitte besuche den #help Kanal in Discord um herauszufinden, wie du das Problem lösen kannst.",
"androidInsecureClipboardWarning": "Leider bietet Android keine sichere Zwischenablage.",
- "androidCopyPasteWarning": "Verwende auf einem Android-Gerät niemals die \"Kopieren / Einfügen\"-Funktion für den Seed.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Ich werde meinen Seed nicht kopieren/einfügen",
"mustBeStoredAppropriately": "Er muss in angemessener Weise gesichert werden.",
"deviceMayBecomeUnresponsive": "Dein Gerät könnte für eine Weile nicht reagieren.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Schlüsselbund-Fehler",
"errorAccessingKeychainExplanation": "Der Schlüsselbund konnte nicht geöffnet werden.",
"mainWallet": "HAUPTKONTO",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "Ein neues Update ist verfügbar",
"shouldUpdateExplanation": "Ein neues Update wurde veröffentlicht. Es wird empfohlen, dass du die neueste Version installierst.",
"forceUpdate": "Aktualisiere Trinity um fortzufahren",
- "forceUpdateExplanation": "Ein kritisches Update wurde veröffentlicht. Bitte aktualisiere Trinity jetzt."
+ "forceUpdateExplanation": "Ein kritisches Update wurde veröffentlicht. Bitte aktualisiere Trinity jetzt.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed enthält ungültige Zeichen",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Dein Passwort muss mindestens {{minLength}} Zeichen lang sein. Es ist im Moment {{currentLength}} Zeichen lang. Bitte versuche es erneut.",
"passwordMismatch": "Die Passwörter stimmen nicht überein",
"passwordMismatchExplanation": "Die eingegebenen Passwörter stimmen nicht überein. Bitte erneut eingeben.",
- "anEncryptedCopy": "Eine verschlüsselte Kopie deines Seeds wird auf diesem Gerät gespeichert. In Zukunft wirst du dieses Passwort verwenden um auf dein Wallet zuzugreifen.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Passwort erneut eingeben"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Anmelden",
"setNode": "Node wählen",
"whyBiometricDisabled": "Warum ist die biometrische Authentifizierung deaktiviert?",
- "whyBiometricDisabledExplanation": "Die biometrische Anmeldung ist für den ersten Start zu deiner eigenen Sicherheit deaktiviert. Während der Nutzung von Trinity wirst du bei Inaktivität ausgeloggt. Du kannst dich dann erneut mit biometrischer Authentifizierung einloggen."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Dein Seed wird das erste Mal geladen.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Teile niemals deinen Seed.",
"iotaLogo": "IOTA Logo",
- "print": "DRUCKEN",
+ "print": "Print",
"paperConvenience": "Deinen Seed auszudrucken ist ein komfortabler Weg der Aufbewahrung.",
"publicInsecure": "Doch beachte, dass Drucken in öffentlichen WLAN's oder über öffentliche Drucker unsicher ist.",
- "tapCheckboxes": "Bitte aktiviere folgende Kontrollboxen um zu Bestätigen.",
- "wifiCheckbox": "Ich werde nicht drucken während ich ein öffentliches WLAN verwende",
- "printerCheckbox": "Ich werde nicht auf einem öffentlich zugänglichen Drucker ausdrucken"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Deine Adresse",
@@ -285,8 +292,6 @@
"generateNewAddress": "Neue Adresse generieren",
"noAddresses": "KEINE ADRESSEN",
"spent": "Ausgegeben",
- "missingPermission": "Berechtigung für Dateisystem erforderlich",
- "missingPermissionExplanation": "Um QR-Codes teilen zu konenn, muss der Zugriff auf das Dateisystem erlaubt werden.",
"tag": "Tag",
"generateAnAddress": "Neue Adresse generieren",
"generateAnAddressTitle": "Eine neue Adresse generieren",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Notiere deinen Seed",
"youCanHighlightCharacters": "Du kannst neun Buchstaben gleichzeitig auswählen",
"printBlankWallet": "Leeres Paper-Wallet drucken",
- "whatIsChecksum": "Jeder Seed hat eine dreistellige Prüfsumme",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Ich habe meinen Seed gesichert",
"checksumExplanation": "Immer wenn du einen Seed eingibst, solltest du sicherstellen, dass die angezeigte Prüfsumme mit deiner aufgeschriebenen Prüfsumme übereinstimmt.",
"mustSaveYourSeed": "<0><0>Du musst deinen Seed mit 0><1>mindestens einer1><2> der unten aufgelisteten Optionen sichern.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Gesamtzeit",
"addressPasteDetected": "Eingefügte Adresse erkannt",
"addressPasteExplanation": "Scheinbar hast Du eine Adresse eingefügt. Stelle sicher, dass es tatsächlich jene ist, an die Du senden möchtest.",
- "invalid": "UNGÜLTIG"
+ "invalid": "UNGÜLTIG",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Füge einen Namen ein",
@@ -446,7 +453,8 @@
"empty": "Keine",
"retrying": "Erneuter Versuch",
"yesterday": "Gestern",
- "promotingAnotherBundle": "Promote anderes Bundle"
+ "promotingAnotherBundle": "Promote anderes Bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Seed anzeigen",
@@ -504,18 +512,21 @@
"currency": "Währung"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Bist du sicher, dass du dich ausloggen möchtest?"
+ "logoutConfirmation": "Bist du sicher, dass du dich ausloggen möchtest?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "QR-Code scannen"
},
"unitInfoModal": {
- "unitSystem": "EINHEITENSYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Billionen",
"billion": "Milliarden",
"million": "Millionen",
"thousand": "Tausend",
- "one": "Ein"
+ "one": "Ein",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Warum kann ich nicht mein gesamtes Guthaben ausgeben?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Konto wird synchronisiert."
},
"useExistingSeed": {
- "title": "Gib einen Seed und einen Kontonamen ein.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Ungültiges Format",
"validSeedExplanation": "'Ein gültiger Seed sollte aus 81 Zeichen bestehen und die Buchstaben A-Z, sowie die Zahl 9 enthalten.'."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Hast du deinen Seed gespeichert?",
- "alreadyHave": "Ich habe mein Seed gesichert",
- "reenterSeed": "Im nächsten Schritt wirst du aufgefordert deinen Seed erneut einzugeben.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Falls dein Gerät nicht mehr funktioniert und du deinen Seed nicht gesichert hast, wirst du alle deine IOTA verlieren.",
"pleaseConfirm": "Bestätige, dass du deinen Seed sicher gespeichert hast."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometrische Authentifizierung ist nicht verfügbar",
"fingerprintUnavailableExplanation": "Dein Gerät unterstützt keine biometrische Authentifizierung oder die Funktion wurde in den Einstellungen deines Gerätes deaktiviert.",
- "buttonInstructionsDisable": "Drücke die folgende Schaltfläche, um die Fingerabdruck-Authentifizierung zu deaktivieren.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Drücke die folgende Schaltfläche, um die Fingerabdruck-Authentifizierung zu aktivieren.",
- "buttonInstructionsDisableIPhoneX": "Drücke den folgenden Button um Face ID zu deaktivieren.",
- "buttonInstructionsEnableIPhoneX": "Drücke den folgenden Button um Face ID zu aktivieren.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Zur Anmeldung den Fingerabdrucksensor berühren"
},
"transferConfirmation": {
"youAreAbout": "Du sendest jetzt {{contents}} an die Adresse",
- "aMessage": "eine Nachricht"
+ "aMessage": "eine Nachricht",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Falscher Code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "SeedVault exportieren",
- "seedVaultExplanation": "Ein SeedVault ist eine Möglichkeit deinen Seed sicher zu speichern. Dein Seed wird verschlüsselt in einer Datei gespeichert und kann ohne den dazugehörigen Schlüssel nicht eingesehen werden.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Stelle sicher dass du die Datei an verschiedenen Orten ablegst (zum Beispiel auf einer externen Festplatte, einem Cloudspeicher, etc.). Falls du die Datei verlierst und dein Seed nicht an einem weiteren Ort gespeichert wurde, wirst du deine IOTA verlieren.",
"exportFail": "SeedVault Export fehlgeschlagen",
"exportFailExplanation": "Beim Export ist ein Fehler aufgetreten. Bitte stelle sicher dass du der Trinity-Wallet App die korrekten Berechtigungen gegeben hast und genug freier Speicher zu Verfügung steht.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Dein Seed wurde erfolgreich importiert.",
"saveToDownloadFolder": "In Downloads-Ordner speichern",
"importSeedVault": "SeedVault importieren",
- "dropSeedVaultHere": "SeedVault hierher ziehen <1>1> oder hier klicken um Datei zu wählen",
+ "dropInstructions": "SeedVault hierher ziehen <1>1> oder hier klicken um Datei zu wählen",
+ "dropActive": "SeedVault oder Text hier ablegen",
"enterKeyExplanation": "Gib deinen Schlüssel ein um den SeedVault zu öffnen",
"noSeedFound": "Dein SeedVault enthält keinen gültigen Seed",
"noSeedFoundExplanation": "Dein SeedVault ist entweder leer oder enthält einen Seed in einem ungültigen Format.",
"seedFileError": "Fehler beim Öffnen",
"seedFileErrorExplanation": "Beim Öffnen deines SeedVault ist ein Fehler aufgetreten. Stelle sicher dass du die korrekte Datei auswählt hast und die Datei nicht beschädigt ist.",
- "seedVaultKeyExplanation": "Zunächst müssen wir deinen SeedVault absichern. Bitte vergib ein Passwort, mit dem deine SeedVault-Datei verschlüsselt wird. Du wirst dieses Passwort bei einer Wiederherstellung deines Kontos benötigen. Wenn du möchtest, kannst du das gleiche Passwort verwenden, welches du auch für Trinity verwendest."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Vorbereitung der Transaktion",
"gettingTransactionsToApprove": "Warte auf Bestätigung der Transaktion",
"proofOfWork": "Vervollständige Proof of Work",
- "broadcasting": "Übertrage"
+ "broadcasting": "Übertrage",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Snapshot-Wiederherstellung konnte nicht abgeschlossen werden",
@@ -669,7 +687,8 @@
"transition": "Wiederherstellen",
"transitioning": "Daten werden wiederhergestellt.",
"generatingAndDetecting": "Adressen werden generiert und Kontostand wird erkannt.",
- "attaching": "Adressen werden dem Tangle angehängt."
+ "attaching": "Adressen werden dem Tangle angehängt.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automatisches ausfüllen erfolgreich",
diff --git a/src/shared/locales/el/translation.json b/src/shared/locales/el/translation.json
index 9077ecffd7..9cf1b27c8c 100644
--- a/src/shared/locales/el/translation.json
+++ b/src/shared/locales/el/translation.json
@@ -74,6 +74,8 @@
"wallet": "Πορτοφόλι",
"all": "All",
"sent": "Εστάλη",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Ελήφθη",
"sending": "Αποστολή σε εξέλιξη",
"receiving": "Λήψη σε εξέλιξη",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Το seed σας περιέχει μη έγκυρους χαρακτήρες",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Οι σπόροι πρέπει να έχουν {{minLength}} χαρακτήρες μήκος. Ο σπόρος σας επί του παρόντος έχει {{currentLength}} χαρακτήρες. Παρακαλώ δοκιμάστε ξανά.",
"passwordMismatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν",
"passwordMismatchExplanation": "Οι κωδικοί πρόσβασης που έχετε καταχωρήσει δεν ταιριάζουν. Παρακαλώ ξαναπροσπαθήστε.",
- "anEncryptedCopy": "Ένα κρυπτογραφημένο αντίγραφο του σπόρου σας θα αποθηκευτεί στη συσκευή σας. Θα μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό πρόσβασης για να αποκτήσετε πρόσβαση το πορτοφόλι σας στο μέλλον.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Πληκτρολογήστε ξανά τον κωδικό πρόσβασης"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Φόρτωση σπόρου για πρώτη φορά.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Ποτέ μη μοιράζεστε το σπόρο σας με κανέναν.",
"iotaLogo": "Λογότυπο ΙΟΤΑ",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "Καμία διαθέσιμη διεύθυνση ",
"spent": "Δαπανήθηκαν",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Ετικέτα",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>Θα πρέπει να αποθηκεύσετε το seed σας με0> <1>τουλάχιστον ένα1> <2>από τους παρακάτω τρόπους.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Προβολή σπόρου",
@@ -504,18 +512,21 @@
"currency": "Νόμισμα"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;"
+ "logoutConfirmation": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Σάρωση QR κωδικού"
},
"unitInfoModal": {
- "unitSystem": "ΣΥΣΤΗΜΑ ΜΟΝΑΔΑΣ",
+ "unitSystem": "Unit System",
"trillion": "Τρισεκατομμύριο",
"billion": "Δισεκατομμύριο",
"million": "Εκατομμύριο",
"thousand": "Χίλια",
- "one": "Ένα"
+ "one": "Ένα",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Ο λογαριασμός σας συντονίζεται."
},
"useExistingSeed": {
- "title": "Εισάγετε έναν σπόρο και όνομα λογαριασμού.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "Έχω αποθηκεύσει το σπόρο μου",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Κατάσταση",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Πατήστε το παρακάτω κουμπί για να απενεργοποιήσετε την είσοδο με χρήση δακτυλικών αποτυπωμάτων.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Πατήστε το παρακάτω κουμπί για να ενεργοποιήσετε την είσοδο με χρήση δακτυλικών αποτυπωμάτων.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Αγγίξτε τη συσκευή ανάγνωσης δακτυλικών αποτυπωμάτων για να συνδεθείτε"
},
"transferConfirmation": {
"youAreAbout": "Είστε έτοιμοι να στείλετε {{contents}} στη διεύθυνση",
- "aMessage": "ένα μήνυμα"
+ "aMessage": "ένα μήνυμα",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Λανθασμένος κωδικός",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Ετοιμάζοντας τις μεταφορές",
"gettingTransactionsToApprove": "Προσπαθώντας να επικυρώσουμε τις συναλλαγές",
"proofOfWork": "Τελειώνοντας το Proof of Work",
- "broadcasting": "Μεταδίδοντας"
+ "broadcasting": "Μεταδίδοντας",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Δεν μπορεί να ολοκληρώσει τη μετάβαση στιγμιότυπο",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/en/translation.json b/src/shared/locales/en/translation.json
index 7e13ec9ca4..753e04cb79 100644
--- a/src/shared/locales/en/translation.json
+++ b/src/shared/locales/en/translation.json
@@ -77,6 +77,8 @@
"wallet": "Wallet",
"all": "All",
"sent": "Sent",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Received",
"sending": "Sending",
"receiving": "Receiving",
@@ -136,7 +138,7 @@
"discordInformation":
"Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -157,10 +159,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed contains invalid characters",
@@ -220,7 +226,7 @@
"passwordMismatch": "Passwords do not match",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
"anEncryptedCopy":
- "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -257,7 +263,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Loading seed for the first time.",
@@ -287,12 +294,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -304,8 +311,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Tag",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -323,7 +328,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation":
"Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
@@ -369,7 +375,8 @@
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation":
"It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -476,7 +483,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -535,18 +543,21 @@
"currency": "Currency"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -569,7 +580,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -583,8 +594,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have backed up my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning":
"If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
@@ -607,15 +618,19 @@
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation":
"Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -636,7 +651,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation" : "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation" : "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -650,13 +665,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -690,7 +707,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -704,7 +722,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
diff --git a/src/shared/locales/es-ES/translation.json b/src/shared/locales/es-ES/translation.json
index c201861f3e..e30843f98d 100644
--- a/src/shared/locales/es-ES/translation.json
+++ b/src/shared/locales/es-ES/translation.json
@@ -19,7 +19,7 @@
"invalidResponse": "Error de nodo",
"invalidResponseExplanation": "El nodo devolvió un error. Pruebe cambiando de nodo.",
"invalidResponseFetchingAccount": "El servidor devolvió un error mientras obtenía la información de su cuenta. Intenta cambiar el nodo.",
- "invalidResponseFetchingAccountDesktop": "The node returned an error while fetching your account information. If your problem persists, try changing node or disabling your system proxy in Trinity Settings.",
+ "invalidResponseFetchingAccountDesktop": "Error al intentar obtener información del nodo. Si el problema persiste intente cambiar el nodo o deshabilite el proxy en la configuración.",
"nodeOutOfSync": "Nodo desincronizado",
"nodeOutOfSyncExplanation": "Su nodo seleccionado esta desincronizado. Por favor cámbielo y pruebe devuelta.",
"thisNodeOutOfSync": "Este nodo no está sincronizado. Por favor, cambie de nodo o pruebe de nuevo.",
@@ -74,6 +74,8 @@
"wallet": "Cartera",
"all": "Todo",
"sent": "Enviada",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Recibida",
"sending": "Enviando",
"receiving": "Recibiendo",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "ALERTA: Fondos en direcciones usadas",
"discordInformation": "Enviar desde la misma dirección más de una vez es peligroso. Por favor diríjase al canal #help en Discord para averiguar qué puede hacer.",
"androidInsecureClipboardWarning": "Android no ofrece un portapapeles seguro.",
- "androidCopyPasteWarning": "Nunca copiar/pegar tu seed en un dispositivo Android.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "No copiaré/pegaré mi semilla",
"mustBeStoredAppropriately": "Debe ser almacenado apropiadamente.",
"deviceMayBecomeUnresponsive": "Su dispositivo puede estar sin responder por un rato.",
@@ -144,14 +146,18 @@
"tryingAgainWithLocalPoW": "Intente nuevamente con local PoW.",
"tryingAgainWithDifferentNode": "Intente nuevamente con un nodo diferente.",
"errorFetchingAccountInformation": "Error al obtener la información de la cuenta.",
- "errorSyncingAddresses": "Error syncing address information. Trying again with a different node.",
+ "errorSyncingAddresses": "Error de sincronización de la información. Intente devuelta con otro nodo.",
"errorAccessingKeychain": "Error de keychain",
"errorAccessingKeychainExplanation": "No se puede acceder a la keychain requerida para almacenamiento seguro.",
"mainWallet": "CUENTA PRINCIPAL",
- "shouldUpdate": "A new update is available",
- "shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
- "forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "confirm": "Confirm",
+ "delete": "Delete",
+ "shouldUpdate": "Hay una nueva actualización disponible",
+ "shouldUpdateExplanation": "Hay una nueva actualización disponible. Siempre es recomendado actualizar a la ultima version.",
+ "forceUpdate": "Actualice la aplicacion para continuar",
+ "forceUpdateExplanation": "Una actualización crítica esta disponible. Por favor actualice inmediatamente.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "La semilla contiene caracteres inválidos",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Su contraseña debe tener al menos {{minLength}} caracteres. Actualmente tiene {{currentLength}} caracteres. Por favor inténtelo nuevamente.",
"passwordMismatch": "Las contraseñas no coinciden",
"passwordMismatchExplanation": "Las contraseñas introducidas no coinciden. Por favor, inténtalo de nuevo.",
- "anEncryptedCopy": "Se almacenará en su dispositivo una copia encriptada de la semilla. Esta contraseña será la que utilizará para acceder a su cartera en futuros accesos.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Escribe la contraseña de nuevo"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Iniciar Sesión",
"setNode": "Seleccionar nodo",
"whyBiometricDisabled": "Por que la autentificación biométrica está deshabilitada?",
- "whyBiometricDisabledExplanation": "El inicio de sesión biométrico está deshabilitado en la primera carga de la aplicación por seguridad. Al utilizar Trinity, se cerrará la sesión por inactividad. Entonces podrá iniciar sesión de nuevo con la autentificación biométrica."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Cargando la semilla por primera vez.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nunca comparta su semilla con nadie.",
"iotaLogo": "Logo IOTA",
- "print": "IMPRIMIR",
+ "print": "Print",
"paperConvenience": "Imprimir una copia en papel de su semilla es una buena manera de guardarla.",
"publicInsecure": "Pero imprimir en un WiFi público o una impresora publica es inseguro.",
- "tapCheckboxes": "Por favor tilde los cuadros de verificación para confirmar.",
- "wifiCheckbox": "No lo imprimiré con un WiFi publico",
- "printerCheckbox": "No lo imprimiré en una impresora publica"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Su dirección",
@@ -282,15 +289,13 @@
"copyAddress": "Copie dirección",
"addressCopied": "Dirección Copiada",
"addressCopiedExplanation": "La dirección se ha copiado en el portapapeles.",
- "generateNewAddress": "Generate address",
+ "generateNewAddress": "Generar dirección",
"noAddresses": "SIN DIRECCIONES",
"spent": "Gastado",
- "missingPermission": "Permisos de sistema requeridos",
- "missingPermissionExplanation": "El acceso a los archivos del sistema son requeridos para compartir los códigos QR.",
"tag": "Etiqueta",
- "generateAnAddress": "Generate address",
- "generateAnAddressTitle": "Generate an address",
- "generateAnAddressExplanation": "Please generate an address before using this function."
+ "generateAnAddress": "Generar dirección",
+ "generateAnAddressTitle": "Generar una dirección",
+ "generateAnAddressExplanation": "Por favor genere una dirección antes de usar esta función."
},
"saveYourSeed": {
"saveYourSeed": "Haga una copia de respaldo de su semilla",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Vamos a anotar su semilla",
"youCanHighlightCharacters": "Puede resaltar 9 caracteres a la vez",
"printBlankWallet": "Imprima una cartera en blanco",
- "whatIsChecksum": "Cada semilla tiene su correspondiente checksum de 3 caracteres",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "He guardado mi semilla",
"checksumExplanation": "Cada vez que añada una semilla a su cartera, debería asegurarse de que el checksum generado para la cartera coincide con el que ha anotado.",
"mustSaveYourSeed": "<0><0>Debe guardar su semilla con 0><1>al menos una1><2> de las opciones a continuación.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Tiempo total",
"addressPasteDetected": "Se ha detectado una dirección pegada",
"addressPasteExplanation": "Parace que ha pegado una dirección. Asegúrese de que la dirección coincida con aquella a la que quiere enviar.",
- "invalid": "INVALIDO"
+ "invalid": "INVALIDO",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Vamos a añadir un nombre",
@@ -446,7 +453,8 @@
"empty": "Vacío",
"retrying": "Reintentar",
"yesterday": "Ayer",
- "promotingAnotherBundle": "Promoviendo otro paquete"
+ "promotingAnotherBundle": "Promoviendo otro paquete",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Ver semilla",
@@ -504,18 +512,21 @@
"currency": "Divisa"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "¿Estás seguro que quieres desconectarte?"
+ "logoutConfirmation": "¿Estás seguro que quieres desconectarte?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Escanee su código QR"
},
"unitInfoModal": {
- "unitSystem": "UNIDAD DE SISTEMA",
+ "unitSystem": "Unit System",
"trillion": "Billón",
"billion": "Mil millones",
"million": "Millón",
"thousand": "Mil",
- "one": "Unidad"
+ "one": "Unidad",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Porque no puedo gastar todos mis fondos?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sincronizando su cuenta."
},
"useExistingSeed": {
- "title": "Introduzca una semilla y un nombre de cuenta.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Formato incorrecto de semilla",
"validSeedExplanation": "Semillas válidas deben tener 81 caracteres y solo contener A-Z o 9."
},
@@ -547,12 +558,12 @@
"hideSeed": "Ocultar semilla",
"notAvailable": "La exportación de la semilla no está disponible para el tipo de cuenta {{accountType}}",
"accountIndex": "Su índice del ledger de la cuenta",
- "accountPage": "Your Ledger account page"
+ "accountPage": "Su página de cuenta de ledger"
},
"saveSeedConfirmation": {
"didSaveSeed": "¿Hizo una copia de seguridad de la semilla?",
- "alreadyHave": "He guardado mi semilla",
- "reenterSeed": "En el próximo paso, se le pedirá que vuelva a introducir la semilla.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Si no ha guardado su semilla y su dispositivo falla, usted perderá todas sus IOTA.",
"pleaseConfirm": "Por favor confirme que ha almacenado seguramente su semilla."
},
@@ -572,15 +583,19 @@
"status": "Estado",
"fingerprintUnavailable": "Autenticación biométrica no disponible",
"fingerprintUnavailableExplanation": "Su dispositivo no soporta autenticación biométrica o no está correctamente configurada.",
- "buttonInstructionsDisable": "Pulsa el botón que hay a continuación para deshabilitar la autenticación de huellas dactilares.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Pulsa el botón que hay a continuación para habilitar la autenticación de huellas dactilares.",
- "buttonInstructionsDisableIPhoneX": "Presione el botón debajo para desactivar Face ID.",
- "buttonInstructionsEnableIPhoneX": "Presione el botón debajo para activar Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Toque el lector de huellas para loguearse"
},
"transferConfirmation": {
"youAreAbout": "Estás a punto de enviar {{contents}} a la dirección",
- "aMessage": "un mensaje"
+ "aMessage": "un mensaje",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Código incorrecto",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Exportar SeedVault",
- "seedVaultExplanation": "Un SeedVault es un archivo cifrado para almacenar con seguridad su semilla. La semilla está encriptada detrás de una contraseña y no se puede acceder sin ella.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Asegúrese de copiar el archivo en varios lugares (ej. disco duro, nube, USB). Si pierde este archivo y no ha almacena su semilla en otro lugar, perderá sus IOTA.",
"exportFail": "Fallo en la exportación de SeedVault",
"exportFailExplanation": "Hubo un problema al exportar el SeedVault. Por favor asegúrese de que tiene los servicios apropiados y suficiente espacio libre.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Su semilla fue importada con éxito.",
"saveToDownloadFolder": "Guardar para descargar la carpeta",
"importSeedVault": "Importar SeedVault",
- "dropSeedVaultHere": "Suelte su SeedVault aquí <1>1> o haga click para buscar",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Ingrese su clave para abrir el SeedVault",
"noSeedFound": "SeedVault no contiene un semilla válida",
"noSeedFoundExplanation": "El SeedVault se encuentra vacío o contiene una semilla con un formato no válido.",
"seedFileError": "Fallo al abrir SeedVault",
"seedFileErrorExplanation": "Hubo un problema al abrir el SeedVault. Si ha seleccionado el archivo correcto entonces puede estar corrompido.",
- "seedVaultKeyExplanation": "Primero tenemos que garantizar su SeedVault. Por favor, elija una contraseña para cifrar el archivo. Usted necesitará esta contraseña para restaurar la semilla. No dude en utilizar la misma contraseña que utiliza para Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -630,7 +647,7 @@
"error": "Error obteniendo datos de gráfico"
},
"rootDetection": {
- "warning": "ALERTA",
+ "warning": "ADVERTENCIA",
"appearsRooted": "Su dispositivo parece estar rooteado.",
"securityRisk": "Esto puede significar un gran riesgo para la seguridad de su cartera.",
"continueDepsiteRisk": "Desea continuar a pesar de este riesgo?"
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparando transferencias",
"gettingTransactionsToApprove": "Obteniendo transacciones para aprobar",
"proofOfWork": "Completando PoW",
- "broadcasting": "Transmitiendo"
+ "broadcasting": "Transmitiendo",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "No se puede completar la transición de snapshot",
@@ -669,7 +687,8 @@
"transition": "Transición",
"transitioning": "Transicionando para el snapshot.",
"generatingAndDetecting": "Generando direcciones y detectando balances.",
- "attaching": "Vinculando direcciones en el Tangle."
+ "attaching": "Vinculando direcciones en el Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autocompletado exitoso",
@@ -680,7 +699,7 @@
"noUpdatesAvailable": "No hay actualizaciones disponibles",
"noUpdatesAvailableExplanation": "You have the latest version of Trinity Desktop.",
"newVersionAvailable": "Nueva versión disponible",
- "newVersionAvailableExplanation": "A new Trinity {{version}} version is available. Carefully read the release notes and verify the download source before updating:",
+ "newVersionAvailableExplanation": "Una nueva versión de Trinity está disponible. Quieres actualizar ahora?",
"installUpdate": "Instalar actualización y reiniciar",
"installUpdateExplanation": "Descarga completa, Trinity ahora se reiniciará para instalar la actualización.",
"downloadingUpdate": "Descargando actualización",
@@ -706,8 +725,8 @@
"completeSetup": "Configuración completada"
},
"proxy": {
- "proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxy": "Usar proxy del sistema",
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notificaciones",
@@ -760,8 +779,8 @@
"ledgerIncorrectIndex": "Desajuste en el dispositivo Ledger",
"ledgerIncorrectIndexExplanation": "El dispositivo ledger conectado no encuentra el índice referido a esta cuenta, o la frase de recuperación ha cambiado.",
"checkAddress": "Revise la dirección de recepción",
- "checkAddressExplanation": "Check that the address matches the one displayed on your Ledger device.",
- "applicationNotInitialised": "Warning unconfirmed",
- "applicationNotInitialisedExplanation": "Reopen the IOTA app on your Ledger device, accept the informational warning and try again."
+ "checkAddressExplanation": "Compruebe que la dirección coincida con la mostrada en su dispositivo de ledger.",
+ "applicationNotInitialised": "Advertencia no confirmada",
+ "applicationNotInitialisedExplanation": "Re abra la aplicación IOTA en su dispositivo ledger, acepte la advertencia informativa y reintente."
}
}
\ No newline at end of file
diff --git a/src/shared/locales/es-LA/translation.json b/src/shared/locales/es-LA/translation.json
index 37104c1d8c..123984b3bd 100644
--- a/src/shared/locales/es-LA/translation.json
+++ b/src/shared/locales/es-LA/translation.json
@@ -74,6 +74,8 @@
"wallet": "Billetera",
"all": "Todo",
"sent": "Enviada",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Recibida",
"sending": "Enviando",
"receiving": "Recibiendo",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "ALERTA: Fondos en direcciones usadas",
"discordInformation": "Enviar desde la misma dirección más de una vez es peligroso. Por favor diríjase al canal #help en Discord para averiguar qué puede hacer.",
"androidInsecureClipboardWarning": "Android no ofrece un portapapeles seguro.",
- "androidCopyPasteWarning": "Nunca copiar/pegar tu seed en un dispositivo Android.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "No copiaré/pegaré mi semilla",
"mustBeStoredAppropriately": "Debe ser almacenado apropiadamente.",
"deviceMayBecomeUnresponsive": "Su dispositivo puede dejar de responder durante un rato.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "La semilla contiene caracteres inválidos",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Tu contraseña debe tener al menos {{minLength}} caracteres. Actualmente tiene {{currentLength}} caracteres. Por favor inténtalo nuevamente.",
"passwordMismatch": "Las contraseñas no coinciden",
"passwordMismatchExplanation": "Las contraseñas introducidas no coinciden. Por favor, inténtalo de nuevo.",
- "anEncryptedCopy": "Se almacenará en tu dispositivo una copia encriptada de la semilla. Esta contraseña será la que utilizarás para acceder a tu cartera en futuros ingresos.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Escribe la contraseña de nuevo"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "INICIAR SESIÓN",
"setNode": "ESTABLECER NODO",
"whyBiometricDisabled": "Por que la autentificación biométrica está deshabilitada?",
- "whyBiometricDisabledExplanation": "El inicio de sesión biométrico está deshabilitado en la primera carga de la aplicación por seguridad. Al utilizar Trinity, se cerrará la sesión por inactividad. Entonces podrá iniciar sesión de nuevo con la autentificación biométrica."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Cargando la semilla por primera vez.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nunca compartas tu semilla con nadie.",
"iotaLogo": "Logo IOTA",
- "print": "IMPRIMIR",
+ "print": "Print",
"paperConvenience": "Imprimir una copia en papel de su semilla es una buena forma de guardarla.",
"publicInsecure": "Pero imprimir con WiFi o impresora publica es inseguro.",
- "tapCheckboxes": "Por favor marque las casillas de verificación debajo para confirmar.",
- "wifiCheckbox": "No lo imprimiré con un WiFi publico",
- "printerCheckbox": "No lo imprimiré en una impresora publica"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Su dirección",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "SIN DIRECCIONES",
"spent": "Usada",
- "missingPermission": "Permisos de sistema requeridos",
- "missingPermissionExplanation": "El acceso a los archivos del sistema son requeridos para compartir los códigos QR.",
"tag": "Etiqueta",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Vamos a anotar su semilla",
"youCanHighlightCharacters": "Puede resaltar 9 caracteres a la vez",
"printBlankWallet": "Imprima una billetera en blanco",
- "whatIsChecksum": "Cada semilla tiene su correspondiente checksum de 3 caracteres",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "He guardado mi semilla",
"checksumExplanation": "Cada vez que añada una semilla a su cartera, debería asegurarse de que el checksum generado para la cartera coincide con el que ha anotado.",
"mustSaveYourSeed": "<0><0>Debes guardar tu seed con0><1>al menos una1><2>de las opciones a continuación.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Tiempo total",
"addressPasteDetected": "Dirección copiada en el portapapeles",
"addressPasteExplanation": "Parece que ha pegado una dirección. Asegúrese de que la dirección coincida con aquella a la que quiere enviar.",
- "invalid": "INVALIDO"
+ "invalid": "INVALIDO",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Vamos a añadir un nombre",
@@ -446,7 +453,8 @@
"empty": "Vacío",
"retrying": "Reintentando",
"yesterday": "Ayer",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Ver semilla",
@@ -504,18 +512,21 @@
"currency": "Divisa"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "¿Estás seguro que quieres desconectarte?"
+ "logoutConfirmation": "¿Estás seguro que quieres desconectarte?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Escanea tu código QR"
},
"unitInfoModal": {
- "unitSystem": "UNIDAD DE SISTEMA",
+ "unitSystem": "Unit System",
"trillion": "Billón",
"billion": "Mil millones",
"million": "Millón",
"thousand": "Mil",
- "one": "Unidad"
+ "one": "Unidad",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "¿Por qué no puedo gastar mi saldo total?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sincronizando tu cuenta."
},
"useExistingSeed": {
- "title": "Introduce una semilla y un nombre de cuenta.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Formato incorrecto de semilla",
"validSeedExplanation": "'Valid seeds should be 81 characters and contain only A-Z or 9.'"
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "¿Hizo una copia de seguridad de la semilla?",
- "alreadyHave": "He guardado mi semilla",
- "reenterSeed": "En el próximo paso, se le pedirá que vuelva a introducir la semilla.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Si no ha guardado su semilla y su dispositivo falla, usted perderá todas sus IOTA.",
"pleaseConfirm": "Por favor confirme que ha almacenado correctamente su semilla."
},
@@ -572,15 +583,19 @@
"status": "Estado",
"fingerprintUnavailable": "Autenticación biométrica no disponible",
"fingerprintUnavailableExplanation": "Tu dispositivo no soporta autenticación biométrica o no está configurada en los ajustes del equipo.",
- "buttonInstructionsDisable": "Pulsa el botón que hay a continuación para deshabilitar la autenticación de huella dactilar.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Pulsa el botón que hay a continuación para habilitar la autenticación de huella dactilar.",
- "buttonInstructionsDisableIPhoneX": "Presione el botón de abajo para desactivar el ID de cara.",
- "buttonInstructionsEnableIPhoneX": "Presione el botón de abajo para activar ID de cara.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Toque el lector de huella dactilar para iniciar sesión"
},
"transferConfirmation": {
"youAreAbout": "Estás a punto de enviar {{contents}} a la dirección",
- "aMessage": "un mensaje"
+ "aMessage": "un mensaje",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Código incorrecto",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Exportar SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Asegúrese de copiar el archivo en varios lugares (ej. disco duro, nube, USB). Si pierde este archivo y no ha almacenado su semilla en otro lugar, perderá sus IOTA.",
"exportFail": "Fallo en la exportación de SeedVault",
"exportFailExplanation": "Hubo un problema al exportar el SeedVault. Por favor asegúrese de que tiene los permisos apropiados y suficiente espacio libre.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Su semilla fue importada con éxito.",
"saveToDownloadFolder": "Guardar para descargar la carpeta",
"importSeedVault": "Importar SeedVault",
- "dropSeedVaultHere": "Suelte su SeedVault aquí <1>1> o haga click para buscar",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault no contiene un semilla válida",
"noSeedFoundExplanation": "El SeedVault se encuentra vacío o contiene una semilla con un formato no válido.",
"seedFileError": "Fallo al abrir SeedVault",
"seedFileErrorExplanation": "Hubo un problema al abrir el SeedVault. Si ha seleccionado el archivo correcto entonces puede estar corrompido.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "Market cap",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparando transferencias",
"gettingTransactionsToApprove": "Obteniendo transacciones para aprobar",
"proofOfWork": "Completando PoW",
- "broadcasting": "Transmitiendo"
+ "broadcasting": "Transmitiendo",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "No se puede completar la transicion de snapshot",
@@ -669,7 +687,8 @@
"transition": "TRANSICIÓN",
"transitioning": "Transicionando para el snapshot.",
"generatingAndDetecting": "Generando direcciones y leyendo el balance.",
- "attaching": "Vinculando direcciones con la Tangle"
+ "attaching": "Vinculando direcciones con la Tangle",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Auto completado exitoso",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notificaciones",
diff --git a/src/shared/locales/et/translation.json b/src/shared/locales/et/translation.json
index 6693840626..7f619c0d8b 100644
--- a/src/shared/locales/et/translation.json
+++ b/src/shared/locales/et/translation.json
@@ -74,6 +74,8 @@
"wallet": "Rahakott",
"all": "Kõik",
"sent": "Saadetud",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Laekunud",
"sending": "Saatmine",
"receiving": "Saamine",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "Hoiatus: Vahendid on kasutatud aadressil",
"discordInformation": "Samalt aadressilt saatmine rohkem kui üks kord on ohtlik. Palun suunduge #help kanalile Discordis, et teada saada, mida saakiste teha.",
"androidInsecureClipboardWarning": "Android ei paku turvalist lõikepuhvrit.",
- "androidCopyPasteWarning": "Ära mitte kunagi kopeeri/kleebi oma seemet Android seadmes.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Ma ei kopeeri/kleebi oma seemet",
"mustBeStoredAppropriately": "Seda tuleb nõuetekohaselt varundada.",
"deviceMayBecomeUnresponsive": "Teie seade võib mõnda aega mitte vastata.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seeme sisaldab sobimatuid tähemärke",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Teie parool peab olema vähemalt {{minLength}} tähemärki pikk. See on hetkel {{currentLength}} tähemärgi pikkune. Palun proovige uuesti.",
"passwordMismatch": "Paroolid ei kattu",
"passwordMismatchExplanation": "Sisestatud paroolid ei kattu. Palun proovige uuesti.",
- "anEncryptedCopy": "Seemne krüpteeritud koopia salvestatakse teie seadmesse. Seda parooli kasutate edaspidi oma rahakotti sisenemiseks.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Parool uuesti"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Logi sisse",
"setNode": "Vali sõlm",
"whyBiometricDisabled": "Miks on biomeetriline autentimine keelatud?",
- "whyBiometricDisabledExplanation": "Teie turvalisuse huvides on rakenduse esmakordsel avamisel biomeetriline sisselogimine keelatud. Kui kasutate Trinityit, siis logitakse teid välja tegevusetuse tõttu. Seejärel saate sisse logida biomeetrilise autentimisega."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Laadin esimest korda seemet.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Ärge jagage oma seemet kunagi.",
"iotaLogo": "IOTA logo",
- "print": "PRINDI",
+ "print": "Print",
"paperConvenience": "Teie seemne paberkoopia printimine on sovib viis selle varundamiseks.",
"publicInsecure": "Kuid printimine avalikku WiFit või avalikku printerit kasutades on ohtlik.",
- "tapCheckboxes": "Kinnitamiseks puudutage palun allpool olevaid märkeruute.",
- "wifiCheckbox": "Ma ei prindi avalikku WiFit kasutades",
- "printerCheckbox": "Ma ei prindi avalikku printerit kasutades"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Sinu aadress",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "AADRESSE POLE",
"spent": "Kulutatud",
- "missingPermission": "Failisüsteemi luba on nõutud",
- "missingPermissionExplanation": "QR-koodide jagamiseks on vaja failisüsteemi luba.",
"tag": "Silt",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Kirjutame teie seemne üles",
"youCanHighlightCharacters": "Korraga saate esile tõsta 9 tähemärki",
"printBlankWallet": "Prindi tühi rahakott",
- "whatIsChecksum": "Igal seemnel on vastav 3-kohaline kontrollsumma",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Ma olen oma seemne salvestanud",
"checksumExplanation": "Kui lisate oma rahakotile seemne, peate veenduma, et rahakoti loodud kontrollsumma vastab sellele, mille olete endale üles kirjutanud.",
"mustSaveYourSeed": "<0><0>Peate oma seemne salvestama tehes vähemalt0> <1>ühe1> <2> alljärgnevatest valikutest.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Aeg kokku",
"addressPasteDetected": "Aadressi lisamine tuvastatud",
"addressPasteExplanation": "Tundub, et olete kleepinud aadressi. Veenduge, et aadress vastab sellele, millele soovite saata.",
- "invalid": "SOBIMATU"
+ "invalid": "SOBIMATU",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Lisame nime",
@@ -446,7 +453,8 @@
"empty": "Tühi",
"retrying": "Uuesti proovimine",
"yesterday": "Eile",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Vaata seemet",
@@ -504,18 +512,21 @@
"currency": "Valuuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Kas soovite kindlasti välja logida?"
+ "logoutConfirmation": "Kas soovite kindlasti välja logida?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skännige oma QR-koodi"
},
"unitInfoModal": {
- "unitSystem": "ÜHIKUSÜSTEEM",
+ "unitSystem": "Unit System",
"trillion": "Triljon",
"billion": "Miljard",
"million": "Miljon",
"thousand": "Tuhat",
- "one": "Üks"
+ "one": "Üks",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Miks ma ei saa oma täielikku kontojääki kulutada?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sünkroniseerin teie kontot."
},
"useExistingSeed": {
- "title": "Sisesta seeme ja konto nimi.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Vale seemne vorming",
"validSeedExplanation": "Kehtivad seemned peaksid olema 81 tähemärki pikad ja sisaldama ainult A-Z või 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Kas te varundasite oma seemne?",
- "alreadyHave": "Ma olen oma seemne varundanud",
- "reenterSeed": "Järgmisel sammul palutakse teil oma seemne uuesti sisestada.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Kui te ei ole varundanud oma seemet ja teie seade ebaõnnestub, kaotate kogu oma IOTA.",
"pleaseConfirm": "Palun kinnitage, et olete oma seemne turvaliselt varundanud."
},
@@ -572,15 +583,19 @@
"status": "Olek",
"fingerprintUnavailable": "Biomeetriline autentimine pole saadaval",
"fingerprintUnavailableExplanation": "Teie seade ei toeta biomeetrilist autentimist või pole see seadme seadetes konfigureeritud.",
- "buttonInstructionsDisable": "Sõrmejäljega autentimise keelamiseks vajutage allpool olevat nuppu.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Sõrmejäljega autentimise lubamiseks vajutage allolevat nuppu.",
- "buttonInstructionsDisableIPhoneX": "Face ID keelamiseks vajutage allolevat nuppu.",
- "buttonInstructionsEnableIPhoneX": "Face ID lubamiseks vajutage allolevat nuppu.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Sisse logimiseks puudutage sõrmejäljelugejat"
},
"transferConfirmation": {
"youAreAbout": "Te olete saatmas {{contents}} aadressile",
- "aMessage": "sõnum"
+ "aMessage": "sõnum",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Vale kood",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Ekspordi seemnehoidla",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Veenduge, et olete varundanud faili eri kohtades (nt kõvakettale, pilve, USB). Kui te kaotada selle faili ja pole salvestanud oma seemet mujale, siis kaotate oma IOTA.",
"exportFail": "Seemnehoidla eksportimine nurjus",
"exportFailExplanation": "Seemnehoidla eksportimisega tekkis probleem. Palun veenduge, et teil on vastavad õigused ja piisavalt vaba ruumi.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Teie seeme imporditi edukalt.",
"saveToDownloadFolder": "Salvesta allalaadimiste kausta",
"importSeedVault": "Importige seemnehoidla",
- "dropSeedVaultHere": "Sisestage seemnehoidla siia <1>1> või vajutage sirvimiseks",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "Seemnehoidla ei sisalda kehtivat seemet",
"noSeedFoundExplanation": "Seemnehoidla on tühi või sisaldab seemet vales vormingus.",
"seedFileError": "Seemnehoidla avamine nurjus",
"seedFileErrorExplanation": "Seemnehoidla avamisega oli probleem. Kui valisite õige faili, siis võib see olla rikutud.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "TURUKAPITAL",
@@ -655,7 +672,8 @@
"preparingTransfers": "Ülekannete ettevalmistamine",
"gettingTransactionsToApprove": "Otsin tehinguid, mida heaks kiita",
"proofOfWork": "Valmistan töötõendit",
- "broadcasting": "Edastamine"
+ "broadcasting": "Edastamine",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Ei saa hetkvõtte üleminekut lõpetada",
@@ -669,7 +687,8 @@
"transition": "Üleminek",
"transitioning": "Hetkvõtte üleminek.",
"generatingAndDetecting": "Aadresside genereerimine ja kontojäägi tuvastamine.",
- "attaching": "Aadresside kinnitamine Tangle võrgustikku."
+ "attaching": "Aadresside kinnitamine Tangle võrgustikku.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automaatne täitmine õnnestus",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Teated",
diff --git a/src/shared/locales/fa/translation.json b/src/shared/locales/fa/translation.json
index 8d5f97ce14..54cdb1a5ac 100644
--- a/src/shared/locales/fa/translation.json
+++ b/src/shared/locales/fa/translation.json
@@ -74,6 +74,8 @@
"wallet": "کیف پول",
"all": "All",
"sent": "ارسال",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "دریافت شده",
"sending": "در حال ارسال",
"receiving": "در حال دریافت",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "اخطار: موجودی بر روی آدرس های از قبل ساخته شده",
"discordInformation": "ارسال برای یک آدرس بیش از یک بار خطرناک است. برای حل این مسئله، به کانال #help در برنامه Discord مراجعه کنید.",
"androidInsecureClipboardWarning": "اندروید کلیپ بورد امن را فراهم نمی کند.",
- "androidCopyPasteWarning": "هرگز سید خود را بر روی یک دستگاه اندروید کپی و جایگذاری نکنید.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "من اجازه کپی و جایگذاری سید شما را ندارم",
"mustBeStoredAppropriately": "این باید به صورت مناسب ذخیره شود.",
"deviceMayBecomeUnresponsive": "دستگاه شما ممکن است برای مدتی پاسخگو باشد.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "سید ورودی دارای کاراکترهای نامعتبر است",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "گذرواژه شما باید حداقل {{minLength}} کاراکتر باشد. در حال حاضر {{currentLength}} کاراکتر میباشد. لطفا دوباره تلاش کنید.",
"passwordMismatch": "گذرواژه ها یکسان نیستند",
"passwordMismatchExplanation": "گذرواژه هایی که وارد کرده اید، مطابقت ندارند. لطفا دوباره تلاش کنید.",
- "anEncryptedCopy": "کپی رمز شده از سید شما بر روی دستگاه شما ذخیره می شود. از این گذرواژه برای دسترسی به کیف پول خود در آینده استفاده خواهید کرد.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "دوباره گذرواژه را وارد کنید"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "ورود",
"setNode": "تنظیم Node",
"whyBiometricDisabled": "چرا احراز هویت بیومتریک غیرفعال است؟",
- "whyBiometricDisabledExplanation": "ورود به سیستم بیومتریک بار اول برای امنیت شما غیر فعال است. هنگام استفاده از Trinity، برای غیرفعال شدن از سیستم خارج می شوید. سپس می توانید با احراز هویت بیومتریک وارد شوید."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "بارگذاری سید برای اولین بار.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "هرگز سید خود را با کسی شریک نکنید.",
"iotaLogo": "لوگو آیوتا",
- "print": "چاپ",
+ "print": "Print",
"paperConvenience": "چاپ کپی کاغذی از سید شما یک راه مناسب برای ذخیره آن است.",
"publicInsecure": "اما چاپ در وای فای عمومی یا چاپگر عمومی نا امن است.",
- "tapCheckboxes": "لطفا برای تایید صحت تیک های زیر بزنید.",
- "wifiCheckbox": "من در وای فای عمومی چاپ نمی کنم",
- "printerCheckbox": "من بر روی چاپگر عمومی چاپ نمی کنم"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "آدرس شما",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "بدون آدرس",
"spent": "از قبل ساخته شده",
- "missingPermission": "نیاز به مجوز سیستم فایل است",
- "missingPermissionExplanation": "برای به اشتراک گذاشتن کدهای QR، دسترسی به سیستم فایل لازم است.",
"tag": "برچسب",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "شما می توانید 9 کاراکتر را در یک زمان برجسته کنید",
"printBlankWallet": "یک کیف پول خالی را چاپ کنید",
- "whatIsChecksum": "هر سید یک کد اعتبارسنجی 3 حرفی دارد",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "من سید خود را ذخیره کردم",
"checksumExplanation": "هر گاه سید را به کیف پول خود اضافه می کنید، باید اطمینان حاصل کنید که کد اعتبارسنجی تولید شده از کیف پول مطابق با آنچه نوشته شده است.",
"mustSaveYourSeed": "<0><0>شما باید از سید خود پشتیبان تهیه کنید با 0><1>حداقل یکی1><2>از گزینه های ذکر شده در لیست زیر2>0>"
@@ -345,7 +351,8 @@
"totalTime": "کل زمان",
"addressPasteDetected": "آدرس جایگذاری تشخیص داده شد",
"addressPasteExplanation": "به نظر می رسد که یک آدرس را جاگذاری کرده اید. اطمینان حاصل کنید که آدرس جایگذاری شده با آدرسی که شما می خواهید به آن ارسال کنید یکسان باشد.",
- "invalid": "نامعتبر"
+ "invalid": "نامعتبر",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "لطفا یک نام اضافه کنید",
@@ -446,7 +453,8 @@
"empty": "خالی",
"retrying": "درحال تلاش دوباره",
"yesterday": "دیروز",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "مشاهده سید",
@@ -504,18 +512,21 @@
"currency": "واحد پول"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "آیا مطمئنید که میخواهید خارج شوید؟"
+ "logoutConfirmation": "آیا مطمئنید که میخواهید خارج شوید؟",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "اسکن کد QR شما"
},
"unitInfoModal": {
- "unitSystem": "واحد سیستم",
+ "unitSystem": "Unit System",
"trillion": "تریلیون",
"billion": "بیلیون",
"million": "میلیون",
"thousand": "هزار",
- "one": "یک"
+ "one": "یک",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "چرا من نمی توانم موجودی کامل خود را انتقال بدهم؟",
@@ -537,7 +548,7 @@
"syncingYourAccount": "همگام سازی حساب شما."
},
"useExistingSeed": {
- "title": "سید و نام حساب را وارد کنید.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "قالب سید اشتباه است",
"validSeedExplanation": "سید های معتبر باید 81 کاراکتر باشد و فقط شامل حروف A-Z یا عدد تا 9 باشد."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "آیا از سید خود پشتیبانی گرفتید؟",
- "alreadyHave": "من از سید خود پشتیبانی گرفتم",
- "reenterSeed": "در مرحله بعد، از شما خواسته می شود تا سید خود را دوباره وارد کنید.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "اگر از سید خودتان پشتیبانی تهیه نکنید و دستگاه شما خراب بشود، شما تمام آیوتای خود را از دست خواهید داد.",
"pleaseConfirm": "لطفا تایید کنید که سید خود را ایمن نگه داشته اید."
},
@@ -572,15 +583,19 @@
"status": "وضعیت",
"fingerprintUnavailable": "احراز هویت بیومتریک در دسترس نیست",
"fingerprintUnavailableExplanation": "دستگاه شما از تاییدیه بیومتریک پشتیبانی نمیکند یا در تنظیمات دستگاه پیکربندی نشده است.",
- "buttonInstructionsDisable": "برای غیرفعال کردن تایید اثر انگشت، دکمه زیر را فشار دهید.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "برای فعال کردن تایید اثر انگشت، دکمه زیر را فشار دهید.",
- "buttonInstructionsDisableIPhoneX": "برای غیرفعال کردن Face ID، دکمه زیر را فشار دهید.",
- "buttonInstructionsEnableIPhoneX": "برای فعال کردن Face ID، دکمه زیر را فشار دهید.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "اثر انگشت برای ورود به سیستم را لمس کنید"
},
"transferConfirmation": {
"youAreAbout": "شما در حال ارسال به آدرس {{contents}} هستید",
- "aMessage": "یک پیام"
+ "aMessage": "یک پیام",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "کد اشتباه است",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "استخراج سید Vault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "اطمینان حاصل کنید که فایل را در چندین مکان (مانند هارد دیسک، فضای ابری، فلش) پشتیبان بگیرید. اگر این فایل را از دست بدهید و سید خود را در جایی ذخیره نکرده باشید، آیوتای خود را از دست خواهید داد.",
"exportFail": "استخراج سید Vault ناموفق بود",
"exportFailExplanation": "مشکل استخراج سید Vault وجود داشت. لطفا اطمینان حاصل کنید که مجوز های مناسب و فضای آزاد کافی دارید.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "وارد کردن سید Vault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "سید Vault حاوی سید معتبر نیست",
"noSeedFoundExplanation": "سید Vault یا خالی است یا حاوی یک سید در قالب نامعتبر است.",
"seedFileError": "باز کردن فایل سید Vault ناموفق بود",
"seedFileErrorExplanation": "در باز کردن سید Vault با مشکل مواجه شد. اگر فایل درست را انتخاب کردید، ممکن است خراب شده باشد.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "آماده سازی انتقال",
"gettingTransactionsToApprove": "گرفتن معاملات برای تایید",
"proofOfWork": "تکمیل اثبات کار",
- "broadcasting": "در حال پخش"
+ "broadcasting": "در حال پخش",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "انتقال عکس فوری امکانپذیر نیست",
@@ -669,7 +687,8 @@
"transition": "انتقال",
"transitioning": "انتقال برای عکس فوری.",
"generatingAndDetecting": "تولید آدرس ها و شناسایی موجودی.",
- "attaching": "پیوستن آدرس ها به Tangle."
+ "attaching": "پیوستن آدرس ها به Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "موفقیت در تکمبل خودکار",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/fi/translation.json b/src/shared/locales/fi/translation.json
index bbedcc7a42..6101c763e1 100644
--- a/src/shared/locales/fi/translation.json
+++ b/src/shared/locales/fi/translation.json
@@ -74,6 +74,8 @@
"wallet": "Lompakko",
"all": "Kaikki",
"sent": "Lähetetty",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Vastaanotettu",
"sending": "Lähettää",
"receiving": "Odottaa",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "VAROITUS: Varoja jo käytetyssä osoitteessa",
"discordInformation": "Lähettäminen osoitteesta, josta on aikaisemmin lähetetty varoja on vaarallista. Saadaksesi apua tilanteeseen voit liittyä Iotan Discord palvelun #help kanavalle.",
"androidInsecureClipboardWarning": "Leikepöydän käyttö Android-laitteella ei ole turvallista.",
- "androidCopyPasteWarning": "Älä kopio tai liitä seed-lukua Android-laitteella.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "En kopio tai liitä seed-lukua android puhelimessa",
"mustBeStoredAppropriately": "Se on tallennettava turvallisesti.",
"deviceMayBecomeUnresponsive": "Laitteesi saattaa toimia hitaasti hetken aikaa.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed-luku sisältää virheellisiä merkkejä",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Salasanasi on oltava vähintään {{minLength}} merkkiä. Se on tällä hetkellä {{currentLength}} merkin pituinen. Yritä uudelleen.",
"passwordMismatch": "Salasanat eivät täsmää",
"passwordMismatchExplanation": "Annetut salasanat eivät täsmää. Yritä uudelleen.",
- "anEncryptedCopy": "Seed-lukusi salattu kopio tallennetaan laitteellesi. Tällä salasanalla pääset käyttämään lompakkoasi jatkossa.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Kirjoita Salasana Uudelleen"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Kirjaudu Sisään",
"setNode": "Aseta Palvelin",
"whyBiometricDisabled": "Miksi biometrinen tunnistus pois käytöstä?",
- "whyBiometricDisabledExplanation": "Biometrinen tunnistus on pois käytöstä kun sovellus käynnistetään ensimmäistä kertaa. Ensimäisen käynnistyksen jälkeen biometristä tunnistusta voidaan käyttää. Tunnistus nollautuu, kun laite käynnistetään uudelleen, tämä johtuu sovelluksen tietoturvasta."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Ladataan seed-lukua ensimmäistä kertaa.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Älä koskaa jaa seed-lukua kenenkään ulkopuolisen kanssa.",
"iotaLogo": "IOTA-logo",
- "print": "TULOSTA",
+ "print": "Print",
"paperConvenience": "Seed-luvun tulostaminen paperille on hyvä tapa tallentaa se laitteen ulkopuolelle.",
"publicInsecure": "Tulostaminen julkisessa verkossa tai julkisella tulostimella ei kuitenkaan ole turvallista.",
- "tapCheckboxes": "Paina alla olevia laatikoita vahvistaaksesi että ymmärrät ohjeistuksen.",
- "wifiCheckbox": "En tulosta julkisessa wifi-verkossa",
- "printerCheckbox": "En tulosta julkisella tulostimella"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Osoitteesi",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "EI OSOITTEITA",
"spent": "Käytetty",
- "missingPermission": "Tiedostojärjestelmän kirjoitusoikeudet tarvitaan",
- "missingPermissionExplanation": "Tiedostojärjestelmän kirjoitusoikeudet tarvitaan, jotta voit jakaa QR-koodeja.",
"tag": "Tunniste",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "Voit korostaa 9 merkkiä kerrallaan",
"printBlankWallet": "Tulosta tyhjä lompakko",
- "whatIsChecksum": "Jokaisella seed-luvulla on kolmen merkin pituinen tarkistussumma",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Seed-luku turvassa",
"checksumExplanation": "Kun lisäät seed-luvun lompakkoon, varmista että kolmen merkin pituinen tarkistussumma vastaa alkuperäistä.",
"mustSaveYourSeed": "<0><0>Tallenna seed-lukusi käyttäen 0><1>vähintään yhtä1><2> alla olevista vaihtoehdoista.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Kokonaisaika",
"addressPasteDetected": "Osoitteen liittäminen havaittu",
"addressPasteExplanation": "Näyttää siltä että olet liittänyt osoitteen muualta. Varmista että liitetty osoite vastaa alkuperäistä.",
- "invalid": "VIRHEELLINEN"
+ "invalid": "VIRHEELLINEN",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Annetaan seed-luvulle nimi",
@@ -446,7 +453,8 @@
"empty": "Tyhjä",
"retrying": "Yritetään uudelleen",
"yesterday": "Eilen",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Katso seed-luku",
@@ -504,18 +512,21 @@
"currency": "Valuutta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Haluatko varmasti kirjautua ulos?"
+ "logoutConfirmation": "Haluatko varmasti kirjautua ulos?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skannaa QR-koodi"
},
"unitInfoModal": {
- "unitSystem": "YKSIKKÖJÄRJESTELMÄ",
+ "unitSystem": "Unit System",
"trillion": "Biljoonaa",
"billion": "Miljardia",
"million": "Miljoonaa",
"thousand": "Tuhatta",
- "one": "Yksi"
+ "one": "Yksi",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Miksi en voi käyttää koko tilin saldoa?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Synkronoidaan tiliä."
},
"useExistingSeed": {
- "title": "Anna seed-luku ja tilin nimi.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Seed-luku on virheellinen",
"validSeedExplanation": "Hyväksytyn seed-luvun on oltava 81 merkkiä pitkä ja sisältää ainoastaan merkkejä A-Z tai 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Tallensitko seed-lukusi?",
- "alreadyHave": "Seed-luku turvassa",
- "reenterSeed": "Seuraavassa vaiheessa sinua pyydetään antamaan seed-lukusi uudelleen.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Jos et ole tallentanut seed-lukuasi laitteen ulkopuolelle, saatat laitteen hajotessa menettää kaikki varasi.",
"pleaseConfirm": "Varmista, että olet tallentanut seed-lukusi turvallisesti."
},
@@ -572,15 +583,19 @@
"status": "Tila",
"fingerprintUnavailable": "Biometrinen tunnistus ei ole käytettävissä",
"fingerprintUnavailableExplanation": "Laitteesi ei tue biometristä tunnistusta tai se on otettu pois käytöstä asetuksista.",
- "buttonInstructionsDisable": "Paina alla olevaa painiketta poistaaksesi sormenjälkitunnistuksen käytöstä.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Paina alla olevaa painiketta ottaaksesi sormenjälkitunnistuksen käyttöön.",
- "buttonInstructionsDisableIPhoneX": "Paina alla olevaa painiketta poistaaksesi kasvotunnistuksen.",
- "buttonInstructionsEnableIPhoneX": "Paina alla olevaa painiketta ottaaksesi kasvontunnistuksen käyttöön.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Kosketa sormenjälkilukijaa kirjautuaksesi sisään"
},
"transferConfirmation": {
"youAreAbout": "Olet lähettämässä {{contents}} osoitteeseen",
- "aMessage": "viesti"
+ "aMessage": "viesti",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Väärä koodi",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Vie SeedVault-tiedosto",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Varmista että tallennat tiedoston useaan eri paikkaan (kovalevy, pilvi, USB-tikku). Jos hävitä tiedoston, etkä ole tallentanut tiedostoa muualle, menetät pääsyn IOTA-varoihisi.",
"exportFail": "SeedVault-tiedoston vienti epäonnistui",
"exportFailExplanation": "SeedVault-tiedoston viennissä ilmeni ongelmia. Varmista että sinulla on riittävät oikeudet ja tarpeeksi tilaa levyllä.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Tuo Seedvault-tiedosto",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault-tiedosto ei sisällä kelvolista seed-lukua",
"noSeedFoundExplanation": "SeedVault-tiedosto on joko tyhjä tai sisältää seed-luvun virheellisessä muodossa.",
"seedFileError": "SeedVault-tiedoston avaaminen epäonnistui",
"seedFileErrorExplanation": "SeedVault-tiedoston avaamisessa ilmeni ongelmia. Varmista että sinulla on oikea tiedosto, eikä se ole korruptoitunut.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MARVO",
@@ -655,7 +672,8 @@
"preparingTransfers": "Alustetaan siirtoja",
"gettingTransactionsToApprove": "Odotetaan siirtoja hyväksyttäväksi",
"proofOfWork": "Viimeistellään laskentatyö (Proof of Work)",
- "broadcasting": "Lähetetään"
+ "broadcasting": "Lähetetään",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Snapshot-siirtymä ei onnistu",
@@ -669,7 +687,8 @@
"transition": "Siirtymä",
"transitioning": "Siirrytään uuteen snapshot -versioon.",
"generatingAndDetecting": "Luodaan osoitteita ja haetaan saldoa.",
- "attaching": "Yhdistetään osoitteita Tangle-verkkoon."
+ "attaching": "Yhdistetään osoitteita Tangle-verkkoon.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Tiedot haettu onnistuneesti",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/fr/translation.json b/src/shared/locales/fr/translation.json
index d302fd125c..574deea104 100644
--- a/src/shared/locales/fr/translation.json
+++ b/src/shared/locales/fr/translation.json
@@ -19,7 +19,7 @@
"invalidResponse": "Erreur de serveur",
"invalidResponseExplanation": "Le serveur a renvoyé une erreur. Essayez de changer de serveur.",
"invalidResponseFetchingAccount": "Le serveur a renvoyé une erreur lors de la récupération des informations de votre compte. Essayez de changer de serveur.",
- "invalidResponseFetchingAccountDesktop": "The node returned an error while fetching your account information. If your problem persists, try changing node or disabling your system proxy in Trinity Settings.",
+ "invalidResponseFetchingAccountDesktop": "Le nœud a renvoyé une erreur en allant chercher les informations de votre compte. Si le problème persiste, essayez de changer nœud ou désactiver votre proxy dans les paramètres de la Trinity.",
"nodeOutOfSync": "Serveur non synchronisé",
"nodeOutOfSyncExplanation": "Le serveur actuellement sélectionné est désynchronisé. Veuillez changer le serveur ou essayer à nouveau.",
"thisNodeOutOfSync": "Ce serveur est désynchronisé. Veuillez changer le serveur ou essayer à nouveau.",
@@ -74,6 +74,8 @@
"wallet": "Portefeuille",
"all": "Tout",
"sent": "Envoyé",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Reçue",
"sending": "Envoi en cours",
"receiving": "Réception",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "ATTENTION : Fonds sur des adresses déjà utilisées",
"discordInformation": "Envoyer des fonds depuis une adresse déjà utilisée est dangereux. Merci de prendre contact avec le canal #help sur Discord pour savoir ce qu'il est possible de faire.",
"androidInsecureClipboardWarning": "Android ne fournit pas de presse-papier sécurisé.",
- "androidCopyPasteWarning": "Ne jamais copier/coller votre seed sur un appareil Android.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Je ne copierai/collerai pas ma seed",
"mustBeStoredAppropriately": "Elle doit être stockée correctement.",
"deviceMayBecomeUnresponsive": "Votre appareil peut ne pas répondre pendant un certain temps.",
@@ -144,14 +146,18 @@
"tryingAgainWithLocalPoW": "Réessayez en choisissant la preuve de travail locale.",
"tryingAgainWithDifferentNode": "Réessayez avec un autre nœud.",
"errorFetchingAccountInformation": "Erreur durant la récupération des informations de votre compte.",
- "errorSyncingAddresses": "Error syncing address information. Trying again with a different node.",
+ "errorSyncingAddresses": "Une erreur a été rencontrée pendant la synchronisation des informations de vos adresses. Essayer de nouveau avec un autre nœud.",
"errorAccessingKeychain": "Erreur de Porte-clés",
"errorAccessingKeychainExplanation": "Impossible d'accéder au porte-clés nécessaire au stockage sécurisé.",
"mainWallet": "COMPTE PRINCIPAL",
- "shouldUpdate": "A new update is available",
- "shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
- "forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "confirm": "Confirm",
+ "delete": "Delete",
+ "shouldUpdate": "Une mise à jour est disponible",
+ "shouldUpdateExplanation": "Une nouvelle mise à jour a été publiée. Il est recommandé que vous mettiez à jour vers la dernière version.",
+ "forceUpdate": "Mettez à jour l'application pour continuer",
+ "forceUpdateExplanation": "Une mise à jour critique est disponible. S’il vous plaît, mettez à jour l’application maintenant.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "La seed contient des caractères invalides",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Votre mot de passe doit comporter au moins {{minLength}} caractères. Il comporte actuellement {{currentLength}} caractères. Veuillez réessayer.",
"passwordMismatch": "Les mots de passe ne correspondent pas",
"passwordMismatchExplanation": "Les mots de passe que vous avez saisis ne correspondent pas. Veuillez réessayer.",
- "anEncryptedCopy": "Une copie chiffrée de votre seed sera stockée sur votre appareil. Vous utiliserez ce mot de passe pour accéder à votre portefeuille à l’avenir.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Confirmer le mot de passe"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Connexion",
"setNode": "Choisir un serveur",
"whyBiometricDisabled": "Pourquoi l'authentification biométrique est-elle désactivée?",
- "whyBiometricDisabledExplanation": "L'authentification biométrique est désactivée lors du premier chargement pour votre sécurité. Lorsque vous utilisez Trinity, vous serez déconnecté pour inactivité. Vous pourrez alors vous reconnecter avec l’authentification biométrique."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Chargement de la seed pour la première fois.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Ne communiquez votre seed à personne.",
"iotaLogo": "Logo IOTA",
- "print": "IMPRIMER",
+ "print": "Print",
"paperConvenience": "Imprimer une copie papier de votre seed est un moyen pratique de la stocker.",
"publicInsecure": "Mais l’impression avec un wifi public ou une imprimante publique n’est pas sécurisée.",
- "tapCheckboxes": "Veuillez cocher les cases ci-dessous pour confirmer.",
- "wifiCheckbox": "Je n'imprimerai pas avec un wifi publique",
- "printerCheckbox": "Je ne l'imprimerai pas sur une imprimante publique"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Votre adresse",
@@ -282,15 +289,13 @@
"copyAddress": "Copier l'adresse",
"addressCopied": "Adresse copiée",
"addressCopiedExplanation": "Votre adresse a été copiée dans le presse-papier.",
- "generateNewAddress": "Generate address",
+ "generateNewAddress": "Générer une nouvelle adresse",
"noAddresses": "AUCUNE ADRESSE",
"spent": "Envoyé",
- "missingPermission": "Autorisation de système de fichiers requise",
- "missingPermissionExplanation": "L'accès au système de fichiers est nécessaire afin de partager les codes QR.",
"tag": "Étiquette",
- "generateAnAddress": "Generate address",
- "generateAnAddressTitle": "Generate an address",
- "generateAnAddressExplanation": "Please generate an address before using this function."
+ "generateAnAddress": "Générer une nouvelle adresse",
+ "generateAnAddressTitle": "Générer une nouvelle adresse",
+ "generateAnAddressExplanation": "S’il vous plaît, générez une adresse avant d’utiliser cette fonction."
},
"saveYourSeed": {
"saveYourSeed": "Sauvegarder votre seed",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Écrivez votre seed",
"youCanHighlightCharacters": "Vous pouvez sélectionner 9 caractères à la fois",
"printBlankWallet": "Imprimer un portefeuille vide",
- "whatIsChecksum": "Chaque seed a une somme de contrôle de 3 caractères",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "J’ai enregistré ma seed",
"checksumExplanation": "Chaque fois que vous ajoutez une seed à votre portefeuille, vous devez vous assurer que les sommes de contrôle affichées correspondent bien à celle de votre seed.",
"mustSaveYourSeed": "<0><0>Vous devez sauvegarder votre seed avec 0><1>au moins une1><2> des options citées ci-dessous.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Temps total",
"addressPasteDetected": "Adresse collée détectée",
"addressPasteExplanation": "On dirait que vous avez collé une adresse. Assurez-vous que l’adresse collée corresponde à celle que vous voulez utiliser.",
- "invalid": "INVALIDE"
+ "invalid": "INVALIDE",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Veuillez ajouter un nom",
@@ -446,7 +453,8 @@
"empty": "Vide",
"retrying": "Nouvelle tentative",
"yesterday": "Hier",
- "promotingAnotherBundle": "Promotion d'un autre bundle en cours"
+ "promotingAnotherBundle": "Promotion d'un autre bundle en cours",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Afficher la seed",
@@ -504,18 +512,21 @@
"currency": "Devise"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Êtes-vous sûr(e) de vouloir vous déconnecter ?"
+ "logoutConfirmation": "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scannez votre QR code"
},
"unitInfoModal": {
- "unitSystem": "SYSTÈME D’UNITÉS",
+ "unitSystem": "Unit System",
"trillion": "Billion",
"billion": "Milliard",
"million": "Million",
"thousand": "Mille",
- "one": "Un"
+ "one": "Un",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Pourquoi ne puis-je pas dépenser l'intégralité de mon solde ?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Synchronisation de votre compte."
},
"useExistingSeed": {
- "title": "Saisissez une seed et un nom de compte.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Format de seed incorrect",
"validSeedExplanation": "Les seeds valides doivent être composées de 81 caractères et contenir uniquement A-Z ou 9."
},
@@ -545,14 +556,14 @@
"enterPassword": "Saisissez le mot de passe pour afficher votre seed.",
"viewSeed": "Afficher la seed",
"hideSeed": "Masquer la seed",
- "notAvailable": "Seed export is not available for {{accountType}} account type",
+ "notAvailable": "L'exportation de la seed n’est pas disponible pour le compte {{accountType}}",
"accountIndex": "Sommaire de votre compte général",
- "accountPage": "Your Ledger account page"
+ "accountPage": "Numéro de page du compte de la Ledger"
},
"saveSeedConfirmation": {
"didSaveSeed": "Avez-vous enregistré votre seed ?",
- "alreadyHave": "J’ai enregistré ma seed",
- "reenterSeed": "À l’étape suivante, on vous demandera d’entrer de nouveau votre seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Si vous n’avez pas sauvegardé votre seed et que votre appareil tombe en panne, vous perdrez tous vos IOTA.",
"pleaseConfirm": "Veuillez confirmer que vous avez stocké votre seed en toute sécurité."
},
@@ -572,15 +583,19 @@
"status": "Statut",
"fingerprintUnavailable": "Authentification biométrique indisponible",
"fingerprintUnavailableExplanation": "Votre appareil ne supporte pas l'authentification biométrique, ou cette fonction n'a pas été configurée dans les paramètres de votre appareil.",
- "buttonInstructionsDisable": "Appuyez sur le bouton ci-dessous pour désactiver l’authentification par empreinte digitale.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Appuyez sur le bouton ci-dessous pour activer l’authentification par empreinte digitale.",
- "buttonInstructionsDisableIPhoneX": "Appuyez sur le bouton ci-dessous pour désactiver Face ID.",
- "buttonInstructionsEnableIPhoneX": "Appuyez sur le bouton ci-dessous pour activer Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touchez le lecteur d'empreintes pour vous connecter"
},
"transferConfirmation": {
"youAreAbout": "Vous êtes sur le point d’envoyer {{contents}} à l’adresse",
- "aMessage": "un message"
+ "aMessage": "un message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Code incorrect",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Exporter SeedVault",
- "seedVaultExplanation": "Un SeedVault est un fichier crypté pour stocker votre seed en toute sécurité. La seed est encryptée à l'aide d'un mot de passe et n'est pas accessible sans ce mot de passe.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Assurez-bous de conserver le fichier en plusieurs endroits (par ex. disque dur, cloud, USB). Si vous perdez ce fichier et que vous n'avez pas stocké votre seed ailleurs, vous perdrez vos IOTA.",
"exportFail": "Échec de l'exportation de SeedVault",
"exportFailExplanation": "Il y a eu un problème lors de l'exportation de SeedVault. Veuillez vous assurer que vous avez les autorisations requises et suffisamment d'espace libre.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Votre seed a été importée avec succès.",
"saveToDownloadFolder": "Enregistrer dans le dossier Téléchargements",
"importSeedVault": "Importer un SeedVault",
- "dropSeedVaultHere": "Déposez le SeedVault ici <1>1> ou cliquez sur parcourir",
+ "dropInstructions": "Déposez le fichier SeedVault ici <1>1> ou cliquez sur parcourir",
+ "dropActive": "Déposez le fichier SeedVault ou du texte ici",
"enterKeyExplanation": "Entrez votre mot de passe pour ouvrir le SeedVault",
"noSeedFound": "Le SeedVault ne contient pas de seed valide",
"noSeedFoundExplanation": "Le SeedVault est vide ou contient une seed dans un format non valide.",
"seedFileError": "Échec de l'ouverture du SeedVaulet",
"seedFileErrorExplanation": "Il y a eu un problème lors de l'ouverture du SeedVault. Si vous avez sélectionné le bon fichier, il est peut-être endommagé.",
- "seedVaultKeyExplanation": "Tout d’abord, nous avons besoin de sécuriser votre SeedVault. Veuillez choisir un mot de passe pour chiffrer le fichier. Vous aurez besoin de ce mot de passe pour restaurer votre seed à partir de la sauvegarde SeedVault. N’hésitez pas à utiliser le même mot de passe que vous utilisez pour Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Préparation des transferts",
"gettingTransactionsToApprove": "Réception des transactions à valider",
"proofOfWork": "Finalisation de la preuve de travail",
- "broadcasting": "Diffusion en cours"
+ "broadcasting": "Diffusion en cours",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Impossible de terminer la transition du snapshot",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "En cours de transition pour le snapshot.",
"generatingAndDetecting": "Génération des adresses et détection du solde.",
- "attaching": "Attachement des adresses au Tangle."
+ "attaching": "Attachement des adresses au Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Succès du remplissage automatique",
@@ -706,8 +725,8 @@
"completeSetup": "Configuration terminée"
},
"proxy": {
- "proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxy": "Utiliser le proxy du système",
+ "proxyExplanation": "Détecter et utiliser les paramètres proxy du système réseau étendu. Fermez, puis ré ouvrez Trinity après avoir modifié ce paramètre."
},
"notifications": {
"notifications": "Notifications",
@@ -733,35 +752,35 @@
"sweepConfirmationTitle": "Confirmation de balayage"
},
"ledger": {
- "ready": "Ledger device connected and ready",
- "notReady": "If you wish to use a Ledger device, connect and unlock it now",
+ "ready": "La Ledger est connectée et prête",
+ "notReady": "Si vous souhaitez utiliser une clé Ledger, connectez et débloquez la maintenant",
"indexInUse": "Index en cours d'utilisation pour le compte {{account}}",
- "indexInUseExplanation": "Your chosen index is already in use on one of your accounts. Please choose another index number.",
- "proceedWithLedger": "Proceed with Ledger setup",
- "accountIndex": "Account index",
- "accountPage": "Account page",
- "chooseAccountIndex": "Choose your Ledger account index",
- "accountIndexExplanation": "Your Ledger can store multiple seeds. Each seed is identified by a unique index number. An unused index has been pre-selected, but feel free to choose your own. Make sure you note down your chosen index number.",
- "accountPageExplanation": "Some third party wallets require pages.",
- "connectionError": "Cannot connect to Ledger",
- "connectionErrorExplanation": "Check that your Ledger is connected and unlocked.",
- "connectionTitle": "Connect your Ledger",
- "connectionExplanation": "A Ledger device must be connected to perform this function.",
- "transactionTitle": "Scroll through and approve the transaction on your Ledger",
- "transactionExplanation": "Use your Ledger device to approve the outgoing transaction.",
- "applicationTitle": "Open Ledger IOTA app",
- "applicationExplanation": "Go to your Ledger and open the IOTA app to continue using Trinity.",
- "cannotSendZeroValueTitle": "Cannot send zero value transfer",
- "cannotSendZeroValueExplanation": "Cannot send zero value transfers with a Ledger device.",
- "ledgerDisconnectedTitle": "Ledger device disconnected",
- "ledgerDisconnectedExplanation": "The Ledger device was disconnected. Please reconnect and try again.",
- "ledgerDeniedTitle": "Transaction denied",
- "ledgerDeniedExplanation": "The transaction was denied on the Ledger device.",
- "ledgerIncorrectIndex": "Ledger device mismatch",
- "ledgerIncorrectIndexExplanation": "The connected Ledger device does not match the one linked to this account, or the recovery phrase has been changed.",
- "checkAddress": "Check the receive address",
- "checkAddressExplanation": "Check that the address matches the one displayed on your Ledger device.",
- "applicationNotInitialised": "Warning unconfirmed",
- "applicationNotInitialisedExplanation": "Reopen the IOTA app on your Ledger device, accept the informational warning and try again."
+ "indexInUseExplanation": "Votre index choisi est déjà utilisé sur l’un de vos comptes. Veuillez choisir un autre numéro d’index.",
+ "proceedWithLedger": "Continuer avec la Ledger",
+ "accountIndex": "Index du compte",
+ "accountPage": "Page du compte",
+ "chooseAccountIndex": "Choisissez l'index de le Ledger",
+ "accountIndexExplanation": "Votre clé Ledger peut stocker plusieurs seed. Chaque seed est identifiée par un numéro d’index unique. Un index inutilisé a été présélectionné, mais n’hésitez pas à choisir par vous même. Assurez-vous de notez votre numéro d’index choisi.",
+ "accountPageExplanation": "Certains portefeuilles tiers nécessitent l'utilisation de page.",
+ "connectionError": "Impossible de se connecter à la Ledger",
+ "connectionErrorExplanation": "Vérifiez que votre Ledger est connectée et déverrouillée.",
+ "connectionTitle": "Connectez votre Ledger",
+ "connectionExplanation": "Une Ledger doit être connectée pour utiliser cette fonction.",
+ "transactionTitle": "Faites défiler et approuvez la transaction sur votre clé Ledger",
+ "transactionExplanation": "Utilisez votre clé Ledger pour approuver la transaction sortante.",
+ "applicationTitle": "Ouvrez l'app IOTA sur votre clé Ledger",
+ "applicationExplanation": "Allez dans votre clé Ledger et ouvrez l’application IOTA pour continuer à utiliser Trinity.",
+ "cannotSendZeroValueTitle": "Impossible d’envoyer des transactions sans valeur",
+ "cannotSendZeroValueExplanation": "Impossible d’envoyer des transactions sans valeur avec une clé Ledger.",
+ "ledgerDisconnectedTitle": "Clé Ledger déconnectée",
+ "ledgerDisconnectedExplanation": "La clé Ledger a été déconnectée. Veuillez la reconnecter et réessayez.",
+ "ledgerDeniedTitle": "Transaction refusée",
+ "ledgerDeniedExplanation": "La transaction a été refusée par la clé Ledger.",
+ "ledgerIncorrectIndex": "Incompatibilité de la Ledger",
+ "ledgerIncorrectIndexExplanation": "La clé Ledger ne correspond pas à celle liée à ce compte, ou la phrase de récupération de la clé a été changée.",
+ "checkAddress": "Vérifiez l’adresse de réception",
+ "checkAddressExplanation": "Vérifiez que les adresses affichées par la Ledger et votre ordinateur correspondent bien.",
+ "applicationNotInitialised": "Avertissements non confirmés",
+ "applicationNotInitialisedExplanation": "Ré ouvrez l’application IOTA sur clé Ledger, acceptez l’avertissement d’information et essayez à nouveau."
}
}
\ No newline at end of file
diff --git a/src/shared/locales/he/translation.json b/src/shared/locales/he/translation.json
index 486f1ef270..a6766d54de 100644
--- a/src/shared/locales/he/translation.json
+++ b/src/shared/locales/he/translation.json
@@ -74,6 +74,8 @@
"wallet": "ארנק",
"all": "All",
"sent": "נשלח",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "התקבל",
"sending": "שולח",
"receiving": "מקבל",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "הסיד מכיל תווים לא חוקיים",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "הסיסמאות לא תואמות",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "טוען את הסיד בפעם הראשונה.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "תג",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>עליך לשמור את הסיד שלך עם 0><1>לפחות פעם אחת1><2> ממספר הפעמים שמופיע.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "צפה בסיד",
@@ -504,18 +512,21 @@
"currency": "מטבע"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "אתה בטוח שאתה רוצה להתנתק?"
+ "logoutConfirmation": "אתה בטוח שאתה רוצה להתנתק?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "אחד"
+ "one": "אחד",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "מסנכרן את החשבון שלך."
},
"useExistingSeed": {
- "title": "הכנס סיד ושם חשבון.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "אני שמרתי את הסיד שלי",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "סטאטוס",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "קוד שגוי",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/hi/translation.json b/src/shared/locales/hi/translation.json
index bbc68f7dc2..275f17725d 100644
--- a/src/shared/locales/hi/translation.json
+++ b/src/shared/locales/hi/translation.json
@@ -74,6 +74,8 @@
"wallet": "वॉलेट",
"all": "All",
"sent": "भेजे गए",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "प्राप्त हुआ",
"sending": "भेज रहे है",
"receiving": "प्राप्त हो रहा है",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "चेतावनी: पहले से उपयोग एड्रेस पर बैलेंस",
"discordInformation": "एक ही पते से एक से अधिक बार भेजना खतरनाक है । आप क्या कर सकते हैं पता लगाने के लिए कलह पर #help चैनल के लिए सिर कृपया ।",
"androidInsecureClipboardWarning": "एंड्रॉयड एक सुरक्षित क्लिपबोर्ड प्रदान नहीं करता है ।",
- "androidCopyPasteWarning": "एक Android डिवाइस पर अपने सीड कभी भी कॉपी पेस्ट न करे |",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "मैं अपने सीड को कॉपी पेस्ट नहीं करूंगा",
"mustBeStoredAppropriately": "यह उचित रूप से संग्रहीत किया जाना चाहिए ।",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "सीड में अवैध वर्ण हैं।",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "आपका पासवर्ड कम से कम {{minLength}} वर्ण होना चाहिए। यह वर्तमान में {{currentLength}} वर्ण लंबा है कृपया पुन: प्रयास करें।",
"passwordMismatch": "पासवर्ड्स समान नहीं हैं",
"passwordMismatchExplanation": "पासवर्ड्स जो आप दर्ज किया, मिलान नहीं हो रहा हैं। कृपया दोबारा लिखें।",
- "anEncryptedCopy": "अपने सीड की एक एंक्रिप्टेड प्रतिलिपि आपके डिवाइस पर संग्रहीत किया जाएगा । आप भविष्य में अपने वॉलेट तक पहुंचने के लिए इस पासवर्ड का उपयोग करेंगे ।",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "पासवर्ड पुन: लिखें"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "लॉग इन करें",
"setNode": "नोड सेट करें",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "पहली बार के लिए seed लोड हो रहा है ।",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "कभी किसी के साथ अपने सीड का साझा न करे ।",
"iotaLogo": "IOTA लोगो",
- "print": "प्रिंट",
+ "print": "Print",
"paperConvenience": "अपने सीड की एक कागज प्रति प्रिंट एक सुविधाजनक तरीका है सहेजने के लिए |",
"publicInsecure": "लेकिन सार्वजनिक वाईफ़ाई या एक सार्वजनिक प्रिंटर पर मुद्रण असुरक्षित है ।",
- "tapCheckboxes": "कृपया पुष्टि करने के लिए नीचे चेकबॉक्स टैप करें ।",
- "wifiCheckbox": "मैं किसी सार्वजनिक प्रिंटर पर प्रिंट नहीं करूंगा",
- "printerCheckbox": "मैं किसी सार्वजनिक प्रिंटर पर प्रिंट नहीं करूंगा"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "कोई पता नहीं",
"spent": "खर्च",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "टैग",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "आप एक बार में 9 वर्णों को हाइलाइट कर सकते हैं",
"printBlankWallet": "खाली वॉलेट प्रिंट करे",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "मैंने अपना सीड सहेज लिया है",
"checksumExplanation": "जब भी आप अपने वॉलेट में कोई बीज जोड़ते हैं, तो आपको यह सुनिश्चित करना चाहिए कि वॉलेट जेनरेट किया गया checksum आपके द्वारा लिखे गए एक से मेल खाता है ।",
"mustSaveYourSeed": "<0> <0> आपको 0> <1> के साथ अपने सीड को नीचे सूचीबद्ध विकल्पों में से कम एक 1> <2> से बचाना होगा । 2> 0>"
@@ -345,7 +351,8 @@
"totalTime": "कुल समय",
"addressPasteDetected": "एड्रेस पेस्ट डेटेक्टेड",
"addressPasteExplanation": "ऐसा लगता है कि आपने एक एड्रेस पेस्ट किया है । सुनिश्चित करें कि एड्रेस उस एक से मेल खाता है जिसे आप भेजना चाहते हैं ।",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "आइए एक नाम जोड़ें",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "सीड देखें",
@@ -504,18 +512,21 @@
"currency": "करेंसी"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "क्या वाकई आप लॉग आउट करने के लिए चाहते हैं?"
+ "logoutConfirmation": "क्या वाकई आप लॉग आउट करने के लिए चाहते हैं?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "QR कोड स्कैन करें"
},
"unitInfoModal": {
- "unitSystem": "यूनिट सिस्टम",
+ "unitSystem": "Unit System",
"trillion": "ट्रिलीयन",
"billion": "बिलियन",
"million": "मिलियन",
"thousand": "हज़ार",
- "one": "एक"
+ "one": "एक",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "मैं अपना पूरा बैलेंस क्यों नहीं खर्च कर सकता?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "अपना खाता सिंक्रनाइज़ कर रहा है ।"
},
"useExistingSeed": {
- "title": "सीड और खाता नाम दर्ज करें ।",
+ "title": "Enter an account name and seed",
"incorrectFormat": "सीड का फॉर्मेट सही नहीं है",
"validSeedExplanation": "वैध सीड 81 वर्ण होना चाहिए और केवल A-Z या 9 होते हैं ।"
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "क्या आपने सीड का बैक अप ले लिया?",
- "alreadyHave": "मैंने अपना सीड सहेज लिया है",
- "reenterSeed": "अगले कदम पर आप अपने सीड फिर से दर्ज करने के लिए कहा जाएगा ।",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "आप अपने सीड का समर्थन नहीं किया है और अपने डिवाइस विफल रहता है, तो आप अपने IOTA के सभी खो देंगे ।",
"pleaseConfirm": "कृपया पुष्टि करें कि आप सुरक्षित रूप से अपने सीड संग्रहीत है ।"
},
@@ -572,15 +583,19 @@
"status": "स्टेटस",
"fingerprintUnavailable": "बायोमेट्रिक प्रमाणीकरण अनुपलब्ध",
"fingerprintUnavailableExplanation": "आपका डिवाइस बायोमेट्रिक प्रमाणीकरण का समर्थन नहीं करता है या यह डिवाइस सेटिंग्स में कॉंफ़िगर नहीं किया गया है ।",
- "buttonInstructionsDisable": "फ़िंगरप्रिंट प्रमाणीकरण को बंद करने के लिए नीचे बटन दबाएँ.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "फ़िंगरप्रिंट प्रमाणीकरण को चालू करने के लिए नीचे बटन दबाएँ.",
- "buttonInstructionsDisableIPhoneX": "चेहरा आईडी को निष्क्रिय करने के लिए नीचे बटन दबाएँ.",
- "buttonInstructionsEnableIPhoneX": "चेहरा आईडी सक्षम करने के लिए नीचे दिए गए बटन दबाएँ.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "लॉग इन करने के लिए फ़िंगरप्रिंट रीडर स्पर्श करें ।"
},
"transferConfirmation": {
"youAreAbout": "आप पते पर {{contents}} भेजने वाले है",
- "aMessage": "संदेश"
+ "aMessage": "संदेश",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "गलत कोड!",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "ट्रांसफर के लिए रेडी हो रहे है",
"gettingTransactionsToApprove": "लेन-देन को मंजूरी मिल रही",
"proofOfWork": "काम का प्रमाण पूरा करना",
- "broadcasting": "प्रसारण"
+ "broadcasting": "प्रसारण",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "स्नैपशॉट पूरा नहीं कर सकता",
@@ -669,7 +687,8 @@
"transition": "ट्रांजीशन",
"transitioning": "स्नैपशॉट के लिए स्नैपशॉट ।",
"generatingAndDetecting": "बैलेंस चेक करने के साथ नया एड्रेस गेनेराते हो रहा है |",
- "attaching": "एड्रेस को टैंगल से अटैच कर रहे है"
+ "attaching": "एड्रेस को टैंगल से अटैच कर रहे है",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "ऑटो फील सफल",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/hr/translation.json b/src/shared/locales/hr/translation.json
index f8c799eb64..651a8e5928 100644
--- a/src/shared/locales/hr/translation.json
+++ b/src/shared/locales/hr/translation.json
@@ -6,9 +6,9 @@
"noTransactions": "NEMA NEDAVNE POVIJESTI",
"refresh": "Osvježi",
"balanceError": "Nedostatak sredstva",
- "balanceErrorMessage": "Nemate dovoljno IOTA kako biste nastavili s prijenosom.",
+ "balanceErrorMessage": "Nemate dovoljno sredstava da bi izvršili ovu transakciju.",
"totalBalance": "Ukupno stanje",
- "transferError": "Pogreška prilikom prijenosa",
+ "transferError": "Greška prilikom slanja transakcije",
"transferErrorMessage": "Greška prilikom slanja transakcije. Molimo pokušajte ponovno.",
"transferSent": "Prijenos izvršen",
"transferSentMessage": "Vaša transakcija je poslana na Tangle.",
@@ -19,7 +19,7 @@
"invalidResponse": "Pogreška na čvoru",
"invalidResponseExplanation": "Čvor je poslao pogrešku. Probajte sa promjenom čvora.",
"invalidResponseFetchingAccount": "Greška prilikom dohvata podataka o vašem računu. Pokušajte promijeniti node.",
- "invalidResponseFetchingAccountDesktop": "The node returned an error while fetching your account information. If your problem persists, try changing node or disabling your system proxy in Trinity Settings.",
+ "invalidResponseFetchingAccountDesktop": "Greška prilikom dohvata podataka o vašem računu. U slučaju ponavljanja problema, pokušajte promijeniti node ili onemogućiti korištenje proxy postavka sustava u Trinity postavkama.",
"nodeOutOfSync": "Vaš node nije sinkroniziran",
"nodeOutOfSyncExplanation": "Vaš odabrani node nije sinkroniziran. Molimo vas promijenite node i pokušajte ponovno.",
"thisNodeOutOfSync": "Ovaj node nije sinkroniziran. Molimo vas promijenite node ili pokušajte ponovno.",
@@ -74,6 +74,8 @@
"wallet": "Novčanik",
"all": "Sve",
"sent": "Poslano",
+ "youReceived": "Primili ste",
+ "youSent": "Poslali ste",
"received": "Primljeno",
"sending": "Slanje",
"receiving": "Primanje",
@@ -117,7 +119,7 @@
"nodeDuplicatedExplanation": "Prilagođeni node se već nalazi na listi.",
"nodeAutoChanged": "Node automatski promijenjen",
"nodeAutoChangedExplanation": "Promijenjeno na novi node {{- nodeAddress}} pošto je trenutno odabrani offline.",
- "fingerprintOnSend": "Dodirnite čitač otiska prstiju kako bi odobrili transfer",
+ "fingerprintOnSend": "Dodirnite čitač otiska prstiju kako bi odobrili transakciju",
"masterKey": "Vaš IOTA seed je master ključ za vaša sredstva.",
"seedThief": "Ako netko drugi ima vaš seed, on može ukrasti vaše IOTA tokene.",
"googlePlayServicesNotAvailable": "Google Play usluga nije dostupna",
@@ -137,7 +139,7 @@
"headToAdvancedSettingsForTransition": "Otvorite Napredne Postavke i izvršite Snapshot tranziciju.",
"usingTrinityWalletWithKeePass": "Korištenje Trinity novčanika s Keepass2Android",
"signedTrytesBroadcastErrorExplanation": "Došlo je do greške u vezi prilikom emitiranja vaše transakcije.",
- "broadcastError": "Nije bilo moguće emitirati transfer",
+ "broadcastError": "Nije bilo moguće emitirati transakciju",
"addressesAlreadySpentFrom": "Jedna ili više adresa je već upotrijebljeno.",
"problemSendingYourTransaction": "Došlo je do greške prilikom slanja vaše transakcije.",
"problemPerformingProofOfWork": "Došlo je do greške prilikom izvođenja PoW-a.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain greška",
"errorAccessingKeychainExplanation": "Nije moguće pristupiti keychain-u potrebnom za sigurnu pohranu.",
"mainWallet": "GLAVNI RAČUN",
+ "confirm": "Potvrdi",
+ "delete": "Obriši",
"shouldUpdate": "Dostupno je novo ažuriranje",
"shouldUpdateExplanation": "Dostupna je nova verzija aplikacije. Preporučuje se ažuriranje aplikacije na najnoviju verziju.",
"forceUpdate": "Ažurirajte aplikaciju kako bi mogli nastaviti dalje",
- "forceUpdateExplanation": "Kritično ažuriranje je dostupno. Molimo ažurirajte aplikaciju."
+ "forceUpdateExplanation": "Kritično ažuriranje je dostupno. Molimo ažurirajte aplikaciju.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed sadrži nedopuštene znakove",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Minimalni broj znakova koji vaša lozinka mora sadržavati je {{minLength}}. Trenutni broj znakova je {{currentLength}}. Molimo pokušajte ponovno.",
"passwordMismatch": "Lozinke nisu iste",
"passwordMismatchExplanation": "Lozinke koje ste unijeli nisu iste. Molimo pokušajte ponovo.",
- "anEncryptedCopy": "Kodirana kopija vašeg seed-a biti će pohranjena na vašem uređaju. Ovu lozinku ćete koristiti za pristup novčaniku u budućnosti.",
+ "anEncryptedCopy": "Ovo je lozinka vašeg glavnog novčanika. Koristit ćete ju za prijavu.",
"retypePassword": "Ponovo unesite lozinku"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Prijavi se",
"setNode": "Postavi node",
"whyBiometricDisabled": "Zašto je biometrijska autorizacija onemogućena?",
- "whyBiometricDisabledExplanation": "Biometrijska prijava je onemogućena prilikom prvog pokretanja aplikacije radi vaše sigurnosti. Prilikom korištenja Trinity novčanika bit ćete odjavljeni nakon određenog perioda neaktivnosti. Tek tada se možete ponovno prijaviti koristeći biometrijsku autorizaciju."
+ "whyBiometricDisabledExplanationPart1": "Biometrijska autorizacija je onemogućena prilikom prvog pokretanja aplikacije radi vaše sigurnosti.",
+ "whyBiometricDisabledExplanationPart2": "Prilikom korištenja, Trinity će vas automatski odjaviti uslijed neaktivnosti. Nakon toga se slobodno možete ponovno prijaviti koristeći biometrijsku autorizaciju."
},
"loading": {
"loadingFirstTime": "Prvotno učitavanje seed-a.",
@@ -254,10 +261,10 @@
"pressForNewSeed": "Pritisnite za novi seed",
"generateSuccess": "Seed uspješno generiran",
"individualLetters": "Pritisnite individualna slova da bi ih učinili nasumičnim.",
- "individualLetterCount": "Preostali broj znakova koje treba učiniti nasumičnim <1><0>{{count}}0>1>.",
- "individualLetterCount_plural": "Preostali broj znakova koje treba učiniti nasumičnim <1><0>{{count}}0>1>.",
- "randomiseCharsToContinue": "Preostali broj znakova koje treba učiniti nasumičnim prije nastavka <1>{{count}}1>.",
- "randomiseCharsToContinue_plural": "Preostali broj znakova koje treba učiniti nasumičnim prije nastavka <1>{{count}}1>.",
+ "individualLetterCount": "Preostali broj znakova koje treba učiniti nasumičnim: <1><0>{{count}}0>1>.",
+ "individualLetterCount_plural": "Preostali broj znakova koje treba učiniti nasumičnim: <1><0>{{count}}0>1>.",
+ "randomiseCharsToContinue": "Preostali broj znakova koje treba učiniti nasumičnim prije nastavka: <1>{{count}}1>.",
+ "randomiseCharsToContinue_plural": "Preostali broj znakova koje treba učiniti nasumičnim prije nastavka: <1>{{count}}1>.",
"whatIsASeed": "Što je seed?"
},
"onboardingComplete": {
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nikada nemojte podijeliti svoj seed s bilo kime.",
"iotaLogo": "IOTA logo",
- "print": "ISPIS",
+ "print": "Ispis",
"paperConvenience": "Ispis vašeg seed-a na papir je pogodan način za njegovo spremanje.",
"publicInsecure": "No ispis putem javno dostupnog wifi-a ili javno dostupnog pisača je nesigurno.",
- "tapCheckboxes": "Molimo kliknite na kvadratiće ispod za potvrdu.",
- "wifiCheckbox": "Neću ispisati seed putem javno dostupnog wifi-a",
- "printerCheckbox": "Neću vršiti ispis na javnom pisaču"
+ "pleaseCheck": "Molimo provjerite i potvrdite prije ispisa",
+ "wifiConfirmation": "Moj uređaj nije spojen na javno dostupan wifi",
+ "printerConfirmation": "Ne vršim ispis na javno dostupnom pisaču"
},
"receive": {
"yourAddress": "Vaša adresa",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generiraj adresu",
"noAddresses": "NEMA ADRESA",
"spent": "Upotrijebljeno",
- "missingPermission": "Potreban pristup datotečnom sustavu",
- "missingPermissionExplanation": "Potreban je pristup datotečnom sustavu da bi se QR kod mogao podijeliti.",
"tag": "Etiketa",
"generateAnAddress": "Generiraj adresu",
"generateAnAddressTitle": "Generiraj adresu",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Zapišimo vaš seed",
"youCanHighlightCharacters": "Možete označiti 9 znakova odjednom",
"printBlankWallet": "Ispišite prazni novčanik",
- "whatIsChecksum": "Svaki seed ima pripadajući kontrolni zbroj od 3 znaka",
+ "whatIsAChecksum": "Što je kontrolni zbroj?",
+ "everySeedHasAChecksum": "Svaki seed ima pripadajući kontrolni zbroj od 3 znaka.",
"iHavesavedMySeed": "Svoj seed imam spremljen",
"checksumExplanation": "Svaki put kada dodajete seed u svoj novčanik, pobrinite se da je kontrolni zbroj generiran od strane novčanika isti kao onaj koji ste zapisali.",
"mustSaveYourSeed": "<0><0>Morate napraviti sigurnosnu kopiju seed-a koristeći 0><1>barem jednu1><2> od niže navedenih opcija.2>0>"
@@ -327,7 +333,7 @@
"invalidAddressExplanation3": "Adresa sadrži neispravan kontrolni zbroj.",
"invalidAddressExplanationGeneric": "Ispravne adrese morale bi sadržavati 90 znakova i to samo znakove A-Z ili broj 9.",
"notEnoughFunds": "Nedovoljno sredstava na računu",
- "notEnoughFundsExplanation": "Nemate dovoljno IOTA kako biste nastavili s prijenosom.",
+ "notEnoughFundsExplanation": "Nemate dovoljno sredstava da bi izvršili ovu transakciju.",
"recipientAddress": "Adresa primatelja",
"amount": "Iznos",
"max": "MAKSIMALNO",
@@ -345,7 +351,8 @@
"totalTime": "Ukupno vrijeme",
"addressPasteDetected": "Detektirana kopija adrese u međuspremniku",
"addressPasteExplanation": "Izgleda da ste zalijepili adresu. Provjerite da li je adresa istovjetna onoj na koju želite poslati.",
- "invalid": "NEISPRAVNO"
+ "invalid": "NEISPRAVNO",
+ "swipeToSend": "Kliznite po ekranu za slanje"
},
"setSeedName": {
"letsAddName": "Dodajte naziv",
@@ -446,7 +453,8 @@
"empty": "Prazno",
"retrying": "Ponovni pokušaj u tijeku",
"yesterday": "Jučer",
- "promotingAnotherBundle": "Promocija drugog paketa"
+ "promotingAnotherBundle": "Promocija drugog paketa",
+ "pleaseWait": "Molimo pričekajte. Promocija drugog paketa je trenutno u tijeku."
},
"accountManagement": {
"viewSeed": "Prikaži seed",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Da li ste sigurni da se želite odjaviti?"
+ "logoutConfirmation": "Da li ste sigurni da se želite odjaviti?",
+ "aboutToLogOut": "Ovom radnjom ćete se odjaviti",
+ "areYouSure": "Jeste li sigurni da se želite odjaviti?"
},
"qrScanner": {
"scan": "Skeniraj QR kod"
},
"unitInfoModal": {
- "unitSystem": "SUSTAV JEDINICA",
+ "unitSystem": "Sustav jedinica",
"trillion": "Trilijun",
"billion": "Milijarda",
"million": "Milijun",
"thousand": "Tisuću",
- "one": "Jedna"
+ "one": "Jedna",
+ "unitInfoExplanation": "IOTA se obično kupuje u jedinicama od 1Mi (jedne Miota-e odnosno jedan milijun iota-e), no može se slati koristeći najmanju jedinicu od 1i (jedne iota-e)."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Zašto ne mogu potrošiti cijeli iznos?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sinkroniziranje računa u tijeku."
},
"useExistingSeed": {
- "title": "Unesite seed i naziv računa.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Neispravan format seed-a",
"validSeedExplanation": "Valjani seed bi se trebao sastojati od 81 znaka i sadržavati samo velika slova A-Z ili broj 9."
},
@@ -551,7 +562,7 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Da li ste napravili sigurnosnu kopiju vašeg seed-a?",
- "alreadyHave": "Napravio sam sigurnosnu kopiju svojeg seed-a",
+ "iHaveBackedUp": "Napravio sam sigurnosnu kopiju svojeg seed-a",
"reenterSeed": "U sljedećem koraku morat ćete ponovno unijeti svoj seed.",
"reenterSeedWarning": "Ako niste napravili sigurnosnu kopiju svog seed-a, a vaš uređaj se pokvari, izgubit ćete svu svoju IOTA-u.",
"pleaseConfirm": "Molimo potvrdite da ste spremili svoj seed na sigurno."
@@ -572,15 +583,19 @@
"status": "Stanje",
"fingerprintUnavailable": "Biometrijska autorizacija nedostupna",
"fingerprintUnavailableExplanation": "Vaš uređaj ne podržava biometrijsku autorizaciju ili ista nije konfigurirana u postavkama uređaja.",
- "buttonInstructionsDisable": "Pritisnite donji gumb kako bi onemogućili autorizaciju putem otiska prsta.",
+ "buttonInstructionsDisable": "Pritisnite donji gumb kako bi onemogućili autorizaciju putem otiska prsta",
"buttonInstructionsEnable": "Pritisnite donji gumb kako bi omogućili autorizaciju putem otiska prsta.",
- "buttonInstructionsDisableIPhoneX": "Pritisnite donji gumb kako bi onemogućili Face ID.",
- "buttonInstructionsEnableIPhoneX": "Pritisnite donji gumb kako bi omogućili Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Pritisnite donji gumb kako bi onemogućili Face ID",
+ "buttonInstructionsEnableIPhoneX": "Pritisnite donji gumb kako bi omogućili Face ID",
"instructionsLogin": "Dodirnite čitač otiska prstiju za prijavu"
},
"transferConfirmation": {
"youAreAbout": "Poslat ćete {{contents}} na adresu",
- "aMessage": "poruka"
+ "aMessage": "poruka",
+ "fromAccount": "S {{selectedAccountName}}",
+ "toAddress": "Na adresu",
+ "sendingAMessage": "Šaljem poruku",
+ "sendingAnEmptyMessage": "Šaljem praznu poruku"
},
"twoFA": {
"wrongCode": "Pogrešan kod",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Izvezi SeedVault",
- "seedVaultExplanation": "SeedVault je kodirana datoteka namijenjena spremanju vašeg seed-a na siguran način. Seed je kodiran i zaštićen lozinkom, te mu se ne može pristupiti bez lozinke.",
+ "seedVaultExplanation": "SeedVault je kodirana datoteka namijenjena spremanju vašeg seed-a na siguran način. Seed je kodiran i zaštićen lozinkom, te mu se ne može pristupiti bez te lozinke.",
"seedVaultWarning": "Pobrinite se da napravite sigurnosne kopije datoteke, te ih pohranite na više mjesta (npr. hard disk, oblak, USB). Ako izgubite ovu datoteku, a niste pohranili svoj seed na nekom drugom mjestu, izgubit ćete svoje IOTA-e.",
"exportFail": "Izvoz SeedVault-a neuspješan",
"exportFailExplanation": "Došlo je do greške prilikom izvoza SeedVault-a. Molimo provjerite da li imate sva potrebna ovlaštenja i dovoljno slobodnog prostora na disku.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Vaš seed je uspješno uvezen.",
"saveToDownloadFolder": "Spremi u Download mapu",
"importSeedVault": "Uvezi SeedVault",
- "dropSeedVaultHere": "Ovdje ispustite SeedVault <1>1> ili kliknite da bi ga potražili na računalu",
+ "dropInstructions": "Ovdje dovucite te ispustite SeedVault <1>1> ili kliknite da bi ga potražili na uređaju.\nAlternativno možete označiti i dovući Seed iz tekst editora.",
+ "dropActive": "Ispustite SeedVault/Seed ovdje",
"enterKeyExplanation": "Unesite SeedVault lozinku kako biste ga otvorili",
"noSeedFound": "SeedVault ne sadrži valjani seed",
"noSeedFoundExplanation": "SeedVault je prazan ili sadrži seed u neispravnom formatu.",
"seedFileError": "Neuspješno otvaranje SeedVault-a",
"seedFileErrorExplanation": "Došlo je do greške prilikom otvaranja SeedVault-a. Ako ste odabrali ispravnu datoteku moguće je da je oštećena.",
- "seedVaultKeyExplanation": "Prvo trebamo osigurati vaš SeedVault. Molimo odaberite lozinku za enkripciju vaše SeedVault datoteke. Ova lozinka bit će potrebna za ponovni pristup sigurnosnoj kopiji vašeg seed-a koja se nalazi u SeedVault-u. Možete koristiti istu lozinku koju koristite za pristup Trinity novčaniku."
+ "seedVaultKeyExplanation": "Prvo trebamo osigurati vaš SeedVault. Molimo odaberite lozinku za enkripciju vaše SeedVault datoteke. Ova lozinka bit će potrebna za ponovni pristup sigurnosnoj kopiji vašeg seed-a koja se nalazi u SeedVault-u.",
+ "retypeKey": "Ponovno unesite lozinku"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Priprema transakcija",
"gettingTransactionsToApprove": "Dohvat transakcija za odobriti",
"proofOfWork": "Završetak PoW-a",
- "broadcasting": "Emitiranje"
+ "broadcasting": "Emitiranje",
+ "transferComplete": "Transakcija dovršena"
},
"snapshotTransition": {
"cannotCompleteTransition": "Nije bilo moguće izvršiti snapshot tranziciju",
@@ -669,7 +687,8 @@
"transition": "Tranzicija",
"transitioning": "Tranzicija snapshot-a u tijeku.",
"generatingAndDetecting": "Generiranje adresa i detektiranje salda.",
- "attaching": "Pridodavanje adresa na Tangle."
+ "attaching": "Pridodavanje adresa na Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Uspješno automatsko popunjavanje",
@@ -706,8 +725,8 @@
"completeSetup": "Završi postavljanje"
},
"proxy": {
- "proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxy": "Korištenje proxy postavka sustava",
+ "proxyExplanation": "Detektiraj i koristi mrežne proxy postavke sustava. Zatvori te ponovno pokreni Trinity nakon promjene ove postavke."
},
"notifications": {
"notifications": "Obavijesti",
diff --git a/src/shared/locales/hu/translation.json b/src/shared/locales/hu/translation.json
index bb2f3e9496..4ecadfcfab 100644
--- a/src/shared/locales/hu/translation.json
+++ b/src/shared/locales/hu/translation.json
@@ -19,7 +19,7 @@
"invalidResponse": "Csomóponti hiba",
"invalidResponseExplanation": "A csomópont hibát jelzett. Kérjük, próbáljon egy másik csomópontot választani.",
"invalidResponseFetchingAccount": "A csomópont hibát jelzett a számla adatainak lekérése közben. Próbáljon egy másik csomópontot választani.",
- "invalidResponseFetchingAccountDesktop": "The node returned an error while fetching your account information. If your problem persists, try changing node or disabling your system proxy in Trinity Settings.",
+ "invalidResponseFetchingAccountDesktop": "A csomópont hibát jelzett a számlaadatok betöltése közben. Ha a hiba továbbra is fennáll, próbáljon egy másik csomópontra váltani vagy kapcsolja ki a proxy szerver használatát a beállítások között.",
"nodeOutOfSync": "A csomópont nincs szinkronban",
"nodeOutOfSyncExplanation": "A kiválasztott csomópont nincs szinkronban. Próbálja újra vagy használjon másik csomópontot.",
"thisNodeOutOfSync": "Ez a csomópont nincs szinkronban. Próbálja újra vagy használjon másik csomópontot.",
@@ -74,6 +74,8 @@
"wallet": "Tárca",
"all": "Összes",
"sent": "Elküldött",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Fogadott",
"sending": "Küldés...",
"receiving": "Fogadás...",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "FIGYELEM: egyenleg található a már felhasznált címek egyikén",
"discordInformation": "Egy címről többször tranzakciót indítani nagyon veszélyes. Kérjük mihamarabb látogasson el a #help csatornára az IOTA Discord-on, hogy segítséget kaphasson, mit tehet ilyen esetben.",
"androidInsecureClipboardWarning": "Androidon a vágólap használata nem biztonságos.",
- "androidCopyPasteWarning": "Soha ne kivágás/beillesztés műveletekkel adja meg mester jelszavát Android készüléken.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Nem fogom kivágni/beilleszteni a mester jelszavam",
"mustBeStoredAppropriately": "A mester jelszót megfelelő módon kell tárolni.",
"deviceMayBecomeUnresponsive": "Előfordulhat, hogy a készüléke egy ideig nem reagál majd.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Kulcstár-hiba",
"errorAccessingKeychainExplanation": "A kulcstár nem hozzáférhető, így a jelszó nem tárolható biztonságosan.",
"mainWallet": "Elsődleges számla",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "Új frissítés érhető el",
"shouldUpdateExplanation": "Egy új szoftverfrissítés jelent meg. Ajánlott az alkalmazást a legújabb verzióra frissíteni.",
"forceUpdate": "Frissítse az alkalmazást a folytatáshoz",
- "forceUpdateExplanation": "Egy kritikus hibát javító frissítés jelent meg. Kérjük, frissítse most az alkalmazást."
+ "forceUpdateExplanation": "Egy kritikus hibát javító frissítés jelent meg. Kérjük, frissítse most az alkalmazást.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "A mester jelszó érvénytelen karaktereket tartalmaz",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "A jelszónak minimum {{minLength}} karakterből kell állnia. A jelenleg megadott jelszó {{currentLength}} karakter hosszú. Kérjük, próbálja újra.",
"passwordMismatch": "A jelszavak nem egyeznek meg",
"passwordMismatchExplanation": "A megadott jelszavak nem egyeznek meg. Kérjük, próbálja újra.",
- "anEncryptedCopy": "A mester jelszavát titkosított formában fogjuk tárolni a készülékén. A jelenleg megadott jelszót fogja tudni használni a jövőben a tárca megnyitásához.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Jelszó újra"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Belépés",
"setNode": "Csomópont beállítása",
"whyBiometricDisabled": "Miért van a biometrikus azonosítás kikapcsolva?",
- "whyBiometricDisabledExplanation": "A biometrikus azonosítás az alkalmazás indításakor az Ön biztonsága érdekében nem elérhető. Ha a Trinity esetleges tétlenség után automatikusan kijelentkeztette, akkor tudja használja a biometrikus azonosítást az ismételt bejelentkezéshez."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Mester jelszó betöltése első alkalommal.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Soha, senkivel ne ossza meg a mester jelszavát.",
"iotaLogo": "IOTA logó",
- "print": "Nyomtat",
+ "print": "Print",
"paperConvenience": "A mester jelszó papírra nyomtatása egy kényelmes módja annak tárolására.",
"publicInsecure": "De vegye figyelembe, hogy nyilvános nyomtató használata, különösen ha ingyenesen elérhető nyilvános WiFi-n keresztül nyomtatna, nem biztonságos.",
- "tapCheckboxes": "Kérjük, az elfogadáshoz jelölje be az alábbi négyzeteket.",
- "wifiCheckbox": "Nem fogok ingyenesen elérhető nyilvános WiFi-n keresztül nyomtatni",
- "printerCheckbox": "Nem fogok nyilvánosan elérhető nyomtatón nyomtatni"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Ön címe",
@@ -285,8 +292,6 @@
"generateNewAddress": "Új cím generálása",
"noAddresses": "Nincs cím",
"spent": "Elköltve",
- "missingPermission": "Fájl hozzáférési engedély szükséges",
- "missingPermissionExplanation": "A QR kód megosztásához szükség van a fájlrendszerhez való hozzáféréshez.",
"tag": "Címke",
"generateAnAddress": "Új cím generálása",
"generateAnAddressTitle": "Új cím generálása",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Írja le a mester jelszót",
"youCanHighlightCharacters": "9 karaktert emelhet ki egyszerre",
"printBlankWallet": "Mester jelszó nyomtatvány minta nyomtatása",
- "whatIsChecksum": "Minden mester jelszóhoz tartozik egy 3 karakterből álló ellenőrző összeg",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Elmentettem a mester jelszót",
"checksumExplanation": "Amikor egy új mester jelszót ad hozzá a tárcához, mindig győződjön meg arról, hogy a tárca által generált ellenőrző összeg megegyezik a korábban feljegyzett ellenőrző összeggel.",
"mustSaveYourSeed": "<0><0>A mester jelszaváról biztonsági másolatot kell készítenie0><1>legalább egyféleképp1><2>az alább felsorolt lehetőségek közül.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Küldés időtartama",
"addressPasteDetected": "Cím másolás érzékelve",
"addressPasteExplanation": "Úgy tűnik bemásolt egy címet. Kérjük, győződjön meg arról, hogy valóban erre a címre kíván küldeni.",
- "invalid": "Érvénytelen"
+ "invalid": "Érvénytelen",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Kérjük, adjon meg egy nevet",
@@ -446,7 +453,8 @@
"empty": "Üres",
"retrying": "Újrapróbálkozás",
"yesterday": "Tegnap",
- "promotingAnotherBundle": "Újabb tranzakciós csomag előrehelyezése"
+ "promotingAnotherBundle": "Újabb tranzakciós csomag előrehelyezése",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Mester jelszó megtekintése",
@@ -478,7 +486,7 @@
"pow": "Kiszabott munka elvégzése",
"autoPromotion": "Auto-tranzakció előrehelyezés",
"autoPromotionExplanation": "Az automatikus tranzakció előrehelyezés segítségével a tranzakciók hamarabb teljesülhetnek. Engedélyezze ezt a beállítást, ha a tranzakciói sokáig nem teljesülnek.",
- "autoPromotionPoW": "Az automatikus tranzakció előrehelyezés csak azon csomópontok esetén lehetséges, melyek támogatják a kiszabott munka távoli elvégzését."
+ "autoPromotionPoW": "Az automatikus tranzakció előrehelyezés csak azon csomópontok esetén lehetséges, amelyek támogatják a kiszabott munka távoli elvégzését."
},
"advancedThemeCustomisation": {
"background": "Háttér",
@@ -504,18 +512,21 @@
"currency": "Pénznem"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Biztosan ki szeretne jelentkezni?"
+ "logoutConfirmation": "Biztosan ki szeretne jelentkezni?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "QR kód beolvasása"
},
"unitInfoModal": {
- "unitSystem": "Mértékegységek",
+ "unitSystem": "Unit System",
"trillion": "Trillió",
"billion": "Milliárd",
"million": "Millió",
"thousand": "Ezer",
- "one": "Egy"
+ "one": "Egy",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Miért nem tudom a teljes egyenlegem elkölteni?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Számla szinkronizálása."
},
"useExistingSeed": {
- "title": "Adjon meg egy mester jelszót és egy számlanevet.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Helytelen mester jelszó formátum",
"validSeedExplanation": "A mester jelszónak pontosan 81 karakter hosszúnak kell lennie, valamint csak nagy A-Z betűkből és a 9-es számjegyből állhat."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Készített biztonsági másolatot a mester jelszaváról?",
- "alreadyHave": "Készítettem biztonsági másolatot a mester jelszavamról",
- "reenterSeed": "A következő lépésben a rendszer kérni fogja, hogy adja meg újra a mester jelszavát.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Ha nem rendelkezik biztonsági másolattal a mester jelszaváról, és a készüléke meghibásodik, az összes IOTA-ját elveszíti.",
"pleaseConfirm": "Kérjük, erősítse meg, hogy biztonságosan eltárolta a mester jelszavát."
},
@@ -572,15 +583,19 @@
"status": "Állapot",
"fingerprintUnavailable": "Biometrikus azonosítás nem elérhető",
"fingerprintUnavailableExplanation": "A készüléke nem támogatja a biometrikus azonosítást, vagy a készülék beállításai között nem lett engedélyezve.",
- "buttonInstructionsDisable": "Kérjük, nyomja meg az alábbi gombot az ujjlenyomat-azonosítás letiltásához.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Kérjük, nyomja meg az alábbi gombot az ujjlenyomat-azonosítás engedélyezéséhez.",
- "buttonInstructionsDisableIPhoneX": "Kérjük, nyomja meg az alábbi gombot a Face ID letiltásához.",
- "buttonInstructionsEnableIPhoneX": "Kérjük, nyomja meg az alábbi gombot a Face ID engedélyezéséhez.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Érintse meg az ujjlenyomat leolvasót a bejelentkezéshez"
},
"transferConfirmation": {
"youAreAbout": "Ön {{contents}} összeget készül elküldeni az alábbi címre",
- "aMessage": "egy üzenet"
+ "aMessage": "egy üzenet",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Hibás kód",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "SeedVault exportálása",
- "seedVaultExplanation": "A SeedVault egy titkosított fájl a mester jelszavának biztonságos tárolásához. A mester jelszavát egy SeedVault fájlhoz megadott jelszóval titkosítjuk és a jelszó nélkül a mester jelszó semmilyen módon nem visszafejthető.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Kérjük, készítsen biztonsági másolatot a SeedVault fájlról több helyre is (pl. merevlemez, felhő tárhely, pendrive). Ha elveszíti ezt a fájlt, és nem tárolta el máshol a mester jelszavát, elveszíti az összes IOTA-ját.",
"exportFail": "SeedVault exportálása sikertelen",
"exportFailExplanation": "Nem sikerült a SeedVault fájl exportálása. Kérjük, győződjön meg arról, hogy van joga a megadott helyre írni és van elegendő tárhelye.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "A mester jelszavát biztonságosan tároltuk.",
"saveToDownloadFolder": "Mentés a letöltések mappába",
"importSeedVault": "SeedVault importálása",
- "dropSeedVaultHere": "Húzza be ide <1>1> a SeedVault fájlt vagy klikkeljen a tallózáshoz",
+ "dropInstructions": "Húzza ide a SeedVault fájlt vagy a kijelölt mesterjelszót <1>1> vagy klikkeljen a tallózáshoz",
+ "dropActive": "Húzza ide a SeedVault fájlt vagy a kijelölt mester jelszót",
"enterKeyExplanation": "Adja meg a SeedVault jelszavát",
"noSeedFound": "Érvénytelen mester jelszó a SeedVault fájlban",
"noSeedFoundExplanation": "A SeedVault fájl üres vagy érvénytelen formátumú mester jelszót tartalmaz.",
"seedFileError": "SeedVault fájl megnyitás sikertelen",
"seedFileErrorExplanation": "Nem sikerült megnyitni a SeedVault fájlt. Ha biztosan jó fájlt adott meg, lehetséges, hogy a fájl megsérült.",
- "seedVaultKeyExplanation": "A mester jelszavát egy jelszóval védett ún. SeedVault fájlban tároljuk. Kérjük, válasszon egy jelszót a fájl titkosításához. Erre a jelszóra akkor lesz szüksége, ha a mester jelszavát a titkosított SeedVault biztonsági mentésből kívánja betölteni. Nyugodtan használhatja ugyanazt a jelszót, amelyet a Trinity tárcába való belépéshez is használ."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "Piaci kapitalizáció",
@@ -655,7 +672,8 @@
"preparingTransfers": "Tranzakciók előkészítése",
"gettingTransactionsToApprove": "Ellenőrizendő tranzakciók lekérése",
"proofOfWork": "Kiszabott munka elvégzése",
- "broadcasting": "Tranzakció elküldése"
+ "broadcasting": "Tranzakció elküldése",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Pillanatkép utáni egyenlegátvezetés sikertelen",
@@ -669,7 +687,8 @@
"transition": "Egyenlegátvezetés",
"transitioning": "Egyenlegátvezetés pillanatkép készítése után.",
"generatingAndDetecting": "Címek előállítása és az egyenleg átvezetése.",
- "attaching": "Címek hozzácsatolása a Tangle-höz."
+ "attaching": "Címek hozzácsatolása a Tangle-höz.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automatikus kitöltés sikeres",
@@ -706,8 +725,8 @@
"completeSetup": "Beállítások befejezése"
},
"proxy": {
- "proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxy": "Rendszer proxy használata",
+ "proxyExplanation": "Rendszer proxy automatikus felismerése és beállítása. Zárja be majd nyissa meg újra a tárcát, hogy a beállítás érvényre jusson."
},
"notifications": {
"notifications": "Értesítések",
diff --git a/src/shared/locales/id/translation.json b/src/shared/locales/id/translation.json
index f6df6552c2..b967d6f8f8 100644
--- a/src/shared/locales/id/translation.json
+++ b/src/shared/locales/id/translation.json
@@ -74,6 +74,8 @@
"wallet": "Dompet",
"all": "Semua",
"sent": "Terkirim",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Diterima",
"sending": "Mengirim",
"receiving": "Menerima",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "PERINGATAN: Dana ada di alamat yang sudah digunakan",
"discordInformation": "Mengirim dari alamat yang sama lebih dari sekali sangat berbahaya. Silahkan ke Channel #help di Discord untuk mengetahui lebih lanjut.",
"androidInsecureClipboardWarning": "Android tidak menyediakan Papan Klip yang aman.",
- "androidCopyPasteWarning": "Jangan pernah copy/paste Seed anda di perangkat Android.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Saya tidak akan copy/paste Seed saya",
"mustBeStoredAppropriately": "Ini harus disimpan dengan sebaiknya.",
"deviceMayBecomeUnresponsive": "Perangkat anda mungkin tidak responsif dalam beberapa saat.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed berisi karakter yang tidak valid",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Kata sandi harus setidaknya {{minLength}} karakter. Kata Sandi Anda adalah {{currentLength}} karakter. Silahkan coba lagi.",
"passwordMismatch": "Kata sandi tidak sama",
"passwordMismatchExplanation": "Kata sandi yang Anda masukkan tidak sama. Silahkan coba lagi.",
- "anEncryptedCopy": "Salinan dari Seed yang terenkripsi akan disimpan di perangkat anda. Anda akan menggunakan kata sandi ini untuk mengakses dompet anda.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Ketik ulang kata sandi"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Masuk",
"setNode": "Set Node",
"whyBiometricDisabled": "Kenapa otentikasi sidik jari dimatikan?",
- "whyBiometricDisabledExplanation": "Biometrik otentikasi dimatikan pertama kali untuk keamanan Anda. Trinity akan mengeluarkan anda bila tidak aktif. Anda dapat masuk kembali dengan otentikasi biometrik."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Menyiapkan Seed untuk pertama kalinya.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Jangan pernah memberitahukan Seed Anda dengan siapa pun.",
"iotaLogo": "Logo IOTA",
- "print": "CETAK",
+ "print": "Print",
"paperConvenience": "Mencetak Seed ke kertas adalah cara yang mudah untuk menyimpan.",
"publicInsecure": "Tetapi mencetak dengan Wifi atau printer publik tidak aman.",
- "tapCheckboxes": "Silahkan tekan Checkbox dibawah ini untuk konfirmasi.",
- "wifiCheckbox": "Saya tidak akan mencetak dari wifi publik",
- "printerCheckbox": "Saya tidak akan mencetak dari printer publik"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Alamat Anda",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "TIDAK ADA ALAMAT",
"spent": "Dihabiskan",
- "missingPermission": "Izin akses File System dibutuhkan",
- "missingPermissionExplanation": "Izin akses ke File System dibutuhkan untuk membagi QR codes.",
"tag": "Label",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Mari tulis Seed Anda",
"youCanHighlightCharacters": "Ada dapat menyoroti 9 karakter dalam satu waktu",
"printBlankWallet": "Cetak dompet kosong",
- "whatIsChecksum": "Setiap Seed terdiri dari 3 karakter Checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Saya telah menyimpan Seed",
"checksumExplanation": "Ketika menambah Seed ke dompet, pastikan checksum dari dompet sama dengan yang anda tulis.",
"mustSaveYourSeed": "<0><0>Anda harus menyimpang Seed dengan 0><1>setidaknya1><2> salah satu opsi dibawah ini.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Waktu total",
"addressPasteDetected": "Terdeteksi alamat hasil salinan",
"addressPasteExplanation": "Sepertinya Anda telah menyalin alamat. Pastikan alamat sama dengan yang ingin Anda kirim.",
- "invalid": "SALAH"
+ "invalid": "SALAH",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Mari tambahkan nama",
@@ -446,7 +453,8 @@
"empty": "Kosong",
"retrying": "Mencoba lagi",
"yesterday": "Kemarin",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Lihat seed",
@@ -504,18 +512,21 @@
"currency": "Mata Uang"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Yakin ingin keluar?"
+ "logoutConfirmation": "Yakin ingin keluar?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Memindai kode QR"
},
"unitInfoModal": {
- "unitSystem": "Sistem Unit",
+ "unitSystem": "Unit System",
"trillion": "Trilyun",
"billion": "Miliar",
"million": "Juta",
"thousand": "Ribu",
- "one": "Salah satu"
+ "one": "Salah satu",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Mengapa saya tidak bisa menghabiskan saldo saya?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sinkronkan akun Anda."
},
"useExistingSeed": {
- "title": "Masukkan nama akun.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Salah format Seed",
"validSeedExplanation": "Seed valid harus 81 karakter terdiri dari A-Z atau 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Apa Anda telah menyimpan Seed?",
- "alreadyHave": "Saya telah menyelamatkan saya benih",
- "reenterSeed": "Langkah selanjutnya anda akan ditanya untuk memasukan Seed kembali.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Jika anda belum menyimpan Seed dan perangkat rusak, Anda akan kehilangan IOTA.",
"pleaseConfirm": "Silahkan konfirmasi bahwa Seed sudah Anda simpan dengan aman."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Otentikasi biometrik tidak tersedia",
"fingerprintUnavailableExplanation": "Perangkat anda tidak mendukung otentikasi biometrik atau belum dikonfigurasi di pengaturan perangkat.",
- "buttonInstructionsDisable": "Tekan tombol dibawah ini untuk menonaktifkan autentikasi sidik jari.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Tekan tombol dibawah ini untuk mengaktifkan autentikasi sidik jari.",
- "buttonInstructionsDisableIPhoneX": "Tekan tombol di bawah ini untuk mematikan Face ID.",
- "buttonInstructionsEnableIPhoneX": "Tekan tombol di bawah ini untuk mengaktifkan Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Tekan pemindai sidik jari untuk masuk"
},
"transferConfirmation": {
"youAreAbout": "Anda akan mengirim {{contents}} ke alamat",
- "aMessage": "pesan"
+ "aMessage": "pesan",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Kode salah",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Ekspor SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Pastikan anda buat cadangan di beberapa lokasi (seperti: Hard disk, Cloud, USB). Jika anda kehilangan file dan tidak mempunyai cadangan. Anda akan kehilangan IOTA.",
"exportFail": "Gagal ekspor SeedVault",
"exportFailExplanation": "Terjadi kesalahan mengekspor SeedVault. Pastikan anda mempunyai izin yang valid dan cukup ruang.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Impor SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault tidak mengandung Seed",
"noSeedFoundExplanation": "SeedVault kosong atau tidak mempunyai format Seed yang valid.",
"seedFileError": "Gagal membuka SeedVault",
"seedFileErrorExplanation": "Gagal membuka SeedVault. Jika ini benar, file ini mungkin rusak.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Menyiapkan transfer",
"gettingTransactionsToApprove": "Menyiapkan transaksi untuk disetujui",
"proofOfWork": "Menyelesaikan Proof of Work",
- "broadcasting": "Menyiarkan"
+ "broadcasting": "Menyiarkan",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Tidak dapat menyelesaikan transisi snapshot",
@@ -669,7 +687,8 @@
"transition": "Transisi",
"transitioning": "Transisi untuk Snapshot.",
"generatingAndDetecting": "Menghasilkan alamat dan mendeteksi saldo.",
- "attaching": "Melampirkan alamat-alamat ke Tangle."
+ "attaching": "Melampirkan alamat-alamat ke Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Isi otomatis sukses",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifikasi",
diff --git a/src/shared/locales/it/translation.json b/src/shared/locales/it/translation.json
index 250aac0383..3f1c2e7b2c 100644
--- a/src/shared/locales/it/translation.json
+++ b/src/shared/locales/it/translation.json
@@ -19,7 +19,7 @@
"invalidResponse": "Errore di nodo",
"invalidResponseExplanation": "Il nodo ha restituito un errore. Provare a cambiare il nodo.",
"invalidResponseFetchingAccount": "Il nodo ha restituito un errore durante il recupero di informazioni del tuo conto. Prova a cambiare nodo.",
- "invalidResponseFetchingAccountDesktop": "The node returned an error while fetching your account information. If your problem persists, try changing node or disabling your system proxy in Trinity Settings.",
+ "invalidResponseFetchingAccountDesktop": "Il nodo ha restituito un errore mentre si reperivano i dati del tuo conto. Se il problema persiste, prova a cambiare il nodo o a disabilitare l'uso del proxy nelle impostazioni di Trinity.",
"nodeOutOfSync": "Nodo non sincronizzato",
"nodeOutOfSyncExplanation": "Il nodo attualmente selezionato non è sincronizzato. Si prega di cambiare il nodo o riprovare.",
"thisNodeOutOfSync": "Questo nodo non è sincronizzato. Si prega di cambiare il nodo o riprovare.",
@@ -74,6 +74,8 @@
"wallet": "Portafoglio",
"all": "Tutti",
"sent": "Inviato",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Ricevuto",
"sending": "Invio",
"receiving": "Ricezione",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "AVVISO: Fondi su indirizzi spesi",
"discordInformation": "È pericoloso inviare dallo stesso indirizzo più di una volta. Consulta il canale #help su Discord per scoprire cosa si può fare.",
"androidInsecureClipboardWarning": "Android non fornisce una copia negli Appunti sicura.",
- "androidCopyPasteWarning": "Mai copiare/incollare il vostro seme su un dispositivo Android.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Non farò copia/incolla del mio seme",
"mustBeStoredAppropriately": "Deve essere memorizzato in modo appropriato.",
"deviceMayBecomeUnresponsive": "Il dispositivo potrebbe non rispondere per un po'.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Errore di portachiavi",
"errorAccessingKeychainExplanation": "Non è stato possibile accedere al portachiavi per l'archiviazione sicura.",
"mainWallet": "CONTO PRINCIPALE",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "E' disponibile un nuovo aggiornamento",
"shouldUpdateExplanation": "È stato rilasciato un nuovo aggiornamento. Si consiglia di aggiornare all'ultima versione.",
"forceUpdate": "Aggiornare l'app per continuare",
- "forceUpdateExplanation": "È stato rilasciato un aggiornamento critico. Si prega di aggiornare l'app ora."
+ "forceUpdateExplanation": "È stato rilasciato un aggiornamento critico. Si prega di aggiornare l'app ora.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Il seme contiene caratteri non validi",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "La password deve essere almeno {{minLength}} caratteri. Attualmente è {{currentLength}} caratteri. Si prega di riprovare.",
"passwordMismatch": "Le password non corrispondono",
"passwordMismatchExplanation": "Le password immesse non corrispondono. Si prega di riprovare.",
- "anEncryptedCopy": "Una copia crittografata del tuo seme sarà memorizzata sul dispositivo. Userai questa password per accedere in futuro al tuo portafoglio.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Reinserisci la password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Accedi",
"setNode": "Seleziona nodo",
"whyBiometricDisabled": "Perché è disattivata l'autenticazione biometrica?",
- "whyBiometricDisabledExplanation": "L'accesso biometrico è disattivato al primo avvio dell'app per la tua sicurezza. Durante l'uso di Trinity, verrai disconnesso in caso di inattività. Allora ti sarà possibile accedere nuovamente con l'autenticazione biometrica."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Carico il seme per la prima volta.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Non condividere mai il tuo seme con nessuno.",
"iotaLogo": "Logo IOTA",
- "print": "STAMPA",
+ "print": "Print",
"paperConvenience": "Stampare una copia cartacea del tuo seme è un modo conveniente per memorizzarlo.",
"publicInsecure": "Ma stampare attraverso Wi-Fi pubblico o su una stampante pubblica è insicuro.",
- "tapCheckboxes": "Seleziona le caselle di controllo qui sotto per confermare.",
- "wifiCheckbox": "Non stamperò su una connessione Wi-Fi pubblica",
- "printerCheckbox": "Non stamperò su una stampante pubblica"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Il tuo indirizzo",
@@ -285,8 +292,6 @@
"generateNewAddress": "Genera un indirizzo",
"noAddresses": "NESSUN INDIRIZZO",
"spent": "Speso",
- "missingPermission": "È richiesto l'accesso al file system",
- "missingPermissionExplanation": "L'accesso al file system è necessario al fine di condividere codici QR.",
"tag": "Etichetta",
"generateAnAddress": "Genera un indirizzo",
"generateAnAddressTitle": "Genera un indirizzo",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Ti aiuto a scrivere il tuo seme",
"youCanHighlightCharacters": "È possibile evidenziare 9 caratteri alla volta",
"printBlankWallet": "Stampare un portafoglio vuoto",
- "whatIsChecksum": "Ogni seme ha un corrispondente checksum di 3 caratteri",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Ho salvato il mio seme",
"checksumExplanation": "Ogni volta che aggiungi un seme al tuo portafoglio, devi assicurarti che il checksum generato dal portafoglio combacia con quello che avevi annotato.",
"mustSaveYourSeed": "<0><0>È necessario che salvi il tuo seme con 0><1>almeno una1><2> delle opzioni elencate di seguito2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Tempo totale",
"addressPasteDetected": "Rilevato indirizzo da incollare",
"addressPasteExplanation": "Sembra che hai incollato un indirizzo. Assicurati che l'indirizzo incollato corrisponda a quello al quale desideri inviare.",
- "invalid": "NON VALIDO"
+ "invalid": "NON VALIDO",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Aggiungiamo un nome",
@@ -446,7 +453,8 @@
"empty": "Vuota",
"retrying": "Sto riprovando",
"yesterday": "Ieri",
- "promotingAnotherBundle": "Promozione di un altro pacchetto"
+ "promotingAnotherBundle": "Promozione di un altro pacchetto",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Visualizza seme",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Sei sicuro di volerti disconnettere?"
+ "logoutConfirmation": "Sei sicuro di volerti disconnettere?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scansionare il proprio codice QR"
},
"unitInfoModal": {
- "unitSystem": "SISTEMA DI UNITÀ",
+ "unitSystem": "Unit System",
"trillion": "Mille miliardi",
"billion": "Miliardi",
"million": "Milioni",
"thousand": "Migliaia",
- "one": "Unità"
+ "one": "Unità",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Perché non posso spendere tutto il contenuto del portafoglio?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sto sincronizzando il tuo conto."
},
"useExistingSeed": {
- "title": "Inserisci un seme e un nome di conto.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Formato di seme non corretto",
"validSeedExplanation": "Un seme valido consta di 81 caratteri e contiene solo A-Z o 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Hai salvato il tuo seme?",
- "alreadyHave": "Ho salvato il mio seme",
- "reenterSeed": "Nel passaggio successivo ti si richiederà di inserire nuovamente il tuo seme.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Se non hai eseguito il backup del tuo seme e il dispositivo si rompe, perderai tutti i tuoi IOTA.",
"pleaseConfirm": "Si prega di confermare che hai memorizzato in modo sicuro il tuo seme."
},
@@ -572,15 +583,19 @@
"status": "Stato",
"fingerprintUnavailable": "Autenticazione biometrica non disponibile",
"fingerprintUnavailableExplanation": "Il tuo dispositivo non supporta l'autenticazione biometrica o non è stato configurato nelle impostazioni del dispositivo.",
- "buttonInstructionsDisable": "Premi il pulsante sotto per disabilitare l'autenticazione tramite impronta digitale.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Premi il pulsante sotto per abilitare l'autenticazione tramite impronta digitale.",
- "buttonInstructionsDisableIPhoneX": "Premere il pulsante qui sotto per disabilitare Face ID.",
- "buttonInstructionsEnableIPhoneX": "Premere il pulsante qui sotto per attivare Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Tocca il lettore di impronte digitali per accedere"
},
"transferConfirmation": {
"youAreAbout": "Stai per inviare {{contents}} all'indirizzo",
- "aMessage": "un messaggio"
+ "aMessage": "un messaggio",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Codice errato",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Esporta come SeedVault",
- "seedVaultExplanation": "Un SeedVault è un file crittografato per archiviare in modo sicuro il tuo seme. Il seme viene crittografato con la password del SeedVault e non è possibile accedere al seme senza la password.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Assicurarsi di eseguire un backup del file in più posizioni (per esempio hard disk, nel cloud, USB). Se perdi questo file e non hai archiviato il seme altrove, perderai i tuoi IOTA.",
"exportFail": "Esportazione come SeedVault fallita",
"exportFailExplanation": "Si è verificato un problema esportando il SeedVault. Assicurati di avere le autorizzazioni appropriate e spazio libero sufficiente.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Il seme è stato importato con successo.",
"saveToDownloadFolder": "Salva nella cartella Scaricamenti",
"importSeedVault": "Importa un SeedVault",
- "dropSeedVaultHere": "Trascinare il SeedVault qui <1>1> o fare clic per sfogliare",
+ "dropInstructions": "Trascinare un SeedVault o testo qui <1>1> o fare clic per sfogliare",
+ "dropActive": "Trascina qui un SeedVault o testo",
"enterKeyExplanation": "Immetti la tua password per accedere il SeedVault",
"noSeedFound": "Il SeedVault non contiene un seme valido",
"noSeedFoundExplanation": "Il SeedVault o è vuoto o contiene un seme in un formato non valido.",
"seedFileError": "Impossibile accedere il SeedVault",
"seedFileErrorExplanation": "Si è verificato un problema accedendo il SeedVault. Se è stato selezionato il file corretto questo potrebbe essere danneggiato.",
- "seedVaultKeyExplanation": "In primo luogo abbiamo bisogno di mettere in sicurezza il tuo SeedVault. Si prega di scegliere una password per crittografare il file. Avrai bisogno di questa password per recuperare il tuo seme dal SeedVault di backup. Sentiti libero di usare la stessa password che usi per Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparo i trasferimenti",
"gettingTransactionsToApprove": "Ottengo le transazioni da approvare",
"proofOfWork": "Completo la prova di lavoro",
- "broadcasting": "Trasmissione"
+ "broadcasting": "Trasmissione",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Non è possibile completare il passaggio allo snapshot",
@@ -669,7 +687,8 @@
"transition": "Transizione",
"transitioning": "Passaggio in corso allo snapshot.",
"generatingAndDetecting": "Generazione di indirizzi e rilevamento del saldo.",
- "attaching": "Attacco gli indirizzi al Tangle."
+ "attaching": "Attacco gli indirizzi al Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Riempimento automatico",
@@ -706,8 +725,8 @@
"completeSetup": "Completa la configurazione"
},
"proxy": {
- "proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxy": "Usa il proxy di rete del sistema",
+ "proxyExplanation": "Rileva e usa le impostazioni di sistema per il proxy di rete. Chiudere e riaprire il portafoglio dopo aver modificato questa impostazione."
},
"notifications": {
"notifications": "Notifiche",
diff --git a/src/shared/locales/ja/translation.json b/src/shared/locales/ja/translation.json
index bed2069709..7a2112ed65 100644
--- a/src/shared/locales/ja/translation.json
+++ b/src/shared/locales/ja/translation.json
@@ -74,6 +74,8 @@
"wallet": "ウォレット",
"all": "すべて",
"sent": "送金完了",
+ "youReceived": "受取完了",
+ "youSent": "送金完了",
"received": "受取完了",
"sending": "送金中",
"receiving": "受取中",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "警告:使用済みアドレスの資金です!",
"discordInformation": "同じアドレスから複数回送金するのは危険です。どうしたらいいのかはDiscordの#Japaneseチャンネルか#helpチャンネルにお尋ねください。",
"androidInsecureClipboardWarning": "Androidは安全なクリップボードを提供していません。",
- "androidCopyPasteWarning": "絶対にシードをAndroidデバイス上でコピー&ペーストしないでください。",
+ "androidCopyPasteWarning": "Androidデバイス上で、絶対にシードをコピー&ペーストしないでください。",
"willNotCopyPasteSeed": "私はシードをコピー&ペーストしません。",
"mustBeStoredAppropriately": "シードは適切に保管しなければなりません。",
"deviceMayBecomeUnresponsive": "しばらくの間、お使いのデバイスが応答しなくなることがあります。",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "キーチェーンに関するエラー",
"errorAccessingKeychainExplanation": "安全な保管に必要なキーチェーンにアクセスできません。",
"mainWallet": "メインアカウント",
+ "confirm": "確定",
+ "delete": "削除",
"shouldUpdate": "新しいアップデートがあります",
"shouldUpdateExplanation": "新しいアップデートがリリースされています。最新バージョンに更新することをお勧めします。",
"forceUpdate": "続けるにはアプリをアップデートしてください",
- "forceUpdateExplanation": "重要なアップデートがリリースされています。今すぐアプリを更新してください。"
+ "forceUpdateExplanation": "重要なアップデートがリリースされています。今すぐアプリを更新してください。",
+ "missingPermission": "ファイルシステム権限が必要です",
+ "missingPermissionExplanation": "この機能を実行するには、ファイルシステムへのアクセス権限が必要です。"
},
"addAdditionalSeed": {
"seedInvalidChars": "無効な文字を含んだシードです。",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "パスワードは少なくとも{{minLength}}文字以上にする必要があります。今は{{currentLength}}文字です。もう一度やり直してください。",
"passwordMismatch": "パスワードが一致しません。",
"passwordMismatchExplanation": "入力した 2 つのパスワードが一致しません、もう一度やり直してください。",
- "anEncryptedCopy": "暗号化されたシードのコピーがデバイスに保存されます。今後パスワードを使用してウォレットにアクセスします。",
+ "anEncryptedCopy": "これがメインウォレットのパスワードです。これを使ってログインします。",
"retypePassword": "パスワードを再入力してください。"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "ログイン",
"setNode": "ノードの設定",
"whyBiometricDisabled": "生体認証が無効になっている理由。",
- "whyBiometricDisabledExplanation": "生体認証によるログインはセキュリティ上、最初のアプリの読み込み時には無効になっています。Trinityを使用中、非アクティブが続くとログアウトします。その時には、生体認証を使ってログインすることができます。"
+ "whyBiometricDisabledExplanationPart1": "安全性のため、初回のアプリ起動時には生体認証が無効になっています。",
+ "whyBiometricDisabledExplanationPart2": "Trinityを使用していると、非アクティブのためにログアウトすることがあります。その時には、生体認証を使用して再度ログインすることができます。"
},
"loading": {
"loadingFirstTime": "初めてのシードを読み込んでいます。",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "シードは他の人に絶対に教えてはいけません。",
"iotaLogo": "IOTAロゴ",
- "print": "印刷",
+ "print": "印刷する",
"paperConvenience": "シードのコピーを紙に印刷して保存することは便利な方法です。",
"publicInsecure": "しかし、公共のWi-Fiや公共のプリンタでの印刷は安全ではないので行わないでください。",
- "tapCheckboxes": "確認するには、下の2つのチェックボックスをタップしてください。",
- "wifiCheckbox": "私は公共のWi-Fiで印刷しません。",
- "printerCheckbox": "私は公共のプリンタで印刷しません。"
+ "pleaseCheck": "印刷する前にチェックと確定をお願いいたします",
+ "wifiConfirmation": "私は公共のWi-Fiを使用していません",
+ "printerConfirmation": "私は公共のプリンタで印刷していません"
},
"receive": {
"yourAddress": "あなたのアドレス",
@@ -285,8 +292,6 @@
"generateNewAddress": "アドレスを生成",
"noAddresses": "アドレスなし",
"spent": "使用済",
- "missingPermission": "ファイルシステム権限が必要です。",
- "missingPermissionExplanation": "QRコードを共有するには、ファイルシステムへのアクセス権が必要です。",
"tag": "タグ",
"generateAnAddress": "アドレスを生成",
"generateAnAddressTitle": "アドレスを生成",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "シードを書き写しましょう。",
"youCanHighlightCharacters": "一度に9文字を強調表示しています。",
"printBlankWallet": "空のペーパーウォレットを印刷",
- "whatIsChecksum": "すべてのシードには対応する3文字のチェックサムがあります。",
+ "whatIsAChecksum": "チェックサムとは何か?",
+ "everySeedHasAChecksum": "すべてのシードには対応する3文字のチェックサムがあります。",
"iHavesavedMySeed": "バックアップ完了",
"checksumExplanation": "ウォレットにシードを追加するたびに、ウォレットによって生成されるチェックサムが、書き写したチェックサムと一致することを必ず確認してください。",
"mustSaveYourSeed": "<0><0>下の方法から0><1>最低一つ選んで1><2>シードを必ずバックアップしてください。2>0>"
@@ -345,7 +351,8 @@
"totalTime": "合計時間",
"addressPasteDetected": "アドレスのペーストを検出",
"addressPasteExplanation": "アドレスをペーストしたようです。送金先のアドレスと一致することを確かめてください。",
- "invalid": "無効"
+ "invalid": "無効",
+ "swipeToSend": "スワイプして送金する"
},
"setSeedName": {
"letsAddName": "アカウント名を追加してください。",
@@ -446,7 +453,8 @@
"empty": "空",
"retrying": "再試行中",
"yesterday": "昨日",
- "promotingAnotherBundle": "別のバンドルを促進中"
+ "promotingAnotherBundle": "別のバンドルを促進中",
+ "pleaseWait": "少々お待ちください。Trinityは他のバンドルを促進しています。"
},
"accountManagement": {
"viewSeed": "シードを表示",
@@ -504,18 +512,21 @@
"currency": "通貨"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "ログアウトしてもよろしいですか?"
+ "logoutConfirmation": "ログアウトしてもよろしいですか?",
+ "aboutToLogOut": "ログアウトしようとしています",
+ "areYouSure": "本当によろしいですか?"
},
"qrScanner": {
"scan": "QRコード読み取り"
},
"unitInfoModal": {
- "unitSystem": "単位系",
+ "unitSystem": "単位",
"trillion": "一兆",
"billion": "十億",
"million": "百万",
"thousand": "千",
- "one": "一"
+ "one": "一",
+ "unitInfoExplanation": "IOTAは通常100万(1Mi)の倍数で取得されますが、1i単位でも取引できます。"
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "どうして全ての残高を使えないのか?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "アカウントを同期しています。"
},
"useExistingSeed": {
- "title": "シードとアカウント名を入力してください。",
+ "title": "Enter an account name and seed",
"incorrectFormat": "不正確なシードの形式です。",
"validSeedExplanation": "有効なシードは81文字で、A〜Zまたは9のみを含む必要があります。"
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "シードのバックアップはされましたか?",
- "alreadyHave": "私はシードをバックアップしました。",
- "reenterSeed": "次のステップで、シードを再入力するよう求められます。",
+ "iHaveBackedUp": "私はシードを安全にバックアップしました",
+ "reenterSeed": "次のステップで、シードを再入力する必要があります。",
"reenterSeedWarning": "もし、シードをバックアップせずにデバイスが故障した場合、そのシードにあるIOTAはすべて失われます。",
"pleaseConfirm": "シードが安全に保管されていることを確認してください。"
},
@@ -572,15 +583,19 @@
"status": "ステータス",
"fingerprintUnavailable": "生体認証が利用できません。",
"fingerprintUnavailableExplanation": "お使いのデバイスは生体認証をサポートしていないか、デバイス設定で設定されていません。",
- "buttonInstructionsDisable": "指紋認証を無効にするには、下のボタンを押してください。",
+ "buttonInstructionsDisable": "指紋認証を無効にするには、下のボタンを押してください",
"buttonInstructionsEnable": "指紋認証を有効にするには、下のボタンを押してください。",
- "buttonInstructionsDisableIPhoneX": "顔認証を無効にするには、下のボタンを押してください。",
- "buttonInstructionsEnableIPhoneX": "顔認証を有効にするには、下のボタンを押してください。",
+ "buttonInstructionsDisableIPhoneX": "顔認証を無効にするには、下のボタンを押してください",
+ "buttonInstructionsEnableIPhoneX": "顔認証を有効にするには、下のボタンを押してください",
"instructionsLogin": "指紋リーダに触れてログインしてください。"
},
"transferConfirmation": {
"youAreAbout": "アドレスに {{contents}} を送信しようとしています。",
- "aMessage": "メッセージ"
+ "aMessage": "メッセージ",
+ "fromAccount": "{{selectedAccountName}}から",
+ "toAddress": "送信先アドレスへ",
+ "sendingAMessage": "メッセージを送信中",
+ "sendingAnEmptyMessage": "空のメッセージを送信中"
},
"twoFA": {
"wrongCode": "コードが間違っています。",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "シード金庫へ書き出す",
- "seedVaultExplanation": "シード金庫は、シードを安全に保管するための暗号化されたファイルです。シードはシード金庫鍵によって暗号化され、この鍵がなければアクセスできません。",
+ "seedVaultExplanation": "シード金庫は、シードをバックアップするための暗号化されたファイルです。シードはシード金庫鍵で暗号化されており、このシード金庫鍵なしではアクセスできません。",
"seedVaultWarning": "シード金庫を複数の場所(ハードドライブ、クラウド、USBなど)にバックアップしてください。シード金庫を紛失し、かつ他の場所にシードを保存していないと、IOTAが失われます。",
"exportFail": "シード金庫の書き出しに失敗しました",
"exportFailExplanation": "シード金庫を書き出す際に問題が発生しました。 適切な権限と十分な空き容量があることを確認してください。",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "シードは正常に読み込まれました。",
"saveToDownloadFolder": "ダウンロードフォルダに保存",
"importSeedVault": "シード金庫を読み込む",
- "dropSeedVaultHere": "シード金庫ファイルがある場合、ここにドラッグ&ドロップするか、<1>1>ここをクリックしてください。",
+ "dropInstructions": "シード金庫やテキストがある場合、ここ<1>1>に移動させるか、クリックして参照してください",
+ "dropActive": "シード金庫やテキストをここに移動させてください",
"enterKeyExplanation": "シード金庫を開くために、シード金庫鍵を入力してください",
"noSeedFound": "シード金庫に有効なシードが含まれていません",
"noSeedFoundExplanation": "シード金庫は空か、無効な形式のシードが含まれています。",
"seedFileError": "イオタ金庫を開けませんでした",
"seedFileErrorExplanation": "シード金庫を開く際に問題が発生しました。 正しいファイルを選択している場合、ファイルが破損している可能性があります。",
- "seedVaultKeyExplanation": "最初にシード金庫を保護する必要があります。シード金庫を暗号化するためのシード金庫鍵を選んでください。バックアップ用のシード金庫からシードを復元するには、このシード金庫鍵が必要です。シード金庫鍵はTrinityウォレットのパスワードと同じにできます。"
+ "seedVaultKeyExplanation": "最初にシード金庫を保護する必要があります。シード金庫を暗号化するためのシード金庫鍵を選んでください。バックアップ用のシード金庫からシードを復元するには、このシード金庫鍵が必要です。",
+ "retypeKey": "鍵を再入力してください"
},
"chart": {
"mcap": "時価総額",
@@ -655,7 +672,8 @@
"preparingTransfers": "送金を準備中",
"gettingTransactionsToApprove": "承認する取引を取得中",
"proofOfWork": "プルーフ・オブ・ワークを完了中",
- "broadcasting": "ブロードキャスト中"
+ "broadcasting": "ブロードキャスト中",
+ "transferComplete": "送金完了"
},
"snapshotTransition": {
"cannotCompleteTransition": "スナップショットの移行を完了できません。",
@@ -669,7 +687,8 @@
"transition": "移行",
"transitioning": "スナップショットを移行しています。",
"generatingAndDetecting": "アドレス生成と残高検出を行なっています。",
- "attaching": "タングルにアドレスを添付しています。"
+ "attaching": "タングルにアドレスを添付しています。",
+ "attachProgress": "{{totalAddresses}}のアドレス{{currentAddress}}を添付中"
},
"deepLink": {
"autofill": "自動入力成功",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "システムプロキシを使用",
- "proxyExplanation": "システム全体のネットワークプロキシ設定を検出して使用します。この設定を変更した後は、Trinityを再起動してください。"
+ "proxyExplanation": "システム全体のネットワークプロキシ設定を検出して使用します。この設定を変更した時は、Trinityを一度閉じてから再起動を行ってください。"
},
"notifications": {
"notifications": "通知設定",
diff --git a/src/shared/locales/ka/translation.json b/src/shared/locales/ka/translation.json
index 1b01f5c9d1..f6b8814723 100644
--- a/src/shared/locales/ka/translation.json
+++ b/src/shared/locales/ka/translation.json
@@ -74,6 +74,8 @@
"wallet": "საფულე",
"all": "All",
"sent": "გაგზავნილი",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "მიღებული",
"sending": "იგზავნება",
"receiving": "Receiving",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed contains invalid characters",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "Passwords do not match",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Loading seed for the first time.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Tag",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Currency"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have saved my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/kn/translation.json b/src/shared/locales/kn/translation.json
index 1e0b3a946e..5a6cf7118f 100644
--- a/src/shared/locales/kn/translation.json
+++ b/src/shared/locales/kn/translation.json
@@ -74,6 +74,8 @@
"wallet": "ವಾಲೆಟ್",
"all": "ಎಲ್ಲಾ",
"sent": "ಕಳುಹಿಸಲಾಗಿದೆ",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "ಸ್ವೀಕರಿಸಲಾಗಿದೆ",
"sending": "ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ",
"receiving": "ಸ್ವೀಕರಿಸಲಾಗುತ್ತಿದೆ",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "ಎಚ್ಚರಿಕೆ: ಖರ್ಚು ಮಾಡಿದ ವಿಳಾಸಗಳಲ್ಲಿ ಹಣ",
"discordInformation": "ಅದೇ ವಿಳಾಸದಿಂದ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ವ್ಯವಹರಿಸುವುದು ಅಪಾಯಕಾರಿ. ದಯವಿಟ್ಟು ನೀವು ಏನು ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಲು IOTA ಡಿಸ್ಕೋರ್ಡ್ನಲ್ಲಿ #help ಚಾನಲ್ಗೆ ಹೋಗಿ.",
"androidInsecureClipboardWarning": "ಆಂಡ್ರಾಯ್ಡ್ ಸುರಕ್ಷಿತ ಕ್ಲಿಪ್ಬೋರ್ಡ್ ಅನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.",
- "androidCopyPasteWarning": "ಆಂಡ್ರಾಯ್ಡ್ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ನಕಲಿಸಿಬೇಡಿ ಹಾಗು ಅಂಟಿಸಬೇಡಿ.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "ನನ್ನ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ನಾನು ನಕಲಿಸುವುದಿಲ್ಲ / ಅಂಟಿಸುವುದಿಲ್ಲ",
"mustBeStoredAppropriately": "ಅದನ್ನು ಸೂಕ್ತವಾಗಿ ಸಂಗ್ರಹಿಸಬೇಕು.",
"deviceMayBecomeUnresponsive": "ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ನಿಮ್ಮ ಸಾಧನ ಸ್ಪಂದಿಸದಿರಬಹುದು.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವು ಅಮಾನ್ಯ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿದೆ",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "ನಿಮ್ಮ ಗುಪ್ತಪದ ಕನಿಷ್ಠ {{minLength}} ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬೇಕು. ಇದು ಪ್ರಸ್ತುತ {{currentLength}} ಅಕ್ಷರಗಳ ಉದ್ದವಾಗಿದೆ. ದಯವಿಟ್ಟು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.",
"passwordMismatch": "ಗುಪ್ತಪದಗಳು ಹೊಂದುತ್ತಿಲ್ಲ",
"passwordMismatchExplanation": "ನೀವು ನಮೂದಿಸಿದ ಗುಪ್ತಪದಗಳು ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ. ದಯವಿಟ್ಟು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.",
- "anEncryptedCopy": "ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ನಕಲನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಭವಿಷ್ಯದಲ್ಲಿ ನಿಮ್ಮ ವಾಲೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ನೀವು ಈ ಗುಪ್ತಪದ ಅನ್ನು ಬಳಸುತ್ತೀರಿ.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "ಗುಪ್ತಪದವನ್ನು ಮತ್ತೆ ನಮೂದಿಸಿ"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "ಲಾಗ್ ಇನ್",
"setNode": "ನೋಡ್ ಹೊಂದಿಸಿ",
"whyBiometricDisabled": "ಬಯೋಮೆಟ್ರಿಕ್ ದೃಢೀಕರಣವನ್ನು ಏಕೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ?",
- "whyBiometricDisabledExplanation": "ನಿಮ್ಮ ಭದ್ರತೆಗಾಗಿ ಮೊದಲ ಅಪ್ಲಿಕೇಶನ್ ಲೋಡ್ನಲ್ಲಿ ಬಯೊಮೀಟ್ರಿಕ್ ಲಾಗಿನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಟ್ರಿನಿಟಿ ಬಳಸುವಾಗ, ನಿಷ್ಕ್ರಿಯತೆಗಾಗಿ ನೀವು ಲಾಗ್ ಔಟ್ ಆಗುತ್ತೀರಿ. ನಂತರ ನೀವು ಬಯೋಮೆಟ್ರಿಕ್ ದೃಢೀಕರಣದೊಂದಿಗೆ ಮತ್ತೆ ಪ್ರವೇಶಿಸಬಹುದು."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "ಮೊದಲ ಬಾರಿಗೆ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಯಾರೊಂದಿಗೂ ಹಂಚಿಕೊಳ್ಳಬೇಡಿ.",
"iotaLogo": "IOTA ಚಿಹ್ನೆ",
- "print": "ಮುದ್ರಿಸಿ",
+ "print": "Print",
"paperConvenience": "ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತ ಕಾಗದದ ನಕಲನ್ನು ಮುದ್ರಿಸುವುದು ಅದನ್ನು ಶೇಖರಿಸಿಡಲು ಅನುಕೂಲಕರ ಮಾರ್ಗವಾಗಿದೆ.",
"publicInsecure": "ಆದರೆ ಸಾರ್ವಜನಿಕ ವೈಫೈ ಅಥವಾ ಸಾರ್ವಜನಿಕ ಪ್ರಿಂಟರ್ನಲ್ಲಿ ಮುದ್ರಣ ಮಾಡುವುದು ಅಸುರಕ್ಷಿತವಾಗಿದೆ.",
- "tapCheckboxes": "ದಯವಿಟ್ಟು ಖಚಿತಪಡಿಸಲು ಕೆಳಗಿನ ಚೆಕ್ಬಾಕ್ಸ್ ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.",
- "wifiCheckbox": "ನಾನು ಸಾರ್ವಜನಿಕ ವೈಫೈನಲ್ಲಿ ಮುದ್ರಿಸುವುದಿಲ್ಲ",
- "printerCheckbox": "ನಾನು ಸಾರ್ವಜನಿಕ ಮುದ್ರಕದಲ್ಲಿ ಮುದ್ರಿಸುವುದಿಲ್ಲ"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "ನಿಮ್ಮ ವಿಳಾಸ",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "ವಿಳಾಸವಿಲ್ಲ",
"spent": "ಖರ್ಚು ಮಾಡಿದ",
- "missingPermission": "ಫೈಲ್ ವ್ಯವಸ್ಥೆ ಅನುಮತಿ ಅಗತ್ಯವಿದೆ",
- "missingPermissionExplanation": "QR ಸಂಕೇತಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಫೈಲ್ ವ್ಯವಸ್ಥೆಗೆ ಪ್ರವೇಶ ಅಗತ್ಯವಿರುತ್ತದೆ.",
"tag": "೨೭ ಅಕ್ಷರಗಳ ಕಿರು ಸಂದೇಶ",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಬರೆದಿಟ್ಟುಕೊಳ್ಳೋಣ",
"youCanHighlightCharacters": "ನೀವು ಒಂದು ಸಮಯದಲ್ಲಿ 9 ಅಕ್ಷರಗಳನ್ನು ಹೈಲೈಟ್ ಮಾಡಬಹುದು",
"printBlankWallet": "ಖಾಲಿ ವಾಲೆಟ್ ಅನ್ನು ಮುದ್ರಿಸಿ",
- "whatIsChecksum": "ಪ್ರತಿಯೊಂದು ಬೀಜವು ಅನುಗುಣವಾದ 3-ಪಾತ್ರದ ಖಾತೆ ಪರಿಶೀಲನೆಯನ್ನು ಹೊಂದಿರುತ್ತದೆ",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "ನಾನು ನನ್ನ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಉಳಿಸಿದೆ",
"checksumExplanation": "ನಿಮ್ಮ ವ್ಯಾಲೆಟ್ಗೆ ನೀವು ಬೀಜವನ್ನು ಸೇರಿಸಿದಾಗಲೆಲ್ಲ, ನೀವು ಬರೆದಿರುವ ಒಂದು ವಾಲೆಟ್ ನಿಂದ ಉತ್ಪಾದಿಸಿದ ಖಾತೆ ಪರಿಶೀಲನೆಯ ಸಂಕೇತವನ್ನು ಹೋಲಿಸಿ ನೀವು ಖಾತ್ರಿಪಡಿಸಿಕೊಳ್ಳಬೇಕು.",
"mustSaveYourSeed": "<0><0>ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾದ ಆಯ್ಕೆಗಳಲ್ಲಿ ನಿಮ್ಮ ಬೀಜವನ್ನು0><1>ಕನಿಷ್ಠ ಒಂದು1><2>ನೊಂದಿಗೆ ಬ್ಯಾಕ್ಅಪ್ ಮಾಡಬೇಕು.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "ಒಟ್ಟು ಸಮಯ",
"addressPasteDetected": "ವಿಳಾಸ ಅಂಟಿಯನ್ನು ಕಂಡುಹಿಡಿದಿದೆ",
"addressPasteExplanation": "ನೀವು ವಿಳಾಸವನ್ನು ಅಂಟಿಸಲಾಗಿದೆ ಎಂದು ತೋರುತ್ತಿದೆ. ನೀವು ಕಳುಹಿಸಲು ಬಯಸುವ ವಿಳಾಸವನ್ನು ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.",
- "invalid": "ಅಮಾನ್ಯವಾಗಿದೆ"
+ "invalid": "ಅಮಾನ್ಯವಾಗಿದೆ",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "ನಾವು ಒಂದು ಹೆಸರನ್ನು ಸೇರಿಸೋಣ",
@@ -446,7 +453,8 @@
"empty": "ಖಾಲಿ",
"retrying": "ಮರುಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ",
"yesterday": "ನೆನ್ನೆ ದಿನ",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ವೀಕ್ಷಿಸಿ",
@@ -504,18 +512,21 @@
"currency": "ಚಲಾವಣೆಯ ನಾಣ್ಯ"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "ಲಾಗ್ ಔಟ್ ಮಾಡಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?"
+ "logoutConfirmation": "ಲಾಗ್ ಔಟ್ ಮಾಡಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "ನಿಮ್ಮ QR ಸಂಕೇತವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ"
},
"unitInfoModal": {
- "unitSystem": "ಪ್ರಮಾಣ ವ್ಯವಸ್ಥೆ",
+ "unitSystem": "Unit System",
"trillion": "ಟ್ರಿಲಿಯನ್",
"billion": "ಶತಕೋಟಿ",
"million": "ಹತ್ತುಲಕ್ಷ",
"thousand": "ಸಾವಿರ",
- "one": "ಒಂದು"
+ "one": "ಒಂದು",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "ನನ್ನ ಸಂಪೂರ್ಣ ಖಾತೆಯ ಮೊತ್ತವನ್ನು ನಾನು ಏಕೆ ಕಳೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಒಡವಾಗುನಂಟು ಮಾಡಲಾಗುತ್ತಿದೆ."
},
"useExistingSeed": {
- "title": "ಒಂದು ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತ ಮತ್ತು ಖಾತೆಯ ಹೆಸರನ್ನು ನಮೂದಿಸಿ.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "ತಪ್ಪಾದ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತ ಸ್ವರೂಪ",
"validSeedExplanation": "ಮಾನ್ಯವಾದ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತ 81 ಅಕ್ಷರಗಳಾಗಿರಬೇಕು ಮತ್ತು A-Z ಅಥವಾ 9 ಅನ್ನು ಮಾತ್ರ ಹೊಂದಿರಬೇಕು."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ನೀವು ಬ್ಯಾಕ್ ಅಪ್ ಮಾಡಿದ್ದೀರಾ?",
- "alreadyHave": "ನನ್ನ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ನಾನು ಬ್ಯಾಕ್ ಅಪ್ ಮಾಡಿದ್ದೇನೆ",
- "reenterSeed": "ಮುಂದಿನ ಹಂತದಲ್ಲಿ ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಮರು ನಮೂದಿಸಲು ನಿಮ್ಮನ್ನು ಕೇಳಲಾಗುತ್ತದೆ.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ನೀವು ಬ್ಯಾಕಪ್ ಮಾಡಿಲ್ಲವಾದರೆ ಮತ್ತು ನಿಮ್ಮ ಸಾಧನ ವಿಫಲವಾದಲ್ಲಿ, ನಿಮ್ಮ ಎಲ್ಲಾ IOTA ಅನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ.",
"pleaseConfirm": "ದಯವಿಟ್ಟು ನೀವು ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಿಸಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."
},
@@ -572,15 +583,19 @@
"status": "ಸ್ಥಿತಿ",
"fingerprintUnavailable": "ಬಯೊಮೀಟ್ರಿಕ್ ದೃಢೀಕರಣ ಲಭ್ಯವಿಲ್ಲ",
"fingerprintUnavailableExplanation": "ನಿಮ್ಮ ಸಾಧನವು ಬಯೋಮೆಟ್ರಿಕ್ ದೃಢೀಕರಣವನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ ಅಥವಾ ಸಾಧನ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಇದನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿಲ್ಲ.",
- "buttonInstructionsDisable": "ಬೆರಳಿನ ಗುರುತು ದೃಢೀಕರಣವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿರಿ.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "ಬೆರಳುಗುರುತು ದೃಢೀಕರಣ ಸಕ್ರಿಯಗೊಳಿಸಲು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿರಿ.",
- "buttonInstructionsDisableIPhoneX": "ಫೇಸ್ ಐಡಿ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿರಿ.",
- "buttonInstructionsEnableIPhoneX": "ಫೇಸ್ ಐಡಿ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿರಿ.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "ಲಾಗ್ ಇನ್ ಮಾಡಲು ಬೆರಳಿನ ಗುರುತು ರೀಡರ್ ಸ್ಪರ್ಶಿಸಿ"
},
"transferConfirmation": {
"youAreAbout": "ನೀವು {{contents}} ಅನ್ನು ವಿಳಾಸಕ್ಕೆ ಕಳುಹಿಸಲಿದ್ದೀರಿ",
- "aMessage": "ಒಂದು ಸಂದೇಶ"
+ "aMessage": "ಒಂದು ಸಂದೇಶ",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "ತಪ್ಪಾದ ಸಂಕೇತ",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "ಸೀಡ್ವಾಲ್ಟ್ ರಫ್ತು ಮಾಡಿ",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "ನೀವು ಬಹು ಸ್ಥಳಗಳಲ್ಲಿ ಫೈಲ್ ಅನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ (ಉದಾ. ಹಾರ್ಡ್ ಡ್ರೈವ್, ಕ್ಲೌಡ್, ಯುಎಸ್ಬಿ). ನೀವು ಈ ಫೈಲ್ ಅನ್ನು ಕಳೆದುಕೊಂಡರೆ ಮತ್ತು ಬೇರೆಲ್ಲಿಯಾದರೂ ನಿಮ್ಮ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಸಂಗ್ರಹಿಸದಿದ್ದರೆ, ನಿಮ್ಮ IOTA ವನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ.",
"exportFail": "ಸೀಡ್ವಾಲ್ಟ್ ರಫ್ತು ವಿಫಲವಾಗಿದೆ",
"exportFailExplanation": "ಸೀಡ್ವಾಲ್ಟ್ ರಫ್ತು ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ. ನಿಮಗೆ ಸೂಕ್ತವಾದ ಅನುಮತಿಗಳು ಮತ್ತು ಸಾಕಷ್ಟು ಉಚಿತ ಸ್ಥಳಾವಕಾಶವಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "ಸೀಡ್ವಾಲ್ಟ್ ಅನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "ಸೀಡ್ವಾಲ್ಟ್ ಮಾನ್ಯ ಬೀಜವನ್ನು ಒಳಗೊಂಡಿಲ್ಲ",
"noSeedFoundExplanation": "ಸೀಡ್ವಾಲ್ಟ್ ಖಾಲಿಯಾಗಿದೆ ಅಥವಾ ಅಮಾನ್ಯ ಸ್ವರೂಪದಲ್ಲಿ ರಹಸ್ಯ ಪ್ರವೇಶ ಸಂಕೇತವನ್ನು ಹೊಂದಿರುತ್ತದೆ.",
"seedFileError": "ಸೀಡ್ವಾಲ್ಟ್ ತೆರೆಯಲು ವಿಫಲವಾಗಿದೆ",
"seedFileErrorExplanation": "ಸೀಡ್ವಾಲ್ಟ್ ಅನ್ನು ತೆರೆಯುವಲ್ಲಿ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ. ನೀವು ಸರಿಯಾದ ಫೈಲ್ ಅನ್ನು ಆರಿಸಿದರೆ ಅದು ದೋಷಪೂರಿತವಾಗಬಹುದು.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "ಮಾರುಕಟ್ಟೆ ಬಂಡವಾಳ",
@@ -655,7 +672,8 @@
"preparingTransfers": "ವರ್ಗಾವಣೆಯನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ",
"gettingTransactionsToApprove": "ವ್ಯವಹಾರಗಳನ್ನು ಅಂಗೀಕರಿಸಲಾಗುತ್ತದೆ",
"proofOfWork": "ಕೆಲಸದ ಪುರಾವೆ ಪೂರ್ಣಗಳಿಸಲಾಗುತ್ತಿದೆ",
- "broadcasting": "ಪ್ರಕಟಿಸಲಾಗುತ್ತಿದೆ"
+ "broadcasting": "ಪ್ರಕಟಿಸಲಾಗುತ್ತಿದೆ",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಪರಿವರ್ತನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ",
@@ -669,7 +687,8 @@
"transition": "ಪರಿವರ್ತನೆ",
"transitioning": "ಸ್ನ್ಯಾಪ್ಶಾಟ್ಗಾಗಿ ಪರಿವರ್ತನೆ.",
"generatingAndDetecting": "ವಿಳಾಸಗಳನ್ನು ಉತ್ಪಾದಿಸಲಾಗುತ್ತಿದೆ ಮತ್ತು ಖಾತೆಯ ಮೊತ್ತವನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗುತ್ತಿದೆ.",
- "attaching": "ಟ್ಯಾಂಗಲ್ಗೆ ವಿಳಾಸಗಳನ್ನು ಲಗತ್ತಿಸಲಾಗುತ್ತಿದೆ."
+ "attaching": "ಟ್ಯಾಂಗಲ್ಗೆ ವಿಳಾಸಗಳನ್ನು ಲಗತ್ತಿಸಲಾಗುತ್ತಿದೆ.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "ಸ್ವಯಂತುಂಬುವಿಕೆ ಯಶಸ್ಸು",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "ಅಧಿಸೂಚನೆಗಳು",
diff --git a/src/shared/locales/ko/translation.json b/src/shared/locales/ko/translation.json
index e3a8b7f679..a0f0f2052c 100644
--- a/src/shared/locales/ko/translation.json
+++ b/src/shared/locales/ko/translation.json
@@ -74,6 +74,8 @@
"wallet": "지갑",
"all": "전부",
"sent": "보냄",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "받음",
"sending": "보내는 중",
"receiving": "받는 중",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "경고: 이미 사용한 주소에 잔고가 있습니다",
"discordInformation": "동일한 주소에서 한 번 이상 전송하는 행위는 위험합니다. 디스코드 #help 채널로 오셔서 대처 방안에 대해 알아보세요.",
"androidInsecureClipboardWarning": "안드로이드는 클립보드의 보안성이 떨어집니다.",
- "androidCopyPasteWarning": "안드로이드 기기에서는 시드를 클립보드에 복사하지 말아주세요.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "시드를 클립보드에 복사하지 않겠습니다",
"mustBeStoredAppropriately": "안전하게 보관해 주세요.",
"deviceMayBecomeUnresponsive": "기기가 잠시 느려질 수 있습니다.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "키체인 오류",
"errorAccessingKeychainExplanation": "보안 저장에 필요한 키체인에 접근할 수 없습니다.",
"mainWallet": "주 계정",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "유효하지 않은 문자가 포함되어 있음",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "비밀번호는 최소 {{minLength}}글자로 구성되어야 합니다. 입력하신 비밀번호는 {{currentLength}}글자로 구성되어 있습니다. 다시 시도해 주십시오.",
"passwordMismatch": "비밀번호가 일치하지 않음",
"passwordMismatchExplanation": "비밀번호가 일치하지 않습니다. 다시 시도해 주세요.",
- "anEncryptedCopy": "기기에 암호화된 시드가 저장됩니다. 입력하신 비밀번호가 있어야 지갑을 사용할 수 있습니다.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "비밀번호 다시 입력"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "로그인",
"setNode": "노드 선택",
"whyBiometricDisabled": "왜 생체 인증이 비활성화되어 있나요?",
- "whyBiometricDisabledExplanation": "앱 최초 실행 시 보안을 위해 생체 인증이 비활성화됩니다. 트리니티 사용 중 미사용으로 인해 앱이 잠길 경우 생체 인증을 사용하여 다시 로그인할 수 있습니다."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "처음으로 시드를 불러오는 중입니다.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "절대로 다른 사람에게 시드를 알려줘서는 안 됩니다.",
"iotaLogo": "IOTA 로고",
- "print": "인쇄하기",
+ "print": "Print",
"paperConvenience": "시드를 종이에 인쇄해 놓으면 편리하게 보관할 수 있습니다.",
"publicInsecure": "하지만 공용 와이파이를 통해 인쇄하거나 공용 프린터를 사용해 인쇄하는 것은 위험합니다.",
- "tapCheckboxes": "확인하셨으면 아래의 박스에 체크해 주세요.",
- "wifiCheckbox": "공용 와이파이를 통해 인쇄하지 않겠습니다.",
- "printerCheckbox": "공용 프린터를 사용해 인쇄하지 않겠습니다."
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "주소",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "주소 없음",
"spent": "이미 사용함",
- "missingPermission": "파일 시스템 권한 필요",
- "missingPermissionExplanation": "QR 코드를 공유하려면 파일 시스템 권한이 필요합니다.",
"tag": "태그",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "시드를 종이에 기록하세요",
"youCanHighlightCharacters": "9글자 단위로 강조해서 볼 수 있습니다",
"printBlankWallet": "빈 지갑 인쇄하기",
- "whatIsChecksum": "모든 시드에는 3글자로 구성된 체크섬이 존재합니다",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "시드를 저장하였습니다",
"checksumExplanation": "지갑에 시드를 추가할 때 보여지는 체크섬이 기록한 체크섬과 일치하는지를 확인해 주세요",
"mustSaveYourSeed": "<0><0>반드시 아래 나열된 방법 중 0><1>하나 이상1><2>을 사용하여 시드를 기록해야 합니다.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "총 소요시간",
"addressPasteDetected": "주소 붙여넣기가 확인됨",
"addressPasteExplanation": "받을 주소를 붙여넣은 것으로 보입니다. 붙여넣는 주소가 보내고자 하는 주소와 일치하는지 다시 한번 확인해 주세요.",
- "invalid": "유효하지 않음"
+ "invalid": "유효하지 않음",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "이름을 지정해 주세요",
@@ -446,7 +453,8 @@
"empty": "없음",
"retrying": "다시 시도 중",
"yesterday": "어제",
- "promotingAnotherBundle": "다른 번들 프로모트중"
+ "promotingAnotherBundle": "다른 번들 프로모트중",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "시드 보기",
@@ -504,18 +512,21 @@
"currency": "통화"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "정말로 로그아웃 하시겠습니까?"
+ "logoutConfirmation": "정말로 로그아웃 하시겠습니까?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "QR 코드 스캔"
},
"unitInfoModal": {
- "unitSystem": "단위",
+ "unitSystem": "Unit System",
"trillion": "조",
"billion": "십억",
"million": "백만",
"thousand": "천",
- "one": "일"
+ "one": "일",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "왜 거래에 잔고를 전부 사용할 수 없죠?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "계정을 동기화 중입니다."
},
"useExistingSeed": {
- "title": "시드와 계정 이름을 입력하십시오.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "잘못된 시드 형식",
"validSeedExplanation": "유효한 시드는 대문자 A-Z와 숫자 9만을 사용한 81자의 문자열 형태를 갖습니다."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "시드를 저장하셨나요?",
- "alreadyHave": "시드를 저장했습니다",
- "reenterSeed": "다음 단계에서 시드를 다시 입력하셔야 합니다.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "기기가 고장났을 때 기존에 별도로 저장해 둔 시드가 없다면 지갑에 저장한 IOTA를 모두 잃게 됩니다.",
"pleaseConfirm": "시드를 안전하게 저장하였는지 확인해 주세요."
},
@@ -572,15 +583,19 @@
"status": "상태",
"fingerprintUnavailable": "생체 인증을 사용할 수 없음",
"fingerprintUnavailableExplanation": "본 기기는 생체 인증을 사용할 수 없거나 사용하지 않도록 설정되어 있습니다.",
- "buttonInstructionsDisable": "아래 버튼을 눌러 지문 인증을 비활성화할 수 있습니다.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "아래 버튼을 눌러 지문 인증을 활성화할 수 있습니다.",
- "buttonInstructionsDisableIPhoneX": "아래 버튼을 눌러 Face ID를 비활성화할 수 있습니다.",
- "buttonInstructionsEnableIPhoneX": "아래 버튼을 눌러 Face ID를 활성화할 수 있습니다.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "로그인하려면 손가락을 지문 센서 위에 올리세요"
},
"transferConfirmation": {
"youAreAbout": "아래의 주소로 {{contents}}를 보내려고 합니다.",
- "aMessage": "메시지"
+ "aMessage": "메시지",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "잘못된 코드",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "SeedValut 내보내기",
- "seedVaultExplanation": "SeedVault는 시드를 안전하게 저장하도록 암호화된 파일입니다. 시드는 SeedVault 키를 이용하여 암호화되고, 이 키 없이는 시드에 접근할 수 없습니다.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "여러 위치(예: 하드 드라이브, 클라우드, USB)에 이 파일을 백업하십시오. 이 파일을 잃어버리고 별도로 시드를 보관하지 않은 경우 IOTA를 잃게 됩니다.",
"exportFail": "SeedVault 내보내기 실패",
"exportFailExplanation": "SeedVault를 내보내는 도중 문제가 발생하였습니다. 적절한 권한과 충분한 저장 공간이 있는지 다시 확인하세요.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "시드를 성공적으로 가져왔습니다.",
"saveToDownloadFolder": "다운로드 폴더에 저장",
"importSeedVault": "SeedValut 가져오기",
- "dropSeedVaultHere": "SeedVault 끌어다 놓기 <1>1> 또는 여기를 눌러 찾아보기",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "SeedVault를 열기 위해 키를 입력하세요",
"noSeedFound": "SeedVault 내 유효한 시드 없음",
"noSeedFoundExplanation": "SeedVault가 비어있거나 시드가 유효하지 않은 형식으로 저장되어 있습니다.",
"seedFileError": "SeedVault 열기 실패함",
"seedFileErrorExplanation": "SeedVault를 여는 도중 문제가 발생하였습니다. 파일이 손상되었을 수 있습니다.",
- "seedVaultKeyExplanation": "먼저 SeedVault를 암호화하여야 합니다. 파일을 암호화하는 데 사용할 SeedVault 키를 입력해 주세요. 이 키가 있어야 SeedVault에서 시드를 꺼낼 수 있습니다. 트리니티에 사용하는 암호를 키로 사용하여도 됩니다."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "시가총액",
@@ -655,7 +672,8 @@
"preparingTransfers": "전송 준비중",
"gettingTransactionsToApprove": "승인할 트랜잭션을 받아오는 중",
"proofOfWork": "작업 증명 수행중",
- "broadcasting": "송출중"
+ "broadcasting": "송출중",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "스냅샷 이전을 완료할 수 없음",
@@ -669,7 +687,8 @@
"transition": "이전",
"transitioning": "스냅샷 이전 수행 중",
"generatingAndDetecting": "주소를 생성하고 잔고를 찾는 중",
- "attaching": "주소를 탱글에 어태치하는 중."
+ "attaching": "주소를 탱글에 어태치하는 중.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "자동 완성 성공",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "알림",
diff --git a/src/shared/locales/lt/translation.json b/src/shared/locales/lt/translation.json
index 446eb18a68..388b80e7ad 100644
--- a/src/shared/locales/lt/translation.json
+++ b/src/shared/locales/lt/translation.json
@@ -74,6 +74,8 @@
"wallet": "Piniginė",
"all": "Visi",
"sent": "Išsiųsta",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Gauta",
"sending": "Siunčiama",
"receiving": "Gaunama",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "DĖMESIO: Lėšos panaudotame adrese",
"discordInformation": "Pinigų siuntimas iš to pačio adreso daugiau nei kartą yra nesaugus. Apsilankykite #help kanale Discord programoje norėdami sužinoti ką daryti tokiu atveju.",
"androidInsecureClipboardWarning": "Android nesuteikia saugios iškarpinės.",
- "androidCopyPasteWarning": "Kopijuoti/Įklijuoti užraktą su Android įrenginiu nerekomenduojama.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Aš nekopijuosiu/neįklijuosiu užrakto",
"mustBeStoredAppropriately": "Jis privalo būti tinkamai laikomas.",
"deviceMayBecomeUnresponsive": "Jūsų įrenginys kurį laiką gali neatsakyti į užklausas.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain klaida",
"errorAccessingKeychainExplanation": "Prieiga prie keychain nepasiekiama.",
"mainWallet": "PAGRINDINĖ PASKYRA",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "Yra naujų atnaujinimų",
"shouldUpdateExplanation": "Išleistas naujas atnaujinimas. Rekomenduojama atsinaujinti iki naujausios versijos.",
"forceUpdate": "Atnaujinkite programėlę norėdami tęsti",
- "forceUpdateExplanation": "Išleistas svarbus atnaujinimas. Prašome nedelsiant atsinaujinti programėlę."
+ "forceUpdateExplanation": "Išleistas svarbus atnaujinimas. Prašome nedelsiant atsinaujinti programėlę.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Užraktas turi neleistinų simbolių",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Slaptažodis privalo būti iš mažiausiai {{minLength}} simbolių. Jūsų įvedėte {{currentLength}}. Bandykite dar kartą.",
"passwordMismatch": "Slaptažodžiai nesutampa",
"passwordMismatchExplanation": "Įvesti slaptažodžiai nesutampa. Bandykite dar kartą.",
- "anEncryptedCopy": "Užšifruota jūsų užrakto kopija bus laikoma jūsų įrenginyje. Nuo šiol prisijungiant prie piniginės, naudokitės šiuo slaptažodžiu.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Pakartokite slaptažodį"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Prisijungti",
"setNode": "Nustatyti serverį",
"whyBiometricDisabled": "Kodėl biometrinis autentifikavimas išjungtas?",
- "whyBiometricDisabledExplanation": "Pirmą kartą užkraunant programėlę, biometrinis prisijungimas yra išjungtas dėl jūsų saugumo. Trinity jus automatiškai atjungs jei tapsite neaktyviu. Tada vėl galėsite prisijungti su biometriniu prisijungimu."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Užraktas užkraunamas pirmą kartą.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Su niekuo nesidalinkite savo užraktu.",
"iotaLogo": "IOTA logotipas",
- "print": "ATSPAUSDINTI",
+ "print": "Print",
"paperConvenience": "Vienas iš patogių užrakto laikymo būdų yra laikyti jį atspausdintame lape.",
"publicInsecure": "Bet spausdinimas naudojant viešą wifi arba viešą spausdintuvą yra nesaugus.",
- "tapCheckboxes": "Sužymėkite varneles norėdami patvirtinti.",
- "wifiCheckbox": "Nespausdinsiu naudodamas viešą wifi",
- "printerCheckbox": "Nespausdinsiu naudodamas viešą spausdintuvą"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Jūsų adresas",
@@ -285,8 +292,6 @@
"generateNewAddress": "Sukurti adresą",
"noAddresses": "ADRESŲ NĖRA",
"spent": "Panaudotas",
- "missingPermission": "Reikalingas failų sistemos leidimas",
- "missingPermissionExplanation": "Reikalinga prieiga prie failų sistemos norint dalintis QR kodais.",
"tag": "Etiketė",
"generateAnAddress": "Sukurti adresą",
"generateAnAddressTitle": "Sukurti adresą",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Nusirašykite savo užraktą",
"youCanHighlightCharacters": "Žymėkitės po 9 simbolius į eilutę",
"printBlankWallet": "Atspausdinti neužpildytą versiją",
- "whatIsChecksum": "Kiekvienas užraktas turi atitinkamą 3 simbolių kontrolinę sumą",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Išsisaugojau savo užraktą",
"checksumExplanation": "Kai pridedate užraktą į savo piniginę, turite įsitikinti, kad piniginės sukurta kontrolinė suma sutampa su ta, kurią nusirašėte.",
"mustSaveYourSeed": "<0><0>Užraktą privalote išsisaugoti pasinaudodami 0><1>bent vienu1><2> iš šių būdų, nurodytų žemiau.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Bendras laikas",
"addressPasteDetected": "Aptiktas adreso įklijavimas",
"addressPasteExplanation": "Atrodo, kad jūs įklijavote adresą. Įsitikinkite, kad adresas tikrai sutampa su gavėjo adresu.",
- "invalid": "KLAIDA"
+ "invalid": "KLAIDA",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Sukurkite vardą",
@@ -446,7 +453,8 @@
"empty": "Tuščia",
"retrying": "Kraunama",
"yesterday": "Vakar",
- "promotingAnotherBundle": "Iškeliamas kitas paketas"
+ "promotingAnotherBundle": "Iškeliamas kitas paketas",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Rodyti užraktą",
@@ -504,18 +512,21 @@
"currency": "Valiuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Ar tikrai norite atsijungti?"
+ "logoutConfirmation": "Ar tikrai norite atsijungti?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skenuoti QR kodą"
},
"unitInfoModal": {
- "unitSystem": "VIENETŲ SISTEMA",
+ "unitSystem": "Unit System",
"trillion": "Trilijonai",
"billion": "Milijardai",
"million": "Milijonai",
"thousand": "Tūkstančiai",
- "one": "Vienetai"
+ "one": "Vienetai",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Kodėl negaliu išleisti viso savo balanso?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Paskyra sinchronizuojama."
},
"useExistingSeed": {
- "title": "Įveskite užraktą ir paskyros vardą.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Neteisingas užrakto formatas",
"validSeedExplanation": "Užraktai turi būti sudaryti iš 81 simbolio, galimos tik raidės A-Z ir skaičius 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Ar išsisaugojote savo užraktą?",
- "alreadyHave": "Užraktą išsisaugojau",
- "reenterSeed": "Kitame žingsnyje, jums reikės pakartotinai įvesti užraktą.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Jei neišsisaugojote savo užrakto ir jūsų įrenginys suges, prarasite savo IOTA.",
"pleaseConfirm": "Patvirtinkite, kad jūsų užraktas saugiai išsaugotas."
},
@@ -572,15 +583,19 @@
"status": "Būsena",
"fingerprintUnavailable": "Biometrinis autentifikavimas nepasiekiamas",
"fingerprintUnavailableExplanation": "Jūsų įrenginys nepalaiko biometrinio autentifikavimo arba ši funkcija yra nesukonfigūruota jūsų įrenginyje.",
- "buttonInstructionsDisable": "Spauskite žemiau esantį mygtuką, norėdami atjungti piršto antspaudo autentifikavimą.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Spauskite žemiau esantį mygtuką, norėdami įjungti piršto antspaudo autentifikavimą.",
- "buttonInstructionsDisableIPhoneX": "Spauskite žemiau esantį mygtuką, norėdami išjungti Face ID.",
- "buttonInstructionsEnableIPhoneX": "Spauskite žemiau esantį mygtuką, norėdami įjungti Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Palieskite piršto antspaudo skaitytuvą, norėdami prisijungti"
},
"transferConfirmation": {
"youAreAbout": "Jūs ruošiatės išsiųsti {{contents}} į adresą",
- "aMessage": "žinutę"
+ "aMessage": "žinutę",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Neteisingas kodas",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Iškelti SeedVault",
- "seedVaultExplanation": "SeedVault yra užšifruotas failas skirtas saugiai laikyti savo užraktą. Užraktas yra užšifruojamas SeedVault raktu ir negali būti atskleistas be to rakto.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Įsitikinkite, kad išsisaugojote failą keliose vietose (kietajame diske, \"debesyje\", USB). Jei prarasite šį failą, o savo užrakto nebūsite išsisaugoję kitoje vietoje, jūs prarasite savo IOTA.",
"exportFail": "SeedVault iškėlimo klaida",
"exportFailExplanation": "Įvyko klaida iškeliant SeedVault. Įsitikinkite, kad turite tinkamus leidimus ir pakankamai laisvos vietos.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Jūsų užraktas sėkmingai įkeltas.",
"saveToDownloadFolder": "Išsaugoti į atsisiuntimų failą",
"importSeedVault": "Įkelti SeedVault",
- "dropSeedVaultHere": "Įkelti SeedVault čia <1>1> arba spauskite ieškoti failo",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Įveskite raktą norėdami atidaryti SeedVault",
"noSeedFound": "SeedVault neturi tinkamo užrakto",
"noSeedFoundExplanation": "SeedVault yra tuščias arba turi netinkamo formato užraktą.",
"seedFileError": "Atidaryti SeedVault nepavyko",
"seedFileErrorExplanation": "Įvyko klaida atidarant SeedVault. Jeigu pasirinkote teisingą failą, gali būti, kad jis yra pažeistas.",
- "seedVaultKeyExplanation": "Pirmiausia, jums reikia apsaugoti SeedVault. Sukurkite raktą norėdami užšifruoti failą. Šio rakto jums prireiks, norint susigrąžinti užraktą iš SeedVault failo. Raktas gali būti toks pat, kaip ir slaptažodis Trinity piniginei."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Ruošiami pavedimai",
"gettingTransactionsToApprove": "Pavedimai ruošiami patvirtinimui",
"proofOfWork": "Atliekami skaičiavimai",
- "broadcasting": "Transliuojama"
+ "broadcasting": "Transliuojama",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Nepavyksta perkelti tinklo duomenų",
@@ -669,7 +687,8 @@
"transition": "Perkelti",
"transitioning": "Perkeliami tinklo duomenys.",
"generatingAndDetecting": "Kuriami adresai ir nustatinėjamas balansas.",
- "attaching": "Adresai prijungiami prie Tangle."
+ "attaching": "Adresai prijungiami prie Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automatinis įkėlimas sėkmingas",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Pranešimai",
diff --git a/src/shared/locales/lv/translation.json b/src/shared/locales/lv/translation.json
index d611b00f5f..97cdeaec67 100644
--- a/src/shared/locales/lv/translation.json
+++ b/src/shared/locales/lv/translation.json
@@ -74,6 +74,8 @@
"wallet": "Wallet",
"all": "All",
"sent": "Sent",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Received",
"sending": "Sūta",
"receiving": "Receiving",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed contains invalid characters",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "Passwords do not match",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Loading seed for the first time.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Birka",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Currency"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have saved my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/nl/translation.json b/src/shared/locales/nl/translation.json
index 4dfffb7cb2..1814cf1f59 100644
--- a/src/shared/locales/nl/translation.json
+++ b/src/shared/locales/nl/translation.json
@@ -74,6 +74,8 @@
"wallet": "Portemonnee",
"all": "Alle",
"sent": "Verzonden",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Ontvangen",
"sending": "Uitgaand",
"receiving": "Inkomend",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WAARSCHUWING: Saldo op verbruikte adressen",
"discordInformation": "Vaker dan een keer sturen vanaf hetzelfde adres is gevaarlijk. Ga naar het #help kanaal in Discord om uit te vinden wat u kunt doen.",
"androidInsecureClipboardWarning": "Android heeft geen veilig kladblok.",
- "androidCopyPasteWarning": "Kopieer/plak nooit uw seed op een Android apparaat.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Ik zal mijn seed niet kopiëren/plakken",
"mustBeStoredAppropriately": "Het moet adequaat worden opgeslagen.",
"deviceMayBecomeUnresponsive": "Uw apparaat kan wellicht even niet reageren.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Fout met keychain",
"errorAccessingKeychainExplanation": "Kan keychain nodig voor veilige opslag niet bereiken.",
"mainWallet": "HOOFDACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "De seed bevat ongeldige tekens",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Uw wachtwoord moet minstens {{minLength}} tekens lang zijn. Het is momenteel {{currentLength}} tekens lang. Probeer het opnieuw.",
"passwordMismatch": "Wachtwoorden komen niet overeen",
"passwordMismatchExplanation": "Het ingevoerde wachtwoord is onjuist. Probeer het nogmaals.",
- "anEncryptedCopy": "Een gecodeerde kopie van uw seed wordt opgeslagen op uw apparaat. U gebruikt dit wachtwoord voor toegang tot uw portemonnee in de toekomst.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Herhaal wachtwoord"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Kies Node",
"whyBiometricDisabled": "Waarom is biometrische autenticatie uitgeschakeld?",
- "whyBiometricDisabledExplanation": "Biometrisch inloggen is uitgeschakeld tijdens de eerste inlog voor jouw veiligheid. Bij het gebruik van Trinity wordt u uitgelogd bij inactiviteit. Daarna kunt u opnieuw inloggen met biometrische autenticatie."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Seed voor de eerste keer laden.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Deel uw seed met niemand.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Een papieren kopie van uw seed printen is een handige manier om het op te slaan.",
"publicInsecure": "Maar printen op publieke wifi of een publieke printer is onveilig.",
- "tapCheckboxes": "Tik op de selectievakjes om te bevestigen.",
- "wifiCheckbox": "Ik zal niet printen op publieke wifi",
- "printerCheckbox": "Ik zal niet printen op een publieke printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Jouw adres",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "GEEN ADRESSEN",
"spent": "Uitgegeven",
- "missingPermission": "Toegang tot bestandsysteem vereist",
- "missingPermissionExplanation": "Toegang tot het bestandsysteem is nodig om QR codes te delen.",
"tag": "Label",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Laten we uw seed opschrijven",
"youCanHighlightCharacters": "U kan 9 karakters tegelijk markeren",
"printBlankWallet": "Print een lege portemonnee",
- "whatIsChecksum": "Iedereen seed heeft een overeenkomende 3-karakter controlesleutel",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Ik heb mijn seed opgeslagen",
"checksumExplanation": "Wanneer u uw seed toevoegt aan uw portemonnee, moet u er zeker van zijn dat de gegenereerde controlesom hetzelfde is als degene die u heeft opgeschreven.",
"mustSaveYourSeed": "<0><0>U moet uw seed opslaan met 0><1>tenminste één1><2> van de onderstaande opties.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Totale tijd",
"addressPasteDetected": "Adres plakken gedetecteerd",
"addressPasteExplanation": "Het lijkt erop dat u een adres wil plakken. Zorg ervoor dat dit adres overeenkomt met het adres waarnaar u wilt zenden.",
- "invalid": "ONGELDIG"
+ "invalid": "ONGELDIG",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Laten we een naam toevoegen",
@@ -446,7 +453,8 @@
"empty": "Leeg",
"retrying": "Opnieuw proberen...",
"yesterday": "Gisteren",
- "promotingAnotherBundle": "Andere bundel aan het promoten"
+ "promotingAnotherBundle": "Andere bundel aan het promoten",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Seed bekijken",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Weet u zeker dat u wilt uitloggen?"
+ "logoutConfirmation": "Weet u zeker dat u wilt uitloggen?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "QR-code scannen"
},
"unitInfoModal": {
- "unitSystem": "Eenhedenstelsel",
+ "unitSystem": "Unit System",
"trillion": "Biljoen",
"billion": "Miljard",
"million": "Miljoen",
"thousand": "Duizend",
- "one": "Één"
+ "one": "Één",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Waarom kan ik mijn volledige saldo niet uitgeven?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Account wordt gesynchroniseerd."
},
"useExistingSeed": {
- "title": "Voer een seed en accountnaam in.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrecte seed opmaak",
"validSeedExplanation": "Geldige seeds bestaan uit 81 karakters en bevatten alleen A-Z of 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Heeft u uw seed opgeslagen?",
- "alreadyHave": "Ik heb mijn seed opgeslagen",
- "reenterSeed": "Bij de volgende stap wordt u gevraagd om uw seed opnieuw in te voeren.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Als u geen back-up heeft van uw seed en uw apparaat werkt niet meer, bent u al uw IOTA kwijt.",
"pleaseConfirm": "Bevestig dat u uw seed veilig hebt opgeslagen."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometrische authenticatie onbeschikbaar",
"fingerprintUnavailableExplanation": "Uw apparaat ondersteunt geen biometrische authenticatie of het is niet ingesteld in de apparaatinstellingen.",
- "buttonInstructionsDisable": "Druk op de knop hieronder om vingerafdruk-verificatie uit te schakelen.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Druk op de knop hieronder om vingerafdruk-verificatie uit te schakelen.",
- "buttonInstructionsDisableIPhoneX": "Druk op de knop hieronder om Face ID uit te schakelen.",
- "buttonInstructionsEnableIPhoneX": "Druk op de knop hieronder om Face ID in te schakelen.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Raak vingerafdruklezer aan om in te loggen"
},
"transferConfirmation": {
"youAreAbout": "U staat op het punt om {{contents}} te versturen naar het adres",
- "aMessage": "een bericht"
+ "aMessage": "een bericht",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Verkeerde code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Seedkluis exporteren",
- "seedVaultExplanation": "Een SeedVault is een versleuteld bestand voor het veilig opslaan van uw seed. Uw seed is vergrendeld achter een SeedVault Key (Sleutel) en zonder deze Key kunt u geen toegang tot uw seed verkrijgen.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Zorg ervoor dat u het bestand op meerdere locaties backupt (bijvoorbeeld: harde schijf, cloud, USB). Raakt u dit bestand kwijt en heeft u uw seed niet ergens opgeslagen, bent u uw IOTA kwijt.",
"exportFail": "Exporteren van Seedkluis mislukt",
"exportFailExplanation": "Er was een probleem met het exporteren van de Seedkluis. Zorg ervoor dat u de juiste bevoegdheden en genoeg vrije ruimte hebt.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Uw seed is succesvol geïmporteerd.",
"saveToDownloadFolder": "Opslaan in Download map",
"importSeedVault": "Seedkluis importeren",
- "dropSeedVaultHere": "Sleep SeedVault hier naar toe <1>1> of klik om te zoeken",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Voer uw Key in om de SeedVault te openen",
"noSeedFound": "Seedkluis bevat geen geldige seed",
"noSeedFoundExplanation": "De Seedkluis is leeg, of heeft een seed in een ongeldig formaat.",
"seedFileError": "Kan Seedkluis niet openen",
"seedFileErrorExplanation": "Er was een probleem tijdens het openen van de Seedkluis. Als u het juiste bestand hebt gekozen, kan het zijn dat dit corrupt is.",
- "seedVaultKeyExplanation": "Allereerst moeten we uw SeedVault beveiligen. Kies een Key om het bestand mee te versleutelen. U heeft deze Key nodig om uw seed te herstellen vanuit SeedVault back-up. De Key mag hetzelfde als het wachtwoord dat u voor Trinity gebruikt."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Voorbereiding van transacties",
"gettingTransactionsToApprove": "Bezig met transacties akkoorderen",
"proofOfWork": "Bewijs van inspanning voltooien",
- "broadcasting": "Uitzenden"
+ "broadcasting": "Uitzenden",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Snapshot transitie kan niet worden voltooid",
@@ -669,7 +687,8 @@
"transition": "Transitie",
"transitioning": "Aan het overgaan voor de snapshot.",
"generatingAndDetecting": "Adressen aan het genereren en saldo aan het detecteren.",
- "attaching": "Adressen aan het koppelen aan de Tangle."
+ "attaching": "Adressen aan het koppelen aan de Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automatisch vullen succesvol",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notificaties",
diff --git a/src/shared/locales/no/translation.json b/src/shared/locales/no/translation.json
index c2e774759c..022f74b7fa 100644
--- a/src/shared/locales/no/translation.json
+++ b/src/shared/locales/no/translation.json
@@ -74,6 +74,8 @@
"wallet": "Lommebok",
"all": "Alle",
"sent": "Sendt",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Mottatt",
"sending": "Sender",
"receiving": "Mottar",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "ADVARSEL: Midler på en brukt adresse",
"discordInformation": "Det er risikabelt å sende midler fra samme adresse flere ganger. Vennligst besøk kanalen #help på Discord for å finne ut hva du kan gjøre.",
"androidInsecureClipboardWarning": "Android har ikke en sikker utklippstavle.",
- "androidCopyPasteWarning": "Aldri klipp og lim hovednøkkelen på en Android enhet.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Jeg skal ikke klippe og lime hovednøkkelen",
"mustBeStoredAppropriately": "Den må lagres på riktig måte.",
"deviceMayBecomeUnresponsive": "Enheten kan slutte å svare en stund.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Nøkkelring feil",
"errorAccessingKeychainExplanation": "Ingen tilgang til nøkkelring nødvendig for sikker lagring.",
"mainWallet": "HOVEDKONTO",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Hovednøkkelen inneholder ugyldige tegn",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Passordet må være minst {{minLength}} tegn. Det er nå {{currentLength}} tegn. Prøv på nytt.",
"passwordMismatch": "Passordene samsvarer ikke",
"passwordMismatchExplanation": "Passordene du anga samsvarer ikke. Prøv på nytt.",
- "anEncryptedCopy": "En kryptert kopi av hovednøkkelen blir lagret på din enhet. Du vil bruke dette passordet for å åpne lommeboken i fremtiden.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Skriv inn passordet på nytt"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Logg inn",
"setNode": "Angi Node",
"whyBiometricDisabled": "Hvorfor er biometrisk autentisering deaktivert?",
- "whyBiometricDisabledExplanation": "Biometrisk pålogging er deaktivert første gang du starter applikasjonen av hensyn til sikkerhet. Når du bruker Trinity, vil du bli logget ut ved inaktivitet. Du kan deretter logge inn igjen med biometrisk autentisering."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Laster hovednøkkel for første gang.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Del aldri hovednøkkelen med noen.",
"iotaLogo": "IOTA logo",
- "print": "SKRIV UT",
+ "print": "Print",
"paperConvenience": "En praktisk måte å oppbevare hovednøkkelen er å skrive den ut på papir.",
"publicInsecure": "Men å skrive den ut på et offentlig nettverk eller printer er usikkert.",
- "tapCheckboxes": "Vennligst trykk på avkryssingsfeltet nedenfor for å bekrefte.",
- "wifiCheckbox": "Jeg vil ikke skrive ut på et offentlig nettverk",
- "printerCheckbox": "Jeg vil ikke skrive ut på en offentlig printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Din adresse",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "INGEN ADRESSER",
"spent": "Brukt",
- "missingPermission": "Trenger tillatelse til filsystemet",
- "missingPermissionExplanation": "Tilgang til filsystemet er nødvendig for å dele QR-koder.",
"tag": "Etikett",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "La oss skrive ned din hovednøkkel",
"youCanHighlightCharacters": "Du kan utheve 9 tegn om gangen",
"printBlankWallet": "Skriv ut en tom lommebok",
- "whatIsChecksum": "Hver hovednøkkel har en egen 3-tegn kontrollsum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Jeg har lagret min hovednøkkel",
"checksumExplanation": "Når du legger til en hovednøkkel i lommeboken, bør du forsikre deg om at kontrollsummen samsvarer med den du har skrevet ned.",
"mustSaveYourSeed": "<0><0>Du må lagre din hovednøkkel med 0><1>minst én1><2> av alternativene nedenfor.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total tid",
"addressPasteDetected": "Adresse \"lim inn\" gjenkjent",
"addressPasteExplanation": "Det ser ut som at du har limt inn en adresse. Vær sikker på at denne adressen samsvarer med den du ønsker å sende til.",
- "invalid": "UGYLDIG"
+ "invalid": "UGYLDIG",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "La oss legge til et navn",
@@ -446,7 +453,8 @@
"empty": "Tom",
"retrying": "Prøver på nytt",
"yesterday": "I går",
- "promotingAnotherBundle": "Fremme en pakke til"
+ "promotingAnotherBundle": "Fremme en pakke til",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Vis hovednøkkel",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Er du sikker på at du vil logge ut?"
+ "logoutConfirmation": "Er du sikker på at du vil logge ut?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skann QR-kode"
},
"unitInfoModal": {
- "unitSystem": "ENHETSSYSTEMET",
+ "unitSystem": "Unit System",
"trillion": "Billioner",
"billion": "Milliarder",
"million": "Millioner",
"thousand": "Tusen",
- "one": "En"
+ "one": "En",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Hvorfor kan jeg ikke bruke hele saldoen?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Synkroniserer din konto."
},
"useExistingSeed": {
- "title": "Angi en hovednøkkel og et kontonavn.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Feil format på hovednøkkelen",
"validSeedExplanation": "En gyldig hovednøkkel skal være 81 tegn bestående av bokstavene A-Z og tallet 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Har du lagret hovednøkkelen?",
- "alreadyHave": "Jeg har lagret min hovednøkkel",
- "reenterSeed": "På neste trinn vil du bli bedt om å skrive inn hovednøkkelen.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Hvis du ikke har lagret hovednøkkelen og enheten din blir ødelagt vil du miste tilgangen til dine IOTA.",
"pleaseConfirm": "Vennligst bekreft at du har lagret hovednøkkelen."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometrisk autentisering er ikke tilgjengelig",
"fingerprintUnavailableExplanation": "Enheten din støtter ikke biometrisk autentisering eller så har ikke dette blitt konfigurert i enhetens innstillinger.",
- "buttonInstructionsDisable": "Trykk på knappen nedenfor for å deaktivere biometrisk autentisering.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Trykk på knappen nedenfor for å aktivere biometrisk autentisering.",
- "buttonInstructionsDisableIPhoneX": "Trykk på knappen nedenfor for å deaktivere Face ID.",
- "buttonInstructionsEnableIPhoneX": "Trykk på knappen nedenfor for å aktivere Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Berør fingeravtrykkleseren for å logge inn"
},
"transferConfirmation": {
"youAreAbout": "Du er nå klar til å sende {{contents}} til adressen",
- "aMessage": "en melding"
+ "aMessage": "en melding",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Feil kode",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Eksporter SeedVault",
- "seedVaultExplanation": "SeedVault er en kryptert fil for å lagre din hovednøkkel sikkert. Hovednøkkelen er kryptert bak en SeedVault Nøkkel og kan ikke brukes uten nøkkelen.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Pass på å sikkerhetskopiere filen flere steder (f.eks harddisk, nettsky, USB). Hvis du mister denne filen og du ikke har hovednøkkelen din lagret et annet sted, mister du tilgangen til dine IOTA.",
"exportFail": "SeedVault eksport mislyktes",
"exportFailExplanation": "Det oppstod et problem med å eksportere SeedVault. Kontroller at du har riktige tillatelser og nok plass.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Din hovednøkkel ble importert.",
"saveToDownloadFolder": "Lagre til nedlastingsmappen",
"importSeedVault": "Importer SeedVault",
- "dropSeedVaultHere": "Slipp SeedVault her <1>1> eller klikk for å bla igjennom",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Skriv inn din nøkkel for å åpne SeedVault",
"noSeedFound": "SeedVault inneholder ikke en gyldig hovednøkkel",
"noSeedFoundExplanation": "SeedVault er enten tom eller inneholder en hovednøkkel i et ugyldig format.",
"seedFileError": "Kunne ikke åpne SeedVault",
"seedFileErrorExplanation": "Det var et problem med åpning av SeedVault. Hvis du valgte den riktige filen kan den være skadet.",
- "seedVaultKeyExplanation": "Først må vi å sikre din SeedVault. Velg en nøkkel for å kryptere filen. Du vil trenge denne nøkkelen for å gjenopprette din hovednøkkel fra SeedVault-sikkerhetskopien. Nøkkelen kan være den samme som passordet du bruker for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Forbereder transaksjoner",
"gettingTransactionsToApprove": "Mottar transaksjoner til godkjenning",
"proofOfWork": "Fullfører PoW (Proof of Work)",
- "broadcasting": "Kringkasting"
+ "broadcasting": "Kringkasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Kan ikke fullføre snapshot synkronisering",
@@ -669,7 +687,8 @@
"transition": "Overgang",
"transitioning": "Overfører til ny snapshot.",
"generatingAndDetecting": "Genererer adresser og laster inn saldo.",
- "attaching": "Kobler adressene til Tangle."
+ "attaching": "Kobler adressene til Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automatisk utfylling vellykket",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Varslinger",
diff --git a/src/shared/locales/pl/translation.json b/src/shared/locales/pl/translation.json
index 13863d5e58..1f63989cb8 100644
--- a/src/shared/locales/pl/translation.json
+++ b/src/shared/locales/pl/translation.json
@@ -74,6 +74,8 @@
"wallet": "Portfel",
"all": "Wszystkie",
"sent": "Wysłano",
+ "youReceived": "Otrzymano",
+ "youSent": "Wysłano",
"received": "Odebrano",
"sending": "Wysyłanie",
"receiving": "Odbieranie",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Błąd magazynu kluczy",
"errorAccessingKeychainExplanation": "Nie można uzyskać dostępu do magazynu kluczy, odpowiedzialnego za bezpieczną pamięć.",
"mainWallet": "KONTO GŁÓWNE",
+ "confirm": "Potwierdź",
+ "delete": "Usuń",
"shouldUpdate": "Dostępna jest nowa aktualizacja",
"shouldUpdateExplanation": "Dostępna jest nowa aktualizacja. Zaleca się aktualizację do najnowszej wersji.",
"forceUpdate": "Zaktualizuj aplikację, aby kontynuować",
- "forceUpdateExplanation": "Dostępna jest aktualizacja krytyczna. Zaktualizuj aplikację teraz."
+ "forceUpdateExplanation": "Dostępna jest aktualizacja krytyczna. Zaktualizuj aplikację teraz.",
+ "missingPermission": "Wymagany dostęp do systemu plików",
+ "missingPermissionExplanation": "Aby wykonać tę funkcję, potrzebny jest dostęp do systemu plików."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed zawiera nieprawidłowe znaki",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Twoje hasło musi mieć co najmniej {{minLength}} znaków. Obecna ilość znaków wynosi {{currentLength}}. Proszę spróbować ponownie.",
"passwordMismatch": "Hasła nie są zgodne",
"passwordMismatchExplanation": "Wpisane hasła różnią się. Spróbuj ponownie.",
- "anEncryptedCopy": "Zaszyfrowana kopia Twojego klucza seed będzie przechowywana na Twoim urządzeniu. Będziesz korzystał z tego hasła w celu uzyskania dostępu do swojego portfela w przyszłości.",
+ "anEncryptedCopy": "To jest główne hasło do Twojego portfela. Będziesz go używać do logowania się.",
"retypePassword": "Wpisz hasło ponownie"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Zaloguj",
"setNode": "Serwer",
"whyBiometricDisabled": "Dlaczego logowanie biometryczne jest niedostępne?",
- "whyBiometricDisabledExplanation": "Dla Twojego bezpieczeństwa, logowanie odciskiem palca jest wyłączone przy pierwszym uruchomieniu aplikacji. Z tej metody logowania możesz skorzystać jedynie wtedy, gdy zostałeś wylogowany z Trinity ze względu na Twoją bezczynność w aplikacji."
+ "whyBiometricDisabledExplanationPart1": "Autoryzacja odciskiem palca, przy pierwszym uruchomieniu aplikacji, została wyłączona, dla Twojego bezpieczeństwa.",
+ "whyBiometricDisabledExplanationPart2": "Bezczynność w Trinity, będzie skutkowała automatycznym wylogowaniem z aplikacji. Później, będziesz mógł zalogować się, używając odcisku palca."
},
"loading": {
"loadingFirstTime": "Ładowanie klucza seed po raz pierwszy.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nie udostępniaj swojego klucza nikomu.",
"iotaLogo": "Logo IOTA",
- "print": "DRUKUJ",
+ "print": "Drukuj",
"paperConvenience": "Wydruk papierowej kopii klucza seed jest wygodnym sposobem na jego przechowywanie.",
"publicInsecure": "Jednak drukowanie na publicznej sieci WiFi lub publicznej drukarce jest niebezpieczne.",
- "tapCheckboxes": "Zaznacz poniższe pola, aby potwierdzić.",
- "wifiCheckbox": "Nie będę drukował na publicznym WiFi",
- "printerCheckbox": "Nie będę drukował na publicznej drukarce"
+ "pleaseCheck": "Sprawdź i potwierdź przed wydrukowaniem",
+ "wifiConfirmation": "Nie jestem połączony z publicznym WiFi",
+ "printerConfirmation": "Nie drukuję na publicznej drukarce"
},
"receive": {
"yourAddress": "Twój adres",
@@ -285,8 +292,6 @@
"generateNewAddress": "Wygeneruj adres",
"noAddresses": "BRAK ADRESÓW",
"spent": "Adres zużyty",
- "missingPermission": "Wymagany dostęp do systemu plików",
- "missingPermissionExplanation": "W celu udostępniania kodów QR, wymagany jest dostęp do systemu plików.",
"tag": "Tag",
"generateAnAddress": "Wygeneruj adres",
"generateAnAddressTitle": "Wygeneruj adres",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Zapiszmy Twój seed",
"youCanHighlightCharacters": "Możesz wyróżnić 9 znaków naraz",
"printBlankWallet": "Drukuj pusty portfel",
- "whatIsChecksum": "Każdy seed posiada swoją 3-znakową sumę kontrolną",
+ "whatIsAChecksum": "Czym jest suma kontrolna?",
+ "everySeedHasAChecksum": "Każdy seed posiada swoją 3-znakową sumę kontrolną.",
"iHavesavedMySeed": "Zapisałem swój seed",
"checksumExplanation": "Za każdym razem, gdy dodajesz seed do portfela, powinieneś upewnić się, że suma kontrolna generowana przez portfel jest zgodna z tą, którą zapisałeś.",
"mustSaveYourSeed": "<0><0>Musisz zapisać swój seed, wybierając 0><1>co najmniej jedną1><2> z poniższych opcji.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Całkowity czas",
"addressPasteDetected": "Wykryto wklejenie adresu",
"addressPasteExplanation": "Wygląda na to, że wkleiłeś adres. Upewnij się, że wklejony adres odpowiada temu, na który chcesz wysłać.",
- "invalid": "BŁĄD"
+ "invalid": "BŁĄD",
+ "swipeToSend": "Przesuń palcem, aby wysłać"
},
"setSeedName": {
"letsAddName": "Nazwij swoje konto",
@@ -446,7 +453,8 @@
"empty": "Brak",
"retrying": "Ponawianie",
"yesterday": "Wczoraj",
- "promotingAnotherBundle": "Promowanie innego pakietu"
+ "promotingAnotherBundle": "Promowanie innego pakietu",
+ "pleaseWait": "Proszę czekać, Trinity promuje obecnie inny pakiet."
},
"accountManagement": {
"viewSeed": "Pokaż seed",
@@ -504,18 +512,21 @@
"currency": "Waluta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Czy na pewno chcesz się wylogować?"
+ "logoutConfirmation": "Czy na pewno chcesz się wylogować?",
+ "aboutToLogOut": "Za chwilę zostaniesz wylogowany",
+ "areYouSure": "Czy jesteś pewny?"
},
"qrScanner": {
"scan": "Zeskanuj swój kod QR"
},
"unitInfoModal": {
- "unitSystem": "JEDNOSTKI MIARY",
+ "unitSystem": "Jednostka miary",
"trillion": "Bilion",
"billion": "Miliard",
"million": "Milion",
"thousand": "Tysiąc",
- "one": "Jeden"
+ "one": "Jeden",
+ "unitInfoExplanation": "Tokeny IOTA są zazwyczaj nabywane w wielokrotnościach jednego miliona, ale mogą być też transferowane, jako pojedyncze IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Dlaczego nie mogę zużyć całego stanu mojego konta?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Synchronizuje Twoje konto."
},
"useExistingSeed": {
- "title": "Wprowadź seed oraz nazwę konta.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Nieprawidłowy format klucza",
"validSeedExplanation": "Poprawny seed powinien składać się z 81 znaków i zawierać jedynie wielkie litery A-Z oraz cyfry 9."
},
@@ -551,7 +562,7 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Czy zrobiłeś kopię swojego klucza?",
- "alreadyHave": "Zapisałem swój seed",
+ "iHaveBackedUp": "Bezpiecznie zapisałem swój seed",
"reenterSeed": "W następnym kroku zostaniesz poproszony o ponowne wprowadzenie swojego klucza seed.",
"reenterSeedWarning": "Jeśli nie zapisałeś swojego klucza, a Twoje urządzenie ulegnie uszkodzeniu, stracisz swoje środki IOTA.",
"pleaseConfirm": "Proszę potwierdzić, że bezpiecznie przechowujesz swój klucz seed."
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Autoryzacja odciskiem palca niedostępna",
"fingerprintUnavailableExplanation": "Twoje urządzenie nie obsługuje funkcji rozpoznawania odcisku palca lub funkcja ta nie została skonfigurowana w ustawieniach urządzenia.",
- "buttonInstructionsDisable": "Naciśnij poniższy przycisk, aby wyłączyć funkcję autoryzacji odciskiem palca.",
+ "buttonInstructionsDisable": "Naciśnij poniższy przycisk, aby wyłączyć funkcję autoryzacji odciskiem palca",
"buttonInstructionsEnable": "Naciśnij poniższy przycisk, aby włączyć funkcję autoryzacji odciskiem palca.",
- "buttonInstructionsDisableIPhoneX": "Naciśnij poniższy przycisk, aby wyłączyć Face ID.",
- "buttonInstructionsEnableIPhoneX": "Naciśnij poniższy przycisk, aby włączyć Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Naciśnij poniższy przycisk, aby wyłączyć Face ID",
+ "buttonInstructionsEnableIPhoneX": "Naciśnij poniższy przycisk, aby włączyć Face ID",
"instructionsLogin": "Przyłóż palec do czytnika, aby się zalogować"
},
"transferConfirmation": {
"youAreAbout": "Masz zamiar wysłać {{contents}} na adres",
- "aMessage": "wiadomość"
+ "aMessage": "wiadomość",
+ "fromAccount": "Z {{selectedAccountName}}",
+ "toAddress": "Na adres",
+ "sendingAMessage": "Wysyłanie wiadomości",
+ "sendingAnEmptyMessage": "Wysyłanie pustej wiadomości"
},
"twoFA": {
"wrongCode": "Błędny kod",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Twój klucz seed został pomyślnie zaimportowany.",
"saveToDownloadFolder": "Zapisz do folderu pobierania",
"importSeedVault": "Importuj SeedVault",
- "dropSeedVaultHere": "Upuść plik SeedVault tutaj <1>1> lub kliknij, aby wyszukać ręcznie",
+ "dropInstructions": "Upuść tutaj plik SeedVault lub tekst <1>1>\n(kliknij, aby wyszukać plik ręcznie)",
+ "dropActive": "Upuść tutaj plik SeedVault lub tekst",
"enterKeyExplanation": "Wprowadź swoje hasło pliku SeedVault, aby go otworzyć",
"noSeedFound": "SeedVault nie zawiera poprawnego klucza seed",
"noSeedFoundExplanation": "Plik SeedVault jest pusty lub zawiera seed w nieprawidłowym formacie.",
"seedFileError": "Nie można otworzyć SeedVault",
"seedFileErrorExplanation": "Wystąpił problem podczas otwierania pliku SeedVault. Jeśli wybrano poprawny plik, to może być on uszkodzony.",
- "seedVaultKeyExplanation": "Najpierw musisz zabezpieczyć swój SeedVault hasłem. Będziesz potrzebować tego hasła, aby przywrócić swój klucz seed z kopii zapasowej pliku SeedVault. Możesz użyć tego samego hasła, którego używasz do logowania w Trinity."
+ "seedVaultKeyExplanation": "Najpierw musisz zabezpieczyć swój SeedVault. Wybierz hasło do zaszyfrowania pliku. Będziesz potrzebować tego hasła, aby przywrócić swój seed z kopii zapasowej pliku SeedVault.",
+ "retypeKey": "Wpisz hasło ponownie"
},
"chart": {
"mcap": "Market",
@@ -655,7 +672,8 @@
"preparingTransfers": "Przygotowywanie transferów",
"gettingTransactionsToApprove": "Uzyskiwanie transakcji do potwierdzenia",
"proofOfWork": "Finalizacja Proof of Work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer zakończony"
},
"snapshotTransition": {
"cannotCompleteTransition": "Nie można zakończyć aktualizacji środków",
@@ -669,7 +687,8 @@
"transition": "Aktualizacja",
"transitioning": "Trwa aktualizacja Twoich środków.",
"generatingAndDetecting": "Generuję adresy oraz wykrywam saldo.",
- "attaching": "Dołączam adresy do sieci Tangle."
+ "attaching": "Dołączam adresy do sieci Tangle.",
+ "attachProgress": "Dołączam adres {{currentAddress}} z {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autouzupełniono",
@@ -706,8 +725,8 @@
"completeSetup": "Zakończ konfigurację"
},
"proxy": {
- "proxy": "Używaj systemowych ustawień proxy",
- "proxyExplanation": "Wykryj i używaj ogólnosystemowych ustawień serwera proxy. Zrestartuj portfel po zmianie tego ustawienia."
+ "proxy": "Użycie ustawień proxy",
+ "proxyExplanation": "Wykryj i używaj ogólnosystemowych ustawień serwera proxy. Po zmianie tego ustawienia należy ponownie uruchomić aplikację."
},
"notifications": {
"notifications": "Powiadomienia",
diff --git a/src/shared/locales/pt-BR/translation.json b/src/shared/locales/pt-BR/translation.json
index c484abf311..a0758e9ce3 100644
--- a/src/shared/locales/pt-BR/translation.json
+++ b/src/shared/locales/pt-BR/translation.json
@@ -19,7 +19,7 @@
"invalidResponse": "Erro no servidor",
"invalidResponseExplanation": "O servidor retornou um erro. Tente mudar o servidor.",
"invalidResponseFetchingAccount": "O servidor retornou uma resposta inválida ao transmitir informações da sua conta. Tente mudar de servidor.",
- "invalidResponseFetchingAccountDesktop": "The node returned an error while fetching your account information. If your problem persists, try changing node or disabling your system proxy in Trinity Settings.",
+ "invalidResponseFetchingAccountDesktop": "O servidor retornou um erro durante a busca de informações de sua conta. Se o problema persistir, tente alterar o servidor ou desative o proxy do sistema em configurações da Trinity.",
"nodeOutOfSync": "Servidor não sincronizado",
"nodeOutOfSyncExplanation": "O servidor selecionado não está sincronizado. Por favor, altere o servidor e tente novamente.",
"thisNodeOutOfSync": "O servidor selecionado não está sincronizado. Por favor, altere o servidor e tente novamente.",
@@ -74,6 +74,8 @@
"wallet": "Carteira",
"all": "Todos",
"sent": "Enviado",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Recebido",
"sending": "Enviando",
"receiving": "Recebendo",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "AVISO: Saldos em endereços já gasto",
"discordInformation": "Enviar mais de uma vez no mesmo endereço é perigoso. Por favor, acesse o canal de #help no Discord para descobrir o que fazer.",
"androidInsecureClipboardWarning": "O Android não oferece uma Área de Transferência segura.",
- "androidCopyPasteWarning": "Nunca copiar/colar sua seed em um dispositivo Android.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Eu não vou copiar/colar minha seed",
"mustBeStoredAppropriately": "Ela deve ser armazenada adequadamente.",
"deviceMayBecomeUnresponsive": "Seu dispositivo pode ficar sem responder por um tempo.",
@@ -144,14 +146,18 @@
"tryingAgainWithLocalPoW": "Tentando novamente com prova de trabalho local.",
"tryingAgainWithDifferentNode": "Tentar novamente com um servidor diferente.",
"errorFetchingAccountInformation": "Erro ao buscar informações da conta.",
- "errorSyncingAddresses": "Error syncing address information. Trying again with a different node.",
+ "errorSyncingAddresses": "Erro ao sincronizar informações do endereço. Tente novamente com um servidor diferente.",
"errorAccessingKeychain": "Erro de chaveiro",
"errorAccessingKeychainExplanation": "Não foi possível acessar o chaveiro necessário para armazenamento seguro.",
"mainWallet": "CONTA PRINCIPAL",
- "shouldUpdate": "A new update is available",
- "shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
- "forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "confirm": "Confirm",
+ "delete": "Delete",
+ "shouldUpdate": "Uma atualização está disponível",
+ "shouldUpdateExplanation": "Uma nova atualização foi lançada. É recomendável você atualizar para a versão mais recente.",
+ "forceUpdate": "Atualize o aplicativo para continuar",
+ "forceUpdateExplanation": "Foi lançada uma atualização importante. Por favor, atualize o aplicativo agora.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "A Seed contém caracteres inválidos",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Sua senha deve ter pelo menos {{minLength}} caracteres. Atualmente ela possui {{currentLength}} caracteres. Por favor, tente novamente.",
"passwordMismatch": "As senhas não conferem",
"passwordMismatchExplanation": "As senhas digitadas são diferentes. Tente novamente.",
- "anEncryptedCopy": "Um cópia criptografada da sua Seed será armazenada em seu dispositivo. Você usará esta senha para acessar sua carteira no futuro.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Digite a Senha Novamente"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Iniciar Sessão",
"setNode": "Selecionar Servidor",
"whyBiometricDisabled": "Por que a Autenticação Biométrica está desabilitada?",
- "whyBiometricDisabledExplanation": "Para sua segurança, a Autenticação Biométrica está desabilitada ao abrir o aplicativo pela primeira vez. Ao usar a Trinity você terá que fazer o login novamente, e então poderá usar a autenticação biométrica."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Carregando a seed pela primeira vez.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nunca revele sua seed a ninguém.",
"iotaLogo": "Logotipo da IOTA",
- "print": "IMPRIMIR",
+ "print": "Print",
"paperConvenience": "Imprimir uma cópia de sua Seed é uma maneira conveniente para armazená-la.",
"publicInsecure": "Mas imprimir em um wifi público ou uma impressora pública não é seguro.",
- "tapCheckboxes": "Por favor, toque as caixas de seleção abaixo para confirmar.",
- "wifiCheckbox": "Eu não vou imprimir em um rede publica",
- "printerCheckbox": "Eu não vou imprimir em uma impressora publica"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Seu endereço",
@@ -282,15 +289,13 @@
"copyAddress": "Copiar endereço",
"addressCopied": "Endereço copiado",
"addressCopiedExplanation": "O seu endereço foi copiado para a área de transferência.",
- "generateNewAddress": "Generate address",
+ "generateNewAddress": "Gerar novo endereço",
"noAddresses": "NÃO EXISTEM ENDEREÇOS",
"spent": "Gasto",
- "missingPermission": "Permissões do sistema de arquivo necessárias",
- "missingPermissionExplanation": "Acesso ao sistema de arquivo é necessário para compartilhar códigos QR.",
"tag": "Etiqueta",
- "generateAnAddress": "Generate address",
- "generateAnAddressTitle": "Generate an address",
- "generateAnAddressExplanation": "Please generate an address before using this function."
+ "generateAnAddress": "Gerar novo endereço",
+ "generateAnAddressTitle": "Gerar novo endereço",
+ "generateAnAddressExplanation": "Por favor, gere um endereço antes de usar esta função."
},
"saveYourSeed": {
"saveYourSeed": "Faça o backup de sua seed",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Vamos salvar sua seed",
"youCanHighlightCharacters": "Você pode marcar 9 caracteres por vez",
"printBlankWallet": "Imprimir uma carteira em branco",
- "whatIsChecksum": "Toda Seed possui um Código de Verificação de 3 caracteres",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Eu salvei a minha Seed",
"checksumExplanation": "Sempre que você adicionar uma seed na sua carteira, você deve verificar que as somas de verificação geradas pela carteira são iguais às que você tem anotado.",
"mustSaveYourSeed": "<0><0>Você deve salvar sua seed usando 0><1>pelo menos uma1><2> das opções abaixo.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Tempo total",
"addressPasteDetected": "Colagem de endereço detectado",
"addressPasteExplanation": "Parece que você colou um endereço. Certifique-se de que o endereço coincide com o qual você quer enviar.",
- "invalid": "INVÁLIDO"
+ "invalid": "INVÁLIDO",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Vamos adicionar um nome",
@@ -446,7 +453,8 @@
"empty": "Vazio",
"retrying": "Tentando de novo",
"yesterday": "Ontem",
- "promotingAnotherBundle": "Promover outro pacote"
+ "promotingAnotherBundle": "Promover outro pacote",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Ver Seed",
@@ -504,18 +512,21 @@
"currency": "Moeda"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Tem certeza que deseja sair?"
+ "logoutConfirmation": "Tem certeza que deseja sair?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Ler código QR"
},
"unitInfoModal": {
- "unitSystem": "SISTEMA DE UNIDADES",
+ "unitSystem": "Unit System",
"trillion": "Trilhão",
"billion": "Bilhão",
"million": "Milhão",
"thousand": "Mil",
- "one": "Um"
+ "one": "Um",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Por que eu não posso usar meu saldo integral?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sincronizando sua conta."
},
"useExistingSeed": {
- "title": "Digite a seed e o nome da conta.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Formato de servidor incorreto",
"validSeedExplanation": "Seeds válidas devem possuir 81 caracteres e conter apenas A-Z ou 9."
},
@@ -545,14 +556,14 @@
"enterPassword": "Digite a senha para exibir sua seed.",
"viewSeed": "Ver Seed",
"hideSeed": "Esconder Seed",
- "notAvailable": "Seed export is not available for {{accountType}} account type",
- "accountIndex": "Your Ledger account index",
- "accountPage": "Your Ledger account page"
+ "notAvailable": "Exportação da Seed não está disponível para o tipo de conta {{accountType}}",
+ "accountIndex": "Seu índice de conta Ledger",
+ "accountPage": "Página de sua conta Ledger"
},
"saveSeedConfirmation": {
"didSaveSeed": "Você fez backup de sua seed?",
- "alreadyHave": "Eu tenho minha Seed armazenada",
- "reenterSeed": "No próximo passo você deverá re-digitar sua seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Se você não fez o backup de sua seed e seu dispositivo falhar, você perderá toda sua IOTA.",
"pleaseConfirm": "Por favor, confirme que você tem armazenado sua seed de modo seguro."
},
@@ -572,15 +583,19 @@
"status": "Situação",
"fingerprintUnavailable": "Autenticação Biométrica indisponível",
"fingerprintUnavailableExplanation": "Seu dispositivo não suporta reconhecimento de biometria ou não está configurado nas opções do dispositivo.",
- "buttonInstructionsDisable": "Pressione o botão abaixo para desabilitar a autenticação biométrica.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Pressione o botão abaixo para habilitar a autenticação biométrica.",
- "buttonInstructionsDisableIPhoneX": "Pressione o botão abaixo para desabilitar a identificação do rosto.",
- "buttonInstructionsEnableIPhoneX": "Pressione o botão abaixo para permitir a identificação do rosto.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Toque o leitor de impressão digital para entrar"
},
"transferConfirmation": {
"youAreAbout": "Você está prestes a enviar {{contents}} para o endereço",
- "aMessage": "uma mensagem"
+ "aMessage": "uma mensagem",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Código incorreto",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Exportar SeedVault",
- "seedVaultExplanation": "O SeedVault é um arquivo criptografado para armazenar sua Seed com segurança. A Seed é criptografada por trás de uma chave SeedVault e não pode ser acessada sem a chave.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Certifique-se de fazer backup do arquivo em vários locais (por exemplo, disco rígido, nuvem, USB). Se você perde esse arquivo e não armazenou sua semente em outro lugar, você vai perder seus IOTAs.",
"exportFail": "SeedVault exportação falhou",
"exportFailExplanation": "Houve um problema ao exportar o SeedVault. Por favor, certifique-se de que você tem as permissões apropriadas e espaço livre suficiente.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Sua seed foi importada com sucesso.",
"saveToDownloadFolder": "Salvar na pasta de download",
"importSeedVault": "Importar SeedVault",
- "dropSeedVaultHere": "Arraste sua SeedVault até aqui <1>1> ou clique para procurar",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Digite sua senha para abrir o SeedVault",
"noSeedFound": "SeedVault não contém uma Seed válida",
"noSeedFoundExplanation": "O SeedVault está vazio ou contém uma Seed com um formato inválido.",
"seedFileError": "Falha ao abrir o SeedVault",
"seedFileErrorExplanation": "Houve um problema ao abrir o SeedVault. Se você selecionou o arquivo correto então o mesmo pode estar corrompido.",
- "seedVaultKeyExplanation": "Primeiro temos que proteger seu SeedVault. Por favor, escolha uma senha para criptografar o arquivo. Você precisará desta senha para recuperar a seed do backup do SeedVault. Sinta-se livre para usar a mesma senha que você usa na Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparando as transferências",
"gettingTransactionsToApprove": "Obtendo as transações para aprovação",
"proofOfWork": "Completando a aprovação",
- "broadcasting": "Transmitindo"
+ "broadcasting": "Transmitindo",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "A transição do registro instantâneo não pode ser concluída",
@@ -669,7 +687,8 @@
"transition": "Transição",
"transitioning": "Fazendo a transição para o Snapshot.",
"generatingAndDetecting": "Gerando endereços e detectando saldo.",
- "attaching": "Anexando endereços para o Tangle."
+ "attaching": "Anexando endereços para o Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Sucesso no preenchimento automático",
@@ -683,8 +702,8 @@
"newVersionAvailableExplanation": "A new Trinity {{version}} version is available. Carefully read the release notes and verify the download source before updating:",
"installUpdate": "Instale a atualização e reinicie",
"installUpdateExplanation": "Download completo, A Trinity será reiniciada agora para instalar a atualização.",
- "downloadingUpdate": "Downloading update",
- "downloadProgress": "{{transferred}} of {{total}} downloaded"
+ "downloadingUpdate": "Baixando atualizações",
+ "downloadProgress": "{{transferred}} de {{total}} baixado"
},
"notificationLog": {
"errorLog": "Registros de erro"
@@ -706,8 +725,8 @@
"completeSetup": "Configuração completa"
},
"proxy": {
- "proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxy": "Usar proxy do sistema",
+ "proxyExplanation": "Detectar e usar as configurações de proxy do sistema. Feche e reabra a carteira depois de alterar essa configuração."
},
"notifications": {
"notifications": "Notificações",
@@ -733,35 +752,35 @@
"sweepConfirmationTitle": "Confirmação de varredura"
},
"ledger": {
- "ready": "Ledger device connected and ready",
- "notReady": "If you wish to use a Ledger device, connect and unlock it now",
- "indexInUse": "Index already in use for account {{account}}",
- "indexInUseExplanation": "Your chosen index is already in use on one of your accounts. Please choose another index number.",
- "proceedWithLedger": "Proceed with Ledger setup",
- "accountIndex": "Account index",
- "accountPage": "Account page",
- "chooseAccountIndex": "Choose your Ledger account index",
- "accountIndexExplanation": "Your Ledger can store multiple seeds. Each seed is identified by a unique index number. An unused index has been pre-selected, but feel free to choose your own. Make sure you note down your chosen index number.",
- "accountPageExplanation": "Some third party wallets require pages.",
- "connectionError": "Cannot connect to Ledger",
- "connectionErrorExplanation": "Check that your Ledger is connected and unlocked.",
- "connectionTitle": "Connect your Ledger",
- "connectionExplanation": "A Ledger device must be connected to perform this function.",
- "transactionTitle": "Scroll through and approve the transaction on your Ledger",
- "transactionExplanation": "Use your Ledger device to approve the outgoing transaction.",
- "applicationTitle": "Open Ledger IOTA app",
- "applicationExplanation": "Go to your Ledger and open the IOTA app to continue using Trinity.",
- "cannotSendZeroValueTitle": "Cannot send zero value transfer",
- "cannotSendZeroValueExplanation": "Cannot send zero value transfers with a Ledger device.",
- "ledgerDisconnectedTitle": "Ledger device disconnected",
- "ledgerDisconnectedExplanation": "The Ledger device was disconnected. Please reconnect and try again.",
- "ledgerDeniedTitle": "Transaction denied",
- "ledgerDeniedExplanation": "The transaction was denied on the Ledger device.",
- "ledgerIncorrectIndex": "Ledger device mismatch",
- "ledgerIncorrectIndexExplanation": "The connected Ledger device does not match the one linked to this account, or the recovery phrase has been changed.",
- "checkAddress": "Check the receive address",
- "checkAddressExplanation": "Check that the address matches the one displayed on your Ledger device.",
- "applicationNotInitialised": "Warning unconfirmed",
- "applicationNotInitialisedExplanation": "Reopen the IOTA app on your Ledger device, accept the informational warning and try again."
+ "ready": "Dispositivo Ledger conectado e pronto",
+ "notReady": "Se você deseja usar um dispositivo de Ledger, conecte e desbloqueie agora",
+ "indexInUse": "Índice já em uso para conta {{account}}",
+ "indexInUseExplanation": "Índice escolhido já está em uso em uma das suas contas. Por favor escolha outro número de índice.",
+ "proceedWithLedger": "Continuar com a configuração de Ledger",
+ "accountIndex": "Índice de conta",
+ "accountPage": "Página da conta",
+ "chooseAccountIndex": "Escolha o seu índice da conta Ledger",
+ "accountIndexExplanation": "Seu Ledger pode armazenar varias Seeds. Cada Seed é identificada por um número de índice único. Um índice ainda não usado foi pre-selecionado, mas sinta-se a vontade de escolher o seu próprio. Certifique-se de anotar o número do índice escolhido.",
+ "accountPageExplanation": "Algumas carteiras de terceiros exigem páginas.",
+ "connectionError": "Não foi possível conectar-se ao Ledger",
+ "connectionErrorExplanation": "Verifique se seu Ledger está conectado e desbloqueado.",
+ "connectionTitle": "Conecte seu Ledger",
+ "connectionExplanation": "Um dispositivo de Ledger deve estar conectado para executar esta função.",
+ "transactionTitle": "Use a barra de rolagem para aprovar a transação no seu Ledger",
+ "transactionExplanation": "Use seu dispositivo de Ledger para aprovar a transação de saída.",
+ "applicationTitle": "Abrir IOTA Ledger app",
+ "applicationExplanation": "Vá para seu Ledger e abra o aplicativo IOTA para continuar usando a Trinity.",
+ "cannotSendZeroValueTitle": "Não é possível enviar uma transferência sem valor",
+ "cannotSendZeroValueExplanation": "Não possível enviar transferências sem valor com um dispositivo de Ledger.",
+ "ledgerDisconnectedTitle": "Dispositivo Ledger desconectado",
+ "ledgerDisconnectedExplanation": "O dispositivo Ledger foi desconectado. Por favor, reconecte e tente novamente.",
+ "ledgerDeniedTitle": "Transação recusada",
+ "ledgerDeniedExplanation": "A transação foi recusada no dispositivo Ledger.",
+ "ledgerIncorrectIndex": "Dispositivo Ledger incompatível",
+ "ledgerIncorrectIndexExplanation": "O Ledger conectado não consta com o Ledger registrado nessa conta, ou a frase de recuperação foi mudada.",
+ "checkAddress": "Verifique o endereço do destinatário",
+ "checkAddressExplanation": "Verifique se o endereço é igual ao endereço no dispositivo Ledger.",
+ "applicationNotInitialised": "Aviso não confirmado",
+ "applicationNotInitialisedExplanation": "Reabra o aplicativo IOTA no seu dispositivo Ledger, aceite o aviso e tente novamente."
}
}
\ No newline at end of file
diff --git a/src/shared/locales/pt-PT/translation.json b/src/shared/locales/pt-PT/translation.json
index 9f85c27ec2..7e1664bb75 100644
--- a/src/shared/locales/pt-PT/translation.json
+++ b/src/shared/locales/pt-PT/translation.json
@@ -74,6 +74,8 @@
"wallet": "Wallet",
"all": "All",
"sent": "Sent",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Received",
"sending": "Enviando",
"receiving": "Receiving",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "A Seed contém caracteres inválidos",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "As palavras-passe não coincidem",
"passwordMismatchExplanation": "As palavras-passe que inseriu não coincidem. Por favor tente de novo.",
- "anEncryptedCopy": "Um cópia cifrada da sua Seed será guardada no seu dispositivo. Utilizará esta palavra-passe para aceder, futuramente, à sua carteira.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Digite de novo a password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "A carregar a Seed pela primeira vez.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nunca partilhe a sua Seed com ninguém.",
"iotaLogo": "Logótipo IOTA",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Etiqueta",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Moeda"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "Um"
+ "one": "Um",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have saved my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "uma mensagem"
+ "aMessage": "uma mensagem",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/ro/translation.json b/src/shared/locales/ro/translation.json
index c6216e0c09..8d5f307a9f 100644
--- a/src/shared/locales/ro/translation.json
+++ b/src/shared/locales/ro/translation.json
@@ -74,6 +74,8 @@
"wallet": "Portofel",
"all": "All",
"sent": "Trimis",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Primit",
"sending": "Se trimite",
"receiving": "Se primește",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed contains invalid characters",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "Passwords do not match",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Loading seed for the first time.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Tag",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Currency"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have saved my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/ru/translation.json b/src/shared/locales/ru/translation.json
index 53777645e1..2e6df8e405 100644
--- a/src/shared/locales/ru/translation.json
+++ b/src/shared/locales/ru/translation.json
@@ -74,6 +74,8 @@
"wallet": "Кошелёк",
"all": "All",
"sent": "Отправлено",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Получено",
"sending": "Отправка",
"receiving": "Получение",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "Предупреждение: Средства на использованном адресе",
"discordInformation": "Отправлять с одного адреса несколько раз опасно. Пожалуйста, посетите канал #help в Discord'е, чтобы узнать, что вы можете сделать.",
"androidInsecureClipboardWarning": "Андроид не предоставляет безопасного буфера обмена.",
- "androidCopyPasteWarning": "Никогда не пользуйтесь функцией \"Скопировать/Вставить\" на Андроиде.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Я не буду копировать/вставлять мой ключ",
"mustBeStoredAppropriately": "Нужно хранить надлежащим образом.",
"deviceMayBecomeUnresponsive": "Ваше устройство может не отвечать какое-то время.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Ключ содержит недопустимые символы",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Ваш пароль должен быть длиной как минимум {{minLength}} символов. Текущая длина {{currentLength}} символов. Пожалуйста, попробуйте еще раз.",
"passwordMismatch": "Пароли не совпадают",
"passwordMismatchExplanation": "Введенные пароли не совпадают. Пожалуйста, попробуйте еще раз.",
- "anEncryptedCopy": "Зашифрованная копия Вашего ключа будет сохранена на Вашем устройстве. В дальнейшем Вы будете использовать для доступа к кошельку данный пароль.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Введите пароль еще раз"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Войти",
"setNode": "Выбрать узел",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Загрузка ключа в самый первый раз.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Никогда не сообщайте свой ключ кому-либо.",
"iotaLogo": "Логотип IOTA",
- "print": "НАПЕЧАТАТЬ",
+ "print": "Print",
"paperConvenience": "Печать бумажной копии Вашего ключа - это удобный способ его хранения.",
"publicInsecure": "Но печать через общественный Wi-Fi или на общедоступном принтере небезопасна.",
- "tapCheckboxes": "Пожалуйста, поставьте галочки ниже, чтобы подтвердить.",
- "wifiCheckbox": "Я не буду печатать через общественный Wi-Fi",
- "printerCheckbox": "Я не буду печатать на общедоступном принтере"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "НЕТ АДРЕСОВ",
"spent": "Использованный адрес",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Метка",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "Одновременно можно выделить 9 символов",
"printBlankWallet": "Распечатать чистый кошелёк",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Я сохранил свой ключ",
"checksumExplanation": "Каждый раз, когда Вы добавляете ключ к Вашему кошельку, Вы должны убедиться, что контрольная сумма, сгенерированная кошельком, соответствует той, которую Вы записали.",
"mustSaveYourSeed": "<0><0>Вы должны сохранить свой ключ 0><1>как минимум одним 1> <2> из перечисленных ниже способов. 2> 0>"
@@ -345,7 +351,8 @@
"totalTime": "Общее время",
"addressPasteDetected": "Обнаружена вставка адреса",
"addressPasteExplanation": "Похоже, что Вы вставили адрес. Убедитесь, что этот адрес соответствует тому, на который Вы хотите отправить.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Пожалуйста, добавьте название",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Показать ключ",
@@ -504,18 +512,21 @@
"currency": "Валюта"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Вы уверены, что хотите выйти?"
+ "logoutConfirmation": "Вы уверены, что хотите выйти?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Сканировать QR-код"
},
"unitInfoModal": {
- "unitSystem": "СИСТЕМА ЕДИНИЦ",
+ "unitSystem": "Unit System",
"trillion": "Триллион",
"billion": "Миллиард",
"million": "Миллион",
"thousand": "Тысяча",
- "one": "Одна"
+ "one": "Одна",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Почему нельзя тратить мои баланс целиком?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Синхронизация Вашего счёта."
},
"useExistingSeed": {
- "title": "Введите ключ и название счёта.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Неверный формат ключа",
"validSeedExplanation": "Корректный ключ должен содержать 81 символ и состоять только из A-Z и 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Вы создали резервную копию Вашего ключа?",
- "alreadyHave": "Я сохранил свой ключ",
- "reenterSeed": "На следующем этапе Вам будет предложено повторно ввести Ваш ключ.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Если вы не создали резервную копию Вашего ключа и на Вашем устройстве возникнет сбой, Вы потеряете все Ваши IOTA.",
"pleaseConfirm": "Пожалуйста, подтвердите, что Вы надежно сохранили Ваш ключ."
},
@@ -572,15 +583,19 @@
"status": "Статус",
"fingerprintUnavailable": "Биометрическая аутентификация недоступна",
"fingerprintUnavailableExplanation": "Ваше устройство не поддерживает биометрической аутентификации, или она не была настроена в параметрах устройства.",
- "buttonInstructionsDisable": "Нажмите на кнопку ниже, чтобы отключить аутентификацию на основе отпечатков пальцев.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Нажмите на кнопку ниже, чтобы включить аутентификацию на основе отпечатков пальцев.",
- "buttonInstructionsDisableIPhoneX": "Нажмите на кнопку ниже, чтобы отключить идентификатор лица.",
- "buttonInstructionsEnableIPhoneX": "Нажмите на кнопку ниже, чтобы включить идентификатор лица.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Приложите палец к сенсору чтения отпечатков пальцев для входа"
},
"transferConfirmation": {
"youAreAbout": "Вы собираетесь отправить {{contents}} на адрес",
- "aMessage": "сообщение"
+ "aMessage": "сообщение",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Неправильный код",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Подготовка трансфера",
"gettingTransactionsToApprove": "Подтверждение транзакции",
"proofOfWork": "Завершение доказательства работы",
- "broadcasting": "Трансляция"
+ "broadcasting": "Трансляция",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Не удается завершить процесс актуализации после снимка сети",
@@ -669,7 +687,8 @@
"transition": "Переход",
"transitioning": "Процесс актуализации после снимка сети.",
"generatingAndDetecting": "Genererer adresser og registrerer balance.",
- "attaching": "Привязка адресов к Tangle."
+ "attaching": "Привязка адресов к Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Автозаполнение прошло успешно",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/sk/translation.json b/src/shared/locales/sk/translation.json
index b34bad00d9..735cacc00c 100644
--- a/src/shared/locales/sk/translation.json
+++ b/src/shared/locales/sk/translation.json
@@ -19,7 +19,7 @@
"invalidResponse": "Chyba Nodu",
"invalidResponseExplanation": "Node vrátil chybu. Vyskúšajte zmeniť Node.",
"invalidResponseFetchingAccount": "Node vrátil chybu pri získavani informácií o účte. Vyskúšajte zmeniť Node.",
- "invalidResponseFetchingAccountDesktop": "The node returned an error while fetching your account information. If your problem persists, try changing node or disabling your system proxy in Trinity Settings.",
+ "invalidResponseFetchingAccountDesktop": "Pri načítavaní informácii o Vašom účte došlo ku chybe. Ak problém pretrváva, skúste zmeniť Node, alebo zakázať proxy server v nastaveniach Trinity.",
"nodeOutOfSync": "Váš Node nie je synchronizovaný",
"nodeOutOfSyncExplanation": "Vami zvolený Node nie je synchronizovaný. Prosím, zmeňte Node alebo to skúste znova.",
"thisNodeOutOfSync": "Vami zvolený Node nie je synchronizovaný. Prosím, zmeňte Node alebo to skúste znova.",
@@ -74,6 +74,8 @@
"wallet": "Peňaženka",
"all": "Všetko",
"sent": "Odoslané",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Prijaté",
"sending": "Odosielanie",
"receiving": "Prijímanie",
@@ -98,7 +100,7 @@
"noLongerValid": "Balíček, ktorý sa snažíte podporiť, už nie je platný",
"transactionAlreadyConfirmed": "Transakcia už bola potvrdená",
"transactionAlreadyConfirmedExplanation": "Transakcia, ktorú sa pokúšate podporiť, je už potvrdená.",
- "cannotSendToOwn": "Sending to an input address",
+ "cannotSendToOwn": "Odosielate na vstupnú adresu",
"cannotSendToOwnExplanation": "Nie je možné odoslať na adresu, ktorá je použitá ako vstup v transakcií.",
"pleaseWait": "Prosím čakajte",
"pleaseWaitEllipses": "Prosím čakajte...",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "UPOZORNENIE: Prostriedky na adresách z ktorých bolo už odoslané",
"discordInformation": "Odosielanie z rovnakej adresy viackrát je nebezpečné. Prosím, navštívte #help kanál v aplikácii Discord, aby ste zistili, čo môžete urobiť.",
"androidInsecureClipboardWarning": "Schránka v systéme Android nie je bezpečná.",
- "androidCopyPasteWarning": "Nikdy nekopírujte/nevkladajte váš Seed do Android zariadenia.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Nebudem kopírovať/vkladať svoj Seed",
"mustBeStoredAppropriately": "Musí byť uložený zodpovedajúcim spôsobom.",
"deviceMayBecomeUnresponsive": "Vaše zariadenie môže na chvíľu prestať reagovať.",
@@ -144,14 +146,18 @@
"tryingAgainWithLocalPoW": "Opakovanie pomocou miestneho režimu PoW.",
"tryingAgainWithDifferentNode": "Opakovanie s iným Nodom.",
"errorFetchingAccountInformation": "Pri načítavaní informacií o účte došlo ku chybe.",
- "errorSyncingAddresses": "Error syncing address information. Trying again with a different node.",
+ "errorSyncingAddresses": "Chyba pri synchronizácii informácii adresy. Skúste opakovať s iným Nodom.",
"errorAccessingKeychain": "Chyba kľúčenky",
- "errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
+ "errorAccessingKeychainExplanation": "Nie je možné získať prístup k úložišti kľúčov.",
"mainWallet": "HLAVNÝ ÚČET",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "Je k dispozicii nová aktualizácia",
"shouldUpdateExplanation": "Bola vydaná nová aktualizácia. Doporučujeme aktualizovať na najnovšiu verziu.",
"forceUpdate": "Ak chcete pokračovať, aktualizujte aplikáciu",
- "forceUpdateExplanation": "Bola vydaná kritická aktualizácia. Ihneď aktualizujte aplikáciu."
+ "forceUpdateExplanation": "Bola vydaná kritická aktualizácia. Ihneď aktualizujte aplikáciu.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed obsahuje neplatné znaky",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Heslo musí obsahovať minimálne {{minLength}} znakov. Vaše heslo má momentálne {{currentLength}} znakov. Prosím, skúste to znova.",
"passwordMismatch": "Heslá sa nezhodujú",
"passwordMismatchExplanation": "Zadané heslo je neplatné. Prosím, skúste to znova.",
- "anEncryptedCopy": "Vo vašom zariadení sa uloží zašifrovaná kópia vášho Seedu. Týmto heslom sa budete prihlasovať do svojej peňaženky.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Zadajte heslo znova"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Prihlásiť sa",
"setNode": "Nastaviť Node",
"whyBiometricDisabled": "Prečo je biometrické overovanie vypnuté?",
- "whyBiometricDisabledExplanation": "Pri prvom načítaní aplikácie je biometrické prihlásenie pre vašu bezpečnosť vypnuté. Ak budete pri použití Trinity, odhlásený z dôvodu nečinnosti, môžete prihlásiť späť pomocou biometrického overenia."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Prvotné načítanie Seedu.",
@@ -256,8 +263,8 @@
"individualLetters": "Vyberte náhodné znaky.",
"individualLetterCount": "Stlačte <1><0>{{count}}0>1> písmeno pre náhodný výber.",
"individualLetterCount_plural": "Stlačte <1><0>{{count}}0>1> písmen pre náhodný výber.",
- "randomiseCharsToContinue": "Randomise <1>{{count}}1> character to continue.",
- "randomiseCharsToContinue_plural": "Randomise <1>{{count}}1> characters to continue.",
+ "randomiseCharsToContinue": "Pre pokračovanie vyberte <1> {{count}} 1> náhodný znak.",
+ "randomiseCharsToContinue_plural": "Pre pokračovanie vyberte <1> {{count}} 1> náhodné znaky.",
"whatIsASeed": "Čo je to Seed?"
},
"onboardingComplete": {
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Svoj Seed nikdy nikomu neprezrádzajte.",
"iotaLogo": "IOTA logo",
- "print": "TLAČIŤ",
+ "print": "Print",
"paperConvenience": "Vytlačenie papierovej kópie vášho Seedu je vhodný spôsob, ako ho uchovať.",
"publicInsecure": "Ale tlačenie cez verejnú wifi alebo na verejnej tlačiarni nie je bezpečné.",
- "tapCheckboxes": "Pre potvrdenie, prosím, zaškrtnite políčka nižšie.",
- "wifiCheckbox": "Nebudem tlačiť cez verejnú wifi",
- "printerCheckbox": "Nebudem tlačiť na verejnej tlačiarni"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Vaša adresa",
@@ -285,12 +292,10 @@
"generateNewAddress": "Generovať adresu",
"noAddresses": "ŽIADNE ADRESY",
"spent": "Utratené",
- "missingPermission": "Je požadované povolenie súborového systému",
- "missingPermissionExplanation": "Pre zdieľanie QR kódu je požadivaný prístup k súborovému systému.",
"tag": "Značka",
"generateAnAddress": "Generovať adresu",
"generateAnAddressTitle": "Generovať adresu",
- "generateAnAddressExplanation": "Please generate an address before using this function."
+ "generateAnAddressExplanation": "Prosím vygenerujte adresu pred použitím tejto funkcie."
},
"saveYourSeed": {
"saveYourSeed": "Zálohujte váš Seed",
@@ -301,10 +306,11 @@
"paperWallet": "Papierová peňaženka",
"writeYourSeedDown": "Zapíšte si váš Seed",
"seedClearedExplanation": "Kvôli väčšej bezpečnosti bol Seed zo schránky vymazaný.",
- "letsWriteDownYourSeed": "Let's write down your seed",
+ "letsWriteDownYourSeed": "Zapíšte si niekde Váš Seed",
"youCanHighlightCharacters": "Môžete zvýrazniť 9 znakov súčasne",
"printBlankWallet": "Tlač prázdnej šablóny",
- "whatIsChecksum": "Každý Seed má zodpovedajúci 3-znakový kontrolný súčet",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Svoj Seed mám uložený",
"checksumExplanation": "Vždy, keď pridáte Seed do vašej peňaženky, mali by ste sa uistiť, že kontrolný súčet vygenerovaný peňaženkou zodpovedá tomu, ktorý ste si zapísali.",
"mustSaveYourSeed": "<0><0>Je potrebné zálohovať váš Seed 0><1>aspoň jedným1><2> z nižšie uvedených spôsobov.2>0>"
@@ -317,8 +323,8 @@
"incorrectSeedExplanation": "Seed, ktorý ste zadali, je neplatný. Prosím, skúste to znova.",
"ifYouHaveNotSaved": "Ak nemáte svoj Seed zálohovaný, vráťte sa, prosím, späť a urobte tak.",
"enterSeedBelow": "Zadajte nižšie váš novovytvorený Seed pre potvrdenie, že ste si ho správne zazálohovali",
- "clipboardWarning": "Do not copy paste your seed",
- "clipboardWarningExplanation": "WARNING: Copy paste is disabled for your security."
+ "clipboardWarning": "Váš Seed nie je možné kopírovať ani vkladať",
+ "clipboardWarningExplanation": "UPOZORNENIE: Kopírovanie a vkladanie je zakázané pre Vašu bezpečnosť."
},
"send": {
"invalidAddress": "Neplatná adresa",
@@ -345,7 +351,8 @@
"totalTime": "Celkový čas",
"addressPasteDetected": "Zistené kopírovanie adresy",
"addressPasteExplanation": "Vyzerá to, že ste skopírovali adresu zo schránky. Uistite sa, že vložená adresa je naozaj tá, na ktorú chcete odoslať prostriedky.",
- "invalid": "NEPLATNÝ"
+ "invalid": "NEPLATNÝ",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Zadajte názov",
@@ -355,10 +362,10 @@
"modeSelection": {
"advanced": "Pokročilý",
"standard": "Štandardný",
- "advancedModeExplanation": "Advanced mode will display more detailed technical information.",
- "modesExplanation": "Only enable Advanced mode if you are experienced using IOTA. You may find it confusing otherwise.",
- "modeUpdated": "Mode updated",
- "modeUpdatedExplanation": "You have changed to {{mode}} mode"
+ "advancedModeExplanation": "Pokročilý režim zobrazí podrobnejšie technické informácie.",
+ "modesExplanation": "Pokročilý režim povolte iba ako skúsený uživateľ IOTA. Inak to môže byť pre Vás matúce.",
+ "modeUpdated": "Režim zmenený",
+ "modeUpdatedExplanation": "Zmenili ste na {{mode}} rezimu"
},
"settings": {
"transferSending": "Odosielanie transakcie",
@@ -446,7 +453,8 @@
"empty": "Prázdne",
"retrying": "Pokúša sa znova",
"yesterday": "Včera",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Podpora ďalšieho balíčku",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Zobraziť Seed",
@@ -504,18 +512,21 @@
"currency": "Mena"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Určite sa chcete odhlásiť?"
+ "logoutConfirmation": "Určite sa chcete odhlásiť?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Naskenujte QR kód"
},
"unitInfoModal": {
- "unitSystem": "JEDNOTKOVÝ SYSTÉM",
+ "unitSystem": "Unit System",
"trillion": "Bilión",
"billion": "Miliarda",
"million": "Milión",
"thousand": "Tisíc",
- "one": "Jedna"
+ "one": "Jedna",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Prečo nemôžem použiť celý zostatok môjho účtu?",
@@ -523,9 +534,9 @@
"discordInformation": "Pokiaľ chcete zistiť vaše možnosti, prejdite do #help v aplikácii Discord."
},
"deleteAccount": {
- "areYouSure": "Are you sure you want to delete your account?",
+ "areYouSure": "Naozaj si prajete vymazať tento účet?",
"yourSeedWillBeRemoved": "Váš Seed a história transakcií budú odstránené.",
- "thisAction": "This action cannot be undone",
+ "thisAction": "Túto akciu nie je možné vrátiť späť",
"enterPassword": "Pre zmazanie účtu vložte svoje heslo."
},
"manualSync": {
@@ -537,7 +548,7 @@
"syncingYourAccount": "Váš účet sa synchronizuje."
},
"useExistingSeed": {
- "title": "Zadajte svoj Seed a názov účtu.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Nesprávny formát Seedu",
"validSeedExplanation": "Platný Seed má 81 znakov a obsahuje iba znaky A-Z alebo 9."
},
@@ -545,14 +556,14 @@
"enterPassword": "Pre zobrazenie vášho Seedu vložte heslo.",
"viewSeed": "Zobraziť Seed",
"hideSeed": "Skryť Seed",
- "notAvailable": "Seed export is not available for {{accountType}} account type",
- "accountIndex": "Your Ledger account index",
- "accountPage": "Your Ledger account page"
+ "notAvailable": "Seed export nie je k dispozícii pre typ účtu {{accountType}}",
+ "accountIndex": "Index účtu vo Vašom Ledgeri",
+ "accountPage": "Stránka účtu vo Vašom Ledgeri"
},
"saveSeedConfirmation": {
"didSaveSeed": "Zazálohovali ste si váš Seed?",
- "alreadyHave": "Svoj Seed mám zálohovaný",
- "reenterSeed": "V ďalšom kroku budete požiadaný o znovuvloženie vášho Seedu.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Ak ste si nezazálohovali váš Seed a vaše zariadenie bude poškodené, stratíte všetky vaše IOTY.",
"pleaseConfirm": "Potvrďte, prosím, že máte váš Seed bezpečne uložený."
},
@@ -572,15 +583,19 @@
"status": "Stav",
"fingerprintUnavailable": "Biometrické overenie nie je k dispozícii",
"fingerprintUnavailableExplanation": "Vaše zariadenie nepodporuje biometrické overenie alebo nebolo povolené v nastaveniach vášho zariadenia.",
- "buttonInstructionsDisable": "Tlačidlom nižšie vypnete overovanie odtlačkom prsta.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Tlačidlom nižšie zapnete overovanie odtlačkom prsta.",
- "buttonInstructionsDisableIPhoneX": "Stlačením tlačidla nižšie vypnete overenie pomocou rozpoznávania tváre.",
- "buttonInstructionsEnableIPhoneX": "Stlačením tlačidla nižšie zapnete overenie pomocou rozpoznávania tváre.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Pre prihlásenie priložte prst na čítačku"
},
"transferConfirmation": {
"youAreAbout": "Chystáte se odoslať {{contents}} na adresu",
- "aMessage": "správa"
+ "aMessage": "správa",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Neplatný kód",
@@ -601,27 +616,29 @@
},
"seedVault": {
"exportSeedVault": "Exportovať SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Uistite sa, že si zálohujete súbor na viacerých miestach (napríklad pevný disk, cloud, USB). Ak stratíte tento súbor a nebudete mať uložený Váš seed iným spôsobom, stratíte Vaše IOTA.",
"exportFail": "Export SeedVault zlyhal",
"exportFailExplanation": "Počas exportovania Vášho SeedVault nastal problém. Prosím, uistite sa, že máte povolenie na zápis súborov a dostatok miesta.",
"exportSuccess": "SeedVault je exportovaný",
"exportSuccessExplanation": "Váš kryptovaný seed súbor bol úspešne exportovaný.",
- "unrecognisedKey": "Unrecognised SeedVault Key",
- "unrecognisedKeyExplanation": "The key was not recognised. Please try again.",
- "emptyKey": "No SeedVault Key entered",
- "emptyKeyExplanation": "You must enter a key. Please try again.",
+ "unrecognisedKey": "Heslo súboru SeedVault nie je rozpoznané",
+ "unrecognisedKeyExplanation": "Nesprávne heslo, skúste to znova.",
+ "emptyKey": "Nebolo zadané žiadne heslo súboru SeedVault",
+ "emptyKeyExplanation": "Musíte zadať heslo. Skúste to znova.",
"importSuccess": "Seed importovaný",
"importSuccessExplanation": "Váš Seed bol úspešne importovaný.",
"saveToDownloadFolder": "Uložiť do priečinku stiahnuté",
"importSeedVault": "Importovať SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
- "enterKeyExplanation": "Enter your key to open the SeedVault",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
+ "enterKeyExplanation": "Zadajte Vaše heslo k otvoreniu súboru SeedVault",
"noSeedFound": "SeedVault neobsahuje platný seed",
"noSeedFoundExplanation": "SeedVault je buď prázdny, alebo obsahuje seed v neplatnom formáte.",
"seedFileError": "Otvorenie SeedVault zlyhalo",
"seedFileErrorExplanation": "Počas otvárania SeedVault nastal problém. Ak Ste zvolili naozaj správny súbor, je možné, že je poškodený.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Príprava transakcie",
"gettingTransactionsToApprove": "Získanie transakcií na schválenie",
"proofOfWork": "Dokončenie proof of work",
- "broadcasting": "Odosielanie transakcií do siete"
+ "broadcasting": "Odosielanie transakcií do siete",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Nie je možné dokončiť aktualizáciu údajov po Snapshote",
@@ -669,7 +687,8 @@
"transition": "Aktualizovať",
"transitioning": "Aktualizácia údajov po Snapshote.",
"generatingAndDetecting": "Generujem adresy a zisťujem zostatok.",
- "attaching": "Pripájam adresy do siete Tangle."
+ "attaching": "Pripájam adresy do siete Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Automatické vyplnenie úspešné",
@@ -681,10 +700,10 @@
"noUpdatesAvailableExplanation": "You have the latest version of Trinity Desktop.",
"newVersionAvailable": "K dispozícií je nová verzia",
"newVersionAvailableExplanation": "A new Trinity {{version}} version is available. Carefully read the release notes and verify the download source before updating:",
- "installUpdate": "Install update and restart",
- "installUpdateExplanation": "Download complete, Trinity will now restart to install the update.",
+ "installUpdate": "Nainštalujte aktualizáciu a reštartujte",
+ "installUpdateExplanation": "Stahovanie bolo dokončené, Trinity reštartuje a nainštaluje aktualizáciu.",
"downloadingUpdate": "Sťahuje sa aktualizácia...",
- "downloadProgress": "{{transferred}} of {{total}} downloaded"
+ "downloadProgress": "Stiahnuté {{transferred}} z {{total}}"
},
"notificationLog": {
"errorLog": "Zoznam chýb"
@@ -692,76 +711,76 @@
"terms": {
"termsAndConditions": "Podmienky používania",
"accept": "Akceptujem",
- "readAllToContinue": "Please read the full text"
+ "readAllToContinue": "Prečítajte si prosím celý text"
},
"privacyPolicy": {
"privacyPolicy": "Zásady ochrany osobných údajov",
"agree": "Súhlasím"
},
"tray": {
- "trayApplication": "Tray application",
- "trayExplanation": "Provides an overview of your account balances and recent transaction history.",
- "notLoggedIn": "You are not logged in",
+ "trayApplication": "System Tray - Ikona v oznamovacej oblasti",
+ "trayExplanation": "Poskytuje prehľad o zostatku a nedávnej historii transakcii.",
+ "notLoggedIn": "Nie ste prihláseny(a)",
"setupIncomplete": "Nastavenia nekompletné",
"completeSetup": "Inštalácia kompletná"
},
"proxy": {
- "proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxy": "Pomocou proxy serveru",
+ "proxyExplanation": "Rozpoznať a použiť systémové nastavenie proxy serveru. Po zmene tohoto nastavenia reštartujte peňaženku."
},
"notifications": {
"notifications": "Hlásenia",
- "notificationExplanation": "Receive system-wide notifications about new transactions.",
- "typeConfirmations": "Notify me about confirmations",
- "typeMessages": "Notify me about zero value transactions",
- "multipleTx": "Receiving multiple transactions to {{account}}",
- "valueTx": "Receiving {{value}} to {{account}}",
- "messageTx": "You received a message to {{account}}",
- "confirmedIn": "Incoming {{value}} to {{account}} has confirmed",
- "confirmedOut": "Outgoing {{value}} from {{account}} has confirmed"
+ "notificationExplanation": "Dostávať systémové upozornenia o nových transakciach.",
+ "typeConfirmations": "Informuj ma o potvrdení transakcie",
+ "typeMessages": "Informuj ma o nulových transakciach",
+ "multipleTx": "Príjímanie viacero transakcii na {{account}}",
+ "valueTx": "Prijímanie {{value}} na {{account}}",
+ "messageTx": "Dostali ste správu pre {{account}}",
+ "confirmedIn": "Bola potvrdená príchozia {{value}} pre {{account}}",
+ "confirmedOut": "Bola potvrdená odchádzajúca {{value}} pre {{account}}"
},
"bytetrit": {
- "sweepSucceeded": "Funds successfully unlocked",
- "sweepSucceededExplanation": "Your funds have been successfully unlocked and moved to a new address. Promote the transactions to help them confirm.",
- "sweepError": "Error unlocking funds",
- "sweepErrorExplanation": "Something went wrong while unlocking your funds. Trying again.",
- "warningTitle": "Warning: Locked funds detected",
- "explanation": "Trinity Desktop version 0.3.4 contained a bug that can temporarily lock funds. This affects a small number of users that performed transactions with 0.3.4.",
- "explanationAccounts": "Locked funds have been detected on your accounts: {{accounts}}. Trinity will now automatically recover your funds, by moving them to a new address.",
- "proceed": "Proceed to Recovery",
- "sweepConfirmation": "You are about to sweep {{amount}} to the address {{address}}. Account: {{accountName}}, address index: {{index}}",
- "sweepConfirmationTitle": "Sweep confirmation"
+ "sweepSucceeded": "Vaše finančné prostriedky boli úspešne odblokované",
+ "sweepSucceededExplanation": "Vaše finančné prostriedky boli úspešne odblokované a prenesené na novú adresu. Podporujte transakcie, ktoré Vám pomôžu v procese potvrdzovania.",
+ "sweepError": "Chyba uvoľnenie finančných prostriedkov",
+ "sweepErrorExplanation": "Došlo ku chybe pri odblokovaní vašich finančných prostriedkov. Skúste to znova.",
+ "warningTitle": "Varovanie: Boli zistené blokované prostriedky",
+ "explanation": "Peňaženka Trinity Desktop 0.3.4 obsahovala chybu, ktorá by mohla dočasne zablokovať finančné prostriedky na účte. Tento problém ovplyvňuje malý počet užívateľov, ktorí uskutočnili transakcie s verziou 0.3.4.",
+ "explanationAccounts": "Na vašich účtoch boli zistené blokované prostriedky: {{accounts}}. Trinity teraz automaticky obnoví vaše prostriedky a prenesie ich na novú adresu.",
+ "proceed": "Prejsť na obnovenie",
+ "sweepConfirmation": "Chystáte sa preniesť {{amount}} na {{address}}. Účet: {{accountName}}, index adresy: {{index}}",
+ "sweepConfirmationTitle": "Potvrdenie prevodu"
},
"ledger": {
- "ready": "Ledger device connected and ready",
- "notReady": "If you wish to use a Ledger device, connect and unlock it now",
- "indexInUse": "Index already in use for account {{account}}",
- "indexInUseExplanation": "Your chosen index is already in use on one of your accounts. Please choose another index number.",
- "proceedWithLedger": "Proceed with Ledger setup",
- "accountIndex": "Account index",
- "accountPage": "Account page",
- "chooseAccountIndex": "Choose your Ledger account index",
- "accountIndexExplanation": "Your Ledger can store multiple seeds. Each seed is identified by a unique index number. An unused index has been pre-selected, but feel free to choose your own. Make sure you note down your chosen index number.",
- "accountPageExplanation": "Some third party wallets require pages.",
- "connectionError": "Cannot connect to Ledger",
- "connectionErrorExplanation": "Check that your Ledger is connected and unlocked.",
- "connectionTitle": "Connect your Ledger",
- "connectionExplanation": "A Ledger device must be connected to perform this function.",
- "transactionTitle": "Scroll through and approve the transaction on your Ledger",
- "transactionExplanation": "Use your Ledger device to approve the outgoing transaction.",
- "applicationTitle": "Open Ledger IOTA app",
- "applicationExplanation": "Go to your Ledger and open the IOTA app to continue using Trinity.",
- "cannotSendZeroValueTitle": "Cannot send zero value transfer",
- "cannotSendZeroValueExplanation": "Cannot send zero value transfers with a Ledger device.",
- "ledgerDisconnectedTitle": "Ledger device disconnected",
- "ledgerDisconnectedExplanation": "The Ledger device was disconnected. Please reconnect and try again.",
- "ledgerDeniedTitle": "Transaction denied",
- "ledgerDeniedExplanation": "The transaction was denied on the Ledger device.",
- "ledgerIncorrectIndex": "Ledger device mismatch",
- "ledgerIncorrectIndexExplanation": "The connected Ledger device does not match the one linked to this account, or the recovery phrase has been changed.",
- "checkAddress": "Check the receive address",
- "checkAddressExplanation": "Check that the address matches the one displayed on your Ledger device.",
- "applicationNotInitialised": "Warning unconfirmed",
- "applicationNotInitialisedExplanation": "Reopen the IOTA app on your Ledger device, accept the informational warning and try again."
+ "ready": "Zariadenie Ledger je pripojené a pripravené k práci",
+ "notReady": "Ak si želáte použiť Ledger, tak ho pripojte a odomknite",
+ "indexInUse": "Tento index už používa účet {{account}}",
+ "indexInUseExplanation": "Váš zvolený index je už používaný na niektorom z Vašich účtov. Vyberte si iné číslo indexu.",
+ "proceedWithLedger": "Pokračovať v nastavovaní Ledgeru",
+ "accountIndex": "Index účtu",
+ "accountPage": "Stránka účtu",
+ "chooseAccountIndex": "Vyberte index účtu vo Vašom Ledgeri",
+ "accountIndexExplanation": "Vaše zariadenie Ledger môže ukladať viacero Seedov. Každý Seed je označený jedinečným indexovým číslom. Nepoužitý index bol dopredu vybraný, ale môžete si zvoliť vlastný. Presvedčte sa, že ste si zaznamenali zvolené číslo indexu.",
+ "accountPageExplanation": "Niektoré peňaženky tretích strán vyžadujú použitie \"stron\".",
+ "connectionError": "Nie je možné pripojiť sa k Vašemu Ledgeru",
+ "connectionErrorExplanation": "Skontrolujte, či je Váš Ledger pripojený a odomknutý.",
+ "connectionTitle": "Pripojte Váš Ledger",
+ "connectionExplanation": "K vykonaniu tejto funkcie musí byť pripojené zariadenie Ledger.",
+ "transactionTitle": "Prekontrolujte a potvrďte transakciu vo Vašom zariadení Ledger",
+ "transactionExplanation": "Potvrďte odchádzajúcu transakciu pomocou zariadenia Ledger.",
+ "applicationTitle": "Spustite aplikáciu IOTA na Vašom zariadení Ledger",
+ "applicationExplanation": "Aby ste mohli pokračovať v používaní Trinity, otvorte v zariadení Ledger aplikáciu IOTA.",
+ "cannotSendZeroValueTitle": "Transakcie s nulovou hodnotou nie je možné odoslať",
+ "cannotSendZeroValueExplanation": "Transakcie s nulovou hodnotou nie je možné pomocou zariadenia Ledger odoslať.",
+ "ledgerDisconnectedTitle": "Ledger je odpojený",
+ "ledgerDisconnectedExplanation": "Ledger bol odpojený. Pripojte ho a opakujte akciu.",
+ "ledgerDeniedTitle": "Transakcia bola odmietnutá",
+ "ledgerDeniedExplanation": "Transakcia bola zamietnutá na zariadení Ledger.",
+ "ledgerIncorrectIndex": "Nekompatibilné zariadenie Ledger",
+ "ledgerIncorrectIndexExplanation": "Pripojené zariadenie Ledger sa nezhoduje s tým ktoré je spárované s týmto účtom, alebo jeho heslo bolo zmenené.",
+ "checkAddress": "Skontrolujte adresu príjemcu",
+ "checkAddressExplanation": "Skontrolujte, či adresa odpovedá adrese zobrazenej na Vašom zariadení Ledger.",
+ "applicationNotInitialised": "Informačné upozornenie nebolo prijaté",
+ "applicationNotInitialisedExplanation": "Znovu otvorte aplikáciu IOTA na Vašom zariadení Ledger, prijmite informačné upozornenie a skúste to znova."
}
}
\ No newline at end of file
diff --git a/src/shared/locales/sl/translation.json b/src/shared/locales/sl/translation.json
index 3d8c67c335..6ace51db18 100644
--- a/src/shared/locales/sl/translation.json
+++ b/src/shared/locales/sl/translation.json
@@ -74,6 +74,8 @@
"wallet": "Denarnica",
"all": "All",
"sent": "Poslano",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Prejeto",
"sending": "Pošiljanje",
"receiving": "Prejemanje",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Generirana vrednost vsebuje neveljavne znake",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Vaše geslo mora biti vsaj {{minLength}} znakov dolgo. Vaše trenutno geslo je {{currentLength}} znakov dolgo. Prosimo poskusite ponovno.",
"passwordMismatch": "Gesli se ne ujemata",
"passwordMismatchExplanation": "Vnešeni gesli se ne ujemata. Prosimo, poskusite ponovno.",
- "anEncryptedCopy": "Šifrirana kopija vaše generirane vrednosti bo shranjena v napravi. Uporabite geslo za dostop do vaše denarnice v prihodnosti.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Ponovno vnesite geslo"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Nalaganje generirane vrednosti prvič.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nikoli z nikomer ne delite svojega seeda.",
"iotaLogo": "IOTA logotip",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Porabljeno",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Značka",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skeniraj QR kodo"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Miljarda",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have saved my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "Tržna kapitalizacija",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/sr/translation.json b/src/shared/locales/sr/translation.json
index f2be7e81d1..8d4d410180 100644
--- a/src/shared/locales/sr/translation.json
+++ b/src/shared/locales/sr/translation.json
@@ -74,6 +74,8 @@
"wallet": "Novčanik",
"all": "Sve",
"sent": "Poslato",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Primljeno",
"sending": "Slanje",
"receiving": "Prijem",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "UPOZORENJE: Sredstva na već korišćenim adresama",
"discordInformation": "Slanje sa iste adrese više puta je rizično. Posetite kanal #help na paltformi Discord kako biste saznali šta možete da uradite.",
"androidInsecureClipboardWarning": "Android ne obezbeđuje bezbedan klipbord.",
- "androidCopyPasteWarning": "Nikada ne koristite opciju kopiraj/nalepi za seed na Android uređajima.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Neću korirati/nalepiti moj seed",
"mustBeStoredAppropriately": "Mora se odgovarajuće čuvati.",
"deviceMayBecomeUnresponsive": "Vaš uređaj na kratko može prestati da reaguje.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain greška",
"errorAccessingKeychainExplanation": "Nije moguće pristupiti keychain-u za sigurno skladištenje.",
"mainWallet": "GLAVNI RAČUN",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed sadrži nedozvoljene znakove",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Vaša lozinka mora imati najmanje {{minLength}} karaktera. Trenutno ima {{currentLength}} karaktera. Pokušajte ponovo.",
"passwordMismatch": "Lozinke se ne podudaraju",
"passwordMismatchExplanation": "Lozinke koje ste uneli se ne podudaraju. Pokušajte ponovo.",
- "anEncryptedCopy": "Šifrovana kopija vašeg seed-a će biti sačuvana na vašem uređaju. Koristićete ovu lozinku da biste pristupili novčaniku u budućnosti.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Ponovo ukucajte lozinku"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Prijavi se",
"setNode": "Postavi node",
"whyBiometricDisabled": "Zašto je biometrijska autentikacija onemogućena?",
- "whyBiometricDisabledExplanation": "Biometrijska prijava je onemogućena pri prvom pokretanju aplikacije radi vaše sigurnosti. Kada koristite Trinity novčanik, bićete odjavljeni nakon određenog perioda neaktivnosti. Zatim se možete ponovo prijaviti koristeći biometrijsku autorizaciju."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Prvo učitavanje seed-a.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Nikada nikome ne otkrivajte svoj seed.",
"iotaLogo": "IOTA logo",
- "print": "ŠTAMPANJE",
+ "print": "Print",
"paperConvenience": "Štampanje seed-a je pogodan način za čuvanje istog.",
"publicInsecure": "Ali štampanje na javnoj wifi mreži ili javno dostupnom štampaču nije bezbedno.",
- "tapCheckboxes": "Kliknite na polja u nastavku za potvrdu.",
- "wifiCheckbox": "Neću odštampati seed na javno dostupnoj wifi mreži",
- "printerCheckbox": "Neću odštampati seed na javnom štampaču"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Vaša adresa",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NEMA ADRESA",
"spent": "Upotrebljeno",
- "missingPermission": "Potrebna dozvola za pristup sistemu datoteka",
- "missingPermissionExplanation": "Potreban je pristup sistemu datoteka radi deljenja QR kodova.",
"tag": "Oznaka",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Zapišimo vaš seed",
"youCanHighlightCharacters": "Možete označiti 9 znakova odjednom",
"printBlankWallet": "Odštampajte prazni novčanik",
- "whatIsChecksum": "Svaki seed ima odgovarajući kontrolni zbir od 3 znaka",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Sačuvao sam seed",
"checksumExplanation": "Svaki put kada dodajete seed u novčanik, treba da se uverite da je kontrolni zbir koji novčanik generiše identičan onom koji ste zapisali.",
"mustSaveYourSeed": "<0><0>Morate napraviti rezervnu kopiju seed-a pomoću 0><1>najmanje jedne1><2> od opcija koje su navedene u nastavku.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Ukupno vreme",
"addressPasteDetected": "Detektovano umetanje adrese",
"addressPasteExplanation": "Izgleda da ste umetnuli adresu. Proverite da li adresa odgovara onoj na koju želite poslati sredstva.",
- "invalid": "NEISPRAVNO"
+ "invalid": "NEISPRAVNO",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Dodajte naziv",
@@ -446,7 +453,8 @@
"empty": "Prazno",
"retrying": "Ponovni pokušaj u toku",
"yesterday": "Juče",
- "promotingAnotherBundle": "Promocija drugog paketa"
+ "promotingAnotherBundle": "Promocija drugog paketa",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Prikaži seed",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Da li ste sigurni da se želite odjaviti?"
+ "logoutConfirmation": "Da li ste sigurni da se želite odjaviti?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skeniraj QR kod"
},
"unitInfoModal": {
- "unitSystem": "SISTEM JEDINICA",
+ "unitSystem": "Unit System",
"trillion": "Trilion",
"billion": "Milijarda",
"million": "Milion",
"thousand": "Hiljada",
- "one": "Jedna"
+ "one": "Jedna",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Zašto ne mogu potrošiti ceo iznos?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Sinhronizacija u toku."
},
"useExistingSeed": {
- "title": "Unesite seed i naziv računa.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Neispravan format seed-a",
"validSeedExplanation": "Važeći seed treba da se sastoji od 81 znaka i isključivo od slova A-Z ili broja 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Da li ste napravili rezervnu kopiju seed-a?",
- "alreadyHave": "Napravio sam rezervnu kopiju seed-a",
- "reenterSeed": "U sledećem koraku ćete ponovo morati da unesete seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Ako niste napravili rezervnu kopiju seed-a, a vaš uređaj se pokvari, izgubićete sve IOTA tokene.",
"pleaseConfirm": "Potvrdite da ste sigurno sačuvali svoj seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometrijska autorizacija nedostupna",
"fingerprintUnavailableExplanation": "Vaš uređaj ne podržava biometrijsku autentikaciji ili nije konfigurisan u postavkama uređaja.",
- "buttonInstructionsDisable": "Pritisnite dugme u nastavku da biste onemogućili autorizaciju pomoću otiska prsta.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Pritisnite dugme u nastavku da biste omogućii autentikaciji pomoću otiska prsta.",
- "buttonInstructionsDisableIPhoneX": "Pritisnite dugme u nastavku da biste onemogućili Face ID.",
- "buttonInstructionsEnableIPhoneX": "Pritisnite dugme u nastavku da biste omogućili Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Dodirnite čitač otisaka prstiju za prijavu"
},
"transferConfirmation": {
"youAreAbout": "Poslaćete {{contents}} na adresu",
- "aMessage": "poruka"
+ "aMessage": "poruka",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Pogrešan kod",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Izvezi SeedVault",
- "seedVaultExplanation": "SeedVault je kodirana datoteka namenjena sigurnom skladištenju vašeg seed-a. Seed je kodiran i SeedVault ključem, te mu se ne može pristupiti bez lozinke.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Uverite se da ste napravili rezervne kopije datoteka na više lokacija (npr. hard disk, cloud, USB). Ako izgubite ovu datoteke a niste sačuvali svoj seed na drugom mestu, izgubićete svoje IOTA tokene.",
"exportFail": "Izvoz SeedVault-a neuspešan",
"exportFailExplanation": "Došlo je do greške prilikom izvoza SeedVault-a. Proverite da li imate sva potrebne dozvole i dovoljno slobodnog prostora.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Seed je uspešno uvezen.",
"saveToDownloadFolder": "Sačuvaj u Download fascikli",
"importSeedVault": "Uvezi SeedVault",
- "dropSeedVaultHere": "Ovde ispustite SeedVault <1>1> ili kliknite da biste ga potražili na računaru",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Unesite SeedVault lozinku kako biste ga otvorili",
"noSeedFound": "SeedVault ne sadrži ispravni seed",
"noSeedFoundExplanation": "SeedVault je prazan ili sadrži seed u neispravnom formatu.",
"seedFileError": "Neuspešno otvaranje SeedVault-a",
"seedFileErrorExplanation": "Došlo je do greške prilikom otvaranja SeedVault-a. Ako ste odabrali ispravnu datoteku moguće je da je oštećena.",
- "seedVaultKeyExplanation": "Prvo treba da osiguramo vaš SeedVault. Odaberite lozinku za enkripciju vaše SeedVault datoteke. Ova lozinka će biti potrebna za povraćaj rezervne kopije vašeg seed-a koja se nalazi u SeedVault-u. Možete koristiti istu lozinku koju koristite za pristup Trinity novčaniku."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Priprema transakcija",
"gettingTransactionsToApprove": "Rad na odobrenju transakcije",
"proofOfWork": "Završetak PoW-a",
- "broadcasting": "Emitovanje"
+ "broadcasting": "Emitovanje",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Nije moguće izvršiti snapshot tranziciju",
@@ -669,7 +687,8 @@
"transition": "Tranzicija",
"transitioning": "Tranzija snapshot-a u toku.",
"generatingAndDetecting": "Generisanje adresa i detektovanje salda.",
- "attaching": "Dodavanje adresa u Tangle."
+ "attaching": "Dodavanje adresa u Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Uspešno automatsko popunjavanje",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Obaveštenja",
diff --git a/src/shared/locales/sv-SE/translation.json b/src/shared/locales/sv-SE/translation.json
index e69c07b33a..28ae2312d7 100644
--- a/src/shared/locales/sv-SE/translation.json
+++ b/src/shared/locales/sv-SE/translation.json
@@ -74,6 +74,8 @@
"wallet": "Plånbok",
"all": "Allt",
"sent": "Skickat",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Mottaget",
"sending": "Skickar",
"receiving": "Tar emot",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "VARNING: Tillgångar på förbrukade adresser",
"discordInformation": "Det är farligt att skicka från samma adress mer än en gång. Vänligen bege dig till #help på Discord för att ta reda på vad du kan göra.",
"androidInsecureClipboardWarning": "Android tillhandahåller inte säkert urklipp.",
- "androidCopyPasteWarning": "Kopiera/klistra aldrig din seed på en Android-enhet.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Jag kommer inte kopiera/klistra min seed",
"mustBeStoredAppropriately": "Den måste lagras på lämpligt sätt.",
"deviceMayBecomeUnresponsive": "Din enhet kan sluta reagera ett tag.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Nyckelringsfel",
"errorAccessingKeychainExplanation": "Kan inte komma åt nyckelringen som krävs för säker lagring.",
"mainWallet": "HUVUDKONTO",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "En ny uppdatering finns tillgänglig",
"shouldUpdateExplanation": "En ny uppdatering har släppts. Det rekommenderas att du uppdaterar till den senaste versionen.",
"forceUpdate": "Uppdatera appen att fortsätta",
- "forceUpdateExplanation": "En viktig uppdatering har släppts. Vänligen uppdatera appen nu."
+ "forceUpdateExplanation": "En viktig uppdatering har släppts. Vänligen uppdatera appen nu.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Din seed innehåller felaktiga tecken",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Ditt lösenord måste vara minst {{minLength}} tecken. Det är för närvarande {{currentLength}} tecken långt. Vänligen försök igen.",
"passwordMismatch": "Lösenorden matchar inte",
"passwordMismatchExplanation": "De lösenord du har angett stämmer inte överens. Vänligen försök igen.",
- "anEncryptedCopy": "En krypterad version av din seed kommer sparas på din enhet. Detta lösenord kommer att användas för att få tillgång till din plånbok i framtiden.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Skriv lösenordet igen"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Logga in",
"setNode": "Ställ in nod",
"whyBiometricDisabled": "Varför är biometrisk autentisering avaktiverad?",
- "whyBiometricDisabledExplanation": "Biometrisk autentisering är avaktiverad vid första inloggning för din säkerhet. När du använder Trinity, så blir du utloggad vid inaktivitet. Du kan sedan logga in igen med biometrisk autentisering."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Laddar din adress för första gången.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Dela aldrig din seed med någon.",
"iotaLogo": "IOTA logotyp",
- "print": "SKRIV UT",
+ "print": "Print",
"paperConvenience": "Att skriva ut en papperskopia av din seed är ett lämpligt sätt att lagra den.",
"publicInsecure": "Men utskrifter på öppet wifi eller en offentlig skrivare är osäkert.",
- "tapCheckboxes": "Vänligen tryck på kryssrutorna nedan för att bekräfta.",
- "wifiCheckbox": "Jag kommer inte att skriva ut på ett öppet wifi",
- "printerCheckbox": "Jag kommer inte att skriva ut på en offentlig skrivare"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Din adress",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generera ny adress",
"noAddresses": "INGA ADRESSER",
"spent": "Förbrukat",
- "missingPermission": "Åtkomst till filsystem krävs",
- "missingPermissionExplanation": "Åtkomst till filsystem krävs för att dela QR-koder.",
"tag": "Tagg",
"generateAnAddress": "Generera ny adress",
"generateAnAddressTitle": "Generera en adress",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Skriv ner din seed",
"youCanHighlightCharacters": "Du kan markera 9 tecken i taget",
"printBlankWallet": "Skriv ut en tom plånbok",
- "whatIsChecksum": "Varje seed har en tillhörande 3-tecken kontrollsumma",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Jag har sparat min seed",
"checksumExplanation": "När du lägger till en seed i din plånbok, bör du kontrollera att den plånboksgenererade kontrollsumman matchar den du har skrivit ned.",
"mustSaveYourSeed": "<0><0>Du måste spara din seed med0><1>minst ett1><2> av alternativen listade nedan.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total tid",
"addressPasteDetected": "Kopierad adress upptäckt",
"addressPasteExplanation": "Det ser ut som att du har klistrat in en adress. Kontrollera att den inklistrade adressen matchar den som du vill skicka till.",
- "invalid": "OGILTIG"
+ "invalid": "OGILTIG",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Låt oss lägga till ett namn",
@@ -446,7 +453,8 @@
"empty": "Tomt",
"retrying": "Försöker igen",
"yesterday": "Igår",
- "promotingAnotherBundle": "Främjar en annan transaktionsbunt"
+ "promotingAnotherBundle": "Främjar en annan transaktionsbunt",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Visa seed",
@@ -504,18 +512,21 @@
"currency": "Valuta"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Är du säker på att du vill logga ut?"
+ "logoutConfirmation": "Är du säker på att du vill logga ut?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Skanna din QR-kod"
},
"unitInfoModal": {
- "unitSystem": "ENHETSSYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Biljon",
"billion": "Miljard",
"million": "Miljon",
"thousand": "Tusen",
- "one": "Ett"
+ "one": "Ett",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Varför kan jag inte spendera hela mitt saldo?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Synkar konto."
},
"useExistingSeed": {
- "title": "Ange din seed och ett kontonamn.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Felaktigt seed-format",
"validSeedExplanation": "Giltig seed bör vara 81 tecken och innehålla A-Z eller 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Sparade du din seed?",
- "alreadyHave": "Jag har sparat min seed",
- "reenterSeed": "Vid nästa steg kommer du bli ombedd att skriva in din seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "Om du inte har sparat din seed och din enhet kraschar, kommer du förlora all din IOTA.",
"pleaseConfirm": "Vänligen bekräfta att du har säkert lagrat din seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometrisk autentisering otillgänglig",
"fingerprintUnavailableExplanation": "Din enhet stödjer ej biometrisk autentisering eller så har det ej konfigurerats i enhetens inställningar.",
- "buttonInstructionsDisable": "Tryck på knappen nedan för att avaktivera fingeravtrycksautentisering.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Tryck på knappen nedan för att aktivera fingeravtrycksautentisering.",
- "buttonInstructionsDisableIPhoneX": "Tryck på knappen nedan för att avaktivera Face ID.",
- "buttonInstructionsEnableIPhoneX": "Tryck på knappen nedan för att aktivera Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Lägg fingret på fingeravtrycksläsaren för att logga in"
},
"transferConfirmation": {
"youAreAbout": "Du kommer att skicka {{contents}} till adressen",
- "aMessage": "ett meddelande"
+ "aMessage": "ett meddelande",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Fel kod",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Exportera SeedVault",
- "seedVaultExplanation": "En SeedVault är en krypterad fil för att lagra din seed på ett säkert sätt. Din seed är krypterad bakom ett SeedVault-lösenord och kan inte nås utan lösenordet.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Kontrollera att du säkerhetskopierar filen på flera platser (t.ex. hårddisk, molnet, USB). Om du förlorar denna fil och inte har lagrat din seed på annat håll, kommer du att förlora dina IOTA.",
"exportFail": "SeedVault export misslyckades",
"exportFailExplanation": "Ett problem uppstod vid export av SeedVault. Vänligen se till att du har rätt behörigheter och tillräckligt med ledigt utrymme.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Din seed importerades framgångsrikt.",
"saveToDownloadFolder": "Spara till Hämtade Filer",
"importSeedVault": "Importera SeedVault",
- "dropSeedVaultHere": "Släpp SeedVault här <1>1> eller klicka för att bläddra",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Ange ditt lösenord för att öppna SeedVault",
"noSeedFound": "SeedVault innehåller inte en giltig seed",
"noSeedFoundExplanation": "Din SeedVault är antingen tom eller innehåller en seed i ett ogiltigt format.",
"seedFileError": "Det gick inte att öppna din SeedVault",
"seedFileErrorExplanation": "Ett problem uppstod vid öppning av SeedVault. Om du har valt den korrekta filen kan den vara skadad.",
- "seedVaultKeyExplanation": "Först måste vi säkra din SeedVault. Vänligen välj ett lösenord för att kryptera filen. Du behöver detta lösenord för att återställa din seed från din sparade SeedVault. Du kan använda samma lösenord som du använder för Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Förbereder överföringar",
"gettingTransactionsToApprove": "Godkänner transaktioner",
"proofOfWork": "Utför bevis på arbete",
- "broadcasting": "Sändning pågår"
+ "broadcasting": "Sändning pågår",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Kan inte slutföra snapshot-övergången",
@@ -669,7 +687,8 @@
"transition": "Övergång",
"transitioning": "Övergång för snapshoten.",
"generatingAndDetecting": "Genererar adresser och upptäcker saldo.",
- "attaching": "Fäster adresser till Tangle."
+ "attaching": "Fäster adresser till Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofyll lyckat",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Använd system-proxy",
- "proxyExplanation": "Upptäcka och använda systembrett nätverksproxyinställningar. Starta om plånboken efter ändring av den här inställningen."
+ "proxyExplanation": "Upptäcka och använda systembrett nätverksproxyinställningar. Stäng och återöppna plånboken efter ändring av den här inställningen."
},
"notifications": {
"notifications": "Aviseringar",
diff --git a/src/shared/locales/ta/translation.json b/src/shared/locales/ta/translation.json
index 5a4ffbb95f..c99013495d 100644
--- a/src/shared/locales/ta/translation.json
+++ b/src/shared/locales/ta/translation.json
@@ -74,6 +74,8 @@
"wallet": "Wallet",
"all": "All",
"sent": "Sent",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Received",
"sending": "Sending",
"receiving": "Receiving",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed contains invalid characters",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "Passwords do not match",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Loading seed for the first time.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Tag",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must back up your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Currency"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have backed up my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/th/translation.json b/src/shared/locales/th/translation.json
index 3cb9f8aa67..f06678a9f8 100644
--- a/src/shared/locales/th/translation.json
+++ b/src/shared/locales/th/translation.json
@@ -74,6 +74,8 @@
"wallet": "กระเป๋าสตางค์",
"all": "All",
"sent": "ส่ง",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "ได้รับแล้ว",
"sending": "กำลังส่ง",
"receiving": "กำลังรับ",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed (เลขที่บัญชี) ประกอบด้วยอักขระที่ไม่ถูกต้อง",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "รหัสผ่านของคุณจะต้องมีอย่างต่ำ {{minLength}} หลัก ขณะนี้รหัสผ่านปัจจุบันของคุณมี {{currentLength}} หลัก กรุณาลองใหม่อีกครั้ง",
"passwordMismatch": "รหัสผ่านไม่ตรงกัน",
"passwordMismatchExplanation": "รหัสผ่านที่ใส่ไม่ตรงกัน กรุณาลองอีกครั้ง.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "ใส่รหัสผ่านอีกครั้ง"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "โหลด Seed (เลขที่บัญชี) ครั้งแรก",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "ไม่เปิดเผย Seed (เลขที่บัญชี) ของคุณให้แก่บุคคลอื่น",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "ไม่มีที่อยู่",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Tag",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>คุณต้องบันทึก Seed (เลขที่บัญชี) ด้วย0><1>อย่างน้อยหนึ่ง1> <2>จากตัวเลือกด้านล่างนี้2> 0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "สกุลเงิน"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "คุณแน่ใจหรือว่าต้องการออกจากระบบ"
+ "logoutConfirmation": "คุณแน่ใจหรือว่าต้องการออกจากระบบ",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "สแกนรหัส QR"
},
"unitInfoModal": {
- "unitSystem": "ระบบหน่วย",
+ "unitSystem": "Unit System",
"trillion": "ล้านล้าน",
"billion": "พันล้าน",
"million": "ล้าน",
"thousand": "พัน",
- "one": "หนึ่ง"
+ "one": "หนึ่ง",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "กำลังซิงค์บัญชีของคุณ"
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have saved my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "สถานะ",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "ไม่สามารถทำรายการ Snapshot",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/tr/translation.json b/src/shared/locales/tr/translation.json
index 4f55940aef..0d901036c6 100644
--- a/src/shared/locales/tr/translation.json
+++ b/src/shared/locales/tr/translation.json
@@ -74,6 +74,8 @@
"wallet": "Cüzdan",
"all": "Tümü",
"sent": "Gönderildi",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Alındı",
"sending": "Gönderiliyor",
"receiving": "Alınıyor",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Aynı adresten birden çok kez göndermek tehlikeli olabilir. Ne yapabileceğinizi öğrenmek için lütfen Discord'daki #help kanalına gidin.",
"androidInsecureClipboardWarning": "Android güvenli bir pano sunmuyor.",
- "androidCopyPasteWarning": "Seed'inizi asla Android bir cihazda kopyalamayın/yapıştırmayın.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "Uygun şekilde saklanmalıdır.",
"deviceMayBecomeUnresponsive": "Cihazınız bir süreliğine yanıt vermeyebilir.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Geçersiz karakterler içeriyor",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Tohumlar {{minLength}} karakter uzunluğunda olmalıdır. Tohumunuz şu anda {{currentLength}} karakter uzunluktadır. Lütfen yeniden deneyin.",
"passwordMismatch": "Parolalar eşleşmiyor",
"passwordMismatchExplanation": "Girdiğiniz parolalar eşleşmiyor. Lütfen tekrar girin.",
- "anEncryptedCopy": "Senin tohum şifrelenmiş bir kopyasını cihazınızda saklanacaktır. Cüzdanını gelecekte erişmek için bu parolayı kullanır.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Şifrenizi tekrar girin"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Cüzdan şifresi ilk kez yükleniyor.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Cüzdan şifrenizi sakın kimseyle paylaşmayın.",
"iotaLogo": "IOTA logosu",
- "print": "YAZDIR",
+ "print": "Print",
"paperConvenience": "Oluşumunuzun bir kopyasını yazdırmak onu saklamak için etkili bir yöntemdir.",
"publicInsecure": "Fakat halka açık bir Wi-fi'da veya halka açık bir yazıcıyla yazdırmak güvenli değildir.",
- "tapCheckboxes": "Doğrulamak için lütfen aşağıdaki kutulara tıklayın.",
- "wifiCheckbox": "Halka açık bir Wi-fi'da yazdırmayacağım",
- "printerCheckbox": "Halka açık bir yazıcıda yazdırmayacağım"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "ADRESİ YOK",
"spent": "Harcanan",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Etiket",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Toplam zaman",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Kaynağı görüntüle",
@@ -504,18 +512,21 @@
"currency": "Kur"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Çıkmak istediğine emin misin?"
+ "logoutConfirmation": "Çıkmak istediğine emin misin?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "QR Kodunuzu Tarayın"
},
"unitInfoModal": {
- "unitSystem": "BİRİM SİSTEMİ",
+ "unitSystem": "Unit System",
"trillion": "Trilyon",
"billion": "Milyar",
"million": "Milyon",
"thousand": "Bin",
- "one": "Bir"
+ "one": "Bir",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Neden varlıklarımın hepsini harcayamıyorum?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Hesabınız eşitleniyor."
},
"useExistingSeed": {
- "title": "Oluşum ve hesap adınızı girin.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Geçersiz oluşum formatı",
"validSeedExplanation": "Geçerli oluşumlar 81 karakter uzunluğunda ve sadece A'dan Z'ye harfler veya 9 içermelidir."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "Seed'imi kaydettim",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Durum",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Parmak izi doğrulamayı devre dışı bırakmak için aşağıdaki tuşa basın.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Parmak izi doğrulamayı aktifleştirmek için aşağıdaki tuşa basın.",
- "buttonInstructionsDisableIPhoneX": "Face ID'yi devre dışış bırakmak için aşağıdaki tuşa basın.",
- "buttonInstructionsEnableIPhoneX": "Face ID'yi aktifleştirmek için aşağıdaki tuşa basın.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Giriş yapmak için parmak izi okuyucusuna dokunun"
},
"transferConfirmation": {
"youAreAbout": "Adrese {{contents}} göndermek üzeresiniz",
- "aMessage": "mesaj"
+ "aMessage": "mesaj",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Kod yanlış",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Transferler hazırlanıyor",
"gettingTransactionsToApprove": "Onaylamak için işlemler alınıyor",
"proofOfWork": "İşin kanıtı tamamlanıyor",
- "broadcasting": "Yayınlanıyor"
+ "broadcasting": "Yayınlanıyor",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Anlık görüntü geçişi tamamlanamıyor",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Anlık görüntü için geçiş sağlanıyor.",
"generatingAndDetecting": "Adresler yaratılıyor ve varlıklar algılanıyor.",
- "attaching": "Tangle'a adresler ekleniyor."
+ "attaching": "Tangle'a adresler ekleniyor.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Otomatik doldurma başarılı",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/ur/translation.json b/src/shared/locales/ur/translation.json
index 5f3dc5cb10..9aa3c0fd4d 100644
--- a/src/shared/locales/ur/translation.json
+++ b/src/shared/locales/ur/translation.json
@@ -74,6 +74,8 @@
"wallet": "Wallet",
"all": "All",
"sent": "Sent",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Received",
"sending": "بھیج رہا ہے",
"receiving": "Receiving",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "WARNING: Funds on spent addresses",
"discordInformation": "Sending from the same address more than once is dangerous. Please head to the #help channel on Discord to find out what you can do.",
"androidInsecureClipboardWarning": "Android does not provide a secure clipboard.",
- "androidCopyPasteWarning": "Never copy/paste your seed on an Android device.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "I will not copy/paste my seed",
"mustBeStoredAppropriately": "It must be stored appropriately.",
"deviceMayBecomeUnresponsive": "Your device may become unresponsive for a while.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Seed contains invalid characters",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Your password must be at least {{minLength}} characters. It is currently {{currentLength}} characters long. Please try again.",
"passwordMismatch": "Passwords do not match",
"passwordMismatchExplanation": "The passwords you have entered do not match. Please try again.",
- "anEncryptedCopy": "An encrypted copy of your seed will be stored on your device. You will use this password to access your wallet in future.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Retype Password"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Log In",
"setNode": "Set Node",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Loading seed for the first time.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Never share your seed with anyone.",
"iotaLogo": "IOTA logo",
- "print": "PRINT",
+ "print": "Print",
"paperConvenience": "Printing a paper copy of your seed is a convenient way to store it.",
"publicInsecure": "But printing on public wifi or a public printer is insecure.",
- "tapCheckboxes": "Please tap the checkboxes below to confirm.",
- "wifiCheckbox": "I will not print on public wifi",
- "printerCheckbox": "I will not print on a public printer"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "NO ADDRESSES",
"spent": "Spent",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "ٹیگ",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "You can highlight 9 characters at a time",
"printBlankWallet": "Print a blank wallet",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "I've saved my seed",
"checksumExplanation": "Whenever you add a seed to your wallet, you should ensure that the wallet-generated checksum matches the one you have written down.",
"mustSaveYourSeed": "<0><0>You must save your seed with 0><1>at least one1><2> of the options listed below.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "View seed",
@@ -504,18 +512,21 @@
"currency": "Currency"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Are you sure you want to log out?"
+ "logoutConfirmation": "Are you sure you want to log out?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Scan your QR code"
},
"unitInfoModal": {
- "unitSystem": "UNIT SYSTEM",
+ "unitSystem": "Unit System",
"trillion": "Trillion",
"billion": "Billion",
"million": "Million",
"thousand": "Thousand",
- "one": "One"
+ "one": "One",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Syncing your account."
},
"useExistingSeed": {
- "title": "Enter a seed and account name.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "I have saved my seed",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Status",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Press the button below to enable fingerprint authentication.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Touch fingerprint reader to log in"
},
"transferConfirmation": {
"youAreAbout": "You are about to send {{contents}} to the address",
- "aMessage": "a message"
+ "aMessage": "a message",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Wrong code",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Preparing transfers",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Completing proof of work",
- "broadcasting": "Broadcasting"
+ "broadcasting": "Broadcasting",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Generating addresses and detecting balance.",
- "attaching": "Attaching addresses to Tangle."
+ "attaching": "Attaching addresses to Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/vi/translation.json b/src/shared/locales/vi/translation.json
index 29b050e594..7d4d05bf48 100644
--- a/src/shared/locales/vi/translation.json
+++ b/src/shared/locales/vi/translation.json
@@ -74,6 +74,8 @@
"wallet": "Ví Điện Tử",
"all": "All",
"sent": "Đã Gửi",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "Đã Nhận",
"sending": "Đang Gửi",
"receiving": "Đang Nhận",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "Cảnh báo: Còn dư quỹ trên một số địa chỉ đã dùng để gửi IOTA",
"discordInformation": "Gửi IOTA đi nhiều lần từ cùng một địa chỉ là một hành động nguy hiểm. Vui lòng xem kênh #help trên Discord để tìm hiểu xem bạn nên làm gì.",
"androidInsecureClipboardWarning": "Tính năng sao chép của Android không an toàn.",
- "androidCopyPasteWarning": "Không bao giờ được sao chép/dán chuỗi mật mã của bạn khi sử dụng thiết bị Android.",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "Tôi sẽ không chép/dán từ khoá",
"mustBeStoredAppropriately": "Nó phải được lưu giữ thích đáng.",
"deviceMayBecomeUnresponsive": "Thiết bị của bạn có thể ngưng phản hồi trong một thời gian.",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "Từ khoá chứa ký tự không hợp lệ",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "Mật khẩu của bạn phải có ít nhất {{minLength}} ký tự. Mật khẩu hiện tại có {{currentLength}} ký tự. Xin vui lòng thử lại.",
"passwordMismatch": "Mật khẩu không trùng khớp",
"passwordMismatchExplanation": "Mật khẩu vừa nhập không trùng khớp. Xin vui lòng thử lại.",
- "anEncryptedCopy": "Một bản sao mã hoá của từ khoá sẽ được lưu trên máy của bạn. Bạn sẽ phải xài mật khẩu này để truy cập ví điện tử của mình.",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "Nhập Lại Mật Khẩu"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "Đăng Nhập",
"setNode": "Chọn Nút Mạng",
"whyBiometricDisabled": "Why is biometric authentication disabled?",
- "whyBiometricDisabledExplanation": "Biometric login is disabled on first app load for your security. When using Trinity, you will be logged out for inactivity. You can then log back in with biometric authentication."
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "Đang tải từ khoá lần đầu tiên.",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "Đừng bao giờ chia sẻ từ khoá với bất cứ ai.",
"iotaLogo": "IOTA logo",
- "print": "IN",
+ "print": "Print",
"paperConvenience": "In chuỗi mật mã của bạn ra giấy là một cách thuận tiện để lưu trữ nó.",
"publicInsecure": "Nhưng in bằng mạng Wifi công cộng hoặc bằng máy in công cộng là không an toàn.",
- "tapCheckboxes": "Vui lòng bấm vào những hộp đánh dấu ở dưới để xác nhận.",
- "wifiCheckbox": "Tôi sẽ không in trên wifi công cộng",
- "printerCheckbox": "Tôi sẽ không in trên máy in công cộng"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "Your address",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "KHÔNG CÓ ĐỊA CHỈ",
"spent": "Đã Gửi",
- "missingPermission": "File system permission required",
- "missingPermissionExplanation": "Access to the file system is required in order to share QR codes.",
"tag": "Tag",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "Let's write down your seed",
"youCanHighlightCharacters": "Bạn có thể đánh dấu 9 ký tự trong một lần",
"printBlankWallet": "In một ví trống",
- "whatIsChecksum": "Every seed has a corresponding 3-character checksum",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "Tôi đã lưu từ khóa",
"checksumExplanation": "Khi bạn cho từ khoá vào ví, bạn nên chắc chắn rằng mã kiểm tra của ví trùng khớp với mã bạn đã ghi xuống.",
"mustSaveYourSeed": "<0><0>Bạn phải lưu từ khoá với 0><1>ít nhất một1><2>trong những sự lựa chọn dưới đây.2>0>"
@@ -345,7 +351,8 @@
"totalTime": "Total time",
"addressPasteDetected": "Address paste detected",
"addressPasteExplanation": "It looks like you have pasted an address. Make sure that the address matches the one you want to send to.",
- "invalid": "INVALID"
+ "invalid": "INVALID",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "Let's add a name",
@@ -446,7 +453,8 @@
"empty": "Empty",
"retrying": "Retrying",
"yesterday": "Yesterday",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "Xem từ khoá",
@@ -504,18 +512,21 @@
"currency": "Tiền Tệ"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "Bạn có muốn đăng xuất không?"
+ "logoutConfirmation": "Bạn có muốn đăng xuất không?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "Quét mã QR"
},
"unitInfoModal": {
- "unitSystem": "HỆ THỐNG ĐƠN VỊ",
+ "unitSystem": "Unit System",
"trillion": "Nghìn Tỷ",
"billion": "Tỷ",
"million": "Triệu",
"thousand": "Nghìn",
- "one": "Một"
+ "one": "Một",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "Why can't I spend my full balance?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "Đang đồng bộ tài khoản."
},
"useExistingSeed": {
- "title": "Nhập từ khóa và tên tài khoản.",
+ "title": "Enter an account name and seed",
"incorrectFormat": "Incorrect seed format",
"validSeedExplanation": "Valid seeds should be 81 characters and contain only A-Z or 9."
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "Did you back up your seed?",
- "alreadyHave": "Tôi đã lưu từ khóa",
- "reenterSeed": "At the next step you will be asked to re-enter your seed.",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "If you have not backed up your seed and your device fails, you will lose all of your IOTA.",
"pleaseConfirm": "Please confirm you have securely stored your seed."
},
@@ -572,15 +583,19 @@
"status": "Tình Trạng",
"fingerprintUnavailable": "Biometric authentication unavailable",
"fingerprintUnavailableExplanation": "Your device does not support biometric authentication or it has not been configured in the device settings.",
- "buttonInstructionsDisable": "Nhấn vào nút dưới đây để vô hiệu hóa xác thực vân tay.",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "Nhấn vào nút dưới đây để kích hoạt xác thực vân tay.",
- "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID.",
- "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID.",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "Chạm đầu đọc vân tay để đăng nhập"
},
"transferConfirmation": {
"youAreAbout": "Bạn chuẩn bị gửi {{contents}} đến địa chỉ",
- "aMessage": "tin nhắn"
+ "aMessage": "tin nhắn",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "Sai mã 2FA",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "Export SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "Make sure you back up the file in multiple locations (e.g. hard drive, cloud, USB). If you lose this file and have not stored your seed elsewhere, you will lose your IOTA.",
"exportFail": "SeedVault export failed",
"exportFailExplanation": "There was an problem exporting the SeedVault. Please ensure you have the appropriate permissions and enough free space.",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "Your seed was imported successfully.",
"saveToDownloadFolder": "Save to Download Folder",
"importSeedVault": "Import SeedVault",
- "dropSeedVaultHere": "Drop SeedVault here <1>1> or click to browse",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault does not contain a valid seed",
"noSeedFoundExplanation": "The SeedVault is either empty or contains a seed in an invalid format.",
"seedFileError": "Failed to open SeedVault",
"seedFileErrorExplanation": "There was a problem opening the SeedVault. If you selected the correct file then it may be corrupted.",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "MCAP",
@@ -655,7 +672,8 @@
"preparingTransfers": "Chuẩn bị chuyển khoản",
"gettingTransactionsToApprove": "Getting transactions to approve",
"proofOfWork": "Đang hoàn thành proof of work",
- "broadcasting": "Đang phát sóng"
+ "broadcasting": "Đang phát sóng",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "Cannot complete snapshot transition",
@@ -669,7 +687,8 @@
"transition": "Transition",
"transitioning": "Transitioning for the snapshot.",
"generatingAndDetecting": "Tạo địa chỉ mới và tìm ra số tiền trong tài khoản.",
- "attaching": "Kết nối địa chỉ vào mạng Tangle."
+ "attaching": "Kết nối địa chỉ vào mạng Tangle.",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "Autofill success",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "Notifications",
diff --git a/src/shared/locales/zh-CN/translation.json b/src/shared/locales/zh-CN/translation.json
index 5d673f0f94..1b46769743 100644
--- a/src/shared/locales/zh-CN/translation.json
+++ b/src/shared/locales/zh-CN/translation.json
@@ -74,6 +74,8 @@
"wallet": "钱包",
"all": "全部",
"sent": "已发送",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "已收到",
"sending": "发送",
"receiving": "接收",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "警告:资金位于已用地址上。",
"discordInformation": "从同一地址多次发送是危险的。请到Discord的 #help 频道寻找帮助。",
"androidInsecureClipboardWarning": "安卓系统不能提供安全的剪贴板。",
- "androidCopyPasteWarning": "切勿在安卓设备上复制/粘贴您的种子。",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "我不会复制/粘贴我的种子。",
"mustBeStoredAppropriately": "必须恰当地存储种子。",
"deviceMayBecomeUnresponsive": "您的设备可能会在一段时间内失去响应。",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "Keychain error",
"errorAccessingKeychainExplanation": "Cannot access keychain required for secure storage.",
"mainWallet": "MAIN ACCOUNT",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "种子包含无效字符",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "您的密码长度必须为至少{{minLength}}个字符 。当前为{{currentLength}}个字符,请重试。",
"passwordMismatch": "密码不相符",
"passwordMismatchExplanation": "您输入的密码不匹配,请再试一次。",
- "anEncryptedCopy": "种子的加密副本将存储在您的设备上。将来您将使用此密码访问钱包。",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "请重新输入密码"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "登录",
"setNode": "设置节点",
"whyBiometricDisabled": "为什么生物识别认证被停用?",
- "whyBiometricDisabledExplanation": "出于安全考虑,生物识别认证在应用第一次加载时停用。在使用 Trinity 时,在一定的时间内没有动作的话会将您登出。再次登录时可以使用生物识别认证。"
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "首次读取种子",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "永远不要与任何人分享您的种子。",
"iotaLogo": "IOTA标志",
- "print": "打印",
+ "print": "Print",
"paperConvenience": "为您的种子打印一份纸质副本是一种方便的存储方式。",
"publicInsecure": "但是在公共Wifi或者公共打印机上打印是不安全的。",
- "tapCheckboxes": "请点击下面的复选框确认。",
- "wifiCheckbox": "我不会在公共WIFI下打印",
- "printerCheckbox": "我不会在公共打印机上打印"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "您的地址",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "无地址",
"spent": "使用过",
- "missingPermission": "需要文件系统权限",
- "missingPermissionExplanation": "分享二维码需要具备文件系统访问权限。",
"tag": "标签",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "让我们写下您的种子",
"youCanHighlightCharacters": "您可以一次突出显示9个字符",
"printBlankWallet": "打印空白钱包",
- "whatIsChecksum": "每个种子都有相应的3字符校验和",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "我已经保存好了种子",
"checksumExplanation": "每当您向钱包添加种子时,您应确保钱包生成的校验和与您写下来的校验和相匹配。",
"mustSaveYourSeed": "<0><0>您必须使用下列选项中的 0><1>其中一项1><2> 来备份您的种子。2>0>"
@@ -345,7 +351,8 @@
"totalTime": "总计用时",
"addressPasteDetected": "检测到地址粘贴",
"addressPasteExplanation": "看起来你已经粘贴了地址。请确保该地址与您想要发送的地址是一致的。",
- "invalid": "无效"
+ "invalid": "无效",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "让我们加上一个名字",
@@ -446,7 +453,8 @@
"empty": "清空",
"retrying": "重试中",
"yesterday": "昨天",
- "promotingAnotherBundle": "Promoting another bundle"
+ "promotingAnotherBundle": "Promoting another bundle",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "查看种子",
@@ -504,18 +512,21 @@
"currency": "货币"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "您确定要登出吗?"
+ "logoutConfirmation": "您确定要登出吗?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "扫描您的二维码"
},
"unitInfoModal": {
- "unitSystem": "单位系统",
+ "unitSystem": "Unit System",
"trillion": "万亿",
"billion": "十亿",
"million": "百万",
"thousand": "千",
- "one": "一"
+ "one": "一",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "为什么我不能支出全部余额?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "正在同步您的账号"
},
"useExistingSeed": {
- "title": "输入种子和帐户名称。",
+ "title": "Enter an account name and seed",
"incorrectFormat": "种子格式不正确",
"validSeedExplanation": "有效的种子应该是81个字符,并且只包含 A-Z 或9。"
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "您备份过种子了吗?",
- "alreadyHave": "我已经保存了我的种子",
- "reenterSeed": "下一步将要求您重新输入您的种子。",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "如果您没有备份种子,当设备损坏无法使用时,您就会失去您的IOTA。",
"pleaseConfirm": "请确认您已安全地储存了您的种子。"
},
@@ -572,15 +583,19 @@
"status": "状态",
"fingerprintUnavailable": "生物识别认证不可用",
"fingerprintUnavailableExplanation": "您的设备不支持生物识别认证或者尚未在设备设置中对此功能进行配置。",
- "buttonInstructionsDisable": "点击下面的按钮禁用指纹身份验证。",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "按下方按钮启用指纹认证。",
- "buttonInstructionsDisableIPhoneX": "按下方按钮禁用Face ID。",
- "buttonInstructionsEnableIPhoneX": "按下方按钮启用Face ID。",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "触摸指纹读取器登录"
},
"transferConfirmation": {
"youAreAbout": "您将发送 {{内容}} 到地址",
- "aMessage": "一条消息"
+ "aMessage": "一条消息",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "验证码错误",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "导出SeedVault",
- "seedVaultExplanation": "A SeedVault is an encrypted file for storing your seed securely. The seed is encrypted behind a SeedVault Key and cannot be accessed without that key.",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "请确保您在多个位置备份了该文件(例如硬盘、云端、USB)。如果您遗失了该文件并且没有在其他地方储存您的种子,那么您将失去您的IOTA。",
"exportFail": "SeedVault 导出失败",
"exportFailExplanation": "导出 SeedVault 时出现问题。请确保您拥有适当的权限和足够的可用空间。",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "您的种子已成功导入。",
"saveToDownloadFolder": "保存到下载文件夹",
"importSeedVault": "导入SeedVault",
- "dropSeedVaultHere": "拖动 SeedVault 到此处<1>1>或者点击浏览",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "Enter your key to open the SeedVault",
"noSeedFound": "SeedVault 不包含有效种子",
"noSeedFoundExplanation": "SeedVault 是空的或包含无效格式的种子。",
"seedFileError": "打开SeedVault失败",
"seedFileErrorExplanation": "打开 SeedVault 时遇到问题。如果您选择了正确的文件, 那么它可能已损坏。",
- "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up. The key can be the same as the password you use for Trinity."
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "市值",
@@ -655,7 +672,8 @@
"preparingTransfers": "准备转帐中",
"gettingTransactionsToApprove": "获取交易批准",
"proofOfWork": "完成工作量证明",
- "broadcasting": "广播中"
+ "broadcasting": "广播中",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "无法完成快照转换",
@@ -669,7 +687,8 @@
"transition": "转换",
"transitioning": "正在转换快照。",
"generatingAndDetecting": "正在生成地址和检测余额。",
- "attaching": "将地址添加到Tanlge。"
+ "attaching": "将地址添加到Tanlge。",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "自动填充成功",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "通知",
diff --git a/src/shared/locales/zh-TW/translation.json b/src/shared/locales/zh-TW/translation.json
index f7bcaca508..27d124c650 100644
--- a/src/shared/locales/zh-TW/translation.json
+++ b/src/shared/locales/zh-TW/translation.json
@@ -74,6 +74,8 @@
"wallet": "錢包",
"all": "全部",
"sent": "已支出",
+ "youReceived": "You received",
+ "youSent": "You sent",
"received": "已接收",
"sending": "轉帳中",
"receiving": "收款中",
@@ -128,7 +130,7 @@
"spentAddressExplanation": "警告:資金位於已支出的地址",
"discordInformation": "用相同的地址重複轉帳是非常危險的,請前往 Discord #help 頻道尋求協助。",
"androidInsecureClipboardWarning": "Android 提供的剪貼簿並不安全。",
- "androidCopyPasteWarning": "請勿在 Android 裝置上複製/貼上您的種子碼。",
+ "androidCopyPasteWarning": "Never copy/paste a seed on an Android device.",
"willNotCopyPasteSeed": "我絕不會複製/貼上我的種子碼",
"mustBeStoredAppropriately": "種子碼必須妥善保存。",
"deviceMayBecomeUnresponsive": "您的裝置可能會在一段時間內無法回應。",
@@ -148,10 +150,14 @@
"errorAccessingKeychain": "鑰匙串錯誤",
"errorAccessingKeychainExplanation": "無法訪問安全儲存所需的鑰匙串。",
"mainWallet": "主帳戶",
+ "confirm": "Confirm",
+ "delete": "Delete",
"shouldUpdate": "A new update is available",
"shouldUpdateExplanation": "A new update has been released. It is recommended that you update to the latest version.",
"forceUpdate": "Update the app to continue",
- "forceUpdateExplanation": "A critical update has been released. Please update the app now."
+ "forceUpdateExplanation": "A critical update has been released. Please update the app now.",
+ "missingPermission": "File system permission required",
+ "missingPermissionExplanation": "Access to the file system is required in order to perform this function."
},
"addAdditionalSeed": {
"seedInvalidChars": "種子碼包含無效字元",
@@ -205,7 +211,7 @@
"passwordTooShortExplanation": "您的密碼必須至少為 {{minLength}} 個字元,目前為 {{currentLength}} 個字元長,請再試一次。",
"passwordMismatch": "密碼不符",
"passwordMismatchExplanation": "您輸入的密碼不符,請再試一次。",
- "anEncryptedCopy": "裝置上將會儲存一份您加密過的種子碼。未來您需要這份密碼來使用錢包。",
+ "anEncryptedCopy": "This is your main wallet password. You will use it to log in.",
"retypePassword": "重新輸入密碼"
},
"copyToClipboard": {
@@ -239,7 +245,8 @@
"login": "登入",
"setNode": "設置節點",
"whyBiometricDisabled": "為何生物識別驗證是停用的?",
- "whyBiometricDisabledExplanation": "考量到您的安全,生物識別驗證在應用程式一開啟時是停用的。在使用 Trinity 時,要是一段時間沒有動作的話會將您登出。這時候再登入回來時,是可以使用生物識別驗證的。"
+ "whyBiometricDisabledExplanationPart1": "Biometric authentication is disabled on first app load for your security.",
+ "whyBiometricDisabledExplanationPart2": "When using Trinity you will be logged out for inactivity. You can then log back in with biometric authentication."
},
"loading": {
"loadingFirstTime": "首次讀取種子碼。",
@@ -268,12 +275,12 @@
"paperWallet": {
"neverShare": "千萬別和任何人分享您的種子碼。",
"iotaLogo": "IOTA 標誌",
- "print": "列印",
+ "print": "Print",
"paperConvenience": "將您的種子碼列列印成紙本是最簡便的儲存方式。",
"publicInsecure": "但請注意使用公共 wifi 或公共印表機列印的話可能會不安全。",
- "tapCheckboxes": "請點擊以下方框來確認。",
- "wifiCheckbox": "我不會使用公共 wifi 來列印",
- "printerCheckbox": "我不會使用公共印表機來列印"
+ "pleaseCheck": "Please check and confirm before you print",
+ "wifiConfirmation": "I am not on on public wifi",
+ "printerConfirmation": "I am not printing on a public printer"
},
"receive": {
"yourAddress": "您的地址",
@@ -285,8 +292,6 @@
"generateNewAddress": "Generate address",
"noAddresses": "無地址",
"spent": "已支出",
- "missingPermission": "需要檔案系統權限",
- "missingPermissionExplanation": "分享 QR 碼必須要有訪問檔案系統的權限。",
"tag": "標籤",
"generateAnAddress": "Generate address",
"generateAnAddressTitle": "Generate an address",
@@ -304,7 +309,8 @@
"letsWriteDownYourSeed": "請寫下您的種子碼",
"youCanHighlightCharacters": "您可以一次顯示 9 個字元",
"printBlankWallet": "印出空白錢包",
- "whatIsChecksum": "每個種子碼會有相對應 3 字元的檢查碼",
+ "whatIsAChecksum": "What is a checksum?",
+ "everySeedHasAChecksum": "Every seed has a corresponding 3-character checksum.",
"iHavesavedMySeed": "我已儲存我的種子碼",
"checksumExplanation": "每當您新增種子碼到錢包時,請確認錢包顯示的檢查碼和您當時寫下的相符。",
"mustSaveYourSeed": "<0><0>您必須使用以下0><1>其中一種1><2>選項儲存您的種子碼。2>0>"
@@ -345,7 +351,8 @@
"totalTime": "總計",
"addressPasteDetected": "檢測到地址貼上",
"addressPasteExplanation": "看起來您已貼上地址,請確認貼上的地址與您想送出去的相符。",
- "invalid": "無效"
+ "invalid": "無效",
+ "swipeToSend": "Swipe to send"
},
"setSeedName": {
"letsAddName": "請輸入名稱",
@@ -446,7 +453,8 @@
"empty": "清空",
"retrying": "重試中",
"yesterday": "昨日",
- "promotingAnotherBundle": "正在促進另一組交易中"
+ "promotingAnotherBundle": "正在促進另一組交易中",
+ "pleaseWait": "Please wait, Trinity is promoting another bundle."
},
"accountManagement": {
"viewSeed": "檢視種子",
@@ -504,18 +512,21 @@
"currency": "貨幣"
},
"logoutConfirmationModal": {
- "logoutConfirmation": "您確定要登出?"
+ "logoutConfirmation": "您確定要登出?",
+ "aboutToLogOut": "You are about to log out",
+ "areYouSure": "Are you sure?"
},
"qrScanner": {
"scan": "掃描 QR 碼"
},
"unitInfoModal": {
- "unitSystem": "單位系統",
+ "unitSystem": "Unit System",
"trillion": "兆",
"billion": "十億",
"million": "百萬",
"thousand": "千",
- "one": "一"
+ "one": "一",
+ "unitInfoExplanation": "IOTAs are typically acquired in multiples of one million, but can be transferred as a single IOTA."
},
"usedAddressModal": {
"cantSpendFullBalanceQuestion": "我為何無法支出所有餘額?",
@@ -537,7 +548,7 @@
"syncingYourAccount": "同步您的帳戶中。"
},
"useExistingSeed": {
- "title": "輸入種子碼和帳戶名稱。",
+ "title": "Enter an account name and seed",
"incorrectFormat": "種子碼格式不符",
"validSeedExplanation": "有效的種子碼應為 81 個字元而且僅包含 A-Z 或 9。"
},
@@ -551,8 +562,8 @@
},
"saveSeedConfirmation": {
"didSaveSeed": "您備份種子碼了嗎?",
- "alreadyHave": "我已儲存我的種子碼",
- "reenterSeed": "下一步您會需要重新輸入您的種子碼。",
+ "iHaveBackedUp": "I have safely backed up my seed",
+ "reenterSeed": "At the next step you need to re-enter your seed.",
"reenterSeedWarning": "如果您尚未備份您的種子碼然後裝置停止的話,您將失去您所有的 IOTA。",
"pleaseConfirm": "請確認您已安全地儲存了您的種子碼。"
},
@@ -572,15 +583,19 @@
"status": "狀態",
"fingerprintUnavailable": "生物識別驗證無法使用",
"fingerprintUnavailableExplanation": "您的裝置不支援生物識別驗證,或者裝置設定中並沒有啟用此權限。",
- "buttonInstructionsDisable": "按下方按鈕停用指紋驗證。",
+ "buttonInstructionsDisable": "Press the button below to disable fingerprint authentication",
"buttonInstructionsEnable": "按下方按鈕啟用指紋驗證。",
- "buttonInstructionsDisableIPhoneX": "按下方按鈕停用 Face ID。",
- "buttonInstructionsEnableIPhoneX": "按下方按鈕啟用 Face ID。",
+ "buttonInstructionsDisableIPhoneX": "Press the button below to disable Face ID",
+ "buttonInstructionsEnableIPhoneX": "Press the button below to enable Face ID",
"instructionsLogin": "觸摸指紋辨識器來登入"
},
"transferConfirmation": {
"youAreAbout": "您將轉帳{{contents}} 到地址",
- "aMessage": "訊息"
+ "aMessage": "訊息",
+ "fromAccount": "From {{selectedAccountName}}",
+ "toAddress": "To address",
+ "sendingAMessage": "Sending a message",
+ "sendingAnEmptyMessage": "Sending an empty message"
},
"twoFA": {
"wrongCode": "驗證碼錯誤",
@@ -601,7 +616,7 @@
},
"seedVault": {
"exportSeedVault": "匯出 SeedVault",
- "seedVaultExplanation": "SeedVault 是份能夠安全地保存種子碼的加密檔案。種子碼透過輸入的 SeedVault 金鑰加密,而沒有該金鑰的話也就無法取得。",
+ "seedVaultExplanation": "A SeedVault is an encrypted file for backing up your seed. The seed is encrypted with a SeedVault Key and cannot be accessed without that key.",
"seedVaultWarning": "請確認您有備份檔案在許多不同位置 (像是硬碟、雲端、USB)。如果您遺失此檔案而且沒有在其他地方儲存種子碼的話,您將失去您的 IOTA。",
"exportFail": "SeedVault 匯出失敗",
"exportFailExplanation": "匯出 SeedVault 時發生錯誤,請確認您有對應的權限以及足夠的可用空間。",
@@ -615,13 +630,15 @@
"importSuccessExplanation": "您的種子碼已成功匯入。",
"saveToDownloadFolder": "儲存至下載資料夾",
"importSeedVault": "匯入 SeedVault",
- "dropSeedVaultHere": "拖曳 SeedVault 至此 <1>1> 或者點擊瀏覽",
+ "dropInstructions": "Drop SeedVault or text here <1>1> or click to browse",
+ "dropActive": "Drop SeedVault or text here",
"enterKeyExplanation": "請輸入您的金鑰來開啟 SeedVault",
"noSeedFound": "SeedVault 裡沒儲存有效的種子碼",
"noSeedFoundExplanation": "SeedVault 是空的或儲存格式不符的種子碼。",
"seedFileError": "開啟 SeedVault 失敗",
"seedFileErrorExplanation": "開啟 SeedVault 時遇到問題,如果您選擇的檔案是正確的,那麼它可能已損壞。",
- "seedVaultKeyExplanation": "首先我們必須確保 SeedVault 的安全,請輸入金鑰來加密檔案。您將會需要此金鑰才能從 SeedVault 備份取回種子碼,金鑰也可以用和 Trinity 一樣的密碼。"
+ "seedVaultKeyExplanation": "First we need to secure your SeedVault. Please choose a key to encrypt the file. You will need this key to restore your seed from the SeedVault back up.",
+ "retypeKey": "Retype key"
},
"chart": {
"mcap": "總市值",
@@ -655,7 +672,8 @@
"preparingTransfers": "準備交易資訊",
"gettingTransactionsToApprove": "取得交易確認",
"proofOfWork": "完成工作量證明",
- "broadcasting": "廣播中"
+ "broadcasting": "廣播中",
+ "transferComplete": "Transfer complete"
},
"snapshotTransition": {
"cannotCompleteTransition": "無法完成快照轉換",
@@ -669,7 +687,8 @@
"transition": "轉換",
"transitioning": "進行快照轉換。",
"generatingAndDetecting": "產生地址並檢測餘額。",
- "attaching": "連接地址到 Tangle。"
+ "attaching": "連接地址到 Tangle。",
+ "attachProgress": "Attaching address {{currentAddress}} of {{totalAddresses}}"
},
"deepLink": {
"autofill": "自動填入成功",
@@ -707,7 +726,7 @@
},
"proxy": {
"proxy": "Use system proxy",
- "proxyExplanation": "Detect and use system wide network proxy settings. Restart the wallet after changing this setting."
+ "proxyExplanation": "Detect and use system wide network proxy settings. Close and reopen the wallet after changing this setting."
},
"notifications": {
"notifications": "通知",
diff --git a/src/shared/reducers/accounts.js b/src/shared/reducers/accounts.js
index ea8c70f854..551b4e1de2 100644
--- a/src/shared/reducers/accounts.js
+++ b/src/shared/reducers/accounts.js
@@ -1,7 +1,9 @@
import get from 'lodash/get';
import has from 'lodash/has';
import isBoolean from 'lodash/isBoolean';
+import isUndefined from 'lodash/isUndefined';
import isEmpty from 'lodash/isEmpty';
+import keys from 'lodash/keys';
import some from 'lodash/some';
import map from 'lodash/map';
import mapValues from 'lodash/mapValues';
@@ -14,6 +16,30 @@ import { ActionTypes as PollingActionTypes } from '../actions/polling';
import { ActionTypes as TransfersActionTypes } from '../actions/transfers';
import { renameKeys } from '../libs/utils';
+/**
+ * Removes account name from account info and reorders account indexes (Fill in missing gaps)
+ *
+ * @method removeAccountAndReorderIndexes
+ * @param {object} accountInfo
+ * @param {string} accountNameToDelete
+ *
+ * @returns {object}
+ */
+export const removeAccountAndReorderIndexes = (accountInfo, accountNameToDelete) => {
+ if (!has(accountInfo, accountNameToDelete)) {
+ return accountInfo;
+ }
+
+ const { index } = accountInfo[accountNameToDelete];
+
+ return mapValues(
+ // Remove account
+ omit(accountInfo, accountNameToDelete),
+ // Reorder (fill in missing) account indexes
+ (data) => ({ ...data, index: data.index > index ? data.index - 1 : data.index }),
+ );
+};
+
/**
* Stop overriding local spend status for a known address
*
@@ -89,6 +115,10 @@ const updateAccountInfo = (state, payload) => ({
...state.accountInfo,
[payload.accountName]: {
...get(state.accountInfo, `${payload.accountName}`),
+ // Set seed index
+ index: isUndefined(payload.accountIndex)
+ ? get(state.accountInfo, `${payload.accountName}.index`)
+ : payload.accountIndex,
meta: payload.accountMeta || get(state.accountInfo, `${payload.accountName}.meta`) || { type: 'keychain' },
balance: payload.balance,
addresses: mergeAddressData(get(state.accountInfo, `${payload.accountName}.addresses`), payload.addresses),
@@ -214,7 +244,7 @@ const account = (
case ActionTypes.REMOVE_ACCOUNT:
return {
...state,
- accountInfo: omit(state.accountInfo, action.payload),
+ accountInfo: removeAccountAndReorderIndexes(state.accountInfo, action.payload),
failedBundleHashes: omit(state.failedBundleHashes, action.payload),
tasks: omit(state.tasks, action.payload),
setupInfo: omit(state.setupInfo, action.payload),
@@ -261,6 +291,8 @@ const account = (
accountInfo: {
...state.accountInfo,
[action.payload.accountName]: {
+ // Preserve the account index
+ index: get(state.accountInfo, `${action.payload.accountName}.index`),
meta: get(state.accountInfo, `${action.payload.accountName}.meta`) || { type: 'keychain' },
balance: action.payload.balance,
addresses: mergeAddressData(
@@ -288,6 +320,7 @@ const account = (
accountInfo: {
...state.accountInfo,
[action.payload.accountName]: {
+ index: get(state.accountInfo, `${action.payload.accountName}.index`),
meta: get(state.accountInfo, `${action.payload.accountName}.meta`) || { type: 'keychain' },
balance: action.payload.balance,
addresses: setAddressData(
@@ -371,6 +404,17 @@ const account = (
),
},
};
+ case ActionTypes.ASSIGN_ACCOUNT_INDEX:
+ return {
+ ...state,
+ accountInfo: transform(
+ keys(state.accountInfo),
+ (acc, name, index) => {
+ acc[name] = { ...state.accountInfo[name], index };
+ },
+ {},
+ ),
+ };
default:
return state;
}
diff --git a/src/shared/reducers/progress.js b/src/shared/reducers/progress.js
index e6a13297f1..679bdb9363 100644
--- a/src/shared/reducers/progress.js
+++ b/src/shared/reducers/progress.js
@@ -6,10 +6,6 @@ const initialState = {
* Keeps track of the activation time of most recent progress step
*/
lastStepInitializationTime: Date.now(),
- /**
- * Keeps track of the time it has taken for each step to execute
- */
- timeTakenByEachStep: [],
/**
* Index of the active step from the activeSteps list
*/
@@ -32,16 +28,11 @@ export default (state = initialState, action) => {
...state,
activeStepIndex: state.activeStepIndex + 1,
lastStepInitializationTime: Date.now(),
- timeTakenByEachStep: [
- ...state.timeTakenByEachStep,
- ((Date.now() - state.lastStepInitializationTime) / 1000).toFixed(1),
- ],
};
case ActionTypes.START_TRACKING_PROGRESS:
return {
...state,
activeStepIndex: -1,
- timeTakenByEachStep: [],
lastStepInitializationTime: Date.now(),
activeSteps: action.payload,
};
diff --git a/src/shared/reducers/ui.js b/src/shared/reducers/ui.js
index cf4641640b..9d845cd967 100644
--- a/src/shared/reducers/ui.js
+++ b/src/shared/reducers/ui.js
@@ -153,6 +153,7 @@ const initialState = {
* Determines whether an error occurred during address generation
*/
hadErrorGeneratingNewAddress: false,
+ isKeyboardActive: false,
};
export default (state = initialState, action) => {
@@ -294,7 +295,6 @@ export default (state = initialState, action) => {
},
doNotMinimise: false,
isModalActive: false,
- modalProps: {},
qrMessage: '',
qrAmount: '',
qrTag: '',
@@ -470,6 +470,11 @@ export default (state = initialState, action) => {
...state,
currentRoute: action.payload,
};
+ case UiActionTypes.SET_KEYBOARD_ACTIVITY:
+ return {
+ ...state,
+ isKeyboardActive: action.payload,
+ };
default:
return state;
}
diff --git a/src/shared/reducers/wallet.js b/src/shared/reducers/wallet.js
index 9db03001f9..6a20b9271e 100644
--- a/src/shared/reducers/wallet.js
+++ b/src/shared/reducers/wallet.js
@@ -49,6 +49,10 @@ const initialState = {
* Determines if wallet is validating the displayed address
*/
isValidatingAddress: false,
+ /**
+ * Navigation stack
+ */
+ navStack: [],
/**
* Determines whether user should update
*/
@@ -187,6 +191,21 @@ export default (state = initialState, action) => {
...state,
isValidatingAddress: false,
};
+ case ActionTypes.PUSH_ROUTE:
+ return {
+ ...state,
+ navStack: state.navStack.slice().concat(action.payload),
+ };
+ case ActionTypes.POP_ROUTE:
+ return {
+ ...state,
+ navStack: state.navStack.slice(0, state.navStack.length - 1),
+ };
+ case ActionTypes.RESET_ROUTE:
+ return {
+ ...state,
+ navStack: [action.payload],
+ };
case ActionTypes.SHOULD_UPDATE:
return {
...state,
diff --git a/src/shared/selectors/accounts.js b/src/shared/selectors/accounts.js
index 4a13d43831..5427e92f82 100644
--- a/src/shared/selectors/accounts.js
+++ b/src/shared/selectors/accounts.js
@@ -2,6 +2,8 @@ import get from 'lodash/get';
import isEmpty from 'lodash/isEmpty';
import isUndefined from 'lodash/isUndefined';
import keys from 'lodash/keys';
+import map from 'lodash/map';
+import orderBy from 'lodash/orderBy';
import findKey from 'lodash/findKey';
import pickBy from 'lodash/pickBy';
import reduce from 'lodash/reduce';
@@ -139,10 +141,14 @@ export const selectFirstAddressFromAccountFactory = (accountName) => {
* @param {object} state
* @returns {array}
**/
-export const getAccountNamesFromState = createSelector(
- getAccountsFromState,
- (state) => (state.accountInfo ? Object.keys(state.accountInfo) : []),
-);
+export const getAccountNamesFromState = createSelector(getAccountsFromState, (state) => {
+ // Get [{ index, name }] for all accounts
+ const accountNames = map(state.accountInfo, ({ index }, name) => ({ index, name }));
+
+ // Order them by (account) index
+ const getAccountName = ({ name }) => name;
+ return map(orderBy(accountNames, ['index']), getAccountName);
+});
/**
* Selects seedIndex prop from wallet reducer state object.
diff --git a/src/shared/themes/themes/Classic.js b/src/shared/themes/themes/Classic.js
index b5c72f6ad1..db4e2128d0 100644
--- a/src/shared/themes/themes/Classic.js
+++ b/src/shared/themes/themes/Classic.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(26, 55, 62)', color: 'rgb(255, 255, 255)', alt: 'rgba(255, 255, 255, 0.25)' },
wave: { primary: 'rgba(137, 211, 254, 0.15)', secondary: 'rgba(0, 0, 0, 0.15)' },
+ isDark: true,
};
diff --git a/src/shared/themes/themes/Contemporary.js b/src/shared/themes/themes/Contemporary.js
index 161403bab7..a5ce751c6f 100644
--- a/src/shared/themes/themes/Contemporary.js
+++ b/src/shared/themes/themes/Contemporary.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(234, 237, 243)', color: 'rgb(0, 0, 0)', alt: 'rgba(0, 0, 0, 0.25)' },
wave: { primary: 'rgba(85, 20, 180, 0.5)', secondary: 'rgba(63, 89, 108, 0.15)' },
+ isDark: false,
};
diff --git a/src/shared/themes/themes/Dark.js b/src/shared/themes/themes/Dark.js
index b319947cb5..dbc93f7d70 100644
--- a/src/shared/themes/themes/Dark.js
+++ b/src/shared/themes/themes/Dark.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(0, 0, 0)', color: 'rgb(242, 242, 242)', alt: 'rgba(255, 255, 255, 0.15)' },
wave: { primary: 'rgba(255, 255, 255, 0.15)', secondary: 'rgba(255, 255, 255, 0.15)' },
+ isDark: true,
};
diff --git a/src/shared/themes/themes/Default.js b/src/shared/themes/themes/Default.js
index dd5b7ddccb..9d6836f625 100644
--- a/src/shared/themes/themes/Default.js
+++ b/src/shared/themes/themes/Default.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(3, 41, 62)', color: 'rgb(240, 242, 246)', alt: 'rgba(240, 240, 240, 0.25)' },
wave: { primary: 'rgba(49, 94, 119, 0.3)', secondary: 'rgba(11, 27, 31, 0.6)' },
+ isDark: true,
};
diff --git a/src/shared/themes/themes/Electric.js b/src/shared/themes/themes/Electric.js
index 65cde88c8f..66cfe6108e 100644
--- a/src/shared/themes/themes/Electric.js
+++ b/src/shared/themes/themes/Electric.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(11, 31, 53)', color: 'rgb(240, 242, 246)', alt: 'rgba(240, 240, 240, 0.25)' },
wave: { primary: 'rgba(171, 91, 239, 0.15)', secondary: 'rgba(0, 0, 0, 0.15)' },
+ isDark: true,
};
diff --git a/src/shared/themes/themes/Ionic.js b/src/shared/themes/themes/Ionic.js
index 0aa753d94d..05436e1acc 100644
--- a/src/shared/themes/themes/Ionic.js
+++ b/src/shared/themes/themes/Ionic.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(232, 235, 241)', color: 'rgb(0, 0, 0)', alt: 'rgba(0, 0, 0, 0.25)' },
wave: { primary: 'rgba(140, 48, 164, 0.5)', secondary: 'rgba(0, 0, 0, 0.12)' },
+ isDark: false,
};
diff --git a/src/shared/themes/themes/Light.js b/src/shared/themes/themes/Light.js
index 86460d0f86..6f69875752 100644
--- a/src/shared/themes/themes/Light.js
+++ b/src/shared/themes/themes/Light.js
@@ -17,4 +17,5 @@ export default {
primary: { color: 'rgb(0, 0, 0)', hover: 'rgb(51, 51, 51)', border: 'rgb(0, 0, 0)', body: 'rgb(242, 242, 242)' },
body: { bg: 'rgb(242, 242, 242)', color: 'rgb(0, 0, 0)', alt: 'rgba(0, 0, 0, 0.15)' },
wave: { primary: 'rgba(0, 0, 0, 0.05)', secondary: 'rgba(0, 0, 0, 0.05)' },
+ isDark: false,
};
diff --git a/src/shared/themes/themes/Lucky.js b/src/shared/themes/themes/Lucky.js
index 49aaff0e56..fed753a6c4 100644
--- a/src/shared/themes/themes/Lucky.js
+++ b/src/shared/themes/themes/Lucky.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(237, 237, 237)', color: 'rgb(0, 0, 0)', alt: 'rgb(209, 209, 209)' },
wave: { primary: 'rgba(246, 246, 246, 0.8)', secondary: 'rgb(177, 0, 0)' },
+ isDark: false,
};
diff --git a/src/shared/themes/themes/Mint.js b/src/shared/themes/themes/Mint.js
index 0017f27a0d..1df52ce0f3 100644
--- a/src/shared/themes/themes/Mint.js
+++ b/src/shared/themes/themes/Mint.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(0, 50, 65)', color: 'rgb(240, 242, 246)', alt: 'rgba(240, 240, 240, 0.25)' },
wave: { primary: 'rgba(0, 198, 255, 0.15)', secondary: 'rgba(0, 0, 0, 0.15)' },
+ isDark: true,
};
diff --git a/src/shared/themes/themes/SteelBlue.js b/src/shared/themes/themes/SteelBlue.js
index 8f95f653d6..6b6941a86b 100644
--- a/src/shared/themes/themes/SteelBlue.js
+++ b/src/shared/themes/themes/SteelBlue.js
@@ -22,4 +22,5 @@ export default {
},
body: { bg: 'rgb(228, 234, 245)', color: 'rgb(0, 0, 0)', alt: 'rgba(0, 0, 0, 0.25)' },
wave: { primary: 'rgba(28, 41, 159, 0.5)', secondary: 'rgb(212, 219, 234)' },
+ isDark: false,
};
diff --git a/src/shared/yarn.lock b/src/shared/yarn.lock
index 51ce541ecf..fcc74683de 100644
--- a/src/shared/yarn.lock
+++ b/src/shared/yarn.lock
@@ -1250,16 +1250,11 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
-lodash-es@^4.17.4:
+lodash-es@^4.17.4, lodash-es@^4.2.0:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0"
integrity sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q==
-lodash-es@^4.2.0:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
- integrity sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=
-
lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
diff --git a/yarn.lock b/yarn.lock
index c8b238f2d2..6aa476fc09 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -94,6 +94,21 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
+"@snyk/dep-graph@1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@snyk/dep-graph/-/dep-graph-1.1.2.tgz#a0377fbb29dd42bc12d1c2493b51a7b7fe0d334a"
+ integrity sha512-mCoAFKtmezBL61JOzLMzqqd/sXXxp0iektEwf4zw+sM3zuG4Tnmhf8OqNO6Wscn84bMIfLlI/nvECdxvSS7MTw==
+ dependencies:
+ graphlib "^2.1.5"
+ lodash "^4"
+ source-map-support "^0.5.9"
+ tslib "^1.9.3"
+
+"@snyk/gemfile@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@snyk/gemfile/-/gemfile-1.1.0.tgz#8c254dfc7739b2e8513c44c976fc41872d5f6af0"
+ integrity sha512-mLwF+ccuvRZMS0SxUAxA3dAp8mB3m2FxIsBIUWFTYvzxl+E4XTZb8uFrUqXHbcxhZH1Z8taHohNTbzXZn3M8ag==
+
"@yarnpkg/lockfile@^1.0.2":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
@@ -952,6 +967,17 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^6.0.0:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cryptiles@3.x.x:
version "3.1.2"
resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
@@ -1518,13 +1544,13 @@ execa@^0.8.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
-execa@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01"
- integrity sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
dependencies:
- cross-spawn "^5.0.1"
- get-stream "^3.0.0"
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
is-stream "^1.1.0"
npm-run-path "^2.0.0"
p-finally "^1.0.0"
@@ -1872,6 +1898,13 @@ get-stream@^3.0.0:
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
get-uri@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578"
@@ -2124,13 +2157,13 @@ humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
-husky@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/husky/-/husky-1.1.3.tgz#3ccfdb4d7332896bf7cd0e618c6fb8be09d9de4b"
- integrity sha512-6uc48B/A2Mqi65yeg37d/TPcTb0bZ1GTkMYOM0nXLOPuPaTRhXCeee80/noOrbavWd12x72Tusja7GJ5rzvV6g==
+husky@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-1.2.0.tgz#d631dda1e4a9ee8ba69a10b0c51a0e2c66e711e5"
+ integrity sha512-/ib3+iycykXC0tYIxsyqierikVa9DA2DrT32UEirqNEFVqOj1bFMTgP3jAz8HM7FgC/C8pc/BTUa9MV2GEkZaA==
dependencies:
cosmiconfig "^5.0.6"
- execa "^0.9.0"
+ execa "^1.0.0"
find-up "^3.0.0"
get-stdin "^6.0.0"
is-ci "^1.2.1"
@@ -2927,21 +2960,11 @@ lodash@4.17.10:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==
-lodash@^4.11.1, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0:
+lodash@^4, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
-lodash@^4.14.0:
- version "4.17.5"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
- integrity sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==
-
-lodash@^4.17.4:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
- integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
-
log-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
@@ -3254,6 +3277,11 @@ netmask@^1.0.6:
resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35"
integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
node-cmd@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/node-cmd/-/node-cmd-3.0.0.tgz#38fff70a4aaa4f659d203eb57862737018e24f6f"
@@ -3919,7 +3947,7 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2:
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-path-key@^2.0.0:
+path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
@@ -4798,19 +4826,19 @@ snyk-config@2.2.0:
lodash "^4.17.5"
nconf "^0.10.0"
-snyk-docker-plugin@1.12.3:
- version "1.12.3"
- resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-1.12.3.tgz#a4a7c81a8e4e3c6a6cc303d4bc9aa98645274bca"
- integrity sha512-ZbvaFCPCd0wxhqxjzU/iyf39tKlq2nvI9nPW32uZV3RGdHrkQH55BzCtBCF9d0dapxX+PKgae/4u2BKNw8hd9Q==
+snyk-docker-plugin@1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-1.13.1.tgz#4d5ad62fe76b03e36b2c414b9576e67daef21f73"
+ integrity sha512-rhVPwMryfGanLXeDoDzjQabGq8VlEPSkvDvraiOhm/F9o5E4zam6vDlVQXsYVRb4ydVKPLgux2ejWyFiG6shFA==
dependencies:
debug "^3"
dockerfile-ast "0.0.12"
tslib "^1"
-snyk-go-plugin@1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/snyk-go-plugin/-/snyk-go-plugin-1.6.0.tgz#4b312db52fdde6d9b2ac75fe1f9712b88563737d"
- integrity sha512-E6aYw7XAXSs2wJR3fU+vGQ1lVyjAw8PHIQYQwBwMkTHByhJIWPcu6Hy/jT5LcjJHlhYXlpOuk53HeLVK+kcXrQ==
+snyk-go-plugin@1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/snyk-go-plugin/-/snyk-go-plugin-1.6.1.tgz#fad24de943a587d676af9408e5b3976d6b20267d"
+ integrity sha512-hFOMyznfcMzF1HaZP18VmjQSqK/jBOowh0lpJY4UqmaQSZyJury3Ax+44O9oVUJi8lb8A4g7RVbxhlWl6bIqlA==
dependencies:
graphlib "^2.1.1"
tmp "0.0.33"
@@ -4836,10 +4864,10 @@ snyk-mvn-plugin@2.0.0:
resolved "https://registry.yarnpkg.com/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.0.tgz#875dcfe0d77b50396321552f2469ee69ca8d1416"
integrity sha512-9jAhZhv+7YcqtoQYCYlgMoxK+dWBKlk+wkX27Ebg3vNddNop9q5jZitRXTjsXwfSUZHRt+Ptw1f8vei9kjzZVg==
-snyk-nodejs-lockfile-parser@1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.7.1.tgz#499fd29db9a9185e3cb90a314b204fa1244fffb6"
- integrity sha512-0gHELqMhzUxb/t3Tg6d6G9LTDioOXCrEMt9aetOeV8wD/ZRL5VFNjwcdrm8qILLqzDFaFjFIyMc66c0OL4zFAQ==
+snyk-nodejs-lockfile-parser@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.9.0.tgz#66e7295774e3854a4cc1a61200f01833adb60d25"
+ integrity sha512-GRn70VDe+JISkRbnxc9vxCBV+Ekkdr79krVXbYNDJgQyIjH+FXh6PXVvpregVsvCcNqP1ctbBw/u1w6e9xX1QA==
dependencies:
"@yarnpkg/lockfile" "^1.0.2"
graphlib "^2.1.5"
@@ -4940,11 +4968,13 @@ snyk-try-require@1.3.1, snyk-try-require@^1.1.1, snyk-try-require@^1.3.1:
lru-cache "^4.0.0"
then-fs "^2.0.0"
-snyk@^1.96.0:
- version "1.110.1"
- resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.110.1.tgz#d43b2bc1befe79131b19365cf47736407b37b429"
- integrity sha512-+AN35LLGqUI2cfizTlreIJUqSTrzoAw3Il52+pCJ4jNk86ejmjd1f9wdVlh15LS2QK94+Jx0md3K/Rn6tfQ1Ug==
+snyk@^1.116.2:
+ version "1.116.2"
+ resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.116.2.tgz#d82fa2090bc25f892708a3623fc0e1c2383f53cc"
+ integrity sha512-zkW+IjSEDJ5f4leXck7a7aF36pJcIKRk3o2or78cnabq1mxQzgY8+ooECPDBnwvqySIwUKA8jOjnGRujaNCMpg==
dependencies:
+ "@snyk/dep-graph" "1.1.2"
+ "@snyk/gemfile" "1.1.0"
abbrev "^1.1.1"
ansi-escapes "^3.1.0"
chalk "^2.4.1"
@@ -4961,12 +4991,12 @@ snyk@^1.96.0:
recursive-readdir "^2.2.2"
semver "^5.5.0"
snyk-config "2.2.0"
- snyk-docker-plugin "1.12.3"
- snyk-go-plugin "1.6.0"
+ snyk-docker-plugin "1.13.1"
+ snyk-go-plugin "1.6.1"
snyk-gradle-plugin "2.1.1"
snyk-module "1.9.1"
snyk-mvn-plugin "2.0.0"
- snyk-nodejs-lockfile-parser "1.7.1"
+ snyk-nodejs-lockfile-parser "1.9.0"
snyk-nuget-plugin "1.6.5"
snyk-php-plugin "1.5.1"
snyk-policy "1.13.1"
@@ -4980,6 +5010,7 @@ snyk@^1.96.0:
tempfile "^2.0.0"
then-fs "^2.0.0"
undefsafe "^2.0.0"
+ update-notifier "^2.5.0"
uuid "^3.2.1"
socks-proxy-agent@^3.0.0, socks-proxy-agent@^3.0.1: