aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2018-03-31 04:57:50 +0800
committerkumavis <aaron@kumavis.me>2018-03-31 04:57:50 +0800
commit7dde948c451a24313ca1d98b804a761245cc61c1 (patch)
treefc85c1d727f9dd4b95411e5f822e28d12874a720
parent32bb09bcb9dd5f9db86967128f7d0fe154fe9922 (diff)
parent8e0f39353dd47c4a201aaf2ee160912846f2e68b (diff)
downloadtangerine-wallet-browser-7dde948c451a24313ca1d98b804a761245cc61c1.tar
tangerine-wallet-browser-7dde948c451a24313ca1d98b804a761245cc61c1.tar.gz
tangerine-wallet-browser-7dde948c451a24313ca1d98b804a761245cc61c1.tar.bz2
tangerine-wallet-browser-7dde948c451a24313ca1d98b804a761245cc61c1.tar.lz
tangerine-wallet-browser-7dde948c451a24313ca1d98b804a761245cc61c1.tar.xz
tangerine-wallet-browser-7dde948c451a24313ca1d98b804a761245cc61c1.tar.zst
tangerine-wallet-browser-7dde948c451a24313ca1d98b804a761245cc61c1.zip
Merge branch 'master' of github.com:MetaMask/metamask-extension into ci-screens
-rw-r--r--.circleci/config.yml26
-rw-r--r--app/home.html4
-rw-r--r--app/manifest.json10
-rw-r--r--app/notification.html2
-rw-r--r--app/popup.html4
-rw-r--r--app/scripts/contentscript.js6
-rw-r--r--app/scripts/ui.js (renamed from app/scripts/popup.js)0
-rw-r--r--gulpfile.js613
-rw-r--r--mascara/proxy/index.html2
-rw-r--r--mascara/server/index.js23
-rw-r--r--mascara/src/background.js16
-rw-r--r--mascara/src/metamascara.js (renamed from mascara/src/mascara.js)0
-rw-r--r--mascara/src/proxy.js14
-rw-r--r--mascara/src/ui.js54
-rw-r--r--mascara/ui/index.html4
-rw-r--r--old-ui/app/app.js2
-rw-r--r--package-lock.json1070
-rw-r--r--package.json19
-rw-r--r--test/e2e/metamask.spec.js2
-rw-r--r--ui/app/app.js2
-rw-r--r--ui/app/components/identicon.js2
-rw-r--r--ui/app/components/modals/deposit-ether-modal.js6
-rw-r--r--ui/app/components/sender-to-recipient.js2
-rw-r--r--ui/app/css/itcss/settings/typography.scss28
-rw-r--r--ui/app/settings.js3
-rw-r--r--ui/i18n-helper.js2
26 files changed, 1249 insertions, 667 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index ef08d4c48..737fc3398 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -103,6 +103,32 @@ jobs:
key: build-cache-{{ .Revision }}
paths:
- dist
+ - store_artifacts:
+ path: dist/mascara
+ destination: builds/mascara
+ - store_artifacts:
+ path: builds
+ destination: builds
+ - run:
+ name: build:announce
+ command: |
+ CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}"
+ SHORT_SHA1=$(echo $CIRCLE_SHA1 | cut -c 1-7)
+ BUILD_LINK_BASE="https://$CIRCLE_BUILD_NUM-42009758-gh.circle-artifacts.com/0/builds"
+ VERSION=$(node -p 'require("./dist/chrome/manifest.json").version')
+ MASCARA="$BUILD_LINK_BASE/mascara/home.html"
+ CHROME="$BUILD_LINK_BASE/metamask-chrome-$VERSION.zip"
+ FIREFOX="$BUILD_LINK_BASE/metamask-firefox-$VERSION.zip"
+ OPERA="$BUILD_LINK_BASE/metamask-opera-$VERSION.zip"
+ EDGE="$BUILD_LINK_BASE/metamask-edge-$VERSION.zip"
+ COMMENT_MAIN="Builds ready [$SHORT_SHA1]: [mascara][mascara], [chrome][chrome], [firefox][firefox], [edge][edge], [opera][opera]"
+ COMMENT_LINKS="[mascara]:$MASCARA\n[chrome]:$CHROME\n[firefox]:$FIREFOX\n[opera]:$OPERA\n[edge]:$EDGE\n"
+ COMMENT_BODY="$COMMENT_MAIN\n\n$COMMENT_LINKS"
+ JSON_PAYLOAD="{\"body\":\"$COMMENT_BODY\"}"
+ POST_COMMENT_URI="https://api.github.com/repos/metamask/metamask-extension/issues/$CIRCLE_PR_NUMBER/comments"
+ echo "Announcement:\n$COMMENT_BODY"
+ echo "Posting to $POST_COMMENT_URI"
+ curl -d "$JSON_PAYLOAD" -H "Authorization: token $GITHUB_COMMENT_TOKEN" $POST_COMMENT_URI
prep-scss:
docker:
diff --git a/app/home.html b/app/home.html
index cfb4b00a0..4fad0f993 100644
--- a/app/home.html
+++ b/app/home.html
@@ -3,10 +3,10 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1 user-scalable=no">
- <title>MetaMask Plugin</title>
+ <title>MetaMask</title>
</head>
<body>
<div id="app-content"></div>
- <script src="./scripts/popup.js" type="text/javascript" charset="utf-8"></script>
+ <script src="./ui.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>
diff --git a/app/manifest.json b/app/manifest.json
index a20f9b976..1982b4820 100644
--- a/app/manifest.json
+++ b/app/manifest.json
@@ -27,8 +27,8 @@
"default_locale": "en",
"background": {
"scripts": [
- "scripts/chromereload.js",
- "scripts/background.js"
+ "chromereload.js",
+ "background.js"
],
"persistent": true
},
@@ -48,7 +48,7 @@
"https://*/*"
],
"js": [
- "scripts/contentscript.js"
+ "contentscript.js"
],
"run_at": "document_start",
"all_frames": true
@@ -62,11 +62,11 @@
"https://*.infura.io/"
],
"web_accessible_resources": [
- "scripts/inpage.js"
+ "inpage.js"
],
"externally_connectable": {
"matches": [
"https://metamask.io/*"
]
}
-} \ No newline at end of file
+}
diff --git a/app/notification.html b/app/notification.html
index f10cbbf41..457ba7137 100644
--- a/app/notification.html
+++ b/app/notification.html
@@ -11,6 +11,6 @@
</head>
<body class="notification" style="height:600px;">
<div id="app-content"></div>
- <script src="./scripts/popup.js" type="text/javascript" charset="utf-8"></script>
+ <script src="./ui.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>
diff --git a/app/popup.html b/app/popup.html
index bf09b97ca..3acfd8c55 100644
--- a/app/popup.html
+++ b/app/popup.html
@@ -3,10 +3,10 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1 user-scalable=no">
- <title>MetaMask Plugin</title>
+ <title>MetaMask</title>
</head>
<body style="width:357px; height:600px;">
<div id="app-content"></div>
- <script src="./scripts/popup.js" type="text/javascript" charset="utf-8"></script>
+ <script src="./ui.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>
diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js
index 7abbc60e7..2098fae27 100644
--- a/app/scripts/contentscript.js
+++ b/app/scripts/contentscript.js
@@ -7,8 +7,8 @@ const ObjectMultiplex = require('obj-multiplex')
const extension = require('extensionizer')
const PortStream = require('./lib/port-stream.js')
-const inpageContent = fs.readFileSync(path.join(__dirname, '..', '..', 'dist', 'chrome', 'scripts', 'inpage.js')).toString()
-const inpageSuffix = '//# sourceURL=' + extension.extension.getURL('scripts/inpage.js') + '\n'
+const inpageContent = fs.readFileSync(path.join(__dirname, '..', '..', 'dist', 'chrome', 'inpage.js')).toString()
+const inpageSuffix = '//# sourceURL=' + extension.extension.getURL('inpage.js') + '\n'
const inpageBundle = inpageContent + inpageSuffix
// Eventually this streaming injection could be replaced with:
@@ -96,7 +96,7 @@ function logStreamDisconnectWarning (remoteLabel, err) {
}
function shouldInjectWeb3 () {
- return doctypeCheck() && suffixCheck()
+ return doctypeCheck() && suffixCheck()
&& documentElementCheck() && !blacklistedDomainCheck()
}
diff --git a/app/scripts/popup.js b/app/scripts/ui.js
index 13c7ac5ec..13c7ac5ec 100644
--- a/app/scripts/popup.js
+++ b/app/scripts/ui.js
diff --git a/gulpfile.js b/gulpfile.js
index f57ea6206..3ca0c65de 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,37 +1,51 @@
-var watchify = require('watchify')
-var browserify = require('browserify')
-var disc = require('disc')
-var gulp = require('gulp')
-var source = require('vinyl-source-stream')
-var buffer = require('vinyl-buffer')
-var gutil = require('gulp-util')
-var watch = require('gulp-watch')
-var sourcemaps = require('gulp-sourcemaps')
-var jsoneditor = require('gulp-json-editor')
-var zip = require('gulp-zip')
-var assign = require('lodash.assign')
-var livereload = require('gulp-livereload')
-var del = require('del')
-var eslint = require('gulp-eslint')
-var fs = require('fs')
-var path = require('path')
-var manifest = require('./app/manifest.json')
-var gulpif = require('gulp-if')
-var replace = require('gulp-replace')
-var mkdirp = require('mkdirp')
-var asyncEach = require('async/each')
-var exec = require('child_process').exec
-var sass = require('gulp-sass')
-var autoprefixer = require('gulp-autoprefixer')
-var gulpStylelint = require('gulp-stylelint')
-var stylefmt = require('gulp-stylefmt')
-var uglify = require('gulp-uglify-es').default
-var babel = require('gulp-babel')
-
-
-var disableDebugTools = gutil.env.disableDebugTools
-var debug = gutil.env.debug
-
+const watchify = require('watchify')
+const browserify = require('browserify')
+const disc = require('disc')
+const gulp = require('gulp')
+const source = require('vinyl-source-stream')
+const buffer = require('vinyl-buffer')
+const gutil = require('gulp-util')
+const watch = require('gulp-watch')
+const sourcemaps = require('gulp-sourcemaps')
+const jsoneditor = require('gulp-json-editor')
+const zip = require('gulp-zip')
+const assign = require('lodash.assign')
+const livereload = require('gulp-livereload')
+const del = require('del')
+const eslint = require('gulp-eslint')
+const fs = require('fs')
+const path = require('path')
+const manifest = require('./app/manifest.json')
+const gulpif = require('gulp-if')
+const replace = require('gulp-replace')
+const mkdirp = require('mkdirp')
+const asyncEach = require('async/each')
+const exec = require('child_process').exec
+const sass = require('gulp-sass')
+const autoprefixer = require('gulp-autoprefixer')
+const gulpStylelint = require('gulp-stylelint')
+const stylefmt = require('gulp-stylefmt')
+const uglify = require('gulp-uglify-es').default
+const babel = require('gulp-babel')
+const debug = require('gulp-debug')
+const pify = require('pify')
+const endOfStream = pify(require('end-of-stream'))
+
+const disableDebugTools = gutil.env.disableDebugTools
+const debugMode = gutil.env.debug
+
+const browserPlatforms = [
+ 'firefox',
+ 'chrome',
+ 'edge',
+ 'opera',
+]
+const commonPlatforms = [
+ // browser webapp
+ 'mascara',
+ // browser extensions
+ ...browserPlatforms
+]
// browser reload
@@ -41,65 +55,98 @@ gulp.task('dev:reload', function() {
})
})
+// copy universal
-// copy static
+const copyTaskNames = []
+const copyDevTaskNames = []
-gulp.task('copy:locales', copyTask({
+createCopyTasks('locales', {
source: './app/_locales/',
- destinations: [
- './dist/firefox/_locales',
- './dist/chrome/_locales',
- './dist/edge/_locales',
- './dist/opera/_locales',
- ]
-}))
-gulp.task('copy:images', copyTask({
+ destinations: commonPlatforms.map(platform => `./dist/${platform}/_locales`),
+})
+createCopyTasks('images', {
source: './app/images/',
- destinations: [
- './dist/firefox/images',
- './dist/chrome/images',
- './dist/edge/images',
- './dist/opera/images',
- ],
-}))
-gulp.task('copy:contractImages', copyTask({
+ destinations: commonPlatforms.map(platform => `./dist/${platform}/images`),
+})
+createCopyTasks('contractImages', {
source: './node_modules/eth-contract-metadata/images/',
- destinations: [
- './dist/firefox/images/contract',
- './dist/chrome/images/contract',
- './dist/edge/images/contract',
- './dist/opera/images/contract',
- ],
-}))
-gulp.task('copy:fonts', copyTask({
+ destinations: commonPlatforms.map(platform => `./dist/${platform}/images/contract`),
+})
+createCopyTasks('fonts', {
source: './app/fonts/',
- destinations: [
- './dist/firefox/fonts',
- './dist/chrome/fonts',
- './dist/edge/fonts',
- './dist/opera/fonts',
- ],
-}))
-gulp.task('copy:reload', copyTask({
+ destinations: commonPlatforms.map(platform => `./dist/${platform}/fonts`),
+})
+createCopyTasks('reload', {
+ devOnly: true,
source: './app/scripts/',
- destinations: [
- './dist/firefox/scripts',
- './dist/chrome/scripts',
- './dist/edge/scripts',
- './dist/opera/scripts',
- ],
pattern: '/chromereload.js',
-}))
-gulp.task('copy:root', copyTask({
+ destinations: commonPlatforms.map(platform => `./dist/${platform}`),
+})
+createCopyTasks('html', {
source: './app/',
- destinations: [
- './dist/firefox',
- './dist/chrome',
- './dist/edge',
- './dist/opera',
- ],
- pattern: '/*',
-}))
+ pattern: '/*.html',
+ destinations: commonPlatforms.map(platform => `./dist/${platform}`),
+})
+
+// copy extension
+
+createCopyTasks('manifest', {
+ source: './app/',
+ pattern: '/*.json',
+ destinations: browserPlatforms.map(platform => `./dist/${platform}`),
+})
+
+// copy mascara
+
+createCopyTasks('html:mascara', {
+ source: './mascara/',
+ pattern: 'proxy/index.html',
+ destinations: [`./dist/mascara/`],
+})
+
+function createCopyTasks(label, opts) {
+ if (!opts.devOnly) {
+ const copyTaskName = `copy:${label}`
+ copyTask(copyTaskName, opts)
+ copyTaskNames.push(copyTaskName)
+ }
+ const copyDevTaskName = `dev:copy:${label}`
+ copyTask(copyDevTaskName, Object.assign({ devMode: true }, opts))
+ copyDevTaskNames.push(copyDevTaskName)
+}
+
+function copyTask(taskName, opts){
+ const source = opts.source
+ const destination = opts.destination
+ const destinations = opts.destinations || [destination]
+ const pattern = opts.pattern || '/**/*'
+ const devMode = opts.devMode
+
+ return gulp.task(taskName, function () {
+ if (devMode) {
+ watch(source + pattern, (event) => {
+ livereload.changed(event.path)
+ performCopy()
+ })
+ }
+
+ return performCopy()
+ })
+
+ function performCopy() {
+ // stream from source
+ let stream = gulp.src(source + pattern, { base: source })
+
+ // copy to destinations
+ destinations.forEach(function(destination) {
+ stream = stream.pipe(gulp.dest(destination))
+ })
+
+ return stream
+ }
+}
+
+// manifest tinkering
gulp.task('manifest:chrome', function() {
return gulp.src('./dist/chrome/manifest.json')
@@ -134,7 +181,7 @@ gulp.task('manifest:production', function() {
],{base: './dist/'})
// Exclude chromereload script in production:
- .pipe(gulpif(!debug,jsoneditor(function(json) {
+ .pipe(gulpif(!debugMode,jsoneditor(function(json) {
json.background.scripts = json.background.scripts.filter((script) => {
return !script.includes('chromereload')
})
@@ -144,36 +191,22 @@ gulp.task('manifest:production', function() {
.pipe(gulp.dest('./dist/', { overwrite: true }))
})
-const staticFiles = [
- 'locales',
- 'images',
- 'fonts',
- 'root'
-]
-
-var copyStrings = staticFiles.map(staticFile => `copy:${staticFile}`)
-copyStrings.push('copy:contractImages')
-
-if (debug) {
- copyStrings.push('copy:reload')
-}
-
-gulp.task('copy', gulp.series(gulp.parallel(...copyStrings), 'manifest:production', 'manifest:chrome', 'manifest:opera'))
-gulp.task('copy:watch', function(){
- gulp.watch(['./app/{_locales,images}/*', './app/scripts/chromereload.js', './app/*.{html,json}'], gulp.series('copy'))
-})
-
-// record deps
-
-gulp.task('deps', function (cb) {
- exec('npm ls', (err, stdoutOutput, stderrOutput) => {
- if (err) return cb(err)
- const browsers = ['firefox','chrome','edge','opera']
- asyncEach(browsers, (target, done) => {
- fs.writeFile(`./dist/${target}/deps.txt`, stdoutOutput, done)
- }, cb)
- })
-})
+gulp.task('copy',
+ gulp.series(
+ gulp.parallel(...copyTaskNames),
+ 'manifest:production',
+ 'manifest:chrome',
+ 'manifest:opera'
+ )
+)
+
+gulp.task('dev:copy',
+ gulp.series(
+ gulp.parallel(...copyDevTaskNames),
+ 'manifest:chrome',
+ 'manifest:opera'
+ )
+)
// lint js
@@ -196,41 +229,49 @@ gulp.task('lint:fix', function () {
.pipe(eslint.failAfterError())
});
-/*
-gulp.task('default', ['lint'], function () {
- // This will only run if the lint task is successful...
-});
-*/
+// scss compilation and autoprefixing tasks
-// build js
+gulp.task('build:scss', createScssBuildTask({
+ src: 'ui/app/css/index.scss',
+ dest: 'ui/app/css/output',
+ devMode: false,
+}))
-const jsFiles = [
- 'inpage',
- 'contentscript',
- 'background',
- 'popup',
-]
+gulp.task('dev:scss', createScssBuildTask({
+ src: 'ui/app/css/index.scss',
+ dest: 'ui/app/css/output',
+ devMode: true,
+ pattern: 'ui/app/css/**/*.scss',
+}))
-// scss compilation and autoprefixing tasks
+function createScssBuildTask({ src, dest, devMode, pattern }) {
+ return function () {
+ if (devMode) {
+ watch(pattern, async (event) => {
+ const stream = buildScss()
+ await endOfStream(stream)
+ livereload.changed(event.path)
+ })
+ }
+ return buildScss()
+ }
-gulp.task('build:scss', function () {
- return gulp.src('ui/app/css/index.scss')
- .pipe(sourcemaps.init())
- .pipe(sass().on('error', sass.logError))
- .pipe(sourcemaps.write())
- .pipe(autoprefixer())
- .pipe(gulp.dest('ui/app/css/output'))
-})
-gulp.task('watch:scss', function() {
- gulp.watch(['ui/app/css/**/*.scss'], gulp.series(['build:scss']))
-})
+ function buildScss() {
+ return gulp.src(src)
+ .pipe(sourcemaps.init())
+ .pipe(sass().on('error', sass.logError))
+ .pipe(sourcemaps.write())
+ .pipe(autoprefixer())
+ .pipe(gulp.dest(dest))
+ }
+}
gulp.task('lint-scss', function() {
return gulp
.src('ui/app/css/itcss/**/*.scss')
.pipe(gulpStylelint({
reporters: [
- {formatter: 'string', console: true}
+ { formatter: 'string', console: true }
],
fix: true,
}));
@@ -242,46 +283,82 @@ gulp.task('fmt-scss', function () {
.pipe(gulp.dest('ui/app/css/itcss'));
});
-// bundle tasks
+// build js
+
+const buildJsFiles = [
+ 'inpage',
+ 'contentscript',
+ 'background',
+ 'ui',
+]
-var jsDevStrings = jsFiles.map(jsFile => `dev:js:${jsFile}`)
-var jsBuildStrings = jsFiles.map(jsFile => `build:js:${jsFile}`)
+// bundle tasks
+createTasksForBuildJsExtension({ buildJsFiles, taskPrefix: 'dev:extension:js', devMode: true })
+createTasksForBuildJsExtension({ buildJsFiles, taskPrefix: 'build:extension:js' })
+createTasksForBuildJsMascara({ taskPrefix: 'build:mascara:js' })
+createTasksForBuildJsMascara({ taskPrefix: 'dev:mascara:js', devMode: true })
+
+function createTasksForBuildJsExtension({ buildJsFiles, taskPrefix, devMode, bundleTaskOpts = {} }) {
+ // inpage must be built before all other scripts:
+ const rootDir = './app/scripts'
+ const nonInpageFiles = buildJsFiles.filter(file => file !== 'inpage')
+ const buildPhase1 = ['inpage']
+ const buildPhase2 = nonInpageFiles
+ const destinations = browserPlatforms.map(platform => `./dist/${platform}`)
+ bundleTaskOpts = Object.assign({
+ buildSourceMaps: true,
+ sourceMapDir: devMode ? './' : '../sourcemaps',
+ minifyBuild: !devMode,
+ buildWithFullPaths: devMode,
+ watch: devMode,
+ }, bundleTaskOpts)
+ createTasksForBuildJs({ rootDir, taskPrefix, bundleTaskOpts, destinations, buildPhase1, buildPhase2 })
+}
-jsFiles.forEach((jsFile) => {
- gulp.task(`dev:js:${jsFile}`, bundleTask({
- watch: true,
- label: jsFile,
- filename: `${jsFile}.js`,
- isBuild: false
- }))
- gulp.task(`build:js:${jsFile}`, bundleTask({
- watch: false,
- label: jsFile,
- filename: `${jsFile}.js`,
- isBuild: true
- }))
-})
+function createTasksForBuildJsMascara({ taskPrefix, devMode, bundleTaskOpts = {} }) {
+ // inpage must be built before all other scripts:
+ const rootDir = './mascara/src/'
+ const buildPhase1 = ['ui', 'proxy', 'background', 'metamascara']
+ const destinations = ['./dist/mascara']
+ bundleTaskOpts = Object.assign({
+ buildSourceMaps: true,
+ sourceMapDir: './',
+ minifyBuild: !devMode,
+ buildWithFullPaths: devMode,
+ watch: devMode,
+ }, bundleTaskOpts)
+ createTasksForBuildJs({ rootDir, taskPrefix, bundleTaskOpts, destinations, buildPhase1 })
+}
-// inpage must be built before all other scripts:
-const firstDevString = jsDevStrings.shift()
-gulp.task('dev:js', gulp.series(firstDevString, gulp.parallel(...jsDevStrings)))
+function createTasksForBuildJs({ rootDir, taskPrefix, bundleTaskOpts, destinations, buildPhase1 = [], buildPhase2 = [] }) {
+ // bundle task for each file
+ const jsFiles = [].concat(buildPhase1, buildPhase2)
+ jsFiles.forEach((jsFile) => {
+ gulp.task(`${taskPrefix}:${jsFile}`, bundleTask(Object.assign({
+ label: jsFile,
+ filename: `${jsFile}.js`,
+ filepath: `${rootDir}/${jsFile}.js`,
+ destinations,
+ }, bundleTaskOpts)))
+ })
+ // compose into larger task
+ const subtasks = []
+ subtasks.push(gulp.parallel(buildPhase1.map(file => `${taskPrefix}:${file}`)))
+ if (buildPhase2.length) subtasks.push(gulp.parallel(buildPhase2.map(file => `${taskPrefix}:${file}`)))
-// inpage must be built before all other scripts:
-const firstBuildString = jsBuildStrings.shift()
-gulp.task('build:js', gulp.series(firstBuildString, gulp.parallel(...jsBuildStrings)))
+ gulp.task(taskPrefix, gulp.series(subtasks))
+}
// disc bundle analyzer tasks
-jsFiles.forEach((jsFile) => {
- gulp.task(`disc:${jsFile}`, discTask({ label: jsFile, filename: `${jsFile}.js` }))
+buildJsFiles.forEach((jsFile) => {
+ gulp.task(`disc:${jsFile}`, discTask({ label: jsFile, filename: `${jsFile}.js` }))
})
-gulp.task('disc', gulp.parallel(jsFiles.map(jsFile => `disc:${jsFile}`)))
-
+gulp.task('disc', gulp.parallel(buildJsFiles.map(jsFile => `disc:${jsFile}`)))
// clean dist
-
gulp.task('clean', function clean() {
return del(['./dist/*'])
})
@@ -293,40 +370,95 @@ gulp.task('zip:edge', zipTask('edge'))
gulp.task('zip:opera', zipTask('opera'))
gulp.task('zip', gulp.parallel('zip:chrome', 'zip:firefox', 'zip:edge', 'zip:opera'))
-// set env var for production
+// set env for production
gulp.task('apply-prod-environment', function(done) {
- process.env.NODE_ENV = 'production'
- done()
+ process.env.NODE_ENV = 'production'
+ done()
});
// high level tasks
-gulp.task('dev', gulp.series('build:scss', 'dev:js', 'copy', gulp.parallel('watch:scss', 'copy:watch', 'dev:reload')))
+gulp.task('dev',
+ gulp.series(
+ 'clean',
+ 'dev:scss',
+ gulp.parallel(
+ 'dev:extension:js',
+ 'dev:mascara:js',
+ 'dev:copy',
+ 'dev:reload'
+ )
+ )
+)
+
+gulp.task('dev:extension',
+ gulp.series(
+ 'clean',
+ 'dev:scss',
+ gulp.parallel(
+ 'dev:extension:js',
+ 'dev:copy',
+ 'dev:reload'
+ )
+ )
+)
+
+gulp.task('dev:mascara',
+ gulp.series(
+ 'clean',
+ 'dev:scss',
+ gulp.parallel(
+ 'dev:mascara:js',
+ 'dev:copy',
+ 'dev:reload'
+ )
+ )
+)
+
+gulp.task('build',
+ gulp.series(
+ 'clean',
+ 'build:scss',
+ gulp.parallel(
+ 'build:extension:js',
+ 'build:mascara:js',
+ 'copy'
+ )
+ )
+)
+
+gulp.task('build:extension',
+ gulp.series(
+ 'clean',
+ 'build:scss',
+ gulp.parallel(
+ 'build:extension:js',
+ 'copy'
+ )
+ )
+)
+
+gulp.task('build:mascara',
+ gulp.series(
+ 'clean',
+ 'build:scss',
+ gulp.parallel(
+ 'build:mascara:js',
+ 'copy'
+ )
+ )
+)
-gulp.task('build', gulp.series('clean', 'build:scss', gulp.parallel('build:js', 'copy')))
-gulp.task('dist', gulp.series('apply-prod-environment', 'build', 'zip'))
+gulp.task('dist',
+ gulp.series(
+ 'apply-prod-environment',
+ 'build',
+ 'zip'
+ )
+)
// task generators
-function copyTask(opts){
- var source = opts.source
- var destination = opts.destination
- var destinations = opts.destinations || [ destination ]
- var pattern = opts.pattern || '/**/*'
-
- return performCopy
-
- function performCopy(){
- let stream = gulp.src(source + pattern, { base: source })
- destinations.forEach(function(destination) {
- stream = stream.pipe(gulp.dest(destination))
- })
- stream.pipe(gulpif(debug,livereload()))
-
- return stream
- }
-}
-
function zipTask(target) {
return () => {
return gulp.src(`dist/${target}/**`)
@@ -337,10 +469,10 @@ function zipTask(target) {
function generateBundler(opts, performBundle) {
const browserifyOpts = assign({}, watchify.args, {
- entries: ['./app/scripts/'+opts.filename],
+ entries: [opts.filepath],
plugin: 'browserify-derequire',
- debug: true,
- fullPaths: debug,
+ debug: opts.buildSourceMaps,
+ fullPaths: opts.buildWithFullPaths,
})
let bundler = browserify(browserifyOpts)
@@ -348,13 +480,21 @@ function generateBundler(opts, performBundle) {
if (opts.watch) {
bundler = watchify(bundler)
// on any file update, re-runs the bundler
- bundler.on('update', performBundle)
+ bundler.on('update', async (ids) => {
+ const stream = performBundle()
+ await endOfStream(stream)
+ livereload.changed(`${ids}`)
+ })
}
return bundler
}
function discTask(opts) {
+ opts = Object.assign({
+ buildWithFullPaths: true,
+ }, opts)
+
const bundler = generateBundler(opts, performBundle)
// output build logs to terminal
bundler.on('log', gutil.log)
@@ -363,9 +503,9 @@ function discTask(opts) {
function performBundle(){
// start "disc" build
- let discDir = path.join(__dirname, 'disc')
+ const discDir = path.join(__dirname, 'disc')
mkdirp.sync(discDir)
- let discPath = path.join(discDir, `${opts.label}.html`)
+ const discPath = path.join(discDir, `${opts.label}.html`)
return (
bundler.bundle()
@@ -384,43 +524,58 @@ function bundleTask(opts) {
return performBundle
function performBundle(){
- return (
-
- bundler.bundle()
+ let buildStream = bundler.bundle()
+
+ // handle errors
+ buildStream.on('error', (err) => {
+ beep()
+ if (opts.watch) {
+ console.warn(err.stack)
+ } else {
+ throw err
+ }
+ })
- // handle errors
- .on('error', (err) => {
- beep()
- if (opts.watch) {
- console.warn(err.stack)
- } else {
- throw err
- }
- })
+ // process bundles
+ buildStream = buildStream
// convert bundle stream to gulp vinyl stream
.pipe(source(opts.filename))
// inject variables into bundle
- .pipe(replace('\'GULP_METAMASK_DEBUG\'', debug))
+ .pipe(replace('\'GULP_METAMASK_DEBUG\'', debugMode))
// buffer file contents (?)
.pipe(buffer())
- // sourcemaps
- // loads map from browserify file
- .pipe(sourcemaps.init({ loadMaps: true }))
- // Minification
- .pipe(gulpif(opts.isBuild, uglify({
- mangle: { reserved: [ 'MetamaskInpageProvider' ] },
- })))
- // writes .map file
- .pipe(sourcemaps.write(debug ? './' : '../../sourcemaps'))
- // write completed bundles
- .pipe(gulp.dest('./dist/firefox/scripts'))
- .pipe(gulp.dest('./dist/chrome/scripts'))
- .pipe(gulp.dest('./dist/edge/scripts'))
- .pipe(gulp.dest('./dist/opera/scripts'))
- // finally, trigger live reload
- .pipe(gulpif(debug, livereload()))
- )
+
+ // Initialize Source Maps
+ if (opts.buildSourceMaps) {
+ buildStream = buildStream
+ // loads map from browserify file
+ .pipe(sourcemaps.init({ loadMaps: true }))
+ }
+
+ // Minification
+ if (opts.minifyBuild) {
+ buildStream = buildStream
+ .pipe(uglify({
+ mangle: {
+ reserved: [ 'MetamaskInpageProvider' ]
+ },
+ }))
+ }
+
+ // Finalize Source Maps (writes .map file)
+ if (opts.buildSourceMaps) {
+ buildStream = buildStream
+ .pipe(sourcemaps.write(opts.sourceMapDir))
+ }
+
+ // write completed bundles
+ opts.destinations.forEach((dest) => {
+ buildStream = buildStream.pipe(gulp.dest(dest))
+ })
+
+ return buildStream
+
}
}
diff --git a/mascara/proxy/index.html b/mascara/proxy/index.html
index b83fc41af..4e167db72 100644
--- a/mascara/proxy/index.html
+++ b/mascara/proxy/index.html
@@ -17,4 +17,4 @@
Hello! I am the MetaMask iframe.
<script src="./proxy.js"></script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/mascara/server/index.js b/mascara/server/index.js
index 6fb1287cc..a30120438 100644
--- a/mascara/server/index.js
+++ b/mascara/server/index.js
@@ -1,7 +1,5 @@
const path = require('path')
const express = require('express')
-const createBundle = require('./util').createBundle
-const serveBundle = require('./util').serveBundle
const compression = require('compression')
module.exports = createMetamascaraServer
@@ -9,27 +7,14 @@ module.exports = createMetamascaraServer
function createMetamascaraServer () {
- // start bundlers
- const metamascaraBundle = createBundle(path.join(__dirname, '/../src/mascara.js'))
- const proxyBundle = createBundle(path.join(__dirname, '/../src/proxy.js'))
- const uiBundle = createBundle(path.join(__dirname, '/../src/ui.js'))
- const backgroundBuild = createBundle(path.join(__dirname, '/../src/background.js'))
-
- // serve bundles
+ // setup server
const server = express()
server.use(compression())
- // ui window
- serveBundle(server, '/ui.js', uiBundle)
+ // serve assets
server.use(express.static(path.join(__dirname, '/../ui/'), { setHeaders: (res) => res.set('X-Frame-Options', 'DENY') }))
- server.use(express.static(path.join(__dirname, '/../../dist/chrome')))
- // metamascara
- serveBundle(server, '/metamascara.js', metamascaraBundle)
- // proxy
- serveBundle(server, '/proxy/proxy.js', proxyBundle)
- server.use('/proxy/', express.static(path.join(__dirname, '/../proxy')))
- // background
- serveBundle(server, '/background.js', backgroundBuild)
+ server.use(express.static(path.join(__dirname, '/../../dist/mascara')))
+ server.use(express.static(path.join(__dirname, '/../proxy')))
return server
diff --git a/mascara/src/background.js b/mascara/src/background.js
index 8aa1d8fe2..40a684f3d 100644
--- a/mascara/src/background.js
+++ b/mascara/src/background.js
@@ -30,15 +30,19 @@ global.addEventListener('activate', function (event) {
log.debug('inside:open')
-
-// // state persistence
+// state persistence
const dbController = new DbController({
key: STORAGE_KEY,
})
-loadStateFromPersistence()
-.then((initState) => setupController(initState))
-.then(() => log.debug('MetaMask initialization complete.'))
-.catch((err) => console.error('WHILE SETTING UP:', err))
+
+start().catch(log.error)
+
+async function start() {
+ log.debug('MetaMask initializing...')
+ const initState = await loadStateFromPersistence()
+ await setupController(initState)
+ log.debug('MetaMask initialization complete.')
+}
//
// State and Persistence
diff --git a/mascara/src/mascara.js b/mascara/src/metamascara.js
index 0af6f532f..0af6f532f 100644
--- a/mascara/src/mascara.js
+++ b/mascara/src/metamascara.js
diff --git a/mascara/src/proxy.js b/mascara/src/proxy.js
index 54c5d5cf4..80b4dc516 100644
--- a/mascara/src/proxy.js
+++ b/mascara/src/proxy.js
@@ -1,13 +1,13 @@
const createParentStream = require('iframe-stream').ParentStream
-const SWcontroller = require('client-sw-ready-event/lib/sw-client.js')
+const SwController = require('sw-controller')
const SwStream = require('sw-stream/lib/sw-stream.js')
-const intervalDelay = Math.floor(Math.random() * (30000 - 1000)) + 1000
-const background = new SWcontroller({
- fileName: '/background.js',
- letBeIdle: false,
- wakeUpInterval: 30000,
- intervalDelay,
+const keepAliveDelay = Math.floor(Math.random() * (30000 - 1000)) + 1000
+const background = new SwController({
+ fileName: './scripts/background.js',
+ keepAlive: true,
+ keepAliveInterval: 30000,
+ keepAliveDelay,
})
const pageStream = createParentStream()
diff --git a/mascara/src/ui.js b/mascara/src/ui.js
index b272a2e06..f35a11fc4 100644
--- a/mascara/src/ui.js
+++ b/mascara/src/ui.js
@@ -1,6 +1,6 @@
const injectCss = require('inject-css')
-const SWcontroller = require('client-sw-ready-event/lib/sw-client.js')
-const SwStream = require('sw-stream/lib/sw-stream.js')
+const SwController = require('sw-controller')
+const SwStream = require('sw-stream')
const MetaMaskUiCss = require('../../ui/css')
const MetamascaraPlatform = require('../../app/scripts/platforms/window')
const startPopup = require('../../app/scripts/popup-core')
@@ -8,27 +8,44 @@ const startPopup = require('../../app/scripts/popup-core')
// create platform global
global.platform = new MetamascaraPlatform()
-
var css = MetaMaskUiCss()
injectCss(css)
const container = document.getElementById('app-content')
-var name = 'popup'
+const name = 'popup'
window.METAMASK_UI_TYPE = name
window.METAMASK_PLATFORM_TYPE = 'mascara'
-const intervalDelay = Math.floor(Math.random() * (30000 - 1000)) + 1000
+const keepAliveDelay = Math.floor(Math.random() * (30000 - 1000)) + 1000
-const background = new SWcontroller({
- fileName: '/background.js',
- letBeIdle: false,
- intervalDelay,
- wakeUpInterval: 20000,
+const swController = new SwController({
+ fileName: './background.js',
+ keepAlive: true,
+ keepAliveDelay,
+ keepAliveInterval: 20000,
})
+
+swController.once('updatefound', windowReload)
+swController.once('ready', async () => {
+ try {
+ swController.removeListener('updatefound', windowReload)
+ console.log('swController ready')
+ await timeout(1000)
+ console.log('connecting to app')
+ await connectApp()
+ console.log('app connected')
+ } catch (err) {
+ console.error(err)
+ }
+})
+
+console.log('starting service worker')
+swController.startWorker()
+
// Setup listener for when the service worker is read
-const connectApp = function (readSw) {
+function connectApp() {
const connectionStream = SwStream({
- serviceWorker: background.controller,
+ serviceWorker: swController.getWorker(),
context: name,
})
return new Promise((resolve, reject) => {
@@ -43,19 +60,6 @@ const connectApp = function (readSw) {
})
})
}
-background.on('ready', async (sw) => {
- try {
- background.removeListener('updatefound', connectApp)
- await timeout(1000)
- await connectApp(sw)
- console.log('hello from cb ready event!')
- } catch (e) {
- console.error(e)
- }
-})
-background.on('updatefound', windowReload)
-
-background.startWorker()
function windowReload () {
if (window.METAMASK_SKIP_RELOAD) return
diff --git a/mascara/ui/index.html b/mascara/ui/index.html
index eac8e4898..dbc445891 100644
--- a/mascara/ui/index.html
+++ b/mascara/ui/index.html
@@ -7,6 +7,6 @@
</head>
<body>
<div id="app-content"></div>
- <script src="./ui.js" type="text/javascript" charset="utf-8"></script>
+ <script src="./scripts/ui.js" type="text/javascript" charset="utf-8"></script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/old-ui/app/app.js b/old-ui/app/app.js
index c79ac633a..e9ab185f3 100644
--- a/old-ui/app/app.js
+++ b/old-ui/app/app.js
@@ -171,7 +171,7 @@ App.prototype.renderAppBar = function () {
h('img', {
height: 24,
width: 24,
- src: '/images/icon-128.png',
+ src: './images/icon-128.png',
}),
h(NetworkIndicator, {
diff --git a/package-lock.json b/package-lock.json
index 8baaf00a5..2c9aab522 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3201,11 +3201,6 @@
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
},
- "client-sw-ready-event": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/client-sw-ready-event/-/client-sw-ready-event-3.4.0.tgz",
- "integrity": "sha1-/0hkYXaQVed0hXDxrvECuGdbZtA="
- },
"cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
@@ -7489,12 +7484,14 @@
"dependencies": {
"abbrev": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
+ "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
"optional": true
},
"ajv": {
"version": "4.11.8",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"optional": true,
"requires": {
"co": "4.6.0",
@@ -7503,16 +7500,19 @@
},
"ansi-regex": {
"version": "2.1.1",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"aproba": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz",
+ "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=",
"optional": true
},
"are-we-there-yet": {
"version": "1.1.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
+ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
"optional": true,
"requires": {
"delegates": "1.0.0",
@@ -7521,36 +7521,43 @@
},
"asn1": {
"version": "0.2.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
"optional": true
},
"assert-plus": {
"version": "0.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
"optional": true
},
"asynckit": {
"version": "0.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"optional": true
},
"aws-sign2": {
"version": "0.6.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
"optional": true
},
"aws4": {
"version": "1.6.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
"optional": true
},
"balanced-match": {
"version": "0.4.2",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
},
"bcrypt-pbkdf": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
"optional": true,
"requires": {
"tweetnacl": "0.14.5"
@@ -7558,21 +7565,24 @@
},
"block-stream": {
"version": "0.0.9",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
"requires": {
"inherits": "2.0.3"
}
},
"boom": {
"version": "2.10.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"requires": {
"hoek": "2.16.3"
}
},
"brace-expansion": {
"version": "1.1.7",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz",
+ "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=",
"requires": {
"balanced-match": "0.4.2",
"concat-map": "0.0.1"
@@ -7580,51 +7590,61 @@
},
"buffer-shims": {
"version": "1.0.0",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
+ "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
},
"caseless": {
"version": "0.12.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"optional": true
},
"co": {
"version": "4.6.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"optional": true
},
"code-point-at": {
"version": "1.1.0",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"combined-stream": {
"version": "1.0.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
"requires": {
"delayed-stream": "1.0.0"
}
},
"concat-map": {
"version": "0.0.1",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"console-control-strings": {
"version": "1.1.0",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
"core-util-is": {
"version": "1.0.2",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cryptiles": {
"version": "2.0.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"requires": {
"boom": "2.10.1"
}
},
"dashdash": {
"version": "1.14.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"optional": true,
"requires": {
"assert-plus": "1.0.0"
@@ -7632,14 +7652,16 @@
"dependencies": {
"assert-plus": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"optional": true
}
}
},
"debug": {
"version": "2.6.8",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
"optional": true,
"requires": {
"ms": "2.0.0"
@@ -7647,26 +7669,31 @@
},
"deep-extend": {
"version": "0.4.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
"optional": true
},
"delayed-stream": {
"version": "1.0.0",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"delegates": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"optional": true
},
"detect-libc": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz",
+ "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=",
"optional": true
},
"ecc-jsbn": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"optional": true,
"requires": {
"jsbn": "0.1.1"
@@ -7674,21 +7701,25 @@
},
"extend": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
"optional": true
},
"extsprintf": {
"version": "1.0.2",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
+ "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA="
},
"forever-agent": {
"version": "0.6.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"optional": true
},
"form-data": {
"version": "2.1.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"optional": true,
"requires": {
"asynckit": "0.4.0",
@@ -7698,11 +7729,13 @@
},
"fs.realpath": {
"version": "1.0.0",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fstream": {
"version": "1.0.11",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"requires": {
"graceful-fs": "4.1.11",
"inherits": "2.0.3",
@@ -7712,7 +7745,8 @@
},
"fstream-ignore": {
"version": "1.0.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz",
+ "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=",
"optional": true,
"requires": {
"fstream": "1.0.11",
@@ -7722,7 +7756,8 @@
},
"gauge": {
"version": "2.7.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"optional": true,
"requires": {
"aproba": "1.1.1",
@@ -7737,7 +7772,8 @@
},
"getpass": {
"version": "0.1.7",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"optional": true,
"requires": {
"assert-plus": "1.0.0"
@@ -7745,14 +7781,16 @@
"dependencies": {
"assert-plus": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"optional": true
}
}
},
"glob": {
"version": "7.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
@@ -7764,16 +7802,19 @@
},
"graceful-fs": {
"version": "4.1.11",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
},
"har-schema": {
"version": "1.0.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+ "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
"optional": true
},
"har-validator": {
"version": "4.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+ "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
"optional": true,
"requires": {
"ajv": "4.11.8",
@@ -7782,12 +7823,14 @@
},
"has-unicode": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"optional": true
},
"hawk": {
"version": "3.1.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"requires": {
"boom": "2.10.1",
"cryptiles": "2.0.5",
@@ -7797,11 +7840,13 @@
},
"hoek": {
"version": "2.16.3",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
},
"http-signature": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"optional": true,
"requires": {
"assert-plus": "0.2.0",
@@ -7811,7 +7856,8 @@
},
"inflight": {
"version": "1.0.6",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
@@ -7819,37 +7865,44 @@
},
"inherits": {
"version": "2.0.3",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ini": {
"version": "1.3.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
+ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
"number-is-nan": "1.0.1"
}
},
"is-typedarray": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"optional": true
},
"isarray": {
"version": "1.0.0",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isstream": {
"version": "0.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"optional": true
},
"jodid25519": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
+ "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=",
"optional": true,
"requires": {
"jsbn": "0.1.1"
@@ -7857,17 +7910,20 @@
},
"jsbn": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"optional": true
},
"json-schema": {
"version": "0.2.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"optional": true
},
"json-stable-stringify": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"optional": true,
"requires": {
"jsonify": "0.0.0"
@@ -7875,17 +7931,20 @@
},
"json-stringify-safe": {
"version": "5.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"optional": true
},
"jsonify": {
"version": "0.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"optional": true
},
"jsprim": {
"version": "1.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
+ "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
"optional": true,
"requires": {
"assert-plus": "1.0.0",
@@ -7896,48 +7955,56 @@
"dependencies": {
"assert-plus": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"optional": true
}
}
},
"mime-db": {
"version": "1.27.0",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+ "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE="
},
"mime-types": {
"version": "2.1.15",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
"requires": {
"mime-db": "1.27.0"
}
},
"minimatch": {
"version": "3.0.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "1.1.7"
}
},
"minimist": {
"version": "0.0.8",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mkdirp": {
"version": "0.5.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"optional": true
},
"node-pre-gyp": {
"version": "0.6.39",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz",
+ "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==",
"optional": true,
"requires": {
"detect-libc": "1.0.2",
@@ -7955,7 +8022,8 @@
},
"nopt": {
"version": "4.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
"optional": true,
"requires": {
"abbrev": "1.1.0",
@@ -7964,7 +8032,8 @@
},
"npmlog": {
"version": "4.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz",
+ "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==",
"optional": true,
"requires": {
"are-we-there-yet": "1.1.4",
@@ -7975,38 +8044,45 @@
},
"number-is-nan": {
"version": "1.0.1",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"oauth-sign": {
"version": "0.8.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
"optional": true
},
"object-assign": {
"version": "4.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"optional": true
},
"once": {
"version": "1.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1.0.2"
}
},
"os-homedir": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"optional": true
},
"osenv": {
"version": "0.1.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
+ "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
"optional": true,
"requires": {
"os-homedir": "1.0.2",
@@ -8015,30 +8091,36 @@
},
"path-is-absolute": {
"version": "1.0.1",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"performance-now": {
"version": "0.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
"optional": true
},
"process-nextick-args": {
"version": "1.0.7",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
},
"punycode": {
"version": "1.4.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"optional": true
},
"qs": {
"version": "6.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+ "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
"optional": true
},
"rc": {
"version": "1.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz",
+ "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=",
"optional": true,
"requires": {
"deep-extend": "0.4.2",
@@ -8049,14 +8131,16 @@
"dependencies": {
"minimist": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"optional": true
}
}
},
"readable-stream": {
"version": "2.2.9",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz",
+ "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=",
"requires": {
"buffer-shims": "1.0.0",
"core-util-is": "1.0.2",
@@ -8069,7 +8153,8 @@
},
"request": {
"version": "2.81.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+ "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"optional": true,
"requires": {
"aws-sign2": "0.6.0",
@@ -8098,40 +8183,47 @@
},
"rimraf": {
"version": "2.6.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
"requires": {
"glob": "7.1.2"
}
},
"safe-buffer": {
"version": "5.0.1",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
+ "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c="
},
"semver": {
"version": "5.3.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
"optional": true
},
"set-blocking": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"optional": true
},
"signal-exit": {
"version": "3.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"optional": true
},
"sntp": {
"version": "1.0.9",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"requires": {
"hoek": "2.16.3"
}
},
"sshpk": {
"version": "1.13.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz",
+ "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=",
"optional": true,
"requires": {
"asn1": "0.2.3",
@@ -8147,14 +8239,16 @@
"dependencies": {
"assert-plus": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"optional": true
}
}
},
"string-width": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "1.1.0",
"is-fullwidth-code-point": "1.0.0",
@@ -8163,31 +8257,36 @@
},
"string_decoder": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz",
+ "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=",
"requires": {
"safe-buffer": "5.0.1"
}
},
"stringstream": {
"version": "0.0.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
"optional": true
},
"strip-ansi": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "2.1.1"
}
},
"strip-json-comments": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"optional": true
},
"tar": {
"version": "2.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"requires": {
"block-stream": "0.0.9",
"fstream": "1.0.11",
@@ -8196,7 +8295,8 @@
},
"tar-pack": {
"version": "3.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz",
+ "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=",
"optional": true,
"requires": {
"debug": "2.6.8",
@@ -8211,7 +8311,8 @@
},
"tough-cookie": {
"version": "2.3.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
+ "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
"optional": true,
"requires": {
"punycode": "1.4.1"
@@ -8219,7 +8320,8 @@
},
"tunnel-agent": {
"version": "0.6.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"optional": true,
"requires": {
"safe-buffer": "5.0.1"
@@ -8227,26 +8329,31 @@
},
"tweetnacl": {
"version": "0.14.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"optional": true
},
"uid-number": {
"version": "0.0.6",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
+ "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=",
"optional": true
},
"util-deprecate": {
"version": "1.0.2",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"uuid": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
+ "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=",
"optional": true
},
"verror": {
"version": "1.3.6",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
+ "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
"optional": true,
"requires": {
"extsprintf": "1.0.2"
@@ -8254,7 +8361,8 @@
},
"wide-align": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
"optional": true,
"requires": {
"string-width": "1.0.2"
@@ -8262,7 +8370,8 @@
},
"wrappy": {
"version": "1.0.2",
- "bundled": true
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
},
@@ -8423,6 +8532,11 @@
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
"dev": true
},
+ "get-own-enumerable-property-symbols": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz",
+ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug=="
+ },
"get-stdin": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz",
@@ -8981,6 +9095,52 @@
}
}
},
+ "gulp-debug": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/gulp-debug/-/gulp-debug-3.2.0.tgz",
+ "integrity": "sha512-2LZzP+ydczqz1rhqq/NYxvVvYTmOa0IgBl2B1sQTdkQgku9ayOUM/KHuGPjF4QA5aO1VcG+Sskw7iCcRUqHKkA==",
+ "requires": {
+ "chalk": "2.3.2",
+ "fancy-log": "1.3.2",
+ "plur": "2.1.2",
+ "stringify-object": "3.2.2",
+ "through2": "2.0.3",
+ "tildify": "1.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
+ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "supports-color": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
+ "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
"gulp-eslint": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-4.0.0.tgz",
@@ -10770,8 +10930,7 @@
"irregular-plurals": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz",
- "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=",
- "dev": true
+ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y="
},
"is-absolute": {
"version": "1.0.0",
@@ -10999,6 +11158,11 @@
"integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=",
"dev": true
},
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
+ },
"is-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
@@ -11114,8 +11278,7 @@
"is-regexp": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
- "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
- "dev": true
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk="
},
"is-relative": {
"version": "1.0.0",
@@ -15186,7 +15349,8 @@
"dependencies": {
"align-text": {
"version": "0.1.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"dev": true,
"requires": {
"kind-of": "3.2.2",
@@ -15196,22 +15360,26 @@
},
"amdefine": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
},
"ansi-regex": {
"version": "2.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"append-transform": {
"version": "0.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
+ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
"dev": true,
"requires": {
"default-require-extensions": "1.0.0"
@@ -15219,12 +15387,14 @@
},
"archy": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
"dev": true
},
"arr-diff": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
"requires": {
"arr-flatten": "1.1.0"
@@ -15232,27 +15402,32 @@
},
"arr-flatten": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
"dev": true
},
"array-unique": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
"dev": true
},
"arrify": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
"async": {
"version": "1.5.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
"dev": true
},
"babel-code-frame": {
"version": "6.26.0",
- "bundled": true,
+ "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",
@@ -15262,7 +15437,8 @@
},
"babel-generator": {
"version": "6.26.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
+ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
"dev": true,
"requires": {
"babel-messages": "6.23.0",
@@ -15277,7 +15453,8 @@
},
"babel-messages": {
"version": "6.23.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
"dev": true,
"requires": {
"babel-runtime": "6.26.0"
@@ -15285,7 +15462,8 @@
},
"babel-runtime": {
"version": "6.26.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
"core-js": "2.5.3",
@@ -15294,7 +15472,8 @@
},
"babel-template": {
"version": "6.26.0",
- "bundled": true,
+ "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",
@@ -15306,7 +15485,8 @@
},
"babel-traverse": {
"version": "6.26.0",
- "bundled": true,
+ "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",
@@ -15322,7 +15502,8 @@
},
"babel-types": {
"version": "6.26.0",
- "bundled": true,
+ "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",
@@ -15333,17 +15514,20 @@
},
"babylon": {
"version": "6.18.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
"dev": true
},
"balanced-match": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"brace-expansion": {
"version": "1.1.8",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
"dev": true,
"requires": {
"balanced-match": "1.0.0",
@@ -15352,7 +15536,8 @@
},
"braces": {
"version": "1.8.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
"requires": {
"expand-range": "1.8.2",
@@ -15362,12 +15547,14 @@
},
"builtin-modules": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
},
"caching-transform": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz",
+ "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=",
"dev": true,
"requires": {
"md5-hex": "1.3.0",
@@ -15377,13 +15564,15 @@
},
"camelcase": {
"version": "1.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
"dev": true,
"optional": true
},
"center-align": {
"version": "0.1.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
"dev": true,
"optional": true,
"requires": {
@@ -15393,7 +15582,8 @@
},
"chalk": {
"version": "1.1.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "2.2.1",
@@ -15405,7 +15595,8 @@
},
"cliui": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
"dev": true,
"optional": true,
"requires": {
@@ -15416,7 +15607,8 @@
"dependencies": {
"wordwrap": {
"version": "0.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
"dev": true,
"optional": true
}
@@ -15424,32 +15616,38 @@
},
"code-point-at": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
"commondir": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
"concat-map": {
"version": "0.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"convert-source-map": {
"version": "1.5.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+ "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
"dev": true
},
"core-js": {
"version": "2.5.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz",
+ "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=",
"dev": true
},
"cross-spawn": {
"version": "4.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
"dev": true,
"requires": {
"lru-cache": "4.1.1",
@@ -15458,7 +15656,8 @@
},
"debug": {
"version": "2.6.9",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -15466,17 +15665,20 @@
},
"debug-log": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
"dev": true
},
"decamelize": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
"default-require-extensions": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",
+ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
"dev": true,
"requires": {
"strip-bom": "2.0.0"
@@ -15484,7 +15686,8 @@
},
"detect-indent": {
"version": "4.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
"dev": true,
"requires": {
"repeating": "2.0.1"
@@ -15492,7 +15695,8 @@
},
"error-ex": {
"version": "1.3.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
"dev": true,
"requires": {
"is-arrayish": "0.2.1"
@@ -15500,17 +15704,20 @@
},
"escape-string-regexp": {
"version": "1.0.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
"esutils": {
"version": "2.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
"execa": {
"version": "0.7.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"requires": {
"cross-spawn": "5.1.0",
@@ -15524,7 +15731,8 @@
"dependencies": {
"cross-spawn": {
"version": "5.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "4.1.1",
@@ -15536,7 +15744,8 @@
},
"expand-brackets": {
"version": "0.1.5",
- "bundled": true,
+ "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"
@@ -15544,7 +15753,8 @@
},
"expand-range": {
"version": "1.8.2",
- "bundled": true,
+ "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.3"
@@ -15552,7 +15762,8 @@
},
"extglob": {
"version": "0.3.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
"requires": {
"is-extglob": "1.0.0"
@@ -15560,12 +15771,14 @@
},
"filename-regex": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
"dev": true
},
"fill-range": {
"version": "2.2.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
"dev": true,
"requires": {
"is-number": "2.1.0",
@@ -15577,7 +15790,8 @@
},
"find-cache-dir": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
"dev": true,
"requires": {
"commondir": "1.0.1",
@@ -15587,7 +15801,8 @@
},
"find-up": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
"locate-path": "2.0.0"
@@ -15595,12 +15810,14 @@
},
"for-in": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
"for-own": {
"version": "0.1.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"dev": true,
"requires": {
"for-in": "1.0.2"
@@ -15608,7 +15825,8 @@
},
"foreground-child": {
"version": "1.5.6",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz",
+ "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=",
"dev": true,
"requires": {
"cross-spawn": "4.0.2",
@@ -15617,22 +15835,26 @@
},
"fs.realpath": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"get-caller-file": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
"dev": true
},
"get-stream": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
"glob": {
"version": "7.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
"fs.realpath": "1.0.0",
@@ -15645,7 +15867,8 @@
},
"glob-base": {
"version": "0.3.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"dev": true,
"requires": {
"glob-parent": "2.0.0",
@@ -15654,7 +15877,8 @@
},
"glob-parent": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"dev": true,
"requires": {
"is-glob": "2.0.1"
@@ -15662,17 +15886,20 @@
},
"globals": {
"version": "9.18.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"dev": true
},
"graceful-fs": {
"version": "4.1.11",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
},
"handlebars": {
"version": "4.0.11",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
"dev": true,
"requires": {
"async": "1.5.2",
@@ -15683,7 +15910,8 @@
"dependencies": {
"source-map": {
"version": "0.4.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
"amdefine": "1.0.1"
@@ -15693,7 +15921,8 @@
},
"has-ansi": {
"version": "2.0.0",
- "bundled": true,
+ "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"
@@ -15701,22 +15930,26 @@
},
"has-flag": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
"dev": true
},
"hosted-git-info": {
"version": "2.5.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
"dev": true
},
"imurmurhash": {
"version": "0.1.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
"inflight": {
"version": "1.0.6",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "1.4.0",
@@ -15725,12 +15958,14 @@
},
"inherits": {
"version": "2.0.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"invariant": {
"version": "2.2.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
"dev": true,
"requires": {
"loose-envify": "1.3.1"
@@ -15738,22 +15973,26 @@
},
"invert-kv": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
"dev": true
},
"is-arrayish": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
"is-buffer": {
"version": "1.1.6",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
"is-builtin-module": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
"builtin-modules": "1.1.1"
@@ -15761,12 +16000,14 @@
},
"is-dotfile": {
"version": "1.0.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
"dev": true
},
"is-equal-shallow": {
"version": "0.1.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"dev": true,
"requires": {
"is-primitive": "2.0.0"
@@ -15774,17 +16015,20 @@
},
"is-extendable": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
"dev": true
},
"is-extglob": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
"dev": true
},
"is-finite": {
"version": "1.0.2",
- "bundled": true,
+ "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"
@@ -15792,7 +16036,8 @@
},
"is-fullwidth-code-point": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
"number-is-nan": "1.0.1"
@@ -15800,7 +16045,8 @@
},
"is-glob": {
"version": "2.0.1",
- "bundled": true,
+ "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"
@@ -15808,7 +16054,8 @@
},
"is-number": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
"kind-of": "3.2.2"
@@ -15816,37 +16063,44 @@
},
"is-posix-bracket": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
"dev": true
},
"is-primitive": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
"dev": true
},
"is-stream": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
"is-utf8": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
"isarray": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"isexe": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"isobject": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
"dev": true,
"requires": {
"isarray": "1.0.0"
@@ -15854,12 +16108,14 @@
},
"istanbul-lib-coverage": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz",
+ "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==",
"dev": true
},
"istanbul-lib-hook": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz",
+ "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==",
"dev": true,
"requires": {
"append-transform": "0.4.0"
@@ -15867,7 +16123,8 @@
},
"istanbul-lib-instrument": {
"version": "1.9.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz",
+ "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==",
"dev": true,
"requires": {
"babel-generator": "6.26.0",
@@ -15881,7 +16138,8 @@
},
"istanbul-lib-report": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz",
+ "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==",
"dev": true,
"requires": {
"istanbul-lib-coverage": "1.1.1",
@@ -15892,7 +16150,8 @@
"dependencies": {
"supports-color": {
"version": "3.2.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"dev": true,
"requires": {
"has-flag": "1.0.0"
@@ -15902,7 +16161,8 @@
},
"istanbul-lib-source-maps": {
"version": "1.2.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz",
+ "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==",
"dev": true,
"requires": {
"debug": "3.1.0",
@@ -15914,7 +16174,8 @@
"dependencies": {
"debug": {
"version": "3.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -15924,7 +16185,8 @@
},
"istanbul-reports": {
"version": "1.1.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz",
+ "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==",
"dev": true,
"requires": {
"handlebars": "4.0.11"
@@ -15932,17 +16194,20 @@
},
"js-tokens": {
"version": "3.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
},
"jsesc": {
"version": "1.3.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true
},
"kind-of": {
"version": "3.2.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
@@ -15950,13 +16215,15 @@
},
"lazy-cache": {
"version": "1.0.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
"dev": true,
"optional": true
},
"lcid": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": {
"invert-kv": "1.0.0"
@@ -15964,7 +16231,8 @@
},
"load-json-file": {
"version": "1.1.0",
- "bundled": true,
+ "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.11",
@@ -15976,7 +16244,8 @@
},
"locate-path": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"dev": true,
"requires": {
"p-locate": "2.0.0",
@@ -15985,24 +16254,28 @@
"dependencies": {
"path-exists": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
}
}
},
"lodash": {
"version": "4.17.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
"dev": true
},
"longest": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
"dev": true
},
"loose-envify": {
"version": "1.3.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
"dev": true,
"requires": {
"js-tokens": "3.0.2"
@@ -16010,7 +16283,8 @@
},
"lru-cache": {
"version": "4.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
"dev": true,
"requires": {
"pseudomap": "1.0.2",
@@ -16019,7 +16293,8 @@
},
"md5-hex": {
"version": "1.3.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz",
+ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=",
"dev": true,
"requires": {
"md5-o-matic": "0.1.1"
@@ -16027,12 +16302,14 @@
},
"md5-o-matic": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz",
+ "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=",
"dev": true
},
"mem": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
"dev": true,
"requires": {
"mimic-fn": "1.1.0"
@@ -16040,7 +16317,8 @@
},
"merge-source-map": {
"version": "1.0.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz",
+ "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=",
"dev": true,
"requires": {
"source-map": "0.5.7"
@@ -16048,7 +16326,8 @@
},
"micromatch": {
"version": "2.3.11",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"dev": true,
"requires": {
"arr-diff": "2.0.0",
@@ -16068,12 +16347,14 @@
},
"mimic-fn": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
+ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
"dev": true
},
"minimatch": {
"version": "3.0.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "1.1.8"
@@ -16081,12 +16362,14 @@
},
"minimist": {
"version": "0.0.8",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
"mkdirp": {
"version": "0.5.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
@@ -16094,12 +16377,14 @@
},
"ms": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"normalize-package-data": {
"version": "2.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"dev": true,
"requires": {
"hosted-git-info": "2.5.0",
@@ -16110,7 +16395,8 @@
},
"normalize-path": {
"version": "2.1.1",
- "bundled": true,
+ "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"
@@ -16118,7 +16404,8 @@
},
"npm-run-path": {
"version": "2.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
"requires": {
"path-key": "2.0.1"
@@ -16126,17 +16413,20 @@
},
"number-is-nan": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
"object-assign": {
"version": "4.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
"object.omit": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
"dev": true,
"requires": {
"for-own": "0.1.5",
@@ -16145,7 +16435,8 @@
},
"once": {
"version": "1.4.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1.0.2"
@@ -16153,7 +16444,8 @@
},
"optimist": {
"version": "0.6.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"dev": true,
"requires": {
"minimist": "0.0.8",
@@ -16162,12 +16454,14 @@
},
"os-homedir": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true
},
"os-locale": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
"dev": true,
"requires": {
"execa": "0.7.0",
@@ -16177,17 +16471,20 @@
},
"p-finally": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
"p-limit": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
+ "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
"dev": true
},
"p-locate": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"dev": true,
"requires": {
"p-limit": "1.1.0"
@@ -16195,7 +16492,8 @@
},
"parse-glob": {
"version": "3.0.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"dev": true,
"requires": {
"glob-base": "0.3.0",
@@ -16206,7 +16504,8 @@
},
"parse-json": {
"version": "2.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "1.3.1"
@@ -16214,7 +16513,8 @@
},
"path-exists": {
"version": "2.1.0",
- "bundled": true,
+ "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"
@@ -16222,22 +16522,26 @@
},
"path-is-absolute": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-key": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
"path-parse": {
"version": "1.0.5",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
"dev": true
},
"path-type": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
@@ -16247,17 +16551,20 @@
},
"pify": {
"version": "2.3.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie": {
"version": "2.0.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "2.0.4"
@@ -16265,7 +16572,8 @@
},
"pkg-dir": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
"dev": true,
"requires": {
"find-up": "1.1.2"
@@ -16273,7 +16581,8 @@
"dependencies": {
"find-up": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
"path-exists": "2.1.0",
@@ -16284,17 +16593,20 @@
},
"preserve": {
"version": "0.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
"dev": true
},
"pseudomap": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"randomatic": {
"version": "1.1.7",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
"dev": true,
"requires": {
"is-number": "3.0.0",
@@ -16303,7 +16615,8 @@
"dependencies": {
"is-number": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
"kind-of": "3.2.2"
@@ -16311,7 +16624,8 @@
"dependencies": {
"kind-of": {
"version": "3.2.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
@@ -16321,7 +16635,8 @@
},
"kind-of": {
"version": "4.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
@@ -16331,7 +16646,8 @@
},
"read-pkg": {
"version": "1.1.0",
- "bundled": true,
+ "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",
@@ -16341,7 +16657,8 @@
},
"read-pkg-up": {
"version": "1.0.1",
- "bundled": true,
+ "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",
@@ -16350,7 +16667,8 @@
"dependencies": {
"find-up": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
"path-exists": "2.1.0",
@@ -16361,12 +16679,14 @@
},
"regenerator-runtime": {
"version": "0.11.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
"dev": true
},
"regex-cache": {
"version": "0.4.4",
- "bundled": true,
+ "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"
@@ -16374,22 +16694,26 @@
},
"remove-trailing-separator": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
"repeat-element": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
"dev": true
},
"repeat-string": {
"version": "1.6.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
"repeating": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
"is-finite": "1.0.2"
@@ -16397,22 +16721,26 @@
},
"require-directory": {
"version": "2.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
"require-main-filename": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
},
"resolve-from": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
+ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=",
"dev": true
},
"right-align": {
"version": "0.1.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
"dev": true,
"optional": true,
"requires": {
@@ -16421,7 +16749,8 @@
},
"rimraf": {
"version": "2.6.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
"glob": "7.1.2"
@@ -16429,17 +16758,20 @@
},
"semver": {
"version": "5.4.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
"dev": true
},
"set-blocking": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
"shebang-command": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"requires": {
"shebang-regex": "1.0.0"
@@ -16447,27 +16779,32 @@
},
"shebang-regex": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
"signal-exit": {
"version": "3.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
"slide": {
"version": "1.1.6",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
"dev": true
},
"source-map": {
"version": "0.5.7",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
},
"spawn-wrap": {
"version": "1.4.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz",
+ "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==",
"dev": true,
"requires": {
"foreground-child": "1.5.6",
@@ -16480,7 +16817,8 @@
},
"spdx-correct": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
"dev": true,
"requires": {
"spdx-license-ids": "1.2.2"
@@ -16488,17 +16826,20 @@
},
"spdx-expression-parse": {
"version": "1.0.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
"dev": true
},
"spdx-license-ids": {
"version": "1.2.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
"dev": true
},
"string-width": {
"version": "2.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
@@ -16507,17 +16848,20 @@
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"strip-ansi": {
"version": "4.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "3.0.0"
@@ -16527,7 +16871,8 @@
},
"strip-ansi": {
"version": "3.0.1",
- "bundled": true,
+ "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"
@@ -16535,7 +16880,8 @@
},
"strip-bom": {
"version": "2.0.0",
- "bundled": true,
+ "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"
@@ -16543,17 +16889,20 @@
},
"strip-eof": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
"supports-color": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
},
"test-exclude": {
"version": "4.1.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz",
+ "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==",
"dev": true,
"requires": {
"arrify": "1.0.1",
@@ -16565,17 +16914,20 @@
},
"to-fast-properties": {
"version": "1.0.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true
},
"trim-right": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
"dev": true
},
"uglify-js": {
"version": "2.8.29",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
"dev": true,
"optional": true,
"requires": {
@@ -16586,7 +16938,8 @@
"dependencies": {
"yargs": {
"version": "3.10.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
"dev": true,
"optional": true,
"requires": {
@@ -16600,13 +16953,15 @@
},
"uglify-to-browserify": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
"dev": true,
"optional": true
},
"validate-npm-package-license": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
"dev": true,
"requires": {
"spdx-correct": "1.0.2",
@@ -16615,7 +16970,8 @@
},
"which": {
"version": "1.3.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
"dev": true,
"requires": {
"isexe": "2.0.0"
@@ -16623,23 +16979,27 @@
},
"which-module": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
"window-size": {
"version": "0.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
"dev": true,
"optional": true
},
"wordwrap": {
"version": "0.0.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
"dev": true
},
"wrap-ansi": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
"string-width": "1.0.2",
@@ -16648,7 +17008,8 @@
"dependencies": {
"string-width": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
"code-point-at": "1.1.0",
@@ -16660,12 +17021,14 @@
},
"wrappy": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"write-file-atomic": {
"version": "1.3.4",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
+ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
@@ -16675,17 +17038,20 @@
},
"y18n": {
"version": "3.2.1",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
"dev": true
},
"yallist": {
"version": "2.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
"yargs": {
"version": "10.0.3",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz",
+ "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",
"dev": true,
"requires": {
"cliui": "3.2.0",
@@ -16704,7 +17070,8 @@
"dependencies": {
"cliui": {
"version": "3.2.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": {
"string-width": "1.0.2",
@@ -16714,7 +17081,8 @@
"dependencies": {
"string-width": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
"code-point-at": "1.1.0",
@@ -16728,7 +17096,8 @@
},
"yargs-parser": {
"version": "8.0.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz",
+ "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=",
"dev": true,
"requires": {
"camelcase": "4.1.0"
@@ -16736,7 +17105,8 @@
"dependencies": {
"camelcase": {
"version": "4.1.0",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
"dev": true
}
}
@@ -17684,7 +18054,6 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz",
"integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=",
- "dev": true,
"requires": {
"irregular-plurals": "1.4.0"
}
@@ -21016,6 +21385,16 @@
"safe-buffer": "5.1.1"
}
},
+ "stringify-object": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz",
+ "integrity": "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==",
+ "requires": {
+ "get-own-enumerable-property-symbols": "2.0.1",
+ "is-obj": "1.0.1",
+ "is-regexp": "1.0.0"
+ }
+ },
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
@@ -21622,6 +22001,27 @@
"integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
"dev": true
},
+ "sw-controller": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sw-controller/-/sw-controller-1.0.3.tgz",
+ "integrity": "sha512-q+rS4v7kj1MPDxFRyl8GAICw/BbQzewd5HhVDNIPLnyvKtcpxi26fVXReUeUMRl4CRL/fX56PvKKqxtKhAaMpg==",
+ "requires": {
+ "babel-preset-es2015": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babelify": "7.3.0"
+ },
+ "dependencies": {
+ "babelify": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz",
+ "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=",
+ "requires": {
+ "babel-core": "6.26.0",
+ "object-assign": "4.1.1"
+ }
+ }
+ }
+ },
"sw-stream": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/sw-stream/-/sw-stream-2.0.2.tgz",
@@ -22104,6 +22504,14 @@
"dev": true,
"optional": true
},
+ "tildify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
+ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
"time-stamp": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
diff --git a/package.json b/package.json
index 2a8c122e1..51f481b36 100644
--- a/package.json
+++ b/package.json
@@ -4,14 +4,9 @@
"public": false,
"private": true,
"scripts": {
- "start": "npm run dev",
- "dev": "gulp dev --debug",
- "ui": "npm run test:flat:build:states && beefy development/ui-dev.js:bundle.js --live --open --index=./development/index.html --cwd ./",
- "mock": "beefy development/mock-dev.js:bundle.js --live --open --index=./development/index.html --cwd ./",
- "watch": "mocha watch --recursive \"test/unit/**/*.js\"",
- "mascara": "gulp build && cross-env METAMASK_DEBUG=true node ./mascara/example/server",
- "dist": "npm run dist:clear && npm install && gulp dist",
- "dist:clear": "rm -rf node_modules/eth-contract-metadata && rm -rf node_modules/eth-phishing-detect",
+ "start": "gulp dev:extension",
+ "mascara": "gulp dev:mascara & cross-env METAMASK_DEBUG=true node ./mascara/example/server",
+ "dist": "gulp dist",
"test": "npm run test:unit && npm run test:integration && npm run lint",
"test:unit": "cross-env METAMASK_ENV=test mocha --exit --require babel-core/register --require test/helper.js --recursive \"test/unit/**/*.js\"",
"test:single": "cross-env METAMASK_ENV=test mocha --require test/helper.js",
@@ -45,6 +40,9 @@
"sentry:upload:maps": "sentry-cli releases --org 'metamask' --project 'metamask' files $RELEASE upload-sourcemaps ./dist/sourcemaps/ --url-prefix 'sourcemaps' --rewrite",
"lint": "gulp lint",
"lint:fix": "gulp lint:fix",
+ "ui": "npm run test:flat:build:states && beefy development/ui-dev.js:bundle.js --live --open --index=./development/index.html --cwd ./",
+ "mock": "beefy development/mock-dev.js:bundle.js --live --open --index=./development/index.html --cwd ./",
+ "watch": "mocha watch --recursive \"test/unit/**/*.js\"",
"disc": "gulp disc --debug",
"announce": "node development/announcer.js",
"version:bump": "node development/run-version-bump.js",
@@ -82,7 +80,6 @@
"browserify-derequire": "^0.9.4",
"browserify-unibabel": "^3.0.0",
"classnames": "^2.2.5",
- "client-sw-ready-event": "^3.3.0",
"clone": "^2.1.1",
"copy-to-clipboard": "^3.0.8",
"debounce": "^1.0.0",
@@ -122,6 +119,7 @@
"fuse.js": "^3.2.0",
"gulp": "github:gulpjs/gulp#4.0",
"gulp-autoprefixer": "^5.0.0",
+ "gulp-debug": "^3.2.0",
"gulp-eslint": "^4.0.0",
"gulp-sass": "^3.1.0",
"hat": "0.0.3",
@@ -183,7 +181,8 @@
"semaphore": "^1.0.5",
"semver": "^5.4.1",
"shallow-copy": "0.0.1",
- "sw-stream": "^2.0.0",
+ "sw-controller": "^1.0.3",
+ "sw-stream": "^2.0.2",
"textarea-caret": "^3.0.1",
"through2": "^2.0.3",
"valid-url": "^1.0.9",
diff --git a/test/e2e/metamask.spec.js b/test/e2e/metamask.spec.js
index 20e23e2ea..e0ff2a57e 100644
--- a/test/e2e/metamask.spec.js
+++ b/test/e2e/metamask.spec.js
@@ -44,7 +44,7 @@ describe('Metamask popup page', function () {
it('should match title', async () => {
const title = await driver.getTitle()
- assert.equal(title, 'MetaMask Plugin', 'title matches MetaMask Plugin')
+ assert.equal(title, 'MetaMask', 'title matches MetaMask')
})
it('should show privacy notice', async () => {
diff --git a/ui/app/app.js b/ui/app/app.js
index ea88f3039..0b7a7a1e0 100644
--- a/ui/app/app.js
+++ b/ui/app/app.js
@@ -294,7 +294,7 @@ App.prototype.renderAppBar = function () {
h('img.metafox-icon', {
height: 42,
width: 42,
- src: '/images/metamask-fox.svg',
+ src: './images/metamask-fox.svg',
}),
// metamask name
diff --git a/ui/app/components/identicon.js b/ui/app/components/identicon.js
index b803b7ceb..7cc5a4de0 100644
--- a/ui/app/components/identicon.js
+++ b/ui/app/components/identicon.js
@@ -47,7 +47,7 @@ IdenticonComponent.prototype.render = function () {
)
: (
h('img.balance-icon', {
- src: '../images/eth_logo.svg',
+ src: './images/eth_logo.svg',
style: {
height: diameter,
width: diameter,
diff --git a/ui/app/components/modals/deposit-ether-modal.js b/ui/app/components/modals/deposit-ether-modal.js
index 8854d258f..0dc611f50 100644
--- a/ui/app/components/modals/deposit-ether-modal.js
+++ b/ui/app/components/modals/deposit-ether-modal.js
@@ -150,7 +150,7 @@ DepositEtherModal.prototype.render = function () {
this.renderRow({
logo: h('img.deposit-ether-modal__logo', {
- src: '../../../images/deposit-eth.svg',
+ src: './images/deposit-eth.svg',
}),
title: DIRECT_DEPOSIT_ROW_TITLE,
text: DIRECT_DEPOSIT_ROW_TEXT,
@@ -171,7 +171,7 @@ DepositEtherModal.prototype.render = function () {
this.renderRow({
logo: h('div.deposit-ether-modal__logo', {
style: {
- backgroundImage: 'url(\'../../../images/coinbase logo.png\')',
+ backgroundImage: 'url(\'./images/coinbase logo.png\')',
height: '40px',
},
}),
@@ -185,7 +185,7 @@ DepositEtherModal.prototype.render = function () {
this.renderRow({
logo: h('div.deposit-ether-modal__logo', {
style: {
- backgroundImage: 'url(\'../../../images/shapeshift logo.png\')',
+ backgroundImage: 'url(\'./images/shapeshift logo.png\')',
},
}),
title: SHAPESHIFT_ROW_TITLE,
diff --git a/ui/app/components/sender-to-recipient.js b/ui/app/components/sender-to-recipient.js
index 6b9cd32ea..9cef8e401 100644
--- a/ui/app/components/sender-to-recipient.js
+++ b/ui/app/components/sender-to-recipient.js
@@ -46,7 +46,7 @@ class SenderToRecipient extends Component {
h('img', {
height: 15,
width: 15,
- src: '/images/arrow-right.svg',
+ src: './images/arrow-right.svg',
}),
]),
]),
diff --git a/ui/app/css/itcss/settings/typography.scss b/ui/app/css/itcss/settings/typography.scss
index 8a56d9c6c..18c444c8a 100644
--- a/ui/app/css/itcss/settings/typography.scss
+++ b/ui/app/css/itcss/settings/typography.scss
@@ -1,4 +1,4 @@
-@import url('/fonts/Font_Awesome/font-awesome.min.css');
+@import url('./fonts/Font_Awesome/font-awesome.min.css');
@font-face {
font-family: 'Roboto';
@@ -338,8 +338,8 @@
@font-face {
font-family: 'Montserrat Regular';
- src: url('/fonts/Montserrat/Montserrat-Regular.woff') format('woff');
- src: url('/fonts/Montserrat/Montserrat-Regular.ttf') format('truetype');
+ src: url('./fonts/Montserrat/Montserrat-Regular.woff') format('woff');
+ src: url('./fonts/Montserrat/Montserrat-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
font-size: 'small';
@@ -347,59 +347,59 @@
@font-face {
font-family: 'Montserrat Bold';
- src: url('/fonts/Montserrat/Montserrat-Bold.woff') format('woff');
- src: url('/fonts/Montserrat/Montserrat-Bold.ttf') format('truetype');
+ src: url('./fonts/Montserrat/Montserrat-Bold.woff') format('woff');
+ src: url('./fonts/Montserrat/Montserrat-Bold.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Montserrat Light';
- src: url('/fonts/Montserrat/Montserrat-Light.woff') format('woff');
- src: url('/fonts/Montserrat/Montserrat-Light.ttf') format('truetype');
+ src: url('./fonts/Montserrat/Montserrat-Light.woff') format('woff');
+ src: url('./fonts/Montserrat/Montserrat-Light.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Montserrat UltraLight';
- src: url('/fonts/Montserrat/Montserrat-UltraLight.woff') format('woff');
- src: url('/fonts/Montserrat/Montserrat-UltraLight.ttf') format('truetype');
+ src: url('./fonts/Montserrat/Montserrat-UltraLight.woff') format('woff');
+ src: url('./fonts/Montserrat/Montserrat-UltraLight.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'DIN OT';
- src: url('/fonts/DIN_OT/DINOT-2.otf') format('opentype');
+ src: url('./fonts/DIN_OT/DINOT-2.otf') format('opentype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'DIN OT Light';
- src: url('/fonts/DIN_OT/DINOT-2.otf') format('opentype');
+ src: url('./fonts/DIN_OT/DINOT-2.otf') format('opentype');
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'DIN NEXT';
- src: url('/fonts/DIN Next/DIN Next W01 Regular.otf') format('opentype');
+ src: url('./fonts/DIN Next/DIN Next W01 Regular.otf') format('opentype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'DIN NEXT Light';
- src: url('/fonts/DIN Next/DIN Next W10 Light.otf') format('opentype');
+ src: url('./fonts/DIN Next/DIN Next W10 Light.otf') format('opentype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Lato';
- src: url('/fonts/Lato/Lato-Regular.ttf') format('truetype');
+ src: url('./fonts/Lato/Lato-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
diff --git a/ui/app/settings.js b/ui/app/settings.js
index e91ac7340..3aa7b9c6b 100644
--- a/ui/app/settings.js
+++ b/ui/app/settings.js
@@ -108,11 +108,12 @@ class Settings extends Component {
renderCurrentLocale () {
const { updateCurrentLocale, currentLocale } = this.props
const currentLocaleMeta = locales.find(locale => locale.code === currentLocale)
+ const currentLocaleName = currentLocaleMeta ? currentLocaleMeta.name : ''
return h('div.settings__content-row', [
h('div.settings__content-item', [
h('span', 'Current Language'),
- h('span.settings__content-description', `${currentLocaleMeta.name}`),
+ h('span.settings__content-description', `${currentLocaleName}`),
]),
h('div.settings__content-item', [
h('div.settings__content-item-col', [
diff --git a/ui/i18n-helper.js b/ui/i18n-helper.js
index 3ce24ddfb..db2fd2dc4 100644
--- a/ui/i18n-helper.js
+++ b/ui/i18n-helper.js
@@ -27,7 +27,7 @@ const getMessage = (locale, key, substitutions) => {
function fetchLocale (localeName) {
return new Promise((resolve, reject) => {
- return fetch(`/_locales/${localeName}/messages.json`)
+ return fetch(`./_locales/${localeName}/messages.json`)
.then(response => response.json())
.then(
locale => resolve(locale),