fixed untranslated strings breaking the site
This commit is contained in:
parent
3a7677b46d
commit
0f8c3caf18
@ -1,26 +1,45 @@
|
||||
const { MessageContext } = require('fluent');
|
||||
const fs = require('fs');
|
||||
|
||||
function toJSON(map) {
|
||||
return JSON.stringify(Array.from(map));
|
||||
}
|
||||
|
||||
function merge(m1, m2) {
|
||||
const result = new Map(m1);
|
||||
for (const [k, v] of m2) {
|
||||
result.set(k, v);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = function(source) {
|
||||
const localeExp = this.options.locale || /([^/]+)\/[^/]+\.ftl$/;
|
||||
const result = localeExp.exec(this.resourcePath);
|
||||
const locale = result && result[1];
|
||||
// pre-parse the ftl
|
||||
const context = new MessageContext(locale);
|
||||
context.addMessages(source);
|
||||
if (!locale) {
|
||||
throw new Error(`couldn't find locale in: ${this.resourcePath}`);
|
||||
}
|
||||
// load default language and "merge" contexts
|
||||
// TODO: make this configurable
|
||||
const en_ftl = fs.readFileSync(
|
||||
require.resolve('../public/locales/en-US/send.ftl'),
|
||||
'utf8'
|
||||
);
|
||||
const en = new MessageContext('en-US');
|
||||
en.addMessages(en_ftl);
|
||||
// pre-parse the ftl
|
||||
const context = new MessageContext(locale);
|
||||
context.addMessages(source);
|
||||
|
||||
const merged = merge(en._messages, context._messages);
|
||||
return `
|
||||
module.exports = \`
|
||||
if (typeof window === 'undefined') {
|
||||
var fluent = require('fluent');
|
||||
}
|
||||
var ctx = new fluent.MessageContext('${locale}', {useIsolating: false});
|
||||
ctx._messages = new Map(${toJSON(context._messages)});
|
||||
ctx._messages = new Map(${toJSON(merged)});
|
||||
function translate(id, data) {
|
||||
var msg = ctx.getMessage(id);
|
||||
if (typeof(msg) !== 'string' && !msg.val && msg.attrs) {
|
||||
|
485
package-lock.json
generated
485
package-lock.json
generated
@ -191,6 +191,12 @@
|
||||
"integrity": "sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8=",
|
||||
"dev": true
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
||||
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
|
||||
"dev": true
|
||||
},
|
||||
"argparse": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
|
||||
@ -350,31 +356,47 @@
|
||||
"dev": true
|
||||
},
|
||||
"autoprefixer": {
|
||||
"version": "7.2.1",
|
||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.1.tgz",
|
||||
"integrity": "sha512-lTbsa2X03maxG45xCNh30sJaRKDn8JPnanOeQOW3wvD9yPGmIsf041LHqlrZ1lXPF/1M3yTZKXqqYfmxU69xuQ==",
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.3.tgz",
|
||||
"integrity": "sha512-dqzVGiz3v934+s3YZA6nk7tAs9xuTz5wMJbX1M+L4cY/MTNkOUqP61c1GWkEVlUL/PEy1pKRSCFuoRZrXYx9qA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"browserslist": "2.9.1",
|
||||
"caniuse-lite": "1.0.30000777",
|
||||
"browserslist": "2.10.0",
|
||||
"caniuse-lite": "1.0.30000783",
|
||||
"normalize-range": "0.1.2",
|
||||
"num2fraction": "1.2.2",
|
||||
"postcss": "6.0.14",
|
||||
"postcss-value-parser": "3.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"browserslist": {
|
||||
"version": "2.10.0",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz",
|
||||
"integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"caniuse-lite": "1.0.30000783",
|
||||
"electron-to-chromium": "1.3.28"
|
||||
}
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30000777",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000777.tgz",
|
||||
"integrity": "sha1-McGKSozUl4LrswXI6Kk+azs+TxM=",
|
||||
"version": "1.0.30000783",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000783.tgz",
|
||||
"integrity": "sha1-m1SZ+xtQPSNF0SqmuGEoUvQnb/0=",
|
||||
"dev": true
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.28",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz",
|
||||
"integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"aws-sdk": {
|
||||
"version": "2.162.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.162.0.tgz",
|
||||
"integrity": "sha1-GxYhX8m1mbp80s/nzgUMf5NDgaY=",
|
||||
"version": "2.171.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.171.0.tgz",
|
||||
"integrity": "sha1-acJWXpjjU9Q3QCR3zDBkoTyu3Jw=",
|
||||
"requires": {
|
||||
"buffer": "4.9.1",
|
||||
"crypto-browserify": "1.0.9",
|
||||
@ -1527,6 +1549,27 @@
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
|
||||
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
|
||||
},
|
||||
"cacache": {
|
||||
"version": "10.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz",
|
||||
"integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==",
|
||||
"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": "1.3.0",
|
||||
"mkdirp": "0.5.1",
|
||||
"move-concurrently": "1.0.1",
|
||||
"promise-inflight": "1.0.1",
|
||||
"rimraf": "2.6.2",
|
||||
"ssri": "5.0.0",
|
||||
"unique-filename": "1.1.0",
|
||||
"y18n": "3.2.1"
|
||||
}
|
||||
},
|
||||
"call-matcher": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz",
|
||||
@ -1739,6 +1782,12 @@
|
||||
"xtend": "4.0.1"
|
||||
}
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
|
||||
"integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
|
||||
"dev": true
|
||||
},
|
||||
"ci-info": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz",
|
||||
@ -2162,20 +2211,52 @@
|
||||
"integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=",
|
||||
"dev": true
|
||||
},
|
||||
"copy-webpack-plugin": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.2.3.tgz",
|
||||
"integrity": "sha512-cL/Wl3Y1QmmKThl/mWeGB+HH3YH+25tn8nhqEGsZda4Yn7GqGnDZ+TbeKJ7A6zvrxyNhhuviYAxn/tCyyAqh8Q==",
|
||||
"copy-concurrently": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
|
||||
"integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "3.5.1",
|
||||
"glob": "7.1.2",
|
||||
"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-webpack-plugin": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.3.0.tgz",
|
||||
"integrity": "sha512-5o1/xyWm8OYDmLFKAWMuPU3A/jZ4Z6kZSZGh36KD2XmtxnRa8lQyLx7bCNQm08BPaR/oqUdtJOr9jWfnYINp9g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cacache": "10.0.1",
|
||||
"find-cache-dir": "1.0.0",
|
||||
"globby": "7.1.1",
|
||||
"is-glob": "4.0.0",
|
||||
"loader-utils": "0.2.17",
|
||||
"lodash": "4.17.4",
|
||||
"minimatch": "3.0.4"
|
||||
"minimatch": "3.0.4",
|
||||
"p-limit": "1.1.0",
|
||||
"pify": "3.0.0",
|
||||
"serialize-javascript": "1.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"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.2",
|
||||
"dir-glob": "2.0.0",
|
||||
"glob": "7.1.2",
|
||||
"ignore": "3.3.7",
|
||||
"pify": "3.0.0",
|
||||
"slash": "1.0.0"
|
||||
}
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "0.2.17",
|
||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
|
||||
@ -2597,6 +2678,12 @@
|
||||
"array-find-index": "1.0.2"
|
||||
}
|
||||
},
|
||||
"cyclist": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
|
||||
"integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
|
||||
"dev": true
|
||||
},
|
||||
"d": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
|
||||
@ -2964,6 +3051,44 @@
|
||||
"readable-stream": "1.1.14"
|
||||
}
|
||||
},
|
||||
"duplexify": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
|
||||
"integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "1.4.0",
|
||||
"inherits": "2.0.3",
|
||||
"readable-stream": "2.3.3",
|
||||
"stream-shift": "1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
|
||||
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-util-is": "1.0.2",
|
||||
"inherits": "2.0.3",
|
||||
"isarray": "1.0.0",
|
||||
"process-nextick-args": "1.0.7",
|
||||
"safe-buffer": "5.1.1",
|
||||
"string_decoder": "1.0.3",
|
||||
"util-deprecate": "1.0.2"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
||||
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
@ -3007,6 +3132,15 @@
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
|
||||
"integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
|
||||
},
|
||||
"end-of-stream": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
|
||||
"integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "1.4.0"
|
||||
}
|
||||
},
|
||||
"enhanced-resolve": {
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
|
||||
@ -3204,9 +3338,9 @@
|
||||
}
|
||||
},
|
||||
"eslint": {
|
||||
"version": "4.12.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-4.12.1.tgz",
|
||||
"integrity": "sha512-28hOYej+NZ/R5H1yMvyKa1+bPlu+fnsIAQffK6hxXgvmXnImos2bA5XfCn5dYv2k2mrKj+/U/Z4L5ICWxC7TQw==",
|
||||
"version": "4.13.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-4.13.1.tgz",
|
||||
"integrity": "sha512-UCJVV50RtLHYzBp1DZ8CMPtRSg4iVZvjgO9IJHIKyWU/AnJVjtdRikoUPLB29n5pzMB7TnsLQWf0V6VUJfoPfw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "5.5.0",
|
||||
@ -3224,11 +3358,11 @@
|
||||
"file-entry-cache": "2.0.0",
|
||||
"functional-red-black-tree": "1.0.1",
|
||||
"glob": "7.1.2",
|
||||
"globals": "11.0.1",
|
||||
"globals": "11.1.0",
|
||||
"ignore": "3.3.7",
|
||||
"imurmurhash": "0.1.4",
|
||||
"inquirer": "3.3.0",
|
||||
"is-resolvable": "1.0.0",
|
||||
"is-resolvable": "1.0.1",
|
||||
"js-yaml": "3.10.0",
|
||||
"json-stable-stringify-without-jsonify": "1.0.1",
|
||||
"levn": "0.3.0",
|
||||
@ -3290,9 +3424,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"globals": {
|
||||
"version": "11.0.1",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.0.1.tgz",
|
||||
"integrity": "sha1-Eqh7sBDlFUOWrMU14eQ/x1Ow5eg=",
|
||||
"version": "11.1.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz",
|
||||
"integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==",
|
||||
"dev": true
|
||||
},
|
||||
"js-yaml": {
|
||||
@ -3713,9 +3847,9 @@
|
||||
}
|
||||
},
|
||||
"file-loader": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz",
|
||||
"integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==",
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.6.tgz",
|
||||
"integrity": "sha512-873ztuL+/hfvXbLDJ262PGO6XjERnybJu2gW1/5j8HUfxSiFJI9Hj/DhZ50ZGRUxBvuNiazb/cM2rh9pqrxP6Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"loader-utils": "1.1.0",
|
||||
@ -3837,6 +3971,42 @@
|
||||
"resolved": "https://registry.npmjs.org/fluent-langneg/-/fluent-langneg-0.1.0.tgz",
|
||||
"integrity": "sha512-SzRtXNaIcCyRabIpcv+AQd0gn+tXv1wfDDvej3wtBo1/XV0iDnCw5XzbARRRmZMW+IEg+Q26jup6vYgnDam4dg=="
|
||||
},
|
||||
"flush-write-stream": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz",
|
||||
"integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "2.0.3",
|
||||
"readable-stream": "2.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
|
||||
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-util-is": "1.0.2",
|
||||
"inherits": "2.0.3",
|
||||
"isarray": "1.0.0",
|
||||
"process-nextick-args": "1.0.7",
|
||||
"safe-buffer": "5.1.1",
|
||||
"string_decoder": "1.0.3",
|
||||
"util-deprecate": "1.0.2"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
||||
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"for-in": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
|
||||
@ -3919,6 +4089,42 @@
|
||||
"integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
|
||||
"dev": true
|
||||
},
|
||||
"from2": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
|
||||
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "2.0.3",
|
||||
"readable-stream": "2.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
|
||||
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-util-is": "1.0.2",
|
||||
"inherits": "2.0.3",
|
||||
"isarray": "1.0.0",
|
||||
"process-nextick-args": "1.0.7",
|
||||
"safe-buffer": "5.1.1",
|
||||
"string_decoder": "1.0.3",
|
||||
"util-deprecate": "1.0.2"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
||||
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "0.30.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
|
||||
@ -3932,6 +4138,18 @@
|
||||
"rimraf": "2.6.2"
|
||||
}
|
||||
},
|
||||
"fs-write-stream-atomic": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
|
||||
"integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "4.1.11",
|
||||
"iferr": "0.1.5",
|
||||
"imurmurhash": "0.1.4",
|
||||
"readable-stream": "1.1.14"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
@ -5524,6 +5742,12 @@
|
||||
"resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz",
|
||||
"integrity": "sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms="
|
||||
},
|
||||
"iferr": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
|
||||
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
|
||||
"dev": true
|
||||
},
|
||||
"ignore": {
|
||||
"version": "3.3.7",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
|
||||
@ -5954,13 +6178,10 @@
|
||||
"dev": true
|
||||
},
|
||||
"is-resolvable": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
|
||||
"integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tryit": "1.0.3"
|
||||
}
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz",
|
||||
"integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==",
|
||||
"dev": true
|
||||
},
|
||||
"is-stream": {
|
||||
"version": "1.1.0",
|
||||
@ -7271,6 +7492,24 @@
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
||||
},
|
||||
"mississippi": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz",
|
||||
"integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"concat-stream": "1.6.0",
|
||||
"duplexify": "3.5.1",
|
||||
"end-of-stream": "1.4.0",
|
||||
"flush-write-stream": "1.0.2",
|
||||
"from2": "2.3.0",
|
||||
"parallel-transform": "1.1.0",
|
||||
"pump": "1.0.3",
|
||||
"pumpify": "1.3.5",
|
||||
"stream-each": "1.2.2",
|
||||
"through2": "2.0.3"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
@ -7368,6 +7607,20 @@
|
||||
"moment": "2.19.3"
|
||||
}
|
||||
},
|
||||
"move-concurrently": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
|
||||
"integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"mozlog": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mozlog/-/mozlog-2.2.0.tgz",
|
||||
@ -8042,6 +8295,43 @@
|
||||
"integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
|
||||
"dev": true
|
||||
},
|
||||
"parallel-transform": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
|
||||
"integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cyclist": "0.2.2",
|
||||
"inherits": "2.0.3",
|
||||
"readable-stream": "2.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
|
||||
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-util-is": "1.0.2",
|
||||
"inherits": "2.0.3",
|
||||
"isarray": "1.0.0",
|
||||
"process-nextick-args": "1.0.7",
|
||||
"safe-buffer": "5.1.1",
|
||||
"string_decoder": "1.0.3",
|
||||
"util-deprecate": "1.0.2"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
||||
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"param-case": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
|
||||
@ -9818,9 +10108,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"prettier": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.8.2.tgz",
|
||||
"integrity": "sha512-fHWjCwoRZgjP1rvLP7OGqOznq7xH1sHMQUFLX8qLRO79hI57+6xbc5vB904LxEkCfgFgyr3vv06JkafgCSzoZg==",
|
||||
"version": "1.9.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.9.2.tgz",
|
||||
"integrity": "sha512-piXx9N2WT8hWb7PBbX1glAuJVIkEyUV9F5fMXFINpZ0x3otVOFKKeGmeuiclFJlP/UrgTckyV606VjH2rNK4bw==",
|
||||
"dev": true
|
||||
},
|
||||
"pretty-format": {
|
||||
@ -9874,6 +10164,12 @@
|
||||
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
|
||||
"dev": true
|
||||
},
|
||||
"promise-inflight": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
|
||||
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
|
||||
"dev": true
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
|
||||
@ -9936,6 +10232,27 @@
|
||||
"randombytes": "2.0.5"
|
||||
}
|
||||
},
|
||||
"pump": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
|
||||
"integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "1.4.0",
|
||||
"once": "1.4.0"
|
||||
}
|
||||
},
|
||||
"pumpify": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz",
|
||||
"integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"duplexify": "3.5.1",
|
||||
"inherits": "2.0.3",
|
||||
"pump": "1.0.3"
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
|
||||
@ -10051,9 +10368,9 @@
|
||||
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
|
||||
},
|
||||
"raven": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/raven/-/raven-2.2.1.tgz",
|
||||
"integrity": "sha1-V8f75oqAFH7FJ97z18AVdc+Uj+M=",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/raven/-/raven-2.3.0.tgz",
|
||||
"integrity": "sha1-lvFTRr2qQzs7bUcTCARQYVWDPWk=",
|
||||
"requires": {
|
||||
"cookie": "0.3.1",
|
||||
"lsmod": "1.0.0",
|
||||
@ -10075,9 +10392,9 @@
|
||||
}
|
||||
},
|
||||
"raven-js": {
|
||||
"version": "3.20.1",
|
||||
"resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.20.1.tgz",
|
||||
"integrity": "sha512-Wr973Ipmd+dWUPQ6mSru/gyteavriEyP6G3iDZ2jpI3sBAWejtVtoXO5BHujEWB1z+/dqCLn+Zezgdc30xZcVA==",
|
||||
"version": "3.21.0",
|
||||
"resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.21.0.tgz",
|
||||
"integrity": "sha512-6/DICF3ndYy1mxli88NG1wVtwGnzyalZZVNf/qQeiCDpNKJIyY5bsGZ2GAGcUE+nWg+9G3tQ1KL/UbG4U6vNBA==",
|
||||
"dev": true
|
||||
},
|
||||
"raw-body": {
|
||||
@ -10663,6 +10980,15 @@
|
||||
"is-promise": "2.1.0"
|
||||
}
|
||||
},
|
||||
"run-queue": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
|
||||
"integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"aproba": "1.2.0"
|
||||
}
|
||||
},
|
||||
"rx-lite": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
|
||||
@ -10797,6 +11123,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"serialize-javascript": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz",
|
||||
"integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=",
|
||||
"dev": true
|
||||
},
|
||||
"serve-index": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
|
||||
@ -10901,9 +11233,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"sinon": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz",
|
||||
"integrity": "sha512-5uLBZPdCWl59Lpbf45ygKj7Z0LVol+ftBe7RDIXOQV/sF58pcFmbK8raA7bt6eljNuGnvBP+/ZxlicVn0emDjA==",
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.3.tgz",
|
||||
"integrity": "sha512-c7u0ZuvBRX1eXuB4jN3BRCAOGiUTlM8SE3TxbJHrNiHUKL7wonujMOB6Fi1gQc00U91IscFORQHDga/eccqpbw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"diff": "3.2.0",
|
||||
@ -11175,6 +11507,15 @@
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
|
||||
"dev": true
|
||||
},
|
||||
"ssri": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz",
|
||||
"integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.1"
|
||||
}
|
||||
},
|
||||
"stack-trace": {
|
||||
"version": "0.0.10",
|
||||
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
||||
@ -11242,6 +11583,16 @@
|
||||
"duplexer": "0.1.1"
|
||||
}
|
||||
},
|
||||
"stream-each": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz",
|
||||
"integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"end-of-stream": "1.4.0",
|
||||
"stream-shift": "1.0.0"
|
||||
}
|
||||
},
|
||||
"stream-http": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
|
||||
@ -11281,6 +11632,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"stream-shift": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
|
||||
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
|
||||
"dev": true
|
||||
},
|
||||
"stream-to-observable": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz",
|
||||
@ -11419,7 +11776,7 @@
|
||||
"integrity": "sha512-v5K6tv+Ky3SoJfNqGOvgzRDLqZV133CZ7Wtu3y5aAGjQHVi+6dixFLgI82VrJZJdC4HwZplafJcRP+4r7EUt5g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"autoprefixer": "7.2.1",
|
||||
"autoprefixer": "7.2.3",
|
||||
"balanced-match": "1.0.0",
|
||||
"chalk": "2.3.0",
|
||||
"cosmiconfig": "3.1.0",
|
||||
@ -11916,12 +12273,6 @@
|
||||
"integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y=",
|
||||
"dev": true
|
||||
},
|
||||
"tryit": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
|
||||
"integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=",
|
||||
"dev": true
|
||||
},
|
||||
"tty-browserify": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
|
||||
@ -12121,6 +12472,24 @@
|
||||
"integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
|
||||
"dev": true
|
||||
},
|
||||
"unique-filename": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz",
|
||||
"integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"unique-slug": "2.0.0"
|
||||
}
|
||||
},
|
||||
"unique-slug": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
|
||||
"integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"imurmurhash": "0.1.4"
|
||||
}
|
||||
},
|
||||
"unist-util-find-all-after": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.1.tgz",
|
||||
@ -12366,9 +12735,9 @@
|
||||
}
|
||||
},
|
||||
"webpack": {
|
||||
"version": "3.9.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-3.9.1.tgz",
|
||||
"integrity": "sha512-jONJ0l8nqgiQVkqs15O9TFWLozbFkCgVodVrBXBK/PIBFeGkaOGo30Ov57iQqYRwAWNDM5vyLPZYmAIpPa5QSw==",
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz",
|
||||
"integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "5.2.1",
|
||||
|
20
package.json
20
package.json
@ -43,7 +43,7 @@
|
||||
"node": ">=8.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^7.2.1",
|
||||
"autoprefixer": "^7.2.3",
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-loader": "^7.1.2",
|
||||
"babel-plugin-yo-yoify": "^1.0.2",
|
||||
@ -52,18 +52,18 @@
|
||||
"babel-preset-es2015": "^6.24.1",
|
||||
"babel-preset-stage-2": "^6.24.1",
|
||||
"base64-js": "^1.2.1",
|
||||
"copy-webpack-plugin": "^4.2.3",
|
||||
"copy-webpack-plugin": "^4.3.0",
|
||||
"cross-env": "^5.1.1",
|
||||
"css-loader": "^0.28.7",
|
||||
"css-mqpacker": "^6.0.1",
|
||||
"cssnano": "^3.10.0",
|
||||
"eslint": "^4.12.0",
|
||||
"eslint": "^4.13.1",
|
||||
"eslint-plugin-mocha": "^4.11.0",
|
||||
"eslint-plugin-node": "^5.2.1",
|
||||
"eslint-plugin-security": "^1.4.0",
|
||||
"expose-loader": "^0.7.4",
|
||||
"extract-loader": "^1.0.1",
|
||||
"file-loader": "^1.1.5",
|
||||
"file-loader": "^1.1.6",
|
||||
"fluent-intl-polyfill": "^0.1.0",
|
||||
"git-rev-sync": "^1.9.1",
|
||||
"github-changes": "^1.1.1",
|
||||
@ -74,27 +74,27 @@
|
||||
"nanobus": "^4.3.1",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"postcss-loader": "^2.0.9",
|
||||
"prettier": "^1.8.2",
|
||||
"prettier": "^1.9.2",
|
||||
"proxyquire": "^1.8.0",
|
||||
"raven-js": "^3.20.1",
|
||||
"raven-js": "^3.21.0",
|
||||
"redis-mock": "^0.20.0",
|
||||
"require-from-string": "^2.0.1",
|
||||
"rimraf": "^2.6.2",
|
||||
"selenium-webdriver": "^3.6.0",
|
||||
"sinon": "^4.1.2",
|
||||
"sinon": "^4.1.3",
|
||||
"string-hash": "^1.1.3",
|
||||
"stylelint-config-standard": "^17.0.0",
|
||||
"stylelint-no-unsupported-browser-features": "^1.0.1",
|
||||
"supertest": "^3.0.0",
|
||||
"testpilot-ga": "^0.3.0",
|
||||
"val-loader": "^1.1.0",
|
||||
"webpack": "^3.8.1",
|
||||
"webpack": "^3.10.0",
|
||||
"webpack-dev-server": "2.9.1",
|
||||
"webpack-manifest-plugin": "^1.3.2",
|
||||
"webpack-unassert-loader": "^1.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"aws-sdk": "^2.162.0",
|
||||
"aws-sdk": "^2.171.0",
|
||||
"body-parser": "^1.18.2",
|
||||
"choo": "^6.6.0",
|
||||
"cldr-core": "^32.0.0",
|
||||
@ -106,7 +106,7 @@
|
||||
"helmet": "^3.9.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mozlog": "^2.2.0",
|
||||
"raven": "^2.2.1",
|
||||
"raven": "^2.3.0",
|
||||
"redis": "^2.8.0"
|
||||
},
|
||||
"availableLanguages": [
|
||||
|
Loading…
Reference in New Issue
Block a user