From 2b12a89cc3f4322b11673ba71981156b70faa0e1 Mon Sep 17 00:00:00 2001 From: Sam Macbeth Date: Mon, 26 Mar 2018 15:33:39 +0200 Subject: [PATCH 1/2] Create pipeline steps to control whitelisting of antitracking and adblocker from Ghostery side --- src/background.js | 56 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/src/background.js b/src/background.js index 61fee0dd0..2382bd142 100644 --- a/src/background.js +++ b/src/background.js @@ -943,8 +943,9 @@ function initialiseWebRequestPipeline() { * * @return {boolean} */ -function isWhitelisted(url) { - return globals.SESSION.paused_blocking || events.policy.getSitePolicy(url) === 2; +function isWhitelisted(state) { + const url = state.sourceUrl; + return globals.SESSION.paused_blocking || events.policy.getSitePolicy(url) === 2 || state.ghosteryWhitelisted; } // Set listener for 'enabled' event for Antitracking module which replaces @@ -954,8 +955,40 @@ function isWhitelisted(url) { // @memberOf Background antitracking.on('enabled', () => { antitracking.isReady().then(() => { - // TODO: this should be exposed as an action from the antitracking module - antitracking.background.attrack.urlWhitelist.isWhitelisted = hostname => isWhitelisted(`http://${hostname}/`); + // remove Cliqz-side whitelisting steps and replace with ghostery ones. + const replacedSteps = ['onBeforeSendHeaders', 'onHeadersReceived'].map(stage => + Promise.all([ + antitracking.action('removePipelineStep', stage, 'checkIsCookieWhitelisted'), + antitracking.action('addPipelineStep', stage, { + name: 'checkGhosteryWhitelisted', + spec: 'break', + fn: (state) => { + if (isWhitelisted(state)) { + const step = stage === 'onHeadersReceived' ? 'set_cookie' : 'cookie'; + state.incrementStat(`${step}_allow_whitelisted`); + return false; + } + return true; + }, + before: ['cookieContext.checkCookieTrust'], + }) + ]) + ).concat([ + antitracking.action('removePipelineStep', 'onBeforeRequest', 'checkSourceWhitelisted'), + antitracking.action('addPipelineStep', 'onBeforeRequest', { + name: 'checkGhosteryWhitelisted', + spec: 'break', + fn: (state) => { + if (isWhitelisted(state)) { + state.incrementStat('ghostery_whitelisted'); + return false; + } + return true; + }, + before: ['checkShouldBlock'], + }), + ]); + return Promise.all(replacedSteps); }); }); @@ -963,10 +996,17 @@ antitracking.on('enabled', () => { // Set listener for 'enabled' event for Adblock module // which replaces Adblock isWhitelisted method with Ghostery's isWhitelisted method adblocker.on('enabled', () => { - adblocker.isReady().then(() => { - // TODO: this should be exposed as an action from the adblocker module - adblocker.background.adb.urlWhitelist.isWhitelisted = isWhitelisted; - }); + adblocker.isReady().then(() => + Promise.all([ + adblocker.action('removePipelineStep', 'checkWhitelist'), + adblocker.action('addPipelineStep', { + name: 'checkGhosteryWhitelist', + spec: 'break', + fn: state => !isWhitelisted(state), + before: ['checkBlocklist'] + }) + ]) + ); }); offers.on('enabled', () => { From 05ceff9d2c320f7972222859451edf5cc6a2d73d Mon Sep 17 00:00:00 2001 From: Sam Macbeth Date: Tue, 3 Apr 2018 16:27:47 +0200 Subject: [PATCH 2/2] Update Cliqz bundle to 1.26.1 --- package-lock.json | 1125 +++++++-------------------------------------- package.json | 2 +- 2 files changed, 173 insertions(+), 954 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09d18d89a..06edad390 100644 --- a/package-lock.json +++ b/package-lock.json @@ -191,11 +191,6 @@ } } }, - "@cliqz-oss/dexie": { - "version": "2.0.1-security-error-fix", - "resolved": "https://registry.npmjs.org/@cliqz-oss/dexie/-/dexie-2.0.1-security-error-fix.tgz", - "integrity": "sha512-wdqUrGfvVt3jwUcJI+YayBcbFzjof6KCTpi7WfYfejuW/i3IpCFori7xOJLRo/rEj+2V9+ra38lANDMBTwDtkg==" - }, "@cliqz-oss/pouchdb": { "version": "6.3.4-security-error-fix-2", "resolved": "https://registry.npmjs.org/@cliqz-oss/pouchdb/-/pouchdb-6.3.4-security-error-fix-2.tgz", @@ -222,6 +217,30 @@ "vuvuzela": "1.0.3" } }, + "@cliqz-oss/systemjs-builder": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@cliqz-oss/systemjs-builder/-/systemjs-builder-0.16.13.tgz", + "integrity": "sha512-k3fYWo2O0dQi1+cpSowWy0LxWULlW2sZs/+wM15USnDuVAMFwGP1HNHzPdrcGaWYrmNcJjmquiq6dFn0hzTx6g==", + "requires": { + "babel-core": "6.26.0", + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-amd-system-wrapper": "0.3.7", + "babel-plugin-transform-cjs-system-wrapper": "0.6.2", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-global-system-wrapper": "0.3.4", + "babel-plugin-transform-system-register": "0.0.1", + "bluebird": "3.5.1", + "data-uri-to-buffer": "0.0.4", + "es6-template-strings": "2.0.1", + "glob": "7.1.2", + "mkdirp": "0.5.1", + "rollup": "0.36.4", + "source-map": "0.5.7", + "systemjs": "0.19.47", + "traceur": "0.0.105", + "uglify-js": "2.8.29" + } + }, "@cliqz/adblocker": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/@cliqz/adblocker/-/adblocker-0.1.7.tgz", @@ -230,20 +249,6 @@ "tldjs": "https://github.com/remusao/tld.js/releases/download/v2.2.0/tldjs-2.2.0.tgz" } }, - "@cliqz/indexeddbshim": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@cliqz/indexeddbshim/-/indexeddbshim-3.4.1.tgz", - "integrity": "sha512-LTUk0Yw0edGPRDQ2SGIGxlqmgBOpKUgb4rN1Ewn0y8cCDQwi1+sT+dAc1gQ1WU2/PRcVnRE8Wf1GtxS+E60PdQ==", - "requires": { - "babel-polyfill": "6.26.0", - "eventtargeter": "0.3.1", - "sync-promise": "git+https://github.com/brettz9/sync-promise.git#25845a49a00aa2d2c985a5149b97c86a1fcdc75a", - "typeson": "5.7.1", - "typeson-registry": "1.0.0-alpha.18", - "unicode-9.0.0": "0.7.4", - "websql": "git+https://github.com/brettz9/node-websql.git#c9828a34c92eced64858fc19151ec099fd60e8dd" - } - }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", @@ -2095,11 +2100,6 @@ } } }, - "base64-arraybuffer-es6": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.3.1.tgz", - "integrity": "sha512-TrhBheudYaff9adiTAqjSScjvtmClQ4vF9l4cqkPNkVsA11m4/NRdH4LkZ/tAMmpzzwfI20BXnJ/PTtafECCNA==" - }, "base64-js": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", @@ -2356,21 +2356,20 @@ "dev": true }, "browser-core": { - "version": "https://s3.amazonaws.com/cdncliqz/update/edge/ghostery/v7.24/7.24.3.tgz", - "integrity": "sha512-YbGfLjHYLr8/hlKKRNoJCTbqq1ifkszIk/CFUVQy0N1gQqvCfHYNHJB3vcX38wG/vbgSrwj/hxZjpdygTVkDHQ==", + "version": "https://s3.amazonaws.com/cdncliqz/update/edge/ghostery/v7.26/1.26.1.tgz", + "integrity": "sha1-fraEQierwRe22FYCQ7pwpLxGJG8=", "requires": { - "@cliqz-oss/dexie": "2.0.1-security-error-fix", + "@cliqz-oss/dexie": "2.0.3", "@cliqz-oss/pouchdb": "6.3.4-security-error-fix-2", + "@cliqz-oss/systemjs-builder": "0.16.13", "@cliqz/adblocker": "0.1.7", - "@cliqz/indexeddbshim": "3.4.1", "BigInt": "5.5.3", "ajv": "5.5.2", "babel-polyfill": "6.26.0", - "cliqz-history": "https://github.com/cliqz-oss/cliqz-history/releases/download/1.0.4/cliqz-history-1.0.4.tgz", + "cliqz-history": "https://github.com/cliqz-oss/cliqz-history/releases/download/1.0.6/cliqz-history-1.0.6.tgz", "cron": "1.2.1", "cron-parser": "2.4.0", "deep-equal": "1.0.1", - "dexie": "2.0.1", "ember-inflector": "2.0.1", "es6-micro-loader": "github:cliqz-oss/es6-micro-loader#145e7bdbd8be2f4582096175482b1411eb56ec79", "fast-url-parser": "1.1.2", @@ -2379,7 +2378,7 @@ "global": "4.3.2", "hammerjs": "2.0.8", "handlebars": "4.0.11", - "jquery": "2.2.4", + "jquery": "3.0.0", "js-md5": "0.7.3", "jsep": "0.3.0", "mathjs": "3.17.0", @@ -2399,18 +2398,33 @@ "sanitize-filename": "1.6.1", "simple-statistics": "5.2.1", "spanan": "1.3.0", - "systemjs-builder": "0.16.12", "tablesorter": "2.29.2", "text-encoding": "0.6.4", - "tldjs": "https://github.com/remusao/tld.js/releases/download/v2.2.0/tldjs-2.2.0.tgz", + "tldjs": "2.3.1", + "ua-parser-js": "0.7.12", "untildify": "3.0.2", "url-pattern": "1.0.3", "useragent.js": "0.5.6", "xhr2": "0.1.4", - "ytdl-core": "0.18.7", + "ytdl-core": "0.20.2", "yuidoc-bootstrap-theme": "1.0.6" }, "dependencies": { + "@cliqz-oss/dexie": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@cliqz-oss/dexie/-/dexie-2.0.3.tgz", + "integrity": "sha512-XHXySmU+9aqlOQkxCE9e0huUrxHS5I63iZOeP2vORSRu4s5mCmVIUZNt0/AnxkMUMorHTWF0eHGnn+p0VAwOBg==" + }, + "cliqz-history": { + "version": "https://github.com/cliqz-oss/cliqz-history/releases/download/1.0.6/cliqz-history-1.0.6.tgz", + "integrity": "sha1-oE9q/GG20liypXNUCLHb1i1peZY=" + }, + "es6-micro-loader": { + "version": "github:cliqz-oss/es6-micro-loader#145e7bdbd8be2f4582096175482b1411eb56ec79", + "requires": { + "es6-promise": "1.0.0" + } + }, "fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", @@ -2421,6 +2435,11 @@ "universalify": "0.1.1" } }, + "jquery": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz", + "integrity": "sha1-laKpVBKRqfgZ4Bb4W6JHEW0D5Ks=" + }, "jsonfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", @@ -2474,6 +2493,30 @@ } } } + }, + "tldjs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tldjs/-/tldjs-2.3.1.tgz", + "integrity": "sha512-W/YVH/QczLUxVjnQhFC61Iq232NWu3TqDdO0S/MtXVz4xybejBov4ud+CIwN9aYqjOecEqIy0PscGkwpG9ZyTw==", + "requires": { + "punycode": "1.4.1" + } + }, + "ua-parser-js": { + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.12.tgz", + "integrity": "sha1-BMgamb3V3FImPqKdJMa/jUgYpLs=" + }, + "ytdl-core": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-0.20.2.tgz", + "integrity": "sha512-7AAIdhVRJgS3HulFCdT4C4G8FpeKouFinMCa8YA2cvKmEjXoIiNcMJmtnOI1VJil+l57K1Ly4MzEKlvR6H7C0g==", + "requires": { + "html-entities": "1.2.1", + "m3u8stream": "0.2.2", + "miniget": "1.2.0", + "sax": "1.2.4" + } } } }, @@ -3249,10 +3292,6 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "cliqz-history": { - "version": "https://github.com/cliqz-oss/cliqz-history/releases/download/1.0.4/cliqz-history-1.0.4.tgz", - "integrity": "sha512-NwAmVibnVT7ah2yjQsKxKFMOrmltsuk2k+bbF+9gFNhCYKfWk4eqLa0KTU3ZkQr7JnPGJ5lG17U+6luWBjcLgg==" - }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -4367,11 +4406,6 @@ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, - "dexie": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dexie/-/dexie-2.0.1.tgz", - "integrity": "sha1-ptxOYHRhxNpfk0YhkXoqiTmhjpc=" - }, "dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -4848,12 +4882,6 @@ "es6-symbol": "3.1.1" } }, - "es6-micro-loader": { - "version": "github:cliqz-oss/es6-micro-loader#145e7bdbd8be2f4582096175482b1411eb56ec79", - "requires": { - "es6-promise": "1.0.0" - } - }, "es6-promise": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-1.0.0.tgz", @@ -5331,11 +5359,6 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, - "eventtargeter": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/eventtargeter/-/eventtargeter-0.3.1.tgz", - "integrity": "sha512-iJgWNy80h+T7fMhWojSfMNvZHLOa2347uyKv/uwb2LQTT4tEGz8075qrK8PiK/IvjPei24OZ9s2sY/Hd4E9Kkg==" - }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -10453,7 +10476,8 @@ "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true }, "lodash.tail": { "version": "4.1.1", @@ -11672,11 +11696,6 @@ } } }, - "noop-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/noop-fn/-/noop-fn-1.0.0.tgz", - "integrity": "sha1-XzPUfxPSFQ35PgywNmmemC94/78=" - }, "noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", @@ -13023,11 +13042,6 @@ "uniqs": "2.0.0" } }, - "pouchdb-collections": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-1.0.1.tgz", - "integrity": "sha1-/mOhfal3YRq+98uAJssalVP9g1k=" - }, "prebuild": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/prebuild/-/prebuild-4.5.0.tgz", @@ -15264,828 +15278,111 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" }, - "sqlite3": { - "version": "3.1.13", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-3.1.13.tgz", - "integrity": "sha512-JxXKPJnkZ6NuHRojq+g2WXWBt3M1G9sjZaYiHEWSTGijDM3cwju/0T2XbWqMXFmPqDgw+iB7zKQvnns4bvzXlw==", + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.38" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true - }, "assert-plus": { - "version": "0.2.0", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true - }, - "balanced-match": { "version": "1.0.0", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "co": { - "version": "4.6.0", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "delayed-stream": "1.0.0" + "is-descriptor": "0.1.6" } }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { - "boom": "2.10.1" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "dashdash": { - "version": "1.14.1", - "bundled": true, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "kind-of": "3.2.2" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, - "debug": { - "version": "2.6.9", - "bundled": true, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.4", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } - } - }, - "mime-db": { - "version": "1.30.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.17", - "bundled": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=" - }, - "node-pre-gyp": { - "version": "0.6.38", - "bundled": true, - "requires": { - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.2", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.4.1", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.4.0", - "bundled": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "readable-stream": { - "version": "2.3.3", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "semver": { - "version": "5.4.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.1", - "bundled": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.3", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.3", - "bundled": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.1.0", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, - "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -16400,9 +15697,6 @@ "resolved": "https://registry.npmjs.org/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz", "integrity": "sha512-W31+GLiBmU/ZR02Ii0mVZICuNEN9daZ63xZMPDsYgPgNjMtg+atqLEGI7PPI936jYSQZxoLb/63xos8Adrx4Eg==" }, - "sync-promise": { - "version": "git+https://github.com/brettz9/sync-promise.git#25845a49a00aa2d2c985a5149b97c86a1fcdc75a" - }, "systemjs": { "version": "0.19.47", "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.47.tgz", @@ -16411,30 +15705,6 @@ "when": "3.7.8" } }, - "systemjs-builder": { - "version": "0.16.12", - "resolved": "https://registry.npmjs.org/systemjs-builder/-/systemjs-builder-0.16.12.tgz", - "integrity": "sha512-E+INOPzUsi1VpXat3GYDKl1Xap3Acv3Bw6KmRC9TdpfdJnTk6Jh5K07DdM8P+LEPXZaLZvTaaN/5q2i+1FD1vA==", - "requires": { - "babel-core": "6.26.0", - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-amd-system-wrapper": "0.3.7", - "babel-plugin-transform-cjs-system-wrapper": "0.6.2", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-global-system-wrapper": "0.3.4", - "babel-plugin-transform-system-register": "0.0.1", - "bluebird": "3.5.1", - "data-uri-to-buffer": "0.0.4", - "es6-template-strings": "2.0.1", - "glob": "7.1.2", - "mkdirp": "0.5.1", - "rollup": "0.36.4", - "source-map": "0.5.7", - "systemjs": "0.19.47", - "traceur": "0.0.105", - "uglify-js": "2.8.29" - } - }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", @@ -16983,11 +16253,6 @@ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.0.tgz", "integrity": "sha1-utMnrbGAS0KiMa+nQVMr2ITNCa0=" }, - "tiny-queue": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-queue/-/tiny-queue-0.2.1.tgz", - "integrity": "sha1-JaZ/LG4lOyypQZd7XvdELvl6YEY=" - }, "tldjs": { "version": "https://github.com/remusao/tld.js/releases/download/v2.2.0/tldjs-2.2.0.tgz", "integrity": "sha512-ZqE0+8haN/FXKFhCi5q+tcGEEolLbNRp1jg1DZf651bQUZ9JakYjZAglhdZw/wcGjni0xEGM2P0VwlLeBjlmHw==", @@ -17171,6 +16436,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, "requires": { "punycode": "2.1.0" }, @@ -17178,7 +16444,8 @@ "punycode": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true } } }, @@ -17373,22 +16640,6 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "typeson": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/typeson/-/typeson-5.7.1.tgz", - "integrity": "sha512-tVC1gcpUJl9R2uPE6xWDqeZ5+bLYI9deY5MyvDnSTcQVggktcqir67PmjTaq8TWC0WHPsLTLe0vMYtKAo8NzVQ==" - }, - "typeson-registry": { - "version": "1.0.0-alpha.18", - "resolved": "https://registry.npmjs.org/typeson-registry/-/typeson-registry-1.0.0-alpha.18.tgz", - "integrity": "sha512-/iqkwdB7DbmVHN31l6Y08m/BJHB0ZlyuyaDudmQVenU94QxSd8Bf+8UGqq0/LEWMRstnQC0Cbmn9qvcOdevIRQ==", - "requires": { - "base64-arraybuffer-es6": "0.3.1", - "typeson": "5.7.1", - "uuid": "3.2.1", - "whatwg-url": "6.4.0" - } - }, "ua-parser-js": { "version": "0.7.17", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", @@ -17509,11 +16760,6 @@ "util-deprecate": "1.0.2" } }, - "unicode-9.0.0": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/unicode-9.0.0/-/unicode-9.0.0-0.7.4.tgz", - "integrity": "sha1-bf5a3TXC6m6E3YwnK22zGKXkDp4=" - }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -18007,7 +17253,8 @@ "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true }, "webpack": { "version": "4.5.0", @@ -18620,24 +17867,6 @@ } } }, - "websql": { - "version": "git+https://github.com/brettz9/node-websql.git#c9828a34c92eced64858fc19151ec099fd60e8dd", - "requires": { - "argsarray": "0.0.1", - "immediate": "3.2.3", - "noop-fn": "1.0.0", - "pouchdb-collections": "1.0.1", - "sqlite3": "3.1.13", - "tiny-queue": "0.2.1" - }, - "dependencies": { - "immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=" - } - } - }, "what-input": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/what-input/-/what-input-4.3.1.tgz", @@ -18667,6 +17896,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true, "requires": { "lodash.sortby": "4.7.0", "tr46": "1.0.1", @@ -19136,17 +18366,6 @@ } } }, - "ytdl-core": { - "version": "0.18.7", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-0.18.7.tgz", - "integrity": "sha512-ZAopedHbn8YQzXAanz1EvD20JLs5+E/BTADOmPPwtLR8QP9ipMi3Iamcs5lhf5FztCNcjtasPIMyxslZZc3szQ==", - "requires": { - "html-entities": "1.2.1", - "m3u8stream": "0.2.2", - "miniget": "1.2.0", - "sax": "1.2.4" - } - }, "yuidoc-bootstrap-theme": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/yuidoc-bootstrap-theme/-/yuidoc-bootstrap-theme-1.0.6.tgz", diff --git a/package.json b/package.json index fc3d3d8ff..4efbe02ee 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "homepage": "https://github.com/ghostery/ghostery-extension#readme", "dependencies": { "base64-js": "^1.2.1", - "browser-core": "https://s3.amazonaws.com/cdncliqz/update/edge/ghostery/v7.24/7.24.3.tgz", + "browser-core": "https://s3.amazonaws.com/cdncliqz/update/edge/ghostery/v7.26/1.26.1.tgz", "classnames": "^2.2.5", "d3": "^4.13.0", "d3-scale": "^1.0.6",