diff --git a/app/api/ada/lib/cardanoCrypto/cryptoWallet.js b/app/api/ada/lib/cardanoCrypto/cryptoWallet.js
index 1f442acef1..c8f9a6a0cd 100644
--- a/app/api/ada/lib/cardanoCrypto/cryptoWallet.js
+++ b/app/api/ada/lib/cardanoCrypto/cryptoWallet.js
@@ -2,7 +2,7 @@
// Utility functions for handling the private master key
-import bip39 from 'bip39';
+import { validateMnemonic, generateMnemonic } from 'bip39';
import { Logger, stringifyError } from '../../../../utils/logging';
@@ -17,17 +17,30 @@ import { RustModule } from './rustLoader';
declare var CONFIG : ConfigType;
/** Generate a random mnemonic based on 160-bits of entropy (15 words) */
-export const generateAdaMnemonic = () => bip39.generateMnemonic(160).split(' ');
+export const generateAdaMnemonic = () => generateMnemonic(160).split(' ');
/** Check validty of mnemonic (including checksum) */
export const isValidEnglishAdaMnemonic = (
phrase: string,
numberOfWords: ?number = 15
-) => (
+) => {
// Note: splitting on spaces will not work for Japanese-encoded mnemonics who use \u3000 instead
// We only use English mnemonics in Yoroi so this is okay.
- phrase.split(' ').length === numberOfWords && bip39.validateMnemonic(phrase)
-);
+ const split = phrase.split(' ');
+ if (split.length !== numberOfWords) {
+ return false;
+ }
+ /**
+ * Redemption mnemonics use 0-word menmonics.
+ * However, 9-word mnemonics were disallowed in a later version of BIP39
+ * Since our bip39 library now considers all 9-word mnemonics invalid
+ * we just return true for backwards compatibility
+ */
+ if (split.length === 9) {
+ return true;
+ }
+ return validateMnemonic(phrase);
+};
/** Check validty of paper mnemonic (including checksum) */
export const isValidEnglishAdaPaperMnemonic = (
diff --git a/app/api/ada/lib/decrypt.js b/app/api/ada/lib/decrypt.js
index 0e82caab39..1ec1a0d5ee 100644
--- a/app/api/ada/lib/decrypt.js
+++ b/app/api/ada/lib/decrypt.js
@@ -1,8 +1,9 @@
import aesjs from 'aes-js';
-import bip39 from 'bip39';
+import { validateMnemonic } from 'bip39';
import blakejs from 'blakejs';
import crypto from 'crypto';
-import validWords from 'bip39/wordlists/english.json';
+import validWords from 'bip39/src/wordlists/english.json';
+import { RustModule } from './cardanoCrypto/rustLoader';
const isBase64 = (string) => {
const criteria = '(?:^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$)';
@@ -17,30 +18,15 @@ function decryptWithAES(aesKey, bytes) {
return new aesjs.ModeOfOperation.ctr(aesKey, new aesjs.Counter(iv)).decrypt(bytes); // eslint-disable-line
}
-const hexChar = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
-
-const hexToBytes = (s) => {
- const arr = [];
- if (s.length & 1 === 1) { // eslint-disable-line
- throw new Error(`Wrong hex: ${s}`);
- }
- for (let i = 0; i < s.length / 2; ++i) {
- const c1 = s[2 * i];
- const c2 = s[(2 * i) + 1];
- const i1 = hexChar.indexOf(c1);
- const i2 = hexChar.indexOf(c2);
- if (i1 === -1 || i2 === -1) throw new Error(`Wrong hex: ${s}`);
- arr[i] = (i1 << 4) + i2;
- }
- return new Uint8Array(arr);
-};
-
const blake2b = (data) => blakejs.blake2b(data, null, 32);
-const fromMnemonic = (words) => hexToBytes(bip39.mnemonicToEntropy(words, validWords));
+const fromMnemonic = (words) => {
+ const entropy = RustModule.Wallet.Entropy.from_english_mnemonics(words);
+ return new Uint8Array(entropy.to_array());
+};
export const isValidMnemonic = (phrase, numberOfWords = 9) => (
- (phrase.split(' ').length === numberOfWords && bip39.validateMnemonic(phrase, validWords))
+ (phrase.split(' ').length === numberOfWords && validateMnemonic(phrase, validWords))
);
const hashData = (data) => {
diff --git a/app/containers/transfer/DaedalusTransferPage.js b/app/containers/transfer/DaedalusTransferPage.js
index 1cd6957c86..458e9fb3d6 100644
--- a/app/containers/transfer/DaedalusTransferPage.js
+++ b/app/containers/transfer/DaedalusTransferPage.js
@@ -2,7 +2,7 @@
import React, { Component } from 'react';
import { observer } from 'mobx-react';
import { intlShape, defineMessages } from 'react-intl';
-import validWords from 'bip39/wordlists/english.json';
+import validWords from 'bip39/src/wordlists/english.json';
import type { InjectedProps } from '../../types/injectedPropsType';
import StaticTopbarTitle from '../../components/topbar/StaticTopbarTitle';
import TopBar from '../../components/topbar/TopBar';
diff --git a/app/containers/wallet/AdaRedemptionPage.js b/app/containers/wallet/AdaRedemptionPage.js
index fbfc3b704d..a88afad216 100644
--- a/app/containers/wallet/AdaRedemptionPage.js
+++ b/app/containers/wallet/AdaRedemptionPage.js
@@ -7,7 +7,7 @@ import AdaRedemptionNoWallets from '../../components/wallet/ada-redemption/AdaRe
import LoadingSpinner from '../../components/widgets/LoadingSpinner';
import { ADA_REDEMPTION_TYPES } from '../../types/redemptionTypes';
import { AdaRedemptionCertificateParseError } from '../../i18n/errors';
-import validWords from 'bip39/wordlists/english.json';
+import validWords from 'bip39/src/wordlists/english.json';
import { ROUTES } from '../../routes-config';
import environment from '../../environment';
diff --git a/app/containers/wallet/dialogs/WalletRestoreDialogContainer.js b/app/containers/wallet/dialogs/WalletRestoreDialogContainer.js
index 3773a5937a..d00a8eb8fa 100644
--- a/app/containers/wallet/dialogs/WalletRestoreDialogContainer.js
+++ b/app/containers/wallet/dialogs/WalletRestoreDialogContainer.js
@@ -1,7 +1,7 @@
// @flow
import React, { Component } from 'react';
import { observer } from 'mobx-react';
-import validWords from 'bip39/wordlists/english.json';
+import validWords from 'bip39/src/wordlists/english.json';
import WalletRestoreDialog from '../../../components/wallet/WalletRestoreDialog';
import type { InjectedDialogContainerProps } from '../../../types/injectedPropsType';
import environment from '../../../environment';
diff --git a/app/i18n/errors.js b/app/i18n/errors.js
index 19c5d378a5..99a17ead16 100644
--- a/app/i18n/errors.js
+++ b/app/i18n/errors.js
@@ -3,7 +3,7 @@ import LocalizableError from './LocalizableError';
export class InvalidMnemonicError extends LocalizableError {
constructor() {
super({
- id: 'global.errors.invalidMnemonic',
+ id: 'api.errors.invalidMnemonicError',
defaultMessage: '!!!Invalid phrase entered, please check.',
});
}
@@ -30,7 +30,7 @@ export class FieldRequiredError extends LocalizableError {
export class AdaRedemptionCertificateParseError extends LocalizableError {
constructor() {
super({
- id: 'global.errors.AdaRedemptionCertificateParseError',
+ id: 'api.errors.AdaRedemptionCertificateParseError',
defaultMessage: '!!!The ADA redemption code could not be parsed from the given document.',
});
}
diff --git a/app/i18n/locales/en-US.json b/app/i18n/locales/en-US.json
index 5886a09f7d..69ad6d77de 100644
--- a/app/i18n/locales/en-US.json
+++ b/app/i18n/locales/en-US.json
@@ -65,6 +65,7 @@
"environment.apiVersion.cardano": "1.0.4",
"environment.currency.ada": "ADA",
"global.errors.fieldIsRequired": "This field is required.",
+ "global.errors.invalidEmail": "Invalid email entered, please check.",
"global.errors.invalidMasterKey": "Invalid master key entered, please check.",
"global.errors.invalidRepeatPassword": "Doesn't match.",
"global.errors.invalidWalletName": "Wallet name requires at least 1 and at most 40 letters.",
diff --git a/chrome/views/background.html b/chrome/views/background.html
new file mode 100644
index 0000000000..2f7ec6d3b5
--- /dev/null
+++ b/chrome/views/background.html
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/chrome/views/background.pug b/chrome/views/background.pug
deleted file mode 100644
index 03f282a008..0000000000
--- a/chrome/views/background.pug
+++ /dev/null
@@ -1,6 +0,0 @@
-doctype html
-
-html
- head
- script(src='./js/vendor.js' charset="UTF-8")
- script(src=env != 'development' ? '/js/background.bundle.js' : 'http://localhost:3000/js/background.bundle.js' charset="UTF-8")
\ No newline at end of file
diff --git a/chrome/views/main_window.html b/chrome/views/main_window.html
new file mode 100644
index 0000000000..73065cd026
--- /dev/null
+++ b/chrome/views/main_window.html
@@ -0,0 +1,16 @@
+
+
+
+ Yoroi
+
+
+
+
+
+
+
+
+
diff --git a/chrome/views/main_window.pug b/chrome/views/main_window.pug
deleted file mode 100644
index 5701a53c76..0000000000
--- a/chrome/views/main_window.pug
+++ /dev/null
@@ -1,15 +0,0 @@
-doctype html
-
-html
- head
- if env == 'development'
- script(src="http://localhost:8097")
- meta(charset='UTF-8')
- title Yoroi
- style.
- body { width: 500px; }
-
- body
- #root
- script(src='./js/vendor.js' charset="UTF-8")
- script(src=env != 'development' ? '/js/yoroi.bundle.js' : 'http://localhost:3000/js/yoroi.bundle.js' charset="UTF-8")
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index f89d9a1d32..5d36eb2b51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1115,20 +1115,10 @@
}
}
},
- "@types/babel-types": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.6.tgz",
- "integrity": "sha512-8zYZyy2kgwBXdz2j8Ix7LOghGiZbOiHf6vqmmBX1r76FdAzVNv7cODyJTEglUWiOdRnXh0s/o58neUwv5vaitQ==",
- "dev": true
- },
- "@types/babylon": {
- "version": "6.16.5",
- "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz",
- "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==",
- "dev": true,
- "requires": {
- "@types/babel-types": "7.0.6"
- }
+ "@types/node": {
+ "version": "11.11.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz",
+ "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ=="
},
"@webassemblyjs/ast": {
"version": "1.8.2",
@@ -1405,17 +1395,6 @@
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz",
"integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw=="
},
- "align-text": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
- "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2",
- "longest": "1.0.1",
- "repeat-string": "1.6.1"
- }
- },
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
@@ -1446,7 +1425,8 @@
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
},
"ansi-styles": {
"version": "3.2.1",
@@ -1843,6 +1823,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
"requires": {
"arr-flatten": "1.1.0"
}
@@ -1850,7 +1831,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": {
"version": "3.1.0",
@@ -1904,12 +1886,14 @@
"array-unique": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
},
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
},
"asap": {
"version": "2.0.6",
@@ -2104,6 +2088,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
"requires": {
"chalk": "1.1.3",
"esutils": "2.0.2",
@@ -2113,12 +2098,14 @@
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ "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",
@@ -2130,7 +2117,8 @@
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
}
}
},
@@ -2158,6 +2146,7 @@
"version": "6.26.1",
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
"integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+ "dev": true,
"requires": {
"babel-messages": "6.23.0",
"babel-runtime": "6.26.0",
@@ -2172,7 +2161,8 @@
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
}
}
},
@@ -2196,6 +2186,7 @@
"version": "23.6.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz",
"integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==",
+ "dev": true,
"requires": {
"babel-plugin-istanbul": "4.1.6",
"babel-preset-jest": "23.2.0"
@@ -2217,6 +2208,7 @@
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
"requires": {
"babel-runtime": "6.26.0"
}
@@ -2231,6 +2223,7 @@
"version": "4.1.6",
"resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz",
"integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==",
+ "dev": true,
"requires": {
"babel-plugin-syntax-object-rest-spread": "6.13.0",
"find-up": "2.1.0",
@@ -2241,7 +2234,8 @@
"babel-plugin-jest-hoist": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz",
- "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc="
+ "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=",
+ "dev": true
},
"babel-plugin-react-intl": {
"version": "3.0.1",
@@ -2257,7 +2251,8 @@
"babel-plugin-syntax-object-rest-spread": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
- "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U="
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
+ "dev": true
},
"babel-plugin-transform-react-constant-elements": {
"version": "6.23.0",
@@ -2306,6 +2301,7 @@
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz",
"integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=",
+ "dev": true,
"requires": {
"babel-plugin-jest-hoist": "23.2.0",
"babel-plugin-syntax-object-rest-spread": "6.13.0"
@@ -2433,6 +2429,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
"integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
"requires": {
"babel-runtime": "6.26.0",
"babel-traverse": "6.26.0",
@@ -2445,6 +2442,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
"requires": {
"babel-code-frame": "6.26.0",
"babel-messages": "6.23.0",
@@ -2461,6 +2459,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -2468,7 +2467,8 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
}
}
},
@@ -2476,6 +2476,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
"requires": {
"babel-runtime": "6.26.0",
"esutils": "2.0.2",
@@ -2486,7 +2487,8 @@
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
},
"balanced-match": {
"version": "1.0.0",
@@ -2638,14 +2640,14 @@
"dev": true
},
"bip39": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.3.0.tgz",
- "integrity": "sha1-5O5sbRvZDKAP/VetRGvfjAF/9IQ=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.0.tgz",
+ "integrity": "sha512-p1gHoZCAMfHRQLr57d/3AfillgPwV2nsBAnHpHUmr3BCRmThN9k18r5mUK/9R/zdFhZAlltYDzYe2GjnzXvMQA==",
"requires": {
+ "@types/node": "11.11.6",
"create-hash": "1.2.0",
"pbkdf2": "3.0.17",
- "randombytes": "2.1.0",
- "unorm": "1.4.1"
+ "randombytes": "2.1.0"
}
},
"bl": {
@@ -2746,6 +2748,12 @@
}
}
},
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
"boxen": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
@@ -2783,6 +2791,7 @@
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
"requires": {
"expand-range": "1.8.2",
"preserve": "0.2.0",
@@ -3162,16 +3171,6 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
- "center-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
- "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
- "dev": true,
- "requires": {
- "align-text": "0.1.4",
- "lazy-cache": "1.0.4"
- }
- },
"chai": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/chai/-/chai-3.2.0.tgz",
@@ -3212,15 +3211,6 @@
"supports-color": "5.5.0"
}
},
- "character-parser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
- "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=",
- "dev": true,
- "requires": {
- "is-regex": "1.0.4"
- }
- },
"chardet": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
@@ -3770,18 +3760,6 @@
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true
},
- "constantinople": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz",
- "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==",
- "dev": true,
- "requires": {
- "@types/babel-types": "7.0.6",
- "@types/babylon": "6.16.5",
- "babel-types": "6.26.0",
- "babylon": "6.18.0"
- }
- },
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
@@ -4091,6 +4069,18 @@
"source-list-map": "2.0.1"
}
},
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "1.0.0",
+ "css-what": "2.1.3",
+ "domutils": "1.5.1",
+ "nth-check": "1.0.2"
+ }
+ },
"css-selector-tokenizer": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
@@ -4136,6 +4126,12 @@
}
}
},
+ "css-what": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
+ "dev": true
+ },
"cssesc": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
@@ -4473,6 +4469,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
"integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
"requires": {
"repeating": "2.0.1"
}
@@ -4509,11 +4506,24 @@
"esutils": "2.0.2"
}
},
- "doctypes": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
- "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=",
- "dev": true
+ "dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dev": true,
+ "requires": {
+ "utila": "0.4.0"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
+ "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.1",
+ "entities": "1.1.2"
+ }
},
"dom-walk": {
"version": "0.1.1",
@@ -4526,6 +4536,12 @@
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
"dev": true
},
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
"domexception": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
@@ -4535,6 +4551,25 @@
"webidl-conversions": "4.0.2"
}
},
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.1"
+ }
+ },
+ "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.1.1",
+ "domelementtype": "1.3.1"
+ }
+ },
"dot-prop": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
@@ -4681,6 +4716,7 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
"requires": {
"is-arrayish": "0.2.1"
}
@@ -4808,7 +4844,8 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
},
"escodegen": {
"version": "1.11.1",
@@ -5249,7 +5286,8 @@
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
},
"etag": {
"version": "1.8.1",
@@ -5311,6 +5349,7 @@
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
"requires": {
"is-posix-bracket": "0.1.1"
}
@@ -5319,6 +5358,7 @@
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
"requires": {
"fill-range": "2.2.4"
}
@@ -5456,6 +5496,7 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
"requires": {
"is-extglob": "1.0.0"
}
@@ -5611,7 +5652,8 @@
"filename-regex": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
},
"fileset": {
"version": "2.0.3",
@@ -5627,6 +5669,7 @@
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
"integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+ "dev": true,
"requires": {
"is-number": "2.1.0",
"isobject": "2.1.0",
@@ -5693,6 +5736,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
"requires": {
"locate-path": "2.0.0"
}
@@ -5804,12 +5848,14 @@
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
},
"for-own": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
"integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
"requires": {
"for-in": "1.0.2"
}
@@ -6608,6 +6654,7 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
"requires": {
"glob-parent": "2.0.0",
"is-glob": "2.0.1"
@@ -6617,6 +6664,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
"requires": {
"is-glob": "2.0.1"
}
@@ -6648,7 +6696,8 @@
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
},
"globby": {
"version": "6.1.0",
@@ -6707,7 +6756,8 @@
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
- "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
+ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
+ "dev": true
},
"growly": {
"version": "1.3.0",
@@ -6761,6 +6811,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
@@ -6936,7 +6987,8 @@
"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-encoding-sniffer": {
"version": "1.0.2",
@@ -6989,6 +7041,56 @@
}
}
},
+ "html-webpack-harddisk-plugin": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/html-webpack-harddisk-plugin/-/html-webpack-harddisk-plugin-1.0.1.tgz",
+ "integrity": "sha512-GWfutTqfxOe53qEKocqAFrrLVP/EJbmJZDAS5jBBmALkfyc2aakoQkSgo3fitYJORWcN0Fi8ekuySxfffhhRYw==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "0.5.1"
+ }
+ },
+ "html-webpack-plugin": {
+ "version": "4.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz",
+ "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==",
+ "dev": true,
+ "requires": {
+ "html-minifier": "3.5.21",
+ "loader-utils": "1.2.3",
+ "lodash": "4.17.11",
+ "pretty-error": "2.1.1",
+ "tapable": "1.1.1",
+ "util.promisify": "1.0.0"
+ }
+ },
+ "htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.1",
+ "domhandler": "2.4.2",
+ "domutils": "1.5.1",
+ "entities": "1.1.2",
+ "inherits": "2.0.3",
+ "readable-stream": "3.3.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
+ "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
"http-errors": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
@@ -7296,7 +7398,8 @@
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
},
"is-binary-path": {
"version": "1.0.1",
@@ -7370,48 +7473,35 @@
"is-dotfile": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
},
"is-equal-shallow": {
"version": "0.1.3",
"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-expression": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz",
- "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=",
"dev": true,
"requires": {
- "acorn": "4.0.13",
- "object-assign": "4.1.1"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- }
+ "is-primitive": "2.0.0"
}
},
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
},
"is-extglob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
},
"is-finite": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
"requires": {
"number-is-nan": "1.0.1"
}
@@ -7438,6 +7528,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
"requires": {
"is-extglob": "1.0.0"
}
@@ -7462,6 +7553,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
"requires": {
"kind-of": "3.2.2"
}
@@ -7528,12 +7620,14 @@
"is-posix-bracket": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
},
"is-primitive": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
},
"is-promise": {
"version": "2.1.0",
@@ -7591,7 +7685,8 @@
"is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
},
"is-windows": {
"version": "1.0.2",
@@ -7608,7 +7703,8 @@
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"isexe": {
"version": "2.0.0",
@@ -7620,6 +7716,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
"integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
"requires": {
"isarray": "1.0.0"
}
@@ -7688,7 +7785,8 @@
"istanbul-lib-coverage": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz",
- "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ=="
+ "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==",
+ "dev": true
},
"istanbul-lib-hook": {
"version": "1.2.2",
@@ -7703,6 +7801,7 @@
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz",
"integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==",
+ "dev": true,
"requires": {
"babel-generator": "6.26.1",
"babel-template": "6.26.0",
@@ -8533,12 +8632,6 @@
"integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
"dev": true
},
- "js-stringify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
- "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=",
- "dev": true
- },
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@@ -8604,7 +8697,8 @@
"jsesc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
},
"json-parse-better-errors": {
"version": "1.0.2",
@@ -8830,16 +8924,6 @@
"verror": "1.10.0"
}
},
- "jstransformer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
- "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
- "dev": true,
- "requires": {
- "is-promise": "2.1.0",
- "promise": "7.3.1"
- }
- },
"jsx-ast-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
@@ -8871,6 +8955,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"requires": {
"is-buffer": "1.1.6"
}
@@ -8899,12 +8984,6 @@
"package-json": "4.0.1"
}
},
- "lazy-cache": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
- "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
- "dev": true
- },
"lazystream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
@@ -8964,6 +9043,7 @@
"version": "1.1.0",
"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.15",
"parse-json": "2.2.0",
@@ -8992,6 +9072,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
"requires": {
"p-locate": "2.0.0",
"path-exists": "3.0.0"
@@ -9071,12 +9152,6 @@
"version": "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69",
"dev": true
},
- "longest": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
- "dev": true
- },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -9228,7 +9303,8 @@
"math-random": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
- "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A=="
+ "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
+ "dev": true
},
"md5": {
"version": "2.2.1",
@@ -9359,6 +9435,7 @@
"version": "2.3.11",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
"requires": {
"arr-diff": "2.0.0",
"array-unique": "0.2.1",
@@ -10003,6 +10080,7 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
"requires": {
"hosted-git-info": "2.7.1",
"resolve": "1.10.0",
@@ -10014,6 +10092,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
"requires": {
"remove-trailing-separator": "1.1.0"
}
@@ -10045,6 +10124,15 @@
"set-blocking": "2.0.0"
}
},
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "dev": true,
+ "requires": {
+ "boolbase": "1.0.0"
+ }
+ },
"num2fraction": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
@@ -10054,7 +10142,8 @@
"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=",
+ "dev": true
},
"nwsapi": {
"version": "2.1.3",
@@ -10156,6 +10245,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
"requires": {
"for-own": "0.1.5",
"is-extendable": "0.1.1"
@@ -10324,6 +10414,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
"requires": {
"p-try": "1.0.0"
}
@@ -10332,6 +10423,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
"requires": {
"p-limit": "1.3.0"
}
@@ -10354,7 +10446,8 @@
"p-try": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
},
"package-json": {
"version": "4.0.1",
@@ -10454,6 +10547,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
"requires": {
"glob-base": "0.3.0",
"is-dotfile": "1.0.3",
@@ -10465,6 +10559,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
"requires": {
"error-ex": "1.3.2"
}
@@ -10501,7 +10596,8 @@
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
},
"path-is-absolute": {
"version": "1.0.1",
@@ -10524,7 +10620,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": {
"version": "1.7.0",
@@ -10545,6 +10642,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
"requires": {
"graceful-fs": "4.1.15",
"pify": "2.3.0",
@@ -10587,17 +10685,20 @@
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
"requires": {
"pinkie": "2.0.4"
}
@@ -10778,7 +10879,18 @@
"preserve": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pretty-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "dev": true,
+ "requires": {
+ "renderkid": "2.0.3",
+ "utila": "0.4.0"
+ }
},
"pretty-format": {
"version": "23.6.0",
@@ -10897,231 +11009,6 @@
"safe-buffer": "5.1.2"
}
},
- "pug": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz",
- "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=",
- "dev": true,
- "requires": {
- "pug-code-gen": "2.0.1",
- "pug-filters": "3.1.0",
- "pug-lexer": "4.0.0",
- "pug-linker": "3.0.5",
- "pug-load": "2.0.11",
- "pug-parser": "5.0.0",
- "pug-runtime": "2.0.4",
- "pug-strip-comments": "1.0.3"
- }
- },
- "pug-attrs": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz",
- "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=",
- "dev": true,
- "requires": {
- "constantinople": "3.1.2",
- "js-stringify": "1.0.2",
- "pug-runtime": "2.0.4"
- }
- },
- "pug-cli": {
- "version": "1.0.0-alpha6",
- "resolved": "https://registry.npmjs.org/pug-cli/-/pug-cli-1.0.0-alpha6.tgz",
- "integrity": "sha1-HKU56krA67ac5KroSu7V1k/+ZQE=",
- "dev": true,
- "requires": {
- "chalk": "1.1.3",
- "commander": "2.20.0",
- "mkdirp": "0.5.1",
- "pug": "2.0.3"
- },
- "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"
- }
- },
- "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
- }
- }
- },
- "pug-code-gen": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz",
- "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=",
- "dev": true,
- "requires": {
- "constantinople": "3.1.2",
- "doctypes": "1.1.0",
- "js-stringify": "1.0.2",
- "pug-attrs": "2.0.3",
- "pug-error": "1.3.2",
- "pug-runtime": "2.0.4",
- "void-elements": "2.0.1",
- "with": "5.1.1"
- }
- },
- "pug-error": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz",
- "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=",
- "dev": true
- },
- "pug-filters": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz",
- "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=",
- "dev": true,
- "requires": {
- "clean-css": "4.2.1",
- "constantinople": "3.1.2",
- "jstransformer": "1.0.0",
- "pug-error": "1.3.2",
- "pug-walk": "1.1.7",
- "resolve": "1.10.0",
- "uglify-js": "2.8.29"
- },
- "dependencies": {
- "camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
- "dev": true
- },
- "cliui": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
- "dev": true,
- "requires": {
- "center-align": "0.1.3",
- "right-align": "0.1.3",
- "wordwrap": "0.0.2"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "uglify-js": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
- "dev": true,
- "requires": {
- "source-map": "0.5.7",
- "uglify-to-browserify": "1.0.2",
- "yargs": "3.10.0"
- }
- },
- "window-size": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
- "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
- "dev": true
- },
- "wordwrap": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
- "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
- "dev": true
- },
- "yargs": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "requires": {
- "camelcase": "1.2.1",
- "cliui": "2.1.0",
- "decamelize": "1.2.0",
- "window-size": "0.1.0"
- }
- }
- }
- },
- "pug-lexer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz",
- "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=",
- "dev": true,
- "requires": {
- "character-parser": "2.2.0",
- "is-expression": "3.0.0",
- "pug-error": "1.3.2"
- }
- },
- "pug-linker": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz",
- "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=",
- "dev": true,
- "requires": {
- "pug-error": "1.3.2",
- "pug-walk": "1.1.7"
- }
- },
- "pug-load": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz",
- "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=",
- "dev": true,
- "requires": {
- "object-assign": "4.1.1",
- "pug-walk": "1.1.7"
- }
- },
- "pug-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz",
- "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=",
- "dev": true,
- "requires": {
- "pug-error": "1.3.2",
- "token-stream": "0.0.1"
- }
- },
- "pug-runtime": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz",
- "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=",
- "dev": true
- },
- "pug-strip-comments": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz",
- "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=",
- "dev": true,
- "requires": {
- "pug-error": "1.3.2"
- }
- },
- "pug-walk": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz",
- "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=",
- "dev": true
- },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -11196,6 +11083,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
"integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
+ "dev": true,
"requires": {
"is-number": "4.0.0",
"kind-of": "6.0.2",
@@ -11205,12 +11093,14 @@
"is-number": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
}
}
},
@@ -11478,6 +11368,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
"requires": {
"load-json-file": "1.1.0",
"normalize-package-data": "2.5.0",
@@ -11488,6 +11379,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
"requires": {
"find-up": "1.1.2",
"read-pkg": "1.1.0"
@@ -11497,6 +11389,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
"requires": {
"path-exists": "2.1.0",
"pinkie-promise": "2.0.1"
@@ -11506,6 +11399,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
"requires": {
"pinkie-promise": "2.0.1"
}
@@ -11927,6 +11821,7 @@
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "dev": true,
"requires": {
"is-equal-shallow": "0.1.3"
}
@@ -12012,22 +11907,39 @@
"remove-trailing-separator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "renderkid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz",
+ "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==",
+ "dev": true,
+ "requires": {
+ "css-select": "1.2.0",
+ "dom-converter": "0.2.0",
+ "htmlparser2": "3.10.1",
+ "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": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
},
"repeating": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
"requires": {
"is-finite": "1.0.2"
}
@@ -12095,7 +12007,8 @@
"require-main-filename": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
},
"require-uncached": {
"version": "1.0.3",
@@ -12111,6 +12024,7 @@
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
+ "dev": true,
"requires": {
"path-parse": "1.0.6"
}
@@ -12165,15 +12079,6 @@
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
- "right-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
- "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
- "dev": true,
- "requires": {
- "align-text": "0.1.4"
- }
- },
"rimraf": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz",
@@ -13158,6 +13063,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
"integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "dev": true,
"requires": {
"spdx-expression-parse": "3.0.0",
"spdx-license-ids": "3.0.3"
@@ -13166,12 +13072,14 @@
"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==",
+ "dev": true,
"requires": {
"spdx-exceptions": "2.2.0",
"spdx-license-ids": "3.0.3"
@@ -13180,7 +13088,8 @@
"spdx-license-ids": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
- "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g=="
+ "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==",
+ "dev": true
},
"split-string": {
"version": "3.1.0",
@@ -13447,6 +13356,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
@@ -13455,6 +13365,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
"requires": {
"is-utf8": "0.2.1"
}
@@ -13795,6 +13706,7 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz",
"integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==",
+ "dev": true,
"requires": {
"arrify": "1.0.1",
"micromatch": "2.3.11",
@@ -13914,7 +13826,8 @@
"to-fast-properties": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
},
"to-object-path": {
"version": "0.3.0",
@@ -13963,12 +13876,6 @@
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI="
},
- "token-stream": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz",
- "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=",
- "dev": true
- },
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
@@ -14036,7 +13943,8 @@
"trim-right": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
},
"true-case-path": {
"version": "1.0.3",
@@ -14128,13 +14036,6 @@
}
}
},
- "uglify-to-browserify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
- "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
- "dev": true,
- "optional": true
- },
"underscore": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
@@ -14521,6 +14422,12 @@
"object.getownpropertydescriptors": "2.0.3"
}
},
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+ "dev": true
+ },
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -14543,6 +14450,7 @@
"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==",
+ "dev": true,
"requires": {
"spdx-correct": "3.1.0",
"spdx-expression-parse": "3.0.0"
@@ -14584,12 +14492,6 @@
"indexof": "0.0.1"
}
},
- "void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
- "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
- "dev": true
- },
"w3c-hr-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
@@ -15335,41 +15237,6 @@
"execa": "1.0.0"
}
},
- "with": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz",
- "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=",
- "dev": true,
- "requires": {
- "acorn": "3.3.0",
- "acorn-globals": "3.1.0"
- },
- "dependencies": {
- "acorn": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
- "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
- "dev": true
- },
- "acorn-globals": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
- "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=",
- "dev": true,
- "requires": {
- "acorn": "4.0.13"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- }
- }
- }
- }
- },
"wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
diff --git a/package.json b/package.json
index 862833449c..f1b70c462b 100644
--- a/package.json
+++ b/package.json
@@ -52,7 +52,6 @@
"author": "IOHK & EMURGO",
"license": "MIT",
"devDependencies": {
- "autoprefixer": "7.2.5",
"@babel/core": "7.1.6",
"@babel/plugin-proposal-class-properties": "7.1.0",
"@babel/plugin-proposal-decorators": "7.1.6",
@@ -66,8 +65,10 @@
"@babel/register": "7.0.0",
"@babel/runtime": "7.1.5",
"@babel/runtime-corejs2": "7.1.5",
+ "autoprefixer": "7.2.5",
"babel-core": "7.0.0-bridge.0",
"babel-eslint": "10.0.1",
+ "babel-jest": "23.6.0",
"babel-loader": "8.0.4",
"babel-plugin-add-module-exports": "0.2.1",
"babel-plugin-react-intl": "3.0.1",
@@ -93,6 +94,8 @@
"flow-typed": "2.5.1",
"geckodriver": "1.14.1",
"html-loader": "0.5.5",
+ "html-webpack-harddisk-plugin": "^1.0.1",
+ "html-webpack-plugin": "^4.0.0-beta.5",
"jest": "23.6.0",
"json-server": "0.13.0",
"markdown-loader": "4.0.0",
@@ -100,7 +103,6 @@
"mobx-react-devtools": "^6.0.3",
"node-sass": "4.10.0",
"postcss-loader": "3.0.0",
- "pug-cli": "1.0.0-alpha6",
"raw-loader": "0.5.1",
"react-intl-translations-manager": "5.0.3",
"rimraf": "2.4.3",
@@ -110,7 +112,6 @@
"shelljs": "0.7.0",
"style-loader": "0.23.1",
"svg-inline-loader": "^0.8.0",
- "terser-webpack-plugin": "^1.2.3",
"url-loader": "1.1.2",
"webpack": "4.29.4",
"webpack-cli": "3.1.2",
@@ -122,9 +123,8 @@
"@cardano-foundation/ledgerjs-hw-app-cardano": "1.0.6",
"aes-js": "3.1.0",
"axios": "0.18.0",
- "babel-jest": "23.6.0",
"bignumber.js": "4.0.0",
- "bip39": "2.3.0",
+ "bip39": "3.0.0",
"blakejs": "1.1.0",
"bluebird": "3.3.4",
"bs58": "4.0.1",
diff --git a/scripts/tasks.js b/scripts/tasks.js
index 71fdf72eaa..79dfb69cd4 100644
--- a/scripts/tasks.js
+++ b/scripts/tasks.js
@@ -21,5 +21,4 @@ exports.copyAssets = (type, env) => {
cp('-R', 'dll/*', `${type}/js/`);
cp('chrome/3rd-party/trezor/*.js', `${type}/js/`);
cp('chrome/3rd-party/trezor/trezor-usb-permissions.html', `${type}/`);
- exec(`./node_modules/.bin/pug -O "{ env: '${env}' }" -o ${type} chrome/views/`);
};
diff --git a/webpack/development.config.js b/webpack/development.config.js
index d74fbe8abe..961a752b04 100644
--- a/webpack/development.config.js
+++ b/webpack/development.config.js
@@ -3,6 +3,8 @@ const webpack = require('webpack');
const autoprefixer = require('autoprefixer');
const ConfigWebpackPlugin = require('config-webpack');
const shell = require('shelljs');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const HtmlWebpackHarddiskPlugin = require('html-webpack-harddisk-plugin');
const host = 'localhost';
const port = 3000;
@@ -15,6 +17,13 @@ const baseDevConfig = () => ({
optimization: {
// https://github.com/webpack/webpack/issues/7470
nodeEnv: false,
+ splitChunks: {
+ // the default delimiter ~ doesn't work with Terser
+ automaticNameDelimiter: '_',
+ chunks: 'all',
+ // Firefox require all files to be <4MBs
+ maxSize: 4000000,
+ }
},
devtool: 'eval-source-map',
entry: {
@@ -43,9 +52,12 @@ const baseDevConfig = () => ({
output: {
path: path.join(__dirname, '../dev/js'),
filename: '[name].bundle.js',
- webassemblyModuleFilename: '[modulehash].wasm',
+ // Need to so `HtmlWebpackPlugin` knows where to find the js bundles
+ publicPath: 'http://localhost:3000/js/'
},
plugins: [
+ /** We remove non-English languages from BIP39 to avoid triggering bad word filtering */
+ new webpack.IgnorePlugin(/^\.\/(?!english)/, /bip39\/src\/wordlists$/),
/**
* We need CardanoWallet for flow to get the WASM binding types.
* However, the flow definitions aren't available to webpack at runtime
@@ -55,6 +67,27 @@ const baseDevConfig = () => ({
/CardanoWallet/,
'lodash/noop.js'
),
+ /**
+ * We use the HtmlWebpackPlugin to group back together the chunks inside the HTML
+ */
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../dev/main_window.html'),
+ template: path.join(__dirname, '../chrome/views/main_window.html'),
+ chunks: ['yoroi'],
+ alwaysWriteToDisk: true
+ }),
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../dev/background.html'),
+ template: path.join(__dirname, '../chrome/views/background.html'),
+ chunks: ['background'],
+ alwaysWriteToDisk: true
+ }),
+ /**
+ * This plugin adds `alwaysWriteToDisk` to `HtmlWebpackPlugin`.
+ * We need this otherwise the HTML files are managed by in-memory only by our hot reloader
+ * But we need this written to disk so the extension can be loaded by Chrome
+ */
+ new HtmlWebpackHarddiskPlugin(),
new ConfigWebpackPlugin(),
new webpack.DllReferencePlugin({
context: path.join(__dirname, '..', 'dll'),
@@ -82,7 +115,7 @@ const baseDevConfig = () => ({
rules: [
{
test: /\.js$/,
- loader: 'babel-loader',
+ loader: 'babel-loader?cacheDirectory',
exclude: /node_modules/
},
// Pdfjs Worker webpack config, reference to issue: https://github.com/mozilla/pdf.js/issues/7612#issuecomment-315179422
@@ -93,7 +126,7 @@ const baseDevConfig = () => ({
{
test: /\.(js|jsx)$/,
exclude: [/node_modules/, /pdf\.worker(\.min)?\.js$/],
- use: 'babel-loader',
+ use: 'babel-loader?cacheDirectory',
},
{
test: /\.css$/,
@@ -136,7 +169,7 @@ const baseDevConfig = () => ({
},
{
test: /\.(eot|otf|ttf|woff|woff2|gif)$/,
- loader: 'file-loader'
+ loader: 'file-loader',
},
{
test: /\.md$/,
diff --git a/webpack/dll.config.js b/webpack/dll.config.js
index d965424b9a..02f2637c58 100644
--- a/webpack/dll.config.js
+++ b/webpack/dll.config.js
@@ -13,20 +13,17 @@ module.exports = {
optimization: {
// https://github.com/webpack/webpack/issues/7470
nodeEnv: false,
- splitChunks: {
- chunks: 'all',
- },
},
context: process.cwd(),
resolve: {
extensions: ['.js', '.jsx', '.json', '.less', '.css'],
modules: [__dirname, 'node_modules']
},
-
entry: {
vendor: dependencies
},
node: {
+ // need to remove "fs" library as we are not a nodejs application
fs: 'empty'
},
output: {
@@ -36,6 +33,10 @@ module.exports = {
},
plugins: [
+ /** We remove non-English languages from BIP39 to avoid triggering bad word filtering */
+ new webpack.IgnorePlugin(/^\.\/(?!english)/, /bip39\/src\/wordlists$/),
+ // creates a config file that will tell your main webpack config
+ // where to find the precompiled library code bundle
new webpack.DllPlugin({
context: __dirname,
name: '[name]',
diff --git a/webpack/mainnet.config.js b/webpack/mainnet.config.js
index 2dc0291ccc..df3a798757 100644
--- a/webpack/mainnet.config.js
+++ b/webpack/mainnet.config.js
@@ -3,6 +3,7 @@ const webpack = require('webpack');
const autoprefixer = require('autoprefixer');
const ConfigWebpackPlugin = require('config-webpack');
const shell = require('shelljs');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
const customPath = path.join(__dirname, './customPublicPath');
@@ -11,6 +12,13 @@ module.exports = {
optimization: {
// https://github.com/webpack/webpack/issues/7470
nodeEnv: false,
+ splitChunks: {
+ // the default delimiter ~ doesn't work with Terser
+ automaticNameDelimiter: '_',
+ chunks: 'all',
+ // Firefox require all files to be <4MBs
+ maxSize: 4000000,
+ }
},
entry: {
yoroi: [
@@ -24,9 +32,12 @@ module.exports = {
},
output: {
path: path.join(__dirname, '../build/js'),
- filename: '[name].bundle.js'
+ filename: '[name].bundle.js',
+ publicPath: '/js/',
},
plugins: [
+ /** We remove non-English languages from BIP39 to avoid triggering bad word filtering */
+ new webpack.IgnorePlugin(/^\.\/(?!english)/, /bip39\/src\/wordlists$/),
/**
* We need CardanoWallet for flow to get the WASM binding types.
* However, the flow definitions aren't available to webpack at runtime
@@ -36,10 +47,23 @@ module.exports = {
/CardanoWallet/,
'lodash/noop.js'
),
+ /**
+ * We use the HtmlWebpackPlugin to group back together the chunks inside the HTML
+ */
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/main_window.html'),
+ template: path.join(__dirname, '../chrome/views/main_window.html'),
+ chunks: ['yoroi']
+ }),
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/background.html'),
+ template: path.join(__dirname, '../chrome/views/background.html'),
+ chunks: ['background']
+ }),
new ConfigWebpackPlugin(),
new webpack.DllReferencePlugin({
context: path.join(__dirname, '..', 'dll'),
- manifest: require('../dll/vendor-manifest.json') // eslint-disable-line
+ manifest: require('../dll/vendor-manifest.json')
}),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.IgnorePlugin(/[^/]+\/[\S]+.dev$/),
@@ -114,7 +138,11 @@ module.exports = {
},
{
test: /\.(eot|otf|ttf|woff|woff2|gif)$/,
- loader: 'file-loader'
+ loader: 'file-loader',
+ options: {
+ // Need to specify public path so assets can be loaded from static resources like CSS
+ publicPath: '/js/'
+ },
},
{
test: /\.md$/,
diff --git a/webpack/staging.config.js b/webpack/staging.config.js
index 4f6eb3fbe3..bc0c3a8de5 100644
--- a/webpack/staging.config.js
+++ b/webpack/staging.config.js
@@ -3,6 +3,7 @@ const webpack = require('webpack');
const autoprefixer = require('autoprefixer');
const ConfigWebpackPlugin = require('config-webpack');
const shell = require('shelljs');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
const customPath = path.join(__dirname, './customPublicPath');
@@ -11,6 +12,13 @@ module.exports = {
optimization: {
// https://github.com/webpack/webpack/issues/7470
nodeEnv: false,
+ splitChunks: {
+ // the default delimiter ~ doesn't work with Terser
+ automaticNameDelimiter: '_',
+ chunks: 'all',
+ // Firefox require all files to be <4MBs
+ maxSize: 4000000,
+ }
},
entry: {
yoroi: [
@@ -24,9 +32,12 @@ module.exports = {
},
output: {
path: path.join(__dirname, '../build/js'),
- filename: '[name].bundle.js'
+ filename: '[name].bundle.js',
+ publicPath: '/js/',
},
plugins: [
+ /** We remove non-English languages from BIP39 to avoid triggering bad word filtering */
+ new webpack.IgnorePlugin(/^\.\/(?!english)/, /bip39\/src\/wordlists$/),
/**
* We need CardanoWallet for flow to get the WASM binding types.
* However, the flow definitions aren't available to webpack at runtime
@@ -36,10 +47,23 @@ module.exports = {
/CardanoWallet/,
'lodash/noop.js'
),
+ /**
+ * We use the HtmlWebpackPlugin to group back together the chunks inside the HTML
+ */
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/main_window.html'),
+ template: path.join(__dirname, '../chrome/views/main_window.html'),
+ chunks: ['yoroi']
+ }),
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/background.html'),
+ template: path.join(__dirname, '../chrome/views/background.html'),
+ chunks: ['background']
+ }),
new ConfigWebpackPlugin(),
new webpack.DllReferencePlugin({
context: path.join(__dirname, '..', 'dll'),
- manifest: require('../dll/vendor-manifest.json') // eslint-disable-line
+ manifest: require('../dll/vendor-manifest.json')
}),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.IgnorePlugin(/[^/]+\/[\S]+.dev$/),
@@ -114,7 +138,11 @@ module.exports = {
},
{
test: /\.(eot|otf|ttf|woff|woff2|gif)$/,
- loader: 'file-loader'
+ loader: 'file-loader',
+ options: {
+ // Need to specify public path so assets can be loaded from static resources like CSS
+ publicPath: '/js/'
+ },
},
{
test: /\.md$/,
diff --git a/webpack/test.config.js b/webpack/test.config.js
index d1930b6f6d..41111b6640 100644
--- a/webpack/test.config.js
+++ b/webpack/test.config.js
@@ -3,6 +3,7 @@ const webpack = require('webpack');
const autoprefixer = require('autoprefixer');
const ConfigWebpackPlugin = require('config-webpack');
const shell = require('shelljs');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
const customPath = path.join(__dirname, './customPublicPath');
@@ -11,6 +12,13 @@ module.exports = {
optimization: {
// https://github.com/webpack/webpack/issues/7470
nodeEnv: false,
+ splitChunks: {
+ // the default delimiter ~ doesn't work with Terser
+ automaticNameDelimiter: '_',
+ chunks: 'all',
+ // Firefox require all files to be <4MBs
+ maxSize: 4000000,
+ }
},
entry: {
yoroi: [
@@ -24,9 +32,12 @@ module.exports = {
},
output: {
path: path.join(__dirname, '../build/js'),
- filename: '[name].bundle.js'
+ filename: '[name].bundle.js',
+ publicPath: '/js/',
},
plugins: [
+ /** We remove non-English languages from BIP39 to avoid triggering bad word filtering */
+ new webpack.IgnorePlugin(/^\.\/(?!english)/, /bip39\/src\/wordlists$/),
/**
* We need CardanoWallet for flow to get the WASM binding types.
* However, the flow definitions aren't available to webpack at runtime
@@ -36,6 +47,19 @@ module.exports = {
/CardanoWallet/,
'lodash/noop.js'
),
+ /**
+ * We use the HtmlWebpackPlugin to group back together the chunks inside the HTML
+ */
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/main_window.html'),
+ template: path.join(__dirname, '../chrome/views/main_window.html'),
+ chunks: ['yoroi']
+ }),
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/background.html'),
+ template: path.join(__dirname, '../chrome/views/background.html'),
+ chunks: ['background']
+ }),
new ConfigWebpackPlugin(),
new webpack.DllReferencePlugin({
context: path.join(__dirname, '..', 'dll'),
@@ -63,6 +87,7 @@ module.exports = {
presets: []
}
},
+ // Pdfjs Worker webpack config, reference to issue: https://github.com/mozilla/pdf.js/issues/7612#issuecomment-315179422
{
test: /pdf\.worker(\.min)?\.js$/,
use: 'raw-loader',
@@ -113,7 +138,11 @@ module.exports = {
},
{
test: /\.(eot|otf|ttf|woff|woff2|gif)$/,
- loader: 'file-loader'
+ loader: 'file-loader',
+ options: {
+ // Need to specify public path so assets can be loaded from static resources like CSS
+ publicPath: '/js/'
+ },
},
{
test: /\.md$/,
diff --git a/webpack/testnet.config.js b/webpack/testnet.config.js
index 63b2e5a336..0871cd0170 100644
--- a/webpack/testnet.config.js
+++ b/webpack/testnet.config.js
@@ -3,6 +3,7 @@ const webpack = require('webpack');
const autoprefixer = require('autoprefixer');
const ConfigWebpackPlugin = require('config-webpack');
const shell = require('shelljs');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
const customPath = path.join(__dirname, './customPublicPath');
@@ -11,6 +12,13 @@ module.exports = {
optimization: {
// https://github.com/webpack/webpack/issues/7470
nodeEnv: false,
+ splitChunks: {
+ // the default delimiter ~ doesn't work with Terser
+ automaticNameDelimiter: '_',
+ chunks: 'all',
+ // Firefox require all files to be <4MBs
+ maxSize: 4000000,
+ }
},
entry: {
yoroi: [
@@ -24,9 +32,12 @@ module.exports = {
},
output: {
path: path.join(__dirname, '../build/js'),
- filename: '[name].bundle.js'
+ filename: '[name].bundle.js',
+ publicPath: '/js/',
},
plugins: [
+ /** We remove non-English languages from BIP39 to avoid triggering bad word filtering */
+ new webpack.IgnorePlugin(/^\.\/(?!english)/, /bip39\/src\/wordlists$/),
/**
* We need CardanoWallet for flow to get the WASM binding types.
* However, the flow definitions aren't available to webpack at runtime
@@ -36,6 +47,19 @@ module.exports = {
/CardanoWallet/,
'lodash/noop.js'
),
+ /**
+ * We use the HtmlWebpackPlugin to group back together the chunks inside the HTML
+ */
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/main_window.html'),
+ template: path.join(__dirname, '../chrome/views/main_window.html'),
+ chunks: ['yoroi']
+ }),
+ new HtmlWebpackPlugin({
+ filename: path.join(__dirname, '../build/background.html'),
+ template: path.join(__dirname, '../chrome/views/background.html'),
+ chunks: ['background']
+ }),
new ConfigWebpackPlugin(),
new webpack.DllReferencePlugin({
context: path.join(__dirname, '..', 'dll'),
@@ -114,7 +138,11 @@ module.exports = {
},
{
test: /\.(eot|otf|ttf|woff|woff2|gif)$/,
- loader: 'file-loader'
+ loader: 'file-loader',
+ options: {
+ // Need to specify public path so assets can be loaded from static resources like CSS
+ publicPath: '/js/'
+ },
},
{
test: /\.md$/,