diff --git a/app/actions/cosmeticFilterActions.ts b/app/actions/cosmeticFilterActions.ts
new file mode 100644
index 000000000000..0fcc614174fd
--- /dev/null
+++ b/app/actions/cosmeticFilterActions.ts
@@ -0,0 +1,27 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import * as types from '../constants/cosmeticFilterTypes'
+import * as actions from '../types/actions/cosmeticFilterActions'
+
+export const siteCosmeticFilterAdded: actions.SiteCosmeticFilterAdded = (origin: string, cssfilter: string) => {
+ return {
+ type: types.SITE_COSMETIC_FILTER_ADDED,
+ origin,
+ cssfilter
+ }
+}
+
+export const siteCosmeticFilterRemoved: actions.SiteCosmeticFilterRemoved = (origin: string) => {
+ return {
+ type: types.SITE_COSMETIC_FILTER_REMOVED,
+ origin
+ }
+}
+
+export const allCosmeticFiltersRemoved: actions.AllCosmeticFiltersRemoved = () => {
+ return {
+ type: types.ALL_COSMETIC_FILTERS_REMOVED
+ }
+}
diff --git a/app/actions/webNavigationActions.ts b/app/actions/webNavigationActions.ts
index 33d8596d37a4..9a9c2f5c6083 100644
--- a/app/actions/webNavigationActions.ts
+++ b/app/actions/webNavigationActions.ts
@@ -13,3 +13,12 @@ export const onBeforeNavigate: actions.OnBeforeNavigate = (tabId, url, isMainFra
isMainFrame
}
}
+
+export const onCommitted: actions.OnCommitted = (tabId, url, isMainFrame) => {
+ return {
+ type: types.ON_COMMITTED,
+ tabId,
+ url,
+ isMainFrame
+ }
+}
diff --git a/app/background/actions/cosmeticFilterActions.ts b/app/background/actions/cosmeticFilterActions.ts
new file mode 100644
index 000000000000..fdc3931c7ad5
--- /dev/null
+++ b/app/background/actions/cosmeticFilterActions.ts
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import { bindActionCreators } from 'redux'
+import store from '../store'
+import * as cosmeticFilterActions from '../../actions/cosmeticFilterActions'
+export default bindActionCreators(cosmeticFilterActions, store.dispatch)
diff --git a/app/background/api/cosmeticFilterAPI.ts b/app/background/api/cosmeticFilterAPI.ts
new file mode 100644
index 000000000000..3ba7d2cc3ec5
--- /dev/null
+++ b/app/background/api/cosmeticFilterAPI.ts
@@ -0,0 +1,36 @@
+export const addSiteCosmeticFilter = async (origin: string, cssfilter: string) => {
+ chrome.storage.local.get('cosmeticFilterList', (storeData = {}) => {
+ let storeList = Object.assign({}, storeData.cosmeticFilterList)
+ if (storeList[origin] === undefined || storeList[origin].length === 0) { // nothing in filter list for origin
+ storeList[origin] = [cssfilter]
+ } else { // add entry
+ storeList[origin].push(cssfilter)
+ }
+ chrome.storage.local.set({ 'cosmeticFilterList': storeList })
+ })
+}
+
+export const removeSiteFilter = (origin: string) => {
+ chrome.storage.local.get('cosmeticFilterList', (storeData = {}) => {
+ let storeList = Object.assign({}, storeData.cosmeticFilterList)
+ delete storeList[origin]
+ chrome.storage.local.set({ 'cosmeticFilterList': storeList })
+ })
+}
+
+export const applySiteFilters = (hostname: string) => {
+ chrome.storage.local.get('cosmeticFilterList', (storeData = {}) => {
+ if (storeData.cosmeticFilterList[hostname] !== undefined) {
+ storeData.cosmeticFilterList[hostname].map((rule: string) => {
+ console.log('applying rule', rule)
+ chrome.tabs.insertCSS({
+ code: `${rule} {display: none;}`
+ })
+ })
+ }
+ })
+}
+
+export const removeAllFilters = () => {
+ chrome.storage.local.set({ 'cosmeticFilterList': {} })
+}
diff --git a/app/background/events.ts b/app/background/events.ts
index e70d5379f971..8eecb4b6cd73 100644
--- a/app/background/events.ts
+++ b/app/background/events.ts
@@ -7,3 +7,4 @@ require('./events/tabsEvents')
require('./events/shieldsEvents')
require('./events/runtimeEvents')
require('./events/webNavigationEvents')
+require('./events/cosmeticFilterEvents')
diff --git a/app/background/events/cosmeticFilterEvents.ts b/app/background/events/cosmeticFilterEvents.ts
new file mode 100644
index 000000000000..f8bd21340923
--- /dev/null
+++ b/app/background/events/cosmeticFilterEvents.ts
@@ -0,0 +1,70 @@
+import cosmeticFilterActions from '../actions/cosmeticFilterActions'
+
+let rule = {
+ host: '',
+ selector: ''
+}
+
+// add context menu
+chrome.runtime.onInstalled.addListener(function () {
+ // parent menu
+ chrome.contextMenus.create({
+ title: 'Brave',
+ id: 'brave',
+ contexts: ['all']
+ })
+ // block ad child menu
+ chrome.contextMenus.create({
+ title: 'Block element via selector',
+ id: 'addBlockElement',
+ parentId: 'brave',
+ contexts: ['all']
+ })
+ chrome.contextMenus.create({
+ title: 'Clear CSS rules for this site',
+ id: 'resetSiteFilterSettings',
+ parentId: 'brave',
+ contexts: ['all']
+ })
+ chrome.contextMenus.create({
+ title: 'Clear CSS rules for all sites',
+ id: 'resetAllFilterSettings',
+ parentId: 'brave',
+ contexts: ['all']
+ })
+})
+
+// contextMenu listener - when triggered, grab latest selector
+chrome.contextMenus.onClicked.addListener(function (info, tab) {
+ switch (info.menuItemId) {
+ case 'addBlockElement':
+ {
+ rule.selector = window.prompt('CSS selector to block: ', `${rule.selector}`) || ''
+ chrome.tabs.insertCSS({
+ code: `${rule.selector} {display: none;}`
+ })
+ cosmeticFilterActions.siteCosmeticFilterAdded(rule.host, rule.selector)
+ break
+ }
+ case 'resetSiteFilterSettings':
+ {
+ cosmeticFilterActions.siteCosmeticFilterRemoved(rule.host)
+ break
+ }
+ case 'resetAllFilterSettings':
+ {
+ cosmeticFilterActions.allCosmeticFiltersRemoved()
+ break
+ }
+ default: {
+ console.warn('[cosmeticFilterEvents] invalid context menu option: ${info.menuItemId}')
+ }
+ }
+})
+
+// content script listener for right click DOM selection event
+chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
+ rule.host = msg.baseURI
+ rule.selector = msg.selector
+ sendResponse(rule)
+})
diff --git a/app/background/events/webNavigationEvents.ts b/app/background/events/webNavigationEvents.ts
index f7f64b6e7e1d..1ad613276789 100644
--- a/app/background/events/webNavigationEvents.ts
+++ b/app/background/events/webNavigationEvents.ts
@@ -8,3 +8,8 @@ chrome.webNavigation.onBeforeNavigate.addListener(function ({ tabId, url, frameI
const isMainFrame: boolean = frameId === 0
actions.onBeforeNavigate(tabId, url, isMainFrame)
})
+
+chrome.webNavigation.onCommitted.addListener(function ({ tabId, url, frameId }: chrome.webNavigation.WebNavigationTransitionCallbackDetails) {
+ const isMainFrame: boolean = frameId === 0
+ actions.onCommitted(tabId, url, isMainFrame)
+})
diff --git a/app/background/reducers.ts b/app/background/reducers.ts
index b175318dc903..26afa3387a85 100644
--- a/app/background/reducers.ts
+++ b/app/background/reducers.ts
@@ -5,7 +5,9 @@
import { combineReducers } from 'redux'
import shieldsPanelReducer from './reducers/shieldsPanelReducer'
+import cosmeticFilterReducer from './reducers/cosmeticFilterReducer'
export default combineReducers({
- shieldsPanel: shieldsPanelReducer
+ shieldsPanel: shieldsPanelReducer,
+ cosmeticFilter: cosmeticFilterReducer
})
diff --git a/app/background/reducers/cosmeticFilterReducer.ts b/app/background/reducers/cosmeticFilterReducer.ts
new file mode 100644
index 000000000000..8bfd66e6f6a0
--- /dev/null
+++ b/app/background/reducers/cosmeticFilterReducer.ts
@@ -0,0 +1,153 @@
+// /* This Source Code Form is subject to the terms of the Mozilla Public
+// * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+// * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import * as shieldsPanelTypes from '../../constants/shieldsPanelTypes'
+import * as windowTypes from '../../constants/windowTypes'
+import * as tabTypes from '../../constants/tabTypes'
+import * as webNavigationTypes from '../../constants/webNavigationTypes'
+import {
+ setAllowBraveShields,
+ requestShieldPanelData
+} from '../api/shieldsAPI'
+import { reloadTab } from '../api/tabsAPI'
+import * as shieldsPanelState from '../../state/shieldsPanelState'
+import { State, Tab } from '../../types/state/shieldsPannelState'
+import { Actions } from '../../types/actions/index'
+import * as cosmeticFilterTypes from '../../constants/cosmeticFilterTypes'
+import {
+ removeSiteFilter,
+ addSiteCosmeticFilter,
+ applySiteFilters,
+ removeAllFilters
+} from '../api/cosmeticFilterAPI'
+
+const focusedWindowChanged = (state: State, windowId: number): State => {
+ if (windowId !== -1) {
+ state = shieldsPanelState.updateFocusedWindow(state, windowId)
+ if (shieldsPanelState.getActiveTabId(state)) {
+ requestShieldPanelData(shieldsPanelState.getActiveTabId(state))
+ } else {
+ console.warn('no tab id so cannot request shield data from window focus change!')
+ }
+ }
+ return state
+}
+
+const updateActiveTab = (state: State, windowId: number, tabId: number): State => {
+ requestShieldPanelData(tabId)
+ return shieldsPanelState.updateActiveTab(state, windowId, tabId)
+}
+
+export default function cosmeticFilterReducer (state: State = {
+ tabs: {},
+ windows: {},
+ currentWindowId: -1 },
+ action: Actions) {
+ switch (action.type) {
+ case webNavigationTypes.ON_BEFORE_NAVIGATION:
+ {
+ if (action.isMainFrame) {
+ state = shieldsPanelState.resetBlockingStats(state, action.tabId)
+ state = shieldsPanelState.resetNoScriptInfo(state, action.tabId, new window.URL(action.url).origin)
+ }
+ break
+ }
+ case webNavigationTypes.ON_COMMITTED:
+ {
+ const tabData: Tab = shieldsPanelState.getActiveTabData(state)
+ applySiteFilters(tabData.hostname)
+ break
+ }
+ case windowTypes.WINDOW_REMOVED:
+ {
+ state = shieldsPanelState.removeWindowInfo(state, action.windowId)
+ break
+ }
+ case windowTypes.WINDOW_CREATED:
+ {
+ if (action.window.focused || Object.keys(state.windows).length === 0) {
+ state = focusedWindowChanged(state, action.window.id)
+ }
+ break
+ }
+ case windowTypes.WINDOW_FOCUS_CHANGED:
+ {
+ state = focusedWindowChanged(state, action.windowId)
+ break
+ }
+ case tabTypes.ACTIVE_TAB_CHANGED:
+ {
+ const windowId: number = action.windowId
+ const tabId: number = action.tabId
+ state = updateActiveTab(state, windowId, tabId)
+ break
+ }
+ case tabTypes.TAB_DATA_CHANGED:
+ {
+ const tab: chrome.tabs.Tab = action.tab
+ if (tab.active && tab.id) {
+ state = updateActiveTab(state, tab.windowId, tab.id)
+ }
+ break
+ }
+ case tabTypes.TAB_CREATED:
+ {
+ const tab: chrome.tabs.Tab = action.tab
+ if (!tab) {
+ break
+ }
+
+ if (tab.active && tab.id) {
+ state = updateActiveTab(state, tab.windowId, tab.id)
+ }
+ break
+ }
+ case shieldsPanelTypes.SHIELDS_PANEL_DATA_UPDATED:
+ {
+ state = shieldsPanelState.updateTabShieldsData(state, action.details.id, action.details)
+ break
+ }
+ case shieldsPanelTypes.SHIELDS_TOGGLED:
+ {
+ const tabId: number = shieldsPanelState.getActiveTabId(state)
+ const tabData: Tab = shieldsPanelState.getActiveTabData(state)
+ if (!tabData) {
+ break
+ }
+ setAllowBraveShields(tabData.origin, action.setting)
+ .then(() => {
+ reloadTab(tabId, true).catch((e) => {
+ console.error('Tab reload was not successful', e)
+ })
+ requestShieldPanelData(shieldsPanelState.getActiveTabId(state))
+ })
+ .catch((e: any) => {
+ console.error('Could not set shields', e)
+ })
+ state = shieldsPanelState
+ .updateTabShieldsData(state, tabId, { braveShields: action.setting })
+ break
+ }
+ case cosmeticFilterTypes.SITE_COSMETIC_FILTER_REMOVED:
+ {
+ let url = action.origin
+ removeSiteFilter(url)
+ break
+ }
+ case cosmeticFilterTypes.ALL_COSMETIC_FILTERS_REMOVED:
+ {
+ removeAllFilters()
+ break
+ }
+ case cosmeticFilterTypes.SITE_COSMETIC_FILTER_ADDED:
+ {
+ addSiteCosmeticFilter(action.origin, action.cssfilter)
+ .catch((e) => {
+ console.error('Could not add filter:', e)
+ })
+ break
+ }
+ }
+ return state
+}
diff --git a/app/constants/cosmeticFilterTypes.ts b/app/constants/cosmeticFilterTypes.ts
new file mode 100644
index 000000000000..8c59659f341f
--- /dev/null
+++ b/app/constants/cosmeticFilterTypes.ts
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
++ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+export const SITE_COSMETIC_FILTER_REMOVED = 'SITE_COSMETIC_FILTER_REMOVED'
+export const SITE_COSMETIC_FILTER_ADDED = 'SITE_COSMETIC_FILTER_ADDED'
+export const LOGGED_STORAGE = 'LOGGED_STORAGE'
+export const ALL_COSMETIC_FILTERS_REMOVED = 'ALL_COSMETIC_FILTERS_REMOVED'
diff --git a/app/constants/webNavigationTypes.ts b/app/constants/webNavigationTypes.ts
index b39875b9eece..17945a84b03f 100644
--- a/app/constants/webNavigationTypes.ts
+++ b/app/constants/webNavigationTypes.ts
@@ -3,3 +3,4 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
export const ON_BEFORE_NAVIGATION = 'ON_BEFORE_NAVIGATION'
+export const ON_COMMITTED = 'ON_COMMITTED'
diff --git a/app/content.ts b/app/content.ts
new file mode 100644
index 000000000000..c5d095b66c4e
--- /dev/null
+++ b/app/content.ts
@@ -0,0 +1,15 @@
+const unique = require('unique-selector').default
+
+function getCurrentURL () {
+ return window.location.hostname
+}
+
+document.addEventListener('contextmenu', (event) => {
+ let selector = unique(event.target) // this has to be done here, events can't be passed through the messaging API
+ let baseURI = getCurrentURL()
+ console.log(selector, baseURI)
+ chrome.runtime.sendMessage({
+ selector: selector,
+ baseURI: baseURI
+ })
+}, true)
diff --git a/app/manifest.dev.json b/app/manifest.dev.json
index 96ce3e255a1a..e336bc814c54 100644
--- a/app/manifest.dev.json
+++ b/app/manifest.dev.json
@@ -18,7 +18,20 @@
"background": {
"page": "background.html"
},
- "permissions": [ "contentSettings", "management", "tabs", "storage", "webNavigation" ],
+ "content_scripts": [
+ {
+ "matches": [
+ "http://*/*",
+ "https://*/*"
+ ],
+ "js": [
+ "js/content.bundle.js"
+ ],
+ "run_at": "document_start",
+ "all_frames": true
+ }
+ ],
+ "permissions": [ "contentSettings", "management", "tabs", "storage", "webNavigation", "contextMenus", "*://*/*" ],
"content_security_policy": "default-src 'self'; script-src 'self' http://localhost:3000 https://localhost:3000 'unsafe-eval'; connect-src http://localhost:3000 https://localhost:3000; style-src * 'unsafe-inline' 'self' blob:; img-src 'self' data:;",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAupOLMy5Fd4dCSOtjcApsAQOnuBdTs+OvBVt/3P93noIrf068x0xXkvxbn+fpigcqfNamiJ5CjGyfx9zAIs7zcHwbxjOw0Uih4SllfgtK+svNTeE0r5atMWE0xR489BvsqNuPSxYJUmW28JqhaSZ4SabYrRx114KcU6ko7hkjyPkjQa3P+chStJjIKYgu5tWBiMJp5QVLelKoM+xkY6S7efvJ8AfajxCViLGyDQPDviGr2D0VvIBob0D1ZmAoTvYOWafcNCaqaejPDybFtuLFX3pZBqfyOCyyzGhucyCmfBXJALKbhjRAqN5glNsUmGhhPK87TuGATQfVuZtenMvXMQIDAQAB"
}
diff --git a/app/manifest.prod.json b/app/manifest.prod.json
index 2fc22aa00ce8..7b543aa7f629 100644
--- a/app/manifest.prod.json
+++ b/app/manifest.prod.json
@@ -18,7 +18,20 @@
"background": {
"page": "background.html"
},
- "permissions": [ "contentSettings", "tabs", "storage", "webNavigation" ],
+ "content_scripts": [
+ {
+ "matches": [
+ "http://*/*",
+ "https://*/*"
+ ],
+ "js": [
+ "js/content.bundle.js"
+ ],
+ "run_at": "document_start",
+ "all_frames": true
+ }
+ ],
+ "permissions": [ "contentSettings", "management", "tabs", "storage", "webNavigation", "contextMenus", "*://*/*" ],
"content_security_policy": "default-src 'self'; script-src 'self'; style-src * 'unsafe-inline'; img-src 'self' data:;",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAupOLMy5Fd4dCSOtjcApsAQOnuBdTs+OvBVt/3P93noIrf068x0xXkvxbn+fpigcqfNamiJ5CjGyfx9zAIs7zcHwbxjOw0Uih4SllfgtK+svNTeE0r5atMWE0xR489BvsqNuPSxYJUmW28JqhaSZ4SabYrRx114KcU6ko7hkjyPkjQa3P+chStJjIKYgu5tWBiMJp5QVLelKoM+xkY6S7efvJ8AfajxCViLGyDQPDviGr2D0VvIBob0D1ZmAoTvYOWafcNCaqaejPDybFtuLFX3pZBqfyOCyyzGhucyCmfBXJALKbhjRAqN5glNsUmGhhPK87TuGATQfVuZtenMvXMQIDAQAB"
}
diff --git a/app/types/actions/cosmeticFilterActions.ts b/app/types/actions/cosmeticFilterActions.ts
new file mode 100644
index 000000000000..69371fe5f5ae
--- /dev/null
+++ b/app/types/actions/cosmeticFilterActions.ts
@@ -0,0 +1,37 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import * as types from '../constants/cosmeticFilterTypes'
+
+interface SiteCosmeticFilterAddedReturn {
+ type: types.SITE_COSMETIC_FILTER_ADDED,
+ origin: string,
+ cssfilter: string
+}
+
+export interface SiteCosmeticFilterAdded {
+ (origin: string, cssfilter: string): SiteCosmeticFilterAddedReturn
+}
+
+interface SiteCosmeticFilterRemovedReturn {
+ type: types.SITE_COSMETIC_FILTER_REMOVED,
+ origin: string
+}
+
+export interface SiteCosmeticFilterRemoved {
+ (origin: string): SiteCosmeticFilterRemovedReturn
+}
+
+interface AllCosmeticFiltersRemovedReturn {
+ type: types.ALL_COSMETIC_FILTERS_REMOVED
+}
+
+export interface AllCosmeticFiltersRemoved {
+ (): AllCosmeticFiltersRemovedReturn
+}
+
+export type cosmeticFilterActions =
+ SiteCosmeticFilterRemovedReturn |
+ SiteCosmeticFilterAddedReturn |
+ AllCosmeticFiltersRemovedReturn
diff --git a/app/types/actions/index.ts b/app/types/actions/index.ts
index e34c62217a2b..62d952ea99a5 100644
--- a/app/types/actions/index.ts
+++ b/app/types/actions/index.ts
@@ -2,9 +2,11 @@ import { shieldPanelActions } from './shieldsPanelActions'
import { tabActions } from './tabActions'
import { webNavigationActions } from './webNavigationActions'
import { windowActions } from './windowActions'
+import { cosmeticFilterActions } from './cosmeticFilterActions'
export type Actions =
shieldPanelActions |
tabActions |
webNavigationActions |
- windowActions
+ windowActions |
+ cosmeticFilterActions
diff --git a/app/types/actions/webNavigationActions.ts b/app/types/actions/webNavigationActions.ts
index f2e3c12efd74..1e9739b36885 100644
--- a/app/types/actions/webNavigationActions.ts
+++ b/app/types/actions/webNavigationActions.ts
@@ -15,5 +15,17 @@ export interface OnBeforeNavigate {
(tabId: number, url: string, isMainFrame: boolean): OnBeforeNavigateReturn
}
+interface OnCommittedReturn {
+ type: types.ON_COMMITTED,
+ tabId: number,
+ url: string,
+ isMainFrame: boolean
+}
+
+export interface OnCommitted {
+ (tabId: number, url: string, isMainFrame: boolean): OnCommittedReturn
+}
+
export type webNavigationActions =
- OnBeforeNavigateReturn
+ OnBeforeNavigateReturn |
+ OnCommittedReturn
diff --git a/app/types/adblock/adblockTypes.ts b/app/types/adblock/adblockTypes.ts
new file mode 100644
index 000000000000..3503d66c956e
--- /dev/null
+++ b/app/types/adblock/adblockTypes.ts
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+export type BlockTypes = 'ads' | 'trackers' | 'httpUpgradableResources' | 'javascript' | 'fingerprinting'
+export type BlockOptions = 'allow' | 'block'
+export type BlockFPOptions = 'allow' | 'block' | 'block_third_party'
+export type BlockCookiesOptions = 'allow' | 'block' | 'block_third_party'
diff --git a/app/types/constants/cosmeticFilterTypes.ts b/app/types/constants/cosmeticFilterTypes.ts
new file mode 100644
index 000000000000..74dd6f2fe164
--- /dev/null
+++ b/app/types/constants/cosmeticFilterTypes.ts
@@ -0,0 +1,10 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import * as types from '../../constants/cosmeticFilterTypes'
+
+export type SITE_COSMETIC_FILTER_REMOVED = typeof types.SITE_COSMETIC_FILTER_REMOVED
+export type SITE_COSMETIC_FILTER_ADDED = typeof types.SITE_COSMETIC_FILTER_ADDED
+export type LOGGED_STORAGE = typeof types.LOGGED_STORAGE
+export type ALL_COSMETIC_FILTERS_REMOVED = typeof types.ALL_COSMETIC_FILTERS_REMOVED
diff --git a/app/types/constants/webNavigationTypes.ts b/app/types/constants/webNavigationTypes.ts
index 2f39a78ccc59..ab08eccb274a 100644
--- a/app/types/constants/webNavigationTypes.ts
+++ b/app/types/constants/webNavigationTypes.ts
@@ -5,3 +5,4 @@
import * as types from '../../constants/webNavigationTypes'
export type ON_BEFORE_NAVIGATION = typeof types.ON_BEFORE_NAVIGATION
+export type ON_COMMITTED = typeof types.ON_COMMITTED
diff --git a/app/types/global/chrome.d.ts b/app/types/global/chrome.d.ts
index acdffe4dcf17..ecafec09943f 100644
--- a/app/types/global/chrome.d.ts
+++ b/app/types/global/chrome.d.ts
@@ -4,7 +4,7 @@
///
-type BlockTypes = 'ads' | 'trackers' | 'httpUpgradableResources' | 'javascript'
+type BlockTypes = 'ads' | 'trackers' | 'httpUpgradableResources' | 'javascript' | 'fingerprinting'
interface BlockDetails {
blockType: BlockTypes
@@ -12,6 +12,11 @@ interface BlockDetails {
subresource: string
}
+interface BlockDetails {
+ blockType: BlockTypes
+ tabId: number
+ subresource: string
+}
declare namespace chrome.tabs {
const setAsync: any
const getAsync: any
diff --git a/package-lock.json b/package-lock.json
index d68d21a408fa..6808a295bea4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,21 +14,6 @@
"glob-to-regexp": "^0.3.0"
}
},
- "@nodelib/fs.stat": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz",
- "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==",
- "dev": true
- },
- "@samverschueren/stream-to-observable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
- "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
- "dev": true,
- "requires": {
- "any-observable": "^0.3.0"
- }
- },
"@sindresorhus/is": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
@@ -51,30 +36,30 @@
"dev": true
},
"@types/babel-types": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.4.tgz",
- "integrity": "sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.2.tgz",
+ "integrity": "sha512-ylggu8DwwxT6mk3jVoJeohWAePWMNWEYm06MSoJ19kwp3hT9eY2Z4NNZn3oevzgFmClgNQ2GQF500hPDvNsGHg==",
"dev": true
},
"@types/babylon": {
- "version": "6.16.3",
- "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.3.tgz",
- "integrity": "sha512-lyJ8sW1PbY3uwuvpOBZ9zMYKshMnQpXmeDHh8dj9j2nJm/xrW0FgB5gLSYOArj5X0IfaXnmhFoJnhS4KbqIMug==",
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz",
+ "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==",
"dev": true,
"requires": {
"@types/babel-types": "*"
}
},
"@types/bluebird": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.21.tgz",
- "integrity": "sha512-6UNEwyw+6SGMC/WMI0ld0PS4st7Qq51qgguFrFizOSpGvZiqe9iswztFSdZvwJBEhLOy2JaxNE6VC7yMAlbfyQ==",
+ "version": "3.5.20",
+ "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.20.tgz",
+ "integrity": "sha512-Wk41MVdF+cHBfVXj/ufUHJeO3BlIQr1McbHZANErMykaCWeDSZbH5erGjNBw2/3UlRdSxZbLfSuQTzFmPOYFsA==",
"dev": true
},
"@types/chai": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz",
- "integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.3.tgz",
+ "integrity": "sha512-f5dXGzOJycyzSMdaXVhiBhauL4dYydXwVpavfQ1mVCaGjR56a9QfklXObUxlIY9bGTmCPHEEZ04I16BZ/8w5ww==",
"dev": true
},
"@types/cheerio": {
@@ -93,9 +78,9 @@
}
},
"@types/enzyme": {
- "version": "3.1.11",
- "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.1.11.tgz",
- "integrity": "sha512-abPTpLuveNVd2ibafCjwoZT9MerzgnBKd6ijNKdtlfJREGKXk5dxzKAXGoY9IuiYarH2YXTc197WeyIVQUFjQg==",
+ "version": "3.1.13",
+ "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.1.13.tgz",
+ "integrity": "sha512-TwzKKiX5sGh/WweucxPXb8zjMLlLekGtBQw0ihk1HSj14zZuioG3Gql3jbxxb1YDRLbT4WQyzWG/h4Y7eCdw1g==",
"dev": true,
"requires": {
"@types/cheerio": "*",
@@ -103,9 +88,9 @@
}
},
"@types/enzyme-adapter-react-16": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.2.tgz",
- "integrity": "sha512-/oEtlwJyFIT9metXC2A90XnjfHwBDYxhFoJwqNjNDG5K2CCqp7xneQbAp4u5j280bOmalFYUDjfmmxNQG3S4Og==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.3.tgz",
+ "integrity": "sha512-9eRLBsC/Djkys05BdTWgav8v6fSCjyzjNuLwG2sfa2b2g/VAN10luP0zB0VwtOWFQ0LGjIboJJvIsVdU5gqRmg==",
"dev": true,
"requires": {
"@types/enzyme": "*"
@@ -138,16 +123,15 @@
}
},
"@types/mocha": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.3.tgz",
- "integrity": "sha512-C1wVVr7xhKu6c3Mb27dFzNYR05qvHwgtpN+JOYTGc1pKA7dCEDDYpscn7kul+bCUwa3NoGDbzI1pdznSOa397w==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.0.tgz",
+ "integrity": "sha512-YeDiSEzznwZwwp766SJ6QlrTyBYUGPSIwmREHVTmktUYiT/WADdWtpt9iH0KuUSf8lZLdI4lP0X6PBzPo5//JQ==",
"dev": true
},
"@types/node": {
- "version": "8.10.20",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.20.tgz",
- "integrity": "sha512-M7x8+5D1k/CuA6jhiwuSCmE8sbUWJF0wYsjcig9WrXvwUI5ArEoUBdOXpV4JcEMrLp02/QbDjw+kI+vQeKyQgg==",
- "dev": true
+ "version": "8.10.13",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.13.tgz",
+ "integrity": "sha512-AorNXRHoPVxIUIVmr6uJXRnvlPOSNKAJF5jZ1JOj1/IxYMocZzvQooNeLU02Db6kpy1IVIySTOvuIxmUF1HrOg=="
},
"@types/react": {
"version": "16.4.2",
@@ -159,9 +143,9 @@
}
},
"@types/react-dom": {
- "version": "16.0.6",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.6.tgz",
- "integrity": "sha512-M+1zmwa5KxUpkCuxA4whlDJKYTGNvNQW4pIoCLH16xGbClicD9CzPry4y94kTjCCk/bJZCZ/GVqUsP7eKcO/mQ==",
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.5.tgz",
+ "integrity": "sha512-ony2hEYlGXCLWNAWWgbsHR7qVvDbeMRFc5b43+7dhj3n+zXzxz81HV9Yjpc3JD8vLCiwYoSLqFCI6bD0+0zG2Q==",
"dev": true,
"requires": {
"@types/node": "*",
@@ -188,14 +172,14 @@
}
},
"@types/selenium-webdriver": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz",
- "integrity": "sha512-ikB0JHv6vCR1KYUQAzTO4gi/lXLElT4Tx+6De2pc/OZwizE9LRNiTa+U8TBFKBD/nntPnr/MPSHSnOTybjhqNA=="
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.8.tgz",
+ "integrity": "sha512-yrqQvb1EZhH+ONMzUmsEnBjzitortVv0lynRe5US2+FofdoMWUE4wf7v4peCd62fqXq8COCVTbpS1/jIg5EbuQ=="
},
"@types/sinon": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-4.3.3.tgz",
- "integrity": "sha512-Tt7w/ylBS/OEAlSCwzB0Db1KbxnkycP/1UkQpbvKFYoUuRn4uYsC3xh5TRPrOjTy0i8TIkSz1JdNL4GPVdf3KQ==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-4.3.2.tgz",
+ "integrity": "sha512-6Mv0+JLFJ+5IyURIF27rI9YQ4aMK74Uuv95RjKDXfar5h0VLTVDJO5h50rdyq3VqFaDRL3xTYjkmh5Q4LUJyfA==",
"dev": true
},
"@types/tough-cookie": {
@@ -480,9 +464,9 @@
}
},
"acorn": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
- "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
"dev": true
},
"acorn-dynamic-import": {
@@ -504,13 +488,13 @@
}
},
"ajv": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz",
- "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz",
+ "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
+ "json-schema-traverse": "^0.3.0",
"uri-js": "^4.2.1"
}
},
@@ -575,9 +559,9 @@
}
},
"any-observable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
- "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz",
+ "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=",
"dev": true
},
"anymatch": {
@@ -698,6 +682,16 @@
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
+ "array.prototype.flat": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz",
+ "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==",
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.10.0",
+ "function-bind": "^1.1.1"
+ }
+ },
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
@@ -765,18 +759,18 @@
"dev": true
},
"ast-types": {
- "version": "0.11.5",
- "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz",
- "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==",
+ "version": "0.11.3",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz",
+ "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==",
"dev": true
},
"async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
- "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"dev": true,
"requires": {
- "lodash": "^4.17.10"
+ "lodash": "^4.14.0"
}
},
"async-each": {
@@ -818,19 +812,18 @@
}
},
"awesome-typescript-loader": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.0.tgz",
- "integrity": "sha512-3v5MEUgRz1n90u61UGYbhFxiFq1tK/HBdoY/ScBX1srOiZVo4iF9b6hyP2ZsRp1ewHKYwlEo0OaHUXJVQHv6dw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.0.0.tgz",
+ "integrity": "sha512-/80vlBnWp5IlERQ0sxRDQfz5voqht02MRNgUdbn90rKHrope6eh0PYr0qepD2TpYYnCSvq0DzdWc8udHM0KefA==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
+ "chalk": "^2.3.1",
"enhanced-resolve": "^4.0.0",
"loader-utils": "^1.1.0",
"lodash": "^4.17.5",
"micromatch": "^3.1.9",
"mkdirp": "^0.5.1",
- "source-map-support": "^0.5.3",
- "webpack-log": "^1.2.0"
+ "source-map-support": "^0.5.3"
}
},
"aws-sign2": {
@@ -1306,9 +1299,9 @@
}
},
"babel-plugin-transform-decorators-legacy": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz",
- "integrity": "sha512-jYHwjzRXRelYQ1uGm353zNzf3QmtdCfvJbuYTZ4gKveK7M9H1fs3a5AKdY1JUDl0z97E30ukORW1dzhWvsabtA==",
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz",
+ "integrity": "sha1-dBtY9sW86eYCfgiC2cmU8E82aSU=",
"dev": true,
"requires": {
"babel-plugin-syntax-decorators": "^6.1.18",
@@ -1854,9 +1847,9 @@
},
"dependencies": {
"core-js": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
+ "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
"dev": true
},
"source-map": {
@@ -1887,9 +1880,9 @@
},
"dependencies": {
"core-js": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
+ "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
"dev": true
}
}
@@ -2093,6 +2086,15 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "dev": true,
+ "requires": {
+ "hoek": "4.x.x"
+ }
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2240,28 +2242,28 @@
}
},
"buffer": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz",
- "integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.0.tgz",
+ "integrity": "sha512-nUJyfChH7PMJy75eRDCCKtszSEFokUNXC1hNVSe+o+VdcgvDPLs20k3v8UXI8ruRYAJiYtyRea8mYyqPxoHWDw==",
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4"
}
},
"buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz",
+ "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=",
"dev": true,
"requires": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
+ "buffer-alloc-unsafe": "^0.1.0",
+ "buffer-fill": "^0.1.0"
}
},
"buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz",
+ "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=",
"dev": true
},
"buffer-crc32": {
@@ -2271,15 +2273,15 @@
"dev": true
},
"buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz",
+ "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==",
"dev": true
},
"buffer-from": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
- "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ=="
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
+ "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA=="
},
"buffer-xor": {
"version": "1.0.3",
@@ -2427,9 +2429,9 @@
}
},
"caniuse-db": {
- "version": "1.0.30000859",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000859.tgz",
- "integrity": "sha1-boE6F1fxmpPLNnX2tQN6yoC+oGI=",
+ "version": "1.0.30000836",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000836.tgz",
+ "integrity": "sha1-eItsj28CmRdDsYzbvVT5bQW0uVo=",
"dev": true
},
"caseless": {
@@ -2548,16 +2550,16 @@
}
},
"chromedriver": {
- "version": "2.40.0",
- "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.40.0.tgz",
- "integrity": "sha512-ewvRQ1HMk0vpFSWYCk5hKDoEz5QMPplx5w3C6/Me+03y1imr67l3Hxl9U0jn3mu2N7+c7BoC7JtNW6HzbRAwDQ==",
+ "version": "2.38.3",
+ "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.38.3.tgz",
+ "integrity": "sha512-tczy6RHl0LOVA4p+xezcu3NRjr9A1iLyyfjP9yPIUynvV28YSKH/Ll1iw0jMCjN9jwtaB2HB4aPjv0Uuw2VARw==",
"dev": true,
"requires": {
"del": "^3.0.0",
- "extract-zip": "^1.6.7",
+ "extract-zip": "^1.6.6",
"kew": "^0.7.0",
"mkdirp": "^0.5.1",
- "request": "^2.87.0"
+ "request": "^2.85.0"
}
},
"cipher-base": {
@@ -2630,9 +2632,9 @@
}
},
"classnames": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz",
+ "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0="
},
"clean-css": {
"version": "4.1.11",
@@ -2821,18 +2823,18 @@
}
},
"color-convert": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
- "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"dev": true,
"requires": {
- "color-name": "1.1.1"
+ "color-name": "^1.1.1"
}
},
"color-name": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
- "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"color-string": {
@@ -2856,9 +2858,10 @@
}
},
"colors": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
- "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
},
"combined-stream": {
"version": "1.0.6",
@@ -3068,24 +3071,22 @@
}
},
"cross-env": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
- "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.5.tgz",
+ "integrity": "sha512-GSiNTbvTU3pXzewRKGP0Y+rVP2CzifY2pqSEdtHzLLj41pRdkrgY7e4uSnBoR/pmYaqZr/lwwjg/Q4kNX30hWQ==",
"dev": true,
"requires": {
- "cross-spawn": "^6.0.5",
+ "cross-spawn": "^5.1.0",
"is-windows": "^1.0.0"
}
},
"cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
+ "lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
@@ -3102,6 +3103,26 @@
"node-rsa": "^0.2.10"
}
},
+ "cryptiles": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+ "dev": true,
+ "requires": {
+ "boom": "5.x.x"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.x.x"
+ }
+ }
+ }
+ },
"crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -3181,9 +3202,9 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -3323,18 +3344,18 @@
"dev": true
},
"cssstyle": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.3.1.tgz",
- "integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==",
+ "version": "0.2.37",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
+ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
"dev": true,
"requires": {
"cssom": "0.3.x"
}
},
"csstype": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.5.tgz",
- "integrity": "sha512-EGMjeoiN3aqEX5u/cyH5mSdGBDGdLcCQvcEcBWNGFSPXKd9uOTIeVG91YQ22OxI44DKpvI+4C7VUSmEpsHWJaA==",
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.6.tgz",
+ "integrity": "sha512-tKPyhy0FmfYD2KQYXD5GzkvAYLYj96cMLXr648CKGd3wBe0QqoPipImjGiLze9c8leJK8J3n7ap90tpk3E6HGQ==",
"dev": true
},
"currently-unhandled": {
@@ -3736,9 +3757,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.3.50",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz",
- "integrity": "sha1-dDi3b5K0G5GfP73TUPvQdX2s3fc=",
+ "version": "1.3.45",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz",
+ "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=",
"dev": true
},
"elegant-spinner": {
@@ -3748,9 +3769,9 @@
"dev": true
},
"elliptic": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
- "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
"dev": true,
"requires": {
"bn.js": "^4.4.0",
@@ -3812,56 +3833,90 @@
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
},
"envinfo": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-5.10.0.tgz",
- "integrity": "sha512-rXbzXWvnQxy+TcqZlARbWVQwgGVVouVJgFZhLVN5htjLxl1thstrP2ZGi0pXC309AbK7gVOPU+ulz/tmpCI7iw==",
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-4.4.2.tgz",
+ "integrity": "sha512-5rfRs+m+6pwoKRCFqpsA5+qsLngFms1aWPrxfKbrObCzQaPc3M3yPloZx+BL9UE3dK58cxw36XVQbFRSCCfGSQ==",
"dev": true
},
"enzyme": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.3.0.tgz",
- "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.4.1.tgz",
+ "integrity": "sha512-XBZbyUy36WipNSBVZKIR1sg9iF6zXfkfDEzwTc10T9zhB61UPnMo+c3WE17T/jyhfmPJOz6X073NXXsR7G/1rA==",
"requires": {
+ "array.prototype.flat": "^1.2.1",
"cheerio": "^1.0.0-rc.2",
- "function.prototype.name": "^1.0.3",
- "has": "^1.0.1",
+ "function.prototype.name": "^1.1.0",
+ "has": "^1.0.3",
"is-boolean-object": "^1.0.0",
- "is-callable": "^1.1.3",
+ "is-callable": "^1.1.4",
"is-number-object": "^1.0.3",
"is-string": "^1.0.4",
"is-subset": "^0.1.1",
"lodash": "^4.17.4",
- "object-inspect": "^1.5.0",
+ "object-inspect": "^1.6.0",
"object-is": "^1.0.1",
"object.assign": "^4.1.0",
"object.entries": "^1.0.4",
"object.values": "^1.0.4",
"raf": "^3.4.0",
"rst-selector-parser": "^2.2.3"
+ },
+ "dependencies": {
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ }
}
},
"enzyme-adapter-react-16": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz",
- "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.2.0.tgz",
+ "integrity": "sha512-UgBra+xZFVFbU5Tw7Inw0bPrNJhM2ru4vCoO7preX6sOicXuDbOH927QJx4pk6m6vatd8jnPXTF6/GCjzytJTg==",
"requires": {
- "enzyme-adapter-utils": "^1.3.0",
- "lodash": "^4.17.4",
- "object.assign": "^4.0.4",
+ "enzyme-adapter-utils": "^1.5.0",
+ "function.prototype.name": "^1.1.0",
+ "object.assign": "^4.1.0",
"object.values": "^1.0.4",
- "prop-types": "^15.6.0",
+ "prop-types": "^15.6.2",
+ "react-is": "^16.4.2",
"react-reconciler": "^0.7.0",
"react-test-renderer": "^16.0.0-0"
+ },
+ "dependencies": {
+ "prop-types": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ }
}
},
"enzyme-adapter-utils": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz",
- "integrity": "sha512-vVXSt6uDv230DIv+ebCG66T1Pm36Kv+m74L1TrF4kaE7e1V7Q/LcxO0QRkajk5cA6R3uu9wJf5h13wOTezTbjA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.5.0.tgz",
+ "integrity": "sha512-cLUaPYU8GEzAHi/1hiO+ylz4QiQWI8eb9SysAk8Tbul2O918dRf4cfD4s2BjijtwSvhapkOsPW9XRix1EXlJ1Q==",
"requires": {
- "lodash": "^4.17.4",
- "object.assign": "^4.0.4",
- "prop-types": "^15.6.0"
+ "function.prototype.name": "^1.1.0",
+ "object.assign": "^4.1.0",
+ "prop-types": "^15.6.2"
+ },
+ "dependencies": {
+ "prop-types": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ }
}
},
"errno": {
@@ -3883,9 +3938,9 @@
}
},
"error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
@@ -3973,9 +4028,9 @@
"dev": true
},
"escodegen": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz",
- "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz",
+ "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==",
"dev": true,
"requires": {
"esprima": "^3.1.3",
@@ -4065,19 +4120,6 @@
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- }
}
},
"exit-hook": {
@@ -4383,12 +4425,6 @@
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
"dev": true
},
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true
- },
"schema-utils": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
@@ -4401,15 +4437,43 @@
}
},
"extract-zip": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
- "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz",
+ "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=",
"dev": true,
"requires": {
- "concat-stream": "1.6.2",
+ "concat-stream": "1.6.0",
"debug": "2.6.9",
- "mkdirp": "0.5.1",
+ "mkdirp": "0.5.0",
"yauzl": "2.4.1"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+ "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ }
}
},
"extsprintf": {
@@ -4424,13 +4488,12 @@
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fast-glob": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
- "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.1.tgz",
+ "integrity": "sha512-wSyW1TBK3ia5V+te0rGPXudeMHoUQW6O5Y9oATiaGhpENmEifPDlOdhpsnlj5HoG6ttIvGiY1DdCmI9X2xGMhg==",
"dev": true,
"requires": {
"@mrmlnc/readdir-enhanced": "^2.2.1",
- "@nodelib/fs.stat": "^1.0.1",
"glob-parent": "^3.1.0",
"is-glob": "^4.0.0",
"merge2": "^1.2.1",
@@ -4455,9 +4518,9 @@
"dev": true
},
"fbjs": {
- "version": "0.8.17",
- "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
- "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
+ "version": "0.8.16",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz",
+ "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=",
"requires": {
"core-js": "^1.0.0",
"isomorphic-fetch": "^2.1.1",
@@ -4465,7 +4528,7 @@
"object-assign": "^4.1.0",
"promise": "^7.1.1",
"setimmediate": "^1.0.5",
- "ua-parser-js": "^0.7.18"
+ "ua-parser-js": "^0.7.9"
}
},
"fd-slicer": {
@@ -4564,9 +4627,9 @@
"dev": true
},
"flow-parser": {
- "version": "0.75.0",
- "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.75.0.tgz",
- "integrity": "sha512-QEyV/t9TERBOSI/zSx0zhKH6924135WPI7pMmug2n/n/4puFm4mdAq1QaKPA3IPhXDRtManbySkKhRqws5UUGA==",
+ "version": "0.72.0",
+ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.72.0.tgz",
+ "integrity": "sha512-kFaDtviKlD/rHi6NRp42KTbnPgz/nKcWUJQhqDnLDeKA8uGcRVSy0YlQjaf9M3pFo5PgC3SNFnCPpQGLtHjH2w==",
"dev": true
},
"flush-write-stream": {
@@ -4680,24 +4743,28 @@
"dependencies": {
"abbrev": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"aproba": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true,
"optional": true
},
"are-we-there-yet": {
"version": "1.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
"dev": true,
"optional": true,
"requires": {
@@ -4707,12 +4774,14 @@
},
"balanced-match": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
@@ -4721,34 +4790,40 @@
},
"chownr": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
"dev": true,
"optional": true
},
"code-point-at": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
"concat-map": {
"version": "0.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true,
"optional": true
},
"debug": {
"version": "2.6.9",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"optional": true,
"requires": {
@@ -4757,25 +4832,29 @@
},
"deep-extend": {
"version": "0.5.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
"dev": true,
"optional": true
},
"delegates": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
"dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"dev": true,
"optional": true,
"requires": {
@@ -4784,13 +4863,15 @@
},
"fs.realpath": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true,
"optional": true,
"requires": {
@@ -4806,7 +4887,8 @@
},
"glob": {
"version": "7.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"optional": true,
"requires": {
@@ -4820,13 +4902,15 @@
},
"has-unicode": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"dev": true,
"optional": true
},
"iconv-lite": {
"version": "0.4.21",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
"dev": true,
"optional": true,
"requires": {
@@ -4835,7 +4919,8 @@
},
"ignore-walk": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"dev": true,
"optional": true,
"requires": {
@@ -4844,7 +4929,8 @@
},
"inflight": {
"version": "1.0.6",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"optional": true,
"requires": {
@@ -4854,18 +4940,21 @@
},
"inherits": {
"version": "2.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"ini": {
"version": "1.3.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
@@ -4873,13 +4962,15 @@
},
"isarray": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -4887,12 +4978,14 @@
},
"minimist": {
"version": "0.0.8",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
},
"minipass": {
"version": "2.2.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
"dev": true,
"requires": {
"safe-buffer": "^5.1.1",
@@ -4901,7 +4994,8 @@
},
"minizlib": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
"dev": true,
"optional": true,
"requires": {
@@ -4910,7 +5004,8 @@
},
"mkdirp": {
"version": "0.5.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
@@ -4918,13 +5013,15 @@
},
"ms": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true,
"optional": true
},
"needle": {
"version": "2.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
"dev": true,
"optional": true,
"requires": {
@@ -4935,7 +5032,8 @@
},
"node-pre-gyp": {
"version": "0.10.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
"dev": true,
"optional": true,
"requires": {
@@ -4953,7 +5051,8 @@
},
"nopt": {
"version": "4.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
"dev": true,
"optional": true,
"requires": {
@@ -4963,13 +5062,15 @@
},
"npm-bundled": {
"version": "1.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
"dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.1.10",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
"dev": true,
"optional": true,
"requires": {
@@ -4979,7 +5080,8 @@
},
"npmlog": {
"version": "4.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"optional": true,
"requires": {
@@ -4991,18 +5093,21 @@
},
"number-is-nan": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
"object-assign": {
"version": "4.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
@@ -5010,19 +5115,22 @@
},
"os-homedir": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"optional": true,
"requires": {
@@ -5032,19 +5140,22 @@
},
"path-is-absolute": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true,
"optional": true
},
"rc": {
"version": "1.2.7",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
"dev": true,
"optional": true,
"requires": {
@@ -5056,7 +5167,8 @@
"dependencies": {
"minimist": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true,
"optional": true
}
@@ -5064,7 +5176,8 @@
},
"readable-stream": {
"version": "2.3.6",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"optional": true,
"requires": {
@@ -5079,7 +5192,8 @@
},
"rimraf": {
"version": "2.6.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"optional": true,
"requires": {
@@ -5088,42 +5202,49 @@
},
"safe-buffer": {
"version": "5.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true,
"optional": true
},
"semver": {
"version": "5.5.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
"dev": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
@@ -5133,7 +5254,8 @@
},
"string_decoder": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"optional": true,
"requires": {
@@ -5142,7 +5264,8 @@
},
"strip-ansi": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -5150,13 +5273,15 @@
},
"strip-json-comments": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
"dev": true,
"optional": true,
"requires": {
@@ -5171,13 +5296,15 @@
},
"util-deprecate": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
"dev": true,
"optional": true,
"requires": {
@@ -5186,12 +5313,14 @@
},
"wrappy": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"yallist": {
"version": "3.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
"dev": true
}
}
@@ -5532,9 +5661,9 @@
}
},
"growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
+ "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
"dev": true
},
"har-schema": {
@@ -5570,21 +5699,15 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
"dev": true
- },
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true
}
}
},
"has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
"requires": {
- "function-bind": "^1.1.1"
+ "function-bind": "^1.0.2"
}
},
"has-ansi": {
@@ -5679,6 +5802,18 @@
"minimalistic-assert": "^1.0.1"
}
},
+ "hawk": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
+ "dev": true,
+ "requires": {
+ "boom": "4.x.x",
+ "cryptiles": "3.x.x",
+ "hoek": "4.x.x",
+ "sntp": "2.x.x"
+ }
+ },
"he": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
@@ -5696,10 +5831,16 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
+ "hoek": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
+ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
+ "dev": true
+ },
"hoist-non-react-statics": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
- "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz",
+ "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w=="
},
"home-or-tmp": {
"version": "2.0.0",
@@ -5721,9 +5862,9 @@
}
},
"hosted-git-info": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz",
- "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
+ "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
"dev": true
},
"html-comment-regex": {
@@ -5831,9 +5972,9 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -5863,9 +6004,9 @@
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE="
},
"ignore": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
- "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz",
+ "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==",
"dev": true
},
"ignore-styles": {
@@ -6005,9 +6146,9 @@
"dev": true
},
"ipaddr.js": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
- "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+ "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
"dev": true
},
"is-absolute-url": {
@@ -6072,9 +6213,9 @@
}
},
"is-callable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
- "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI="
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
},
"is-data-descriptor": {
"version": "0.1.4",
@@ -6227,12 +6368,37 @@
"dev": true
},
"is-observable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
- "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz",
+ "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=",
+ "dev": true,
+ "requires": {
+ "symbol-observable": "^0.2.2"
+ },
+ "dependencies": {
+ "symbol-observable": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz",
+ "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=",
+ "dev": true
+ }
+ }
+ },
+ "is-odd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
+ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
"dev": true,
"requires": {
- "symbol-observable": "^1.1.0"
+ "is-number": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ }
}
},
"is-path-cwd": {
@@ -6269,6 +6435,7 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
"requires": {
"isobject": "^3.0.1"
}
@@ -6381,7 +6548,8 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
},
"isomorphic-fetch": {
"version": "2.2.1",
@@ -6420,9 +6588,9 @@
}
},
"js-base64": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",
- "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz",
+ "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==",
"dev": true
},
"js-stringify": {
@@ -6454,16 +6622,16 @@
"optional": true
},
"jscodeshift": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.1.tgz",
- "integrity": "sha512-sRMollbhbmSDrR79JMAnhEjyZJlQQVozeeY9A6/KNuV26DNcuB3mGSCWXp0hks9dcwRNOELbNOiwraZaXXRk5Q==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.0.tgz",
+ "integrity": "sha512-JAcQINNMFpdzzpKJN8k5xXjF3XDuckB1/48uScSzcnNyK199iWEc9AxKL9OoX5144M2w5zEx9Qs4/E/eBZZUlw==",
"dev": true,
"requires": {
"babel-plugin-transform-flow-strip-types": "^6.8.0",
"babel-preset-es2015": "^6.9.0",
"babel-preset-stage-1": "^6.5.0",
"babel-register": "^6.9.0",
- "babylon": "^7.0.0-beta.47",
+ "babylon": "^7.0.0-beta.30",
"colors": "^1.1.2",
"flow-parser": "^0.*",
"lodash": "^4.13.1",
@@ -6471,17 +6639,11 @@
"neo-async": "^2.5.0",
"node-dir": "0.1.8",
"nomnom": "^1.8.1",
- "recast": "^0.15.0",
+ "recast": "^0.14.1",
"temp": "^0.8.1",
"write-file-atomic": "^1.2.0"
},
"dependencies": {
- "ansi-styles": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
- "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
- "dev": true
- },
"arr-diff": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
@@ -6498,9 +6660,9 @@
"dev": true
},
"babylon": {
- "version": "7.0.0-beta.47",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz",
- "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==",
+ "version": "7.0.0-beta.46",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.46.tgz",
+ "integrity": "sha512-WFJlg2WatdkXRFMpk7BN/Uzzkjkcjk+WaqnrSCpay+RYl4ypW9ZetZyT9kNt22IH/BQNst3M6PaaBn9IXsUNrg==",
"dev": true
},
"braces": {
@@ -6514,23 +6676,6 @@
"repeat-element": "^1.1.2"
}
},
- "chalk": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
- "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
- "dev": true,
- "requires": {
- "ansi-styles": "~1.0.0",
- "has-color": "~0.1.0",
- "strip-ansi": "~0.1.0"
- }
- },
- "colors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.0.tgz",
- "integrity": "sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw==",
- "dev": true
- },
"expand-brackets": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
@@ -6593,35 +6738,13 @@
"parse-glob": "^3.0.4",
"regex-cache": "^0.4.2"
}
- },
- "nomnom": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
- "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
- "dev": true,
- "requires": {
- "chalk": "~0.4.0",
- "underscore": "~1.6.0"
- }
- },
- "strip-ansi": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
- "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
- "dev": true
- },
- "underscore": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
- "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
- "dev": true
}
}
},
"jsdom": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.11.0.tgz",
- "integrity": "sha512-ou1VyfjwsSuWkudGxb03FotDajxAto6USAlmMZjE2lc0jCznt7sBWkhfRBRaWwbnmDqdMSTKTLT5d9sBFkkM7A==",
+ "version": "11.10.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.10.0.tgz",
+ "integrity": "sha512-x5No5FpJgBg3j5aBwA8ka6eGuS5IxbC8FOkmyccKvObtFT0bDMict/LOxINZsZGZSfGdNomLZ/qRV9Bpq/GIBA==",
"dev": true,
"requires": {
"abab": "^1.0.4",
@@ -6629,13 +6752,13 @@
"acorn-globals": "^4.1.0",
"array-equal": "^1.0.0",
"cssom": ">= 0.3.2 < 0.4.0",
- "cssstyle": ">= 0.3.1 < 0.4.0",
+ "cssstyle": ">= 0.2.37 < 0.3.0",
"data-urls": "^1.0.0",
"domexception": "^1.0.0",
"escodegen": "^1.9.0",
"html-encoding-sniffer": "^1.0.2",
"left-pad": "^1.2.0",
- "nwsapi": "^2.0.0",
+ "nwmatcher": "^1.4.3",
"parse5": "4.0.0",
"pn": "^1.1.0",
"request": "^2.83.0",
@@ -6647,7 +6770,7 @@
"webidl-conversions": "^4.0.2",
"whatwg-encoding": "^1.0.3",
"whatwg-mimetype": "^2.1.0",
- "whatwg-url": "^6.4.1",
+ "whatwg-url": "^6.4.0",
"ws": "^4.0.0",
"xml-name-validator": "^3.0.0"
},
@@ -6685,9 +6808,9 @@
"dev": true
},
"json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
},
"json-stringify-safe": {
"version": "5.0.1",
@@ -6853,16 +6976,16 @@
}
},
"listr": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.1.tgz",
- "integrity": "sha512-MSMUUVN1f8aRnPi4034RkOqdiUlpYW+FqwFE3aL0uYNPRavkt2S2SsSpDDofn8BDpqv2RNnsdOcCHWsChcq77A==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz",
+ "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=",
"dev": true,
"requires": {
- "@samverschueren/stream-to-observable": "^0.3.0",
+ "chalk": "^1.1.3",
"cli-truncate": "^0.2.1",
"figures": "^1.7.0",
"indent-string": "^2.1.0",
- "is-observable": "^1.1.0",
+ "is-observable": "^0.2.0",
"is-promise": "^2.1.0",
"is-stream": "^1.1.0",
"listr-silent-renderer": "^1.1.1",
@@ -6872,7 +6995,8 @@
"log-update": "^1.0.2",
"ora": "^0.2.3",
"p-map": "^1.1.1",
- "rxjs": "^6.1.0",
+ "rxjs": "^5.4.2",
+ "stream-to-observable": "^0.2.0",
"strip-ansi": "^3.0.1"
},
"dependencies": {
@@ -6914,15 +7038,6 @@
"chalk": "^1.0.0"
}
},
- "rxjs": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.1.tgz",
- "integrity": "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -7262,9 +7377,9 @@
}
},
"lolex": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz",
- "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.4.1.tgz",
+ "integrity": "sha512-8QdNQMqlAE2kkc2YWR3Ld0evgE452mmyYZR4HTh54PeH8UAjDipHYh/FHq6y9cAvM68nxGxj5jAz97+WQ2AQEQ==",
"dev": true
},
"long": {
@@ -7312,10 +7427,16 @@
"yallist": "^2.1.2"
}
},
+ "macaddress": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz",
+ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
+ "dev": true
+ },
"make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz",
+ "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==",
"requires": {
"pify": "^3.0.0"
}
@@ -7448,9 +7569,9 @@
"dev": true
},
"vinyl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
- "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
+ "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
"dev": true,
"requires": {
"clone": "^2.1.1",
@@ -7644,28 +7765,28 @@
}
},
"mocha": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
- "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.1.tgz",
+ "integrity": "sha512-kKKs/H1KrMMQIEsWNxGmb4/BGsmj0dkeyotEvbrAuQ01FcWRLssUNXCEUZk6SZtyJBi6EE7SL0zDDtItw1rGhw==",
"dev": true,
"requires": {
"browser-stdout": "1.3.1",
- "commander": "2.15.1",
+ "commander": "2.11.0",
"debug": "3.1.0",
"diff": "3.5.0",
"escape-string-regexp": "1.0.5",
"glob": "7.1.2",
- "growl": "1.10.5",
+ "growl": "1.10.3",
"he": "1.1.1",
"minimatch": "3.0.4",
"mkdirp": "0.5.1",
- "supports-color": "5.4.0"
+ "supports-color": "4.4.0"
},
"dependencies": {
"commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+ "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
"dev": true
},
"debug": {
@@ -7678,22 +7799,27 @@
}
},
"has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
"dev": true
},
"supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
+ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^2.0.0"
}
}
}
},
+ "moo": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz",
+ "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw=="
+ },
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
@@ -7739,9 +7865,9 @@
"optional": true
},
"nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
+ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
@@ -7749,6 +7875,7 @@
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"fragment-cache": "^0.2.1",
+ "is-odd": "^2.0.0",
"is-windows": "^1.0.2",
"kind-of": "^6.0.2",
"object.pick": "^1.3.0",
@@ -7758,14 +7885,36 @@
}
},
"nearley": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.13.0.tgz",
- "integrity": "sha512-ioYYogSaZhFlCpRizQgY3UT3G1qFXmHGY/5ozoFE3dMfiCRAeJfh+IPE3/eh9gCZvqLhPCWb4bLt7Bqzo+1mLQ==",
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.15.1.tgz",
+ "integrity": "sha512-8IUY/rUrKz2mIynUGh8k+tul1awMKEjeHHC5G3FHvvyAW6oq4mQfNp2c0BMea+sYZJvYcrrM6GmZVIle/GRXGw==",
"requires": {
+ "moo": "^0.4.3",
"nomnom": "~1.6.2",
"railroad-diagrams": "^1.0.0",
"randexp": "0.4.6",
"semver": "^5.4.1"
+ },
+ "dependencies": {
+ "colors": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
+ "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q="
+ },
+ "nomnom": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz",
+ "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=",
+ "requires": {
+ "colors": "0.5.x",
+ "underscore": "~1.4.4"
+ }
+ },
+ "underscore": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
+ "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
+ }
}
},
"negotiator": {
@@ -7793,9 +7942,9 @@
"dev": true
},
"nise": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz",
- "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz",
+ "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==",
"dev": true,
"requires": {
"@sinonjs/formatio": "^2.0.0",
@@ -7895,12 +8044,38 @@
}
},
"nomnom": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz",
- "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
+ "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
+ "dev": true,
"requires": {
- "colors": "0.5.x",
- "underscore": "~1.4.4"
+ "chalk": "~0.4.0",
+ "underscore": "~1.6.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "~1.0.0",
+ "has-color": "~0.1.0",
+ "strip-ansi": "~0.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
+ "dev": true
+ }
}
},
"normalize-package-data": {
@@ -7971,10 +8146,10 @@
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
- "nwsapi": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.4.tgz",
- "integrity": "sha512-Zt6HRR6RcJkuj5/N9zeE7FN6YitRW//hK2wTOwX274IBphbY3Zf5+yn5mZ9v/SzAOTMjQNxZf9KkmPLWn0cV4g==",
+ "nwmatcher": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
+ "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==",
"dev": true
},
"oauth-sign": {
@@ -8030,9 +8205,9 @@
"integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY="
},
"object-keys": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
- "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag=="
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
+ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
},
"object-visit": {
"version": "1.0.1",
@@ -8262,9 +8437,9 @@
"dev": true
},
"p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
+ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
"requires": {
"p-try": "^1.0.0"
}
@@ -8382,13 +8557,6 @@
"integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
"requires": {
"@types/node": "*"
- },
- "dependencies": {
- "@types/node": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.0.tgz",
- "integrity": "sha512-baXPuqA7EVcBUpA5so2K26DTzk7NCWBc9xrPMu9PbUMwgusJRm9zJBPhiDmJVEcnTQ3aOxUZeuFHpd9qMYDNRg=="
- }
}
},
"parseurl": {
@@ -8659,12 +8827,13 @@
}
},
"postcss-filter-plugins": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz",
- "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz",
+ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
"dev": true,
"requires": {
- "postcss": "^5.0.4"
+ "postcss": "^5.0.4",
+ "uniqid": "^4.0.0"
}
},
"postcss-load-config": {
@@ -8718,9 +8887,9 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -8839,9 +9008,9 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -8877,9 +9046,9 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -8925,9 +9094,9 @@
}
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -8963,9 +9132,9 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -9001,9 +9170,9 @@
"dev": true
},
"postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "version": "6.0.22",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+ "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -9169,9 +9338,9 @@
"dev": true
},
"prettier": {
- "version": "1.13.6",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.6.tgz",
- "integrity": "sha512-p5eqCNiohWZN++7aJXUVj0JgLqHCPLf9GLIcLBHGNWs4Y9FJOPs6+KNO2WT0udJIQJTbeZFrJkjzjcb8fkAYYQ==",
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz",
+ "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=",
"dev": true
},
"pretty-bytes": {
@@ -9211,22 +9380,23 @@
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
},
"prop-types": {
- "version": "15.6.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
- "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "version": "15.6.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz",
+ "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==",
"requires": {
+ "fbjs": "^0.8.16",
"loose-envify": "^1.3.1",
"object-assign": "^4.1.1"
}
},
"proxy-addr": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
- "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
+ "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"dev": true,
"requires": {
"forwarded": "~0.1.2",
- "ipaddr.js": "1.6.0"
+ "ipaddr.js": "1.8.0"
}
},
"prr": {
@@ -9446,9 +9616,9 @@
}
},
"pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.0.tgz",
+ "integrity": "sha512-UWi0klDoq8xtVzlMRgENV9F7iCTZExaJQSQL187UXsxpk9NnrKGqTqqUNYAKGOzucSOxs2+jUnRNI+rLviPhJg==",
"requires": {
"duplexify": "^3.6.0",
"inherits": "^2.0.3",
@@ -9456,9 +9626,9 @@
}
},
"punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
+ "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0="
},
"q": {
"version": "1.5.1",
@@ -9605,9 +9775,9 @@
}
},
"react": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react/-/react-16.4.1.tgz",
- "integrity": "sha512-3GEs0giKp6E0Oh/Y9ZC60CmYgUPnp7voH9fbjWsvXtYFb4EWtgQub0ADSq0sJR0BbHc4FThLLtzlcFaFXIorwg==",
+ "version": "16.3.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.3.2.tgz",
+ "integrity": "sha512-o5GPdkhciQ3cEph6qgvYB7LTOHw/GB0qRI6ZFNugj49qJCFfgHwVNjZ5u+b7nif4vOeMIOuYj3CeYe2IBD74lg==",
"requires": {
"fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
@@ -9646,9 +9816,9 @@
}
},
"react-dom": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.1.tgz",
- "integrity": "sha512-1Gin+wghF/7gl4Cqcvr1DxFX2Osz7ugxSwl6gBqCMpdrxHjIFUS7GYxrFftZ9Ln44FHw0JxCFD9YtZsrbR5/4A==",
+ "version": "16.3.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.3.2.tgz",
+ "integrity": "sha512-MMPko3zYncNrz/7gG17wJWUREZDvskZHXOwbttzl0F0L3wDmToyuETuo/r8Y5yvDejwYcRyWI1lvVBjLJWFwKA==",
"requires": {
"fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
@@ -9657,9 +9827,9 @@
}
},
"react-is": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.1.tgz",
- "integrity": "sha512-xpb0PpALlFWNw/q13A+1aHeyJyLYCg0/cCHPUA43zYluZuIPHaHL3k8OBsTgQtxqW0FhyDEMvi8fZ/+7+r4OSQ=="
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.2.tgz",
+ "integrity": "sha512-rI3cGFj/obHbBz156PvErrS5xc6f1eWyTwyV4mo0vF2lGgXgS+mm7EKD5buLJq6jNgIagQescGSVG2YzgXt8Yg=="
},
"react-proxy": {
"version": "1.1.8",
@@ -9696,14 +9866,14 @@
}
},
"react-test-renderer": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.4.1.tgz",
- "integrity": "sha512-wyyiPxRZOTpKnNIgUBOB6xPLTpIzwcQMIURhZvzUqZzezvHjaGNsDPBhMac5fIY3Jf5NuKxoGvV64zDSOECPPQ==",
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.4.2.tgz",
+ "integrity": "sha512-vdTPnRMDbxfv4wL4lzN4EkVGXyYs7LE2uImOsqh1FKiP6L5o1oJl8nore5sFi9vxrP9PK3l4rgb/fZ4PVUaWSA==",
"requires": {
"fbjs": "^0.8.16",
"object-assign": "^4.1.1",
"prop-types": "^15.6.0",
- "react-is": "^16.4.1"
+ "react-is": "^16.4.2"
}
},
"react-transform-catch-errors": {
@@ -9780,12 +9950,12 @@
}
},
"recast": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.15.0.tgz",
- "integrity": "sha512-47C2mIxQYvFICrTNuV4+xGgBa1nAoq42ANN5oDTSBIJ50NX7jcki7gAC6HWYptnQgHmqIRTHJq8OKdi3fwgyNQ==",
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz",
+ "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==",
"dev": true,
"requires": {
- "ast-types": "0.11.5",
+ "ast-types": "0.11.3",
"esprima": "~4.0.0",
"private": "~0.1.5",
"source-map": "~0.6.1"
@@ -9881,9 +10051,9 @@
"integrity": "sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU="
},
"regenerate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
- "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz",
+ "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==",
"dev": true
},
"regenerator-runtime": {
@@ -9990,9 +10160,9 @@
"dev": true
},
"request": {
- "version": "2.87.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
- "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "version": "2.85.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
+ "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
@@ -10003,6 +10173,7 @@
"forever-agent": "~0.6.1",
"form-data": "~2.3.1",
"har-validator": "~5.0.3",
+ "hawk": "~6.0.2",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
@@ -10012,6 +10183,7 @@
"performance-now": "^2.1.0",
"qs": "~6.5.1",
"safe-buffer": "^5.1.1",
+ "stringstream": "~0.0.5",
"tough-cookie": "~2.3.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.1.0"
@@ -10056,9 +10228,9 @@
"dev": true
},
"resolve": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
- "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
"dev": true,
"requires": {
"path-parse": "^1.0.5"
@@ -10172,10 +10344,25 @@
"aproba": "^1.1.1"
}
},
+ "rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
+ },
+ "rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
+ "requires": {
+ "rx-lite": "*"
+ }
+ },
"rxjs": {
- "version": "5.5.11",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz",
- "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==",
+ "version": "5.5.10",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz",
+ "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
@@ -10547,6 +10734,15 @@
}
}
},
+ "sntp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.x.x"
+ }
+ },
"sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -10567,12 +10763,12 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"source-map-resolve": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz",
+ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==",
"dev": true,
"requires": {
- "atob": "^2.1.1",
+ "atob": "^2.0.0",
"decode-uri-component": "^0.2.0",
"resolve-url": "^0.2.1",
"source-map-url": "^0.4.0",
@@ -10580,9 +10776,9 @@
}
},
"source-map-support": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
- "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz",
+ "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -10660,9 +10856,9 @@
"dev": true
},
"sshpk": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
- "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
+ "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
"dev": true,
"requires": {
"asn1": "~0.2.3",
@@ -10672,7 +10868,6 @@
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
@@ -10760,6 +10955,15 @@
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
},
+ "stream-to-observable": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz",
+ "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=",
+ "dev": true,
+ "requires": {
+ "any-observable": "^0.2.0"
+ }
+ },
"strict-uri-encode": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
@@ -10807,6 +11011,12 @@
"safe-buffer": "~5.1.0"
}
},
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
+ },
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -10852,15 +11062,14 @@
}
},
"styled-components": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.3.3.tgz",
- "integrity": "sha1-CecCBVqxH3qOq4IpscDQuFUJVoY=",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.4.2.tgz",
+ "integrity": "sha512-eTmIiWstyDLccHZAyp+aCPirlkTvYiHlYGgWQxOYDv8Ko0o6mfnDo0+DnUnKinO8NzAfQXEDP7Bh0qlazwJgrw==",
"requires": {
"buffer": "^5.0.3",
"css-to-react-native": "^2.0.3",
"fbjs": "^0.8.16",
"hoist-non-react-statics": "^2.5.0",
- "is-plain-object": "^2.0.1",
"prop-types": "^15.5.4",
"react-is": "^16.3.1",
"stylis": "^3.5.0",
@@ -10869,9 +11078,9 @@
}
},
"stylis": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.1.tgz",
- "integrity": "sha512-yM4PyeHuwhIOUHNJxi1/Mbq8kVLv4AkyE7IYLP/LK0lIFcr3tRa2H1iZlBYKIxOlf+/jruBTe8DdKSyQX9w4OA=="
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.3.tgz",
+ "integrity": "sha512-TxU0aAscJghF9I3V9q601xcK3Uw1JbXvpsBGj/HULqexKOKlOEzzlIpLFRbKkCK990ccuxfXUqmPbIIo7Fq/cQ=="
},
"stylis-rule-sheet": {
"version": "0.0.10",
@@ -10899,14 +11108,6 @@
"mkdirp": "~0.5.1",
"sax": "~1.2.1",
"whet.extend": "~0.9.9"
- },
- "dependencies": {
- "colors": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
- "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
- "dev": true
- }
}
},
"symbol-observable": {
@@ -10927,16 +11128,16 @@
"dev": true
},
"tar-stream": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz",
- "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.0.tgz",
+ "integrity": "sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw==",
"dev": true,
"requires": {
"bl": "^1.0.0",
"buffer-alloc": "^1.1.0",
"end-of-stream": "^1.0.0",
"fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
+ "readable-stream": "^2.0.0",
"to-buffer": "^1.1.0",
"xtend": "^4.0.0"
}
@@ -11115,25 +11316,25 @@
"dev": true
},
"ts-node": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz",
- "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.0.3.tgz",
+ "integrity": "sha512-ARaOMNFEPKg2ZuC1qJddFvHxHNFVckR0g9xLxMIoMqSSIkDc8iS4/LoV53EdDWWNq2FGwqcEf0bVVGJIWpsznw==",
"dev": true,
"requires": {
"arrify": "^1.0.0",
- "buffer-from": "^1.1.0",
+ "chalk": "^2.3.0",
"diff": "^3.1.0",
"make-error": "^1.1.1",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
- "source-map-support": "^0.5.6",
+ "source-map-support": "^0.5.3",
"yn": "^2.0.0"
}
},
"tslib": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
- "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
+ "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==",
"dev": true
},
"tslint": {
@@ -11157,39 +11358,30 @@
}
},
"tslint-config-standard": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/tslint-config-standard/-/tslint-config-standard-7.1.0.tgz",
- "integrity": "sha512-cETzxZcEQ1RKjwtEScGryAtqwiRFc55xBxhZP6bePyOfXmo6i1/QKQrTgFKBiM4FjCvcqTjJq20/KGrh+TzTfQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/tslint-config-standard/-/tslint-config-standard-7.0.0.tgz",
+ "integrity": "sha512-QCrLt8WwiRgZpRSgRsk6cExy8/Vipa/5fHespm4Q1ly90EB6Lni04Ub8dkEW10bV3fPN3SkxEwj41ZOe/knCZA==",
"dev": true,
"requires": {
- "tslint-eslint-rules": "^5.3.1"
+ "tslint-eslint-rules": "^4.1.1"
}
},
"tslint-eslint-rules": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-5.3.1.tgz",
- "integrity": "sha512-qq2H/AU/FlFbQJKXuxhtIk+ni/nQu9jHHhsFKa6hnA0/n3zl1/RWRc3TVFlL8HfWFMzkST350VeTrFpy1u4OUg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-4.1.1.tgz",
+ "integrity": "sha1-fDDniC8mvCdr/5HSOEl1xp2viLo=",
"dev": true,
"requires": {
- "doctrine": "0.7.2",
- "tslib": "1.9.0",
- "tsutils": "2.8.0"
+ "doctrine": "^0.7.2",
+ "tslib": "^1.0.0",
+ "tsutils": "^1.4.0"
},
"dependencies": {
- "tslib": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
- "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==",
- "dev": true
- },
"tsutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.8.0.tgz",
- "integrity": "sha1-AWAXNymzvxOGKN0UoVN+AIUdgUo=",
- "dev": true,
- "requires": {
- "tslib": "^1.7.1"
- }
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz",
+ "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=",
+ "dev": true
}
}
},
@@ -11203,9 +11395,9 @@
}
},
"tsutils": {
- "version": "2.27.1",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz",
- "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==",
+ "version": "2.26.2",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.2.tgz",
+ "integrity": "sha512-uzwnhmrSbyinPCiwfzGsOY3IulBTwoky7r83HmZdz9QNCjhSCzavkh47KLWuU0zF2F2WbpmmzoJUIEiYyd+jEQ==",
"dev": true,
"requires": {
"tslib": "^1.8.1"
@@ -11264,9 +11456,9 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"typescript": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
- "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz",
+ "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==",
"dev": true
},
"ua-parser-js": {
@@ -11291,9 +11483,9 @@
"optional": true
},
"uglifyjs-webpack-plugin": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz",
- "integrity": "sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz",
+ "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==",
"requires": {
"cacache": "^10.0.4",
"find-cache-dir": "^1.0.0",
@@ -11306,9 +11498,10 @@
}
},
"underscore": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
- "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
+ "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
+ "dev": true
},
"union-value": {
"version": "1.0.0",
@@ -11351,6 +11544,15 @@
"integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
"dev": true
},
+ "uniqid": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
+ "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
+ "dev": true,
+ "requires": {
+ "macaddress": "^0.2.8"
+ }
+ },
"uniqs": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
@@ -11365,6 +11567,11 @@
"unique-slug": "^2.0.0"
}
},
+ "unique-selector": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/unique-selector/-/unique-selector-0.3.6.tgz",
+ "integrity": "sha1-IeDJgqvNeUan7EN4+RzOrHRWVl4="
+ },
"unique-slug": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
@@ -11420,9 +11627,9 @@
}
},
"untildify": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz",
- "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.2.tgz",
+ "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=",
"dev": true
},
"upath": {
@@ -11432,9 +11639,9 @@
"dev": true
},
"uri-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
- "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz",
+ "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==",
"requires": {
"punycode": "^2.1.0"
}
@@ -11464,9 +11671,9 @@
}
},
"url-join": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
- "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
+ "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=",
"dev": true
},
"url-parse-lax": {
@@ -11522,15 +11729,15 @@
"dev": true
},
"uuid": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.0.tgz",
- "integrity": "sha512-ijO9N2xY/YaOqQ5yz5c4sy2ZjWmA6AR6zASb/gdpeKZ8+948CxwfMW9RrKVk5may6ev8c0/Xguu32e2Llelpqw==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
"dev": true
},
"v8-compile-cache": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz",
- "integrity": "sha512-qNdTUMaCjPs4eEnM3W9H94R3sU70YCuT+/ST7nUf+id1bVOrdjrpUaeZLqPBPRph3hsgn4a4BvwpxhHZx+oSDg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz",
+ "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==",
"dev": true
},
"validate-npm-package-license": {
@@ -11647,9 +11854,9 @@
"dev": true
},
"webpack": {
- "version": "4.16.1",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.16.1.tgz",
- "integrity": "sha512-6jpzObU18y7lXDJz7XCLvzgrqcJ0rZ2jhKvnTivza9gM2GvPW93xxtmEll2GgmdC0zVQAtbHrH/9BtyMjSDZfA==",
+ "version": "4.16.5",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.16.5.tgz",
+ "integrity": "sha512-i5cHYHonzSc1zBuwB5MSzW4v9cScZFbprkHK8ZgzPDCRkQXGGpYzPmJhbus5bOrZ0tXTcQp+xyImRSvKb0b+Kw==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.5.13",
@@ -11679,6 +11886,12 @@
"webpack-sources": "^1.0.1"
},
"dependencies": {
+ "acorn": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
+ "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
+ "dev": true
+ },
"enhanced-resolve": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
@@ -11701,12 +11914,6 @@
"jscodeshift": "^0.4.0"
},
"dependencies": {
- "ansi-styles": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
- "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
- "dev": true
- },
"arr-diff": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
@@ -11745,27 +11952,10 @@
"repeat-element": "^1.1.2"
}
},
- "chalk": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
- "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
- "dev": true,
- "requires": {
- "ansi-styles": "~1.0.0",
- "has-color": "~0.1.0",
- "strip-ansi": "~0.1.0"
- }
- },
- "colors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.0.tgz",
- "integrity": "sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw==",
- "dev": true
- },
"core-js": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz",
+ "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==",
"dev": true
},
"esprima": {
@@ -11860,16 +12050,6 @@
"regex-cache": "^0.4.2"
}
},
- "nomnom": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
- "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
- "dev": true,
- "requires": {
- "chalk": "~0.4.0",
- "underscore": "~1.6.0"
- }
- },
"recast": {
"version": "0.12.9",
"resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz",
@@ -11882,53 +12062,41 @@
"private": "~0.1.5",
"source-map": "~0.6.1"
}
- },
- "strip-ansi": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
- "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
- "dev": true
- },
- "underscore": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
- "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
- "dev": true
}
}
},
"webpack-cli": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.1.5.tgz",
- "integrity": "sha512-CiWQR+1JS77rmyiO6y1q8Kt/O+e8nUUC9YfJ25JtSmzDwbqJV7vIsh3+QKRHVTbTCa0DaVh8iY1LBiagUIDB3g==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.1.3.tgz",
+ "integrity": "sha512-5AsKoL/Ccn8iTrwk3uErdyhetGH+c7VRQ7Itim2GL0IhBRq5rtojVDk00buMRmFmBpw1RvHXq97Gup965LbozA==",
"dev": true,
"requires": {
- "chalk": "^2.4.1",
+ "chalk": "^2.3.2",
"cross-spawn": "^6.0.5",
"diff": "^3.5.0",
"enhanced-resolve": "^4.0.0",
- "envinfo": "^5.7.0",
+ "envinfo": "^4.4.2",
"glob-all": "^3.1.0",
"global-modules": "^1.0.0",
- "got": "^8.3.1",
+ "got": "^8.2.0",
"import-local": "^1.0.0",
- "inquirer": "^5.2.0",
- "interpret": "^1.1.0",
+ "inquirer": "^5.1.0",
+ "interpret": "^1.0.4",
"jscodeshift": "^0.5.0",
- "listr": "^0.14.1",
+ "listr": "^0.13.0",
"loader-utils": "^1.1.0",
- "lodash": "^4.17.10",
+ "lodash": "^4.17.5",
"log-symbols": "^2.2.0",
"mkdirp": "^0.5.1",
"p-each-series": "^1.0.0",
"p-lazy": "^1.0.0",
- "prettier": "^1.12.1",
- "supports-color": "^5.4.0",
- "v8-compile-cache": "^2.0.0",
+ "prettier": "^1.5.3",
+ "supports-color": "^5.3.0",
+ "v8-compile-cache": "^1.1.2",
"webpack-addons": "^1.1.5",
"yargs": "^11.1.0",
- "yeoman-environment": "^2.1.1",
- "yeoman-generator": "^2.0.5"
+ "yeoman-environment": "^2.0.0",
+ "yeoman-generator": "^2.0.4"
},
"dependencies": {
"ansi-regex": {
@@ -11948,6 +12116,19 @@
"wrap-ansi": "^2.0.0"
}
},
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -12001,9 +12182,9 @@
}
},
"webpack-dev-middleware": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-2.0.6.tgz",
- "integrity": "sha512-tj5LLD9r4tDuRIDa5Mu9lnY2qBBehAITv6A9irqXhw/HQquZgTx3BCd57zYbU2gMDnncA49ufK2qVQSbaKJwOw==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz",
+ "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==",
"dev": true,
"requires": {
"loud-rejection": "^1.6.0",
@@ -12011,7 +12192,7 @@
"mime": "^2.1.0",
"path-is-absolute": "^1.0.0",
"range-parser": "^1.0.3",
- "url-join": "^2.0.2",
+ "url-join": "^4.0.0",
"webpack-log": "^1.0.1"
},
"dependencies": {
@@ -12036,15 +12217,14 @@
}
},
"webpack-httpolyglot-server": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/webpack-httpolyglot-server/-/webpack-httpolyglot-server-0.3.0.tgz",
- "integrity": "sha512-Ab0iYT8f9Ni7PgjI/YY8cJRYmtLrdKxZV7L+nXsD7x5khB4XVwg4aAtSmx3EitvAZZIr8TTzmFl3VfbLrpkKvw==",
+ "version": "github:brave/webpack-httpolyglot-server#d9aab3c052bd1dd6b4770d331511220c456303e9",
+ "from": "github:brave/webpack-httpolyglot-server",
"dev": true,
"requires": {
"express": "^4.14.0",
"httpolyglot": "^0.1.1",
"lodash.omit": "^4.5.0",
- "webpack-dev-middleware": "^2.0.4",
+ "webpack-dev-middleware": "^3.1.3",
"webpack-hot-middleware": "^2.12.2"
}
},
@@ -12098,9 +12278,9 @@
"dev": true
},
"whatwg-url": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
- "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz",
+ "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==",
"dev": true,
"requires": {
"lodash.sortby": "^4.7.0",
@@ -12115,9 +12295,9 @@
"dev": true
},
"which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
@@ -12318,24 +12498,22 @@
}
},
"yeoman-environment": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.3.0.tgz",
- "integrity": "sha512-PHSAkVOqYdcR+C+Uht1SGC4eVD/9OhygYFkYaI66xF8vKIeS1RNYay+umj2ZrQeJ50tF5Q/RSO6qGDz9y3Ifug==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.6.tgz",
+ "integrity": "sha512-jzHBTTy8EPI4ImV8dpUMt+Q5zELkSU5xvGpndHcHudQ4tqN6YgIWaCGmRFl+HDchwRUkcgyjQ+n6/w5zlJBCPg==",
"dev": true,
"requires": {
"chalk": "^2.1.0",
- "cross-spawn": "^6.0.5",
"debug": "^3.1.0",
"diff": "^3.3.1",
"escape-string-regexp": "^1.0.2",
- "globby": "^8.0.1",
+ "globby": "^6.1.0",
"grouped-queue": "^0.3.3",
- "inquirer": "^5.2.0",
+ "inquirer": "^3.3.0",
"is-scoped": "^1.0.0",
- "lodash": "^4.17.10",
+ "lodash": "^4.17.4",
"log-symbols": "^2.1.0",
"mem-fs": "^1.1.0",
- "strip-ansi": "^4.0.0",
"text-table": "^0.2.0",
"untildify": "^3.0.2"
},
@@ -12355,19 +12533,26 @@
"ms": "2.0.0"
}
},
- "globby": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
- "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
- "dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "dir-glob": "^2.0.0",
- "fast-glob": "^2.0.2",
- "glob": "^7.1.2",
- "ignore": "^3.3.5",
- "pify": "^3.0.0",
- "slash": "^1.0.0"
+ "inquirer": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
+ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.0.4",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rx-lite": "^4.0.8",
+ "rx-lite-aggregates": "^4.0.8",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
}
},
"strip-ansi": {
@@ -12414,6 +12599,19 @@
"yeoman-environment": "^2.0.5"
},
"dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
diff --git a/package.json b/package.json
index 3513dc05dd11..91db4d841b94 100644
--- a/package.json
+++ b/package.json
@@ -86,7 +86,7 @@
"webpack": "^4.16.1",
"webpack-cli": "^2.0.15",
"webpack-hot-middleware": "^2.22.3",
- "webpack-httpolyglot-server": "^0.3.0"
+ "webpack-httpolyglot-server": "github:brave/webpack-httpolyglot-server"
},
"dependencies": {
"@types/selenium-webdriver": "^3.0.8",
@@ -104,7 +104,8 @@
"redux": "^3.7.2",
"redux-logger": "^3.0.6",
"redux-thunk": "2.2.0",
- "uglifyjs-webpack-plugin": "^1.2.5"
+ "uglifyjs-webpack-plugin": "^1.2.5",
+ "unique-selector": "^0.3.6"
},
"optionalDependencies": {
"pre-push": "^0.1.1"
diff --git a/test/app/actions/cosmeticFilterActionsTest.ts b/test/app/actions/cosmeticFilterActionsTest.ts
new file mode 100644
index 000000000000..bb310334c232
--- /dev/null
+++ b/test/app/actions/cosmeticFilterActionsTest.ts
@@ -0,0 +1,34 @@
+/* global describe, it */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import 'mocha'
+import * as assert from 'assert'
+import * as types from '../../../app/constants/cosmeticFilterTypes'
+import * as actions from '../../../app/actions/cosmeticFilterActions'
+import {} from '../../../app/types/actions/cosmeticFilterActions'
+
+describe('cosmeticFilterActions', () => {
+ it('siteCosmeticFilterAdded action', () => {
+ const origin = 'https://a.com'
+ const cssfilter = '#filter'
+ assert.deepEqual(actions.siteCosmeticFilterAdded(origin, cssfilter), {
+ type: types.SITE_COSMETIC_FILTER_ADDED,
+ origin,
+ cssfilter
+ })
+ })
+ it('siteCosmeticFilterRemoved action', () => {
+ const origin = 'https://a.com'
+ assert.deepEqual(actions.siteCosmeticFilterRemoved(origin), {
+ type: types.SITE_COSMETIC_FILTER_REMOVED,
+ origin
+ })
+ })
+ it('allCosmeticFiltersRemoved action', () => {
+ assert.deepEqual(actions.allCosmeticFiltersRemoved(), {
+ type: types.ALL_COSMETIC_FILTERS_REMOVED
+ })
+ })
+})
diff --git a/test/app/actions/webNavigationActionsTest.ts b/test/app/actions/webNavigationActionsTest.ts
index 26d8d56e3c75..266e1fd4eb3c 100644
--- a/test/app/actions/webNavigationActionsTest.ts
+++ b/test/app/actions/webNavigationActionsTest.ts
@@ -20,4 +20,16 @@ describe('webNavigationActions', () => {
isMainFrame
})
})
+ it('onCommitted', () => {
+ const tabId = 1
+ const url = 'https://www.brave.com'
+ const isMainFrame = true
+ assert.deepEqual(actions.onCommitted(tabId, url, isMainFrame), {
+ type: types.ON_COMMITTED,
+ url,
+ tabId,
+ isMainFrame
+ })
+ })
+
})
diff --git a/test/app/background/api/cosmeticFilterAPITest.ts b/test/app/background/api/cosmeticFilterAPITest.ts
new file mode 100644
index 000000000000..eaeee24750dc
--- /dev/null
+++ b/test/app/background/api/cosmeticFilterAPITest.ts
@@ -0,0 +1,223 @@
+
+import 'mocha'
+import * as sinon from 'sinon'
+import * as assert from 'assert'
+
+import * as cosmeticFilterAPI from '../../../../app/background/api/cosmeticFilterAPI'
+
+describe('cosmeticFilterTestSuite', () => {
+ describe('addSiteCosmeticFilter', function () {
+ const url = 'https://www.brave.com'
+ const filter = '#cssFilter'
+
+ before(function () {
+ this.getStorageStub = sinon.stub(chrome.storage.local, 'get')
+ this.setStorageStub = sinon.stub(chrome.storage.local, 'set')
+ })
+ after(function () {
+ this.getStorageStub.restore()
+ this.setStorageStub.restore()
+ })
+ beforeEach(function () {
+ this.getStorageStub.reset()
+ this.setStorageStub.reset()
+ })
+
+ it('passes only 1 arg to chrome.storage.local.set', function () {
+ this.getStorageStub.yields({
+ 'list': {
+ 'hostname': ['samplefilter']
+ }
+ })
+ cosmeticFilterAPI.addSiteCosmeticFilter(url, filter)
+ assert.equal(this.setStorageStub.getCall(0).args.length, 1)
+ })
+ it('passes the correct arguments to chrome.storage.local.set when storage is empty', function () {
+ this.getStorageStub.yields({})
+ cosmeticFilterAPI.addSiteCosmeticFilter(url, filter)
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ cosmeticFilterList: {
+ 'https://www.brave.com': ['#cssFilter']
+ }
+ })
+ })
+ it('passes the correct arguments to chrome.storage.local.set when storage is undefined', function () {
+ this.getStorageStub.yields(undefined)
+ cosmeticFilterAPI.addSiteCosmeticFilter(url, filter)
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ cosmeticFilterList: {
+ 'https://www.brave.com': ['#cssFilter']
+ }
+ })
+ })
+ it('can add more than 1 filter', function () {
+ this.getStorageStub.yields({
+ 'cosmeticFilterList': {
+ 'hostname': ['samplefilter']
+ }
+ })
+ cosmeticFilterAPI.addSiteCosmeticFilter('hostname', 'samplefilter2')
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ 'cosmeticFilterList': {
+ 'hostname': ['samplefilter', 'samplefilter2']
+ }
+ })
+ })
+ })
+ describe('removeSiteFilter', function () {
+ const url = 'https://www.brave.com'
+ const filter = '#cssFilter'
+
+ before(function () {
+ this.getStorageStub = sinon.stub(chrome.storage.local, 'get')
+ this.setStorageStub = sinon.stub(chrome.storage.local, 'set')
+ })
+ after(function () {
+ this.getStorageStub.restore()
+ this.setStorageStub.restore()
+ })
+ beforeEach(function () {
+ this.getStorageStub.reset()
+ this.setStorageStub.reset()
+ })
+ it('passes only 1 arg to chrome.storage.local.set', function () {
+ this.getStorageStub.yields({
+ 'cosmeticFilterList': {
+ url: filter
+ }
+ })
+ cosmeticFilterAPI.removeSiteFilter(url)
+ assert.equal(this.setStorageStub.getCall(0).args.length, 1)
+ })
+ it('removes the correct filter', function () {
+ this.getStorageStub.yields({
+ cosmeticFilterList: {
+ 'https://www.brave.com': ['#cssFilter'],
+ 'https://notbrave.com': ['notACSSFilter']
+ }
+ })
+ cosmeticFilterAPI.removeSiteFilter(url)
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ cosmeticFilterList: {
+ 'https://notbrave.com': ['notACSSFilter']
+ }
+ })
+ })
+ it('handles empty storage', function () {
+ this.getStorageStub.yields({})
+ cosmeticFilterAPI.removeSiteFilter(url)
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ cosmeticFilterList: {}
+ })
+ })
+ it('handles undefined storage', function () {
+ this.getStorageStub.yields(undefined)
+ cosmeticFilterAPI.removeSiteFilter(url)
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ cosmeticFilterList: {}
+ })
+ })
+ it('handles url not in storage', function () {
+ this.getStorageStub.yields({
+ cosmeticFilterList: {
+ url: filter
+ }
+ })
+ cosmeticFilterAPI.removeSiteFilter('urlNotInStorage')
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ cosmeticFilterList: {
+ url: filter
+ }
+ })
+ })
+ })
+ describe('removeAllFilters', function () {
+ before(function () {
+ this.getStorageStub = sinon.stub(chrome.storage.local, 'get')
+ this.setStorageStub = sinon.stub(chrome.storage.local, 'set')
+ })
+ after(function () {
+ this.getStorageStub.restore()
+ this.setStorageStub.restore()
+ })
+ beforeEach(function () {
+ this.getStorageStub.reset()
+ this.setStorageStub.reset()
+ })
+
+ it('sets empty list object', function () {
+ this.getStorageStub.yields({
+ cosmeticFilterList: {
+ 'hostname': 'isNotEmpty'
+ }
+ })
+ cosmeticFilterAPI.removeAllFilters()
+ assert.deepEqual(this.setStorageStub.getCall(0).args[0], {
+ cosmeticFilterList: {}
+ })
+ })
+ })
+ describe('applySiteFilters', function () {
+ const filter = '#cssFilter'
+ const filter2 = '#cssFilter2'
+
+ before(function () {
+ this.getStorageStub = sinon.stub(chrome.storage.local, 'get')
+ this.setStorageStub = sinon.stub(chrome.storage.local, 'set')
+ this.insertCSSStub = sinon.stub(chrome.tabs, 'insertCSS')
+ })
+ after(function () {
+ this.getStorageStub.restore()
+ this.setStorageStub.restore()
+ this.insertCSSStub.restore()
+ })
+ beforeEach(function () {
+ this.getStorageStub.reset()
+ this.setStorageStub.reset()
+ this.insertCSSStub.reset()
+ })
+ it('applies the correct filter', function () {
+ this.getStorageStub.yields({
+ cosmeticFilterList: {
+ 'brave.com': [filter]
+ }
+ })
+ cosmeticFilterAPI.applySiteFilters('brave.com')
+ assert.deepEqual(this.insertCSSStub.getCall(0).args[0], {
+ code: `${filter} {display: none;}`
+ })
+ })
+ it('applies multiple filters correctly', function () {
+ this.getStorageStub.yields({
+ cosmeticFilterList: {
+ 'brave.com': [filter, filter2]
+ }
+ })
+ cosmeticFilterAPI.applySiteFilters('brave.com')
+ assert.deepEqual(this.insertCSSStub.getCall(0).args[0], {
+ code: `${filter} {display: none;}`
+ })
+ assert.deepEqual(this.insertCSSStub.getCall(1).args[0], {
+ code: `${filter2} {display: none;}`
+ })
+
+ })
+ // chrome.local.storage.get() always returns an empty object if nothing exists
+ it('doesn\'t apply filters if storage for host is implicitly undefined', function () {
+ this.getStorageStub.yields({
+ cosmeticFilterList: {}
+ })
+ cosmeticFilterAPI.applySiteFilters('brave.com')
+ assert.equal(this.insertCSSStub.called, false)
+ })
+ it('doesn\'t apply filters if storage is explicitly undefined', function () {
+ this.getStorageStub.yields({
+ cosmeticFilterList: {
+ 'brave.com': undefined
+ }
+ })
+ cosmeticFilterAPI.applySiteFilters('brave.com')
+ assert.equal(this.insertCSSStub.called, false)
+ })
+ })
+})
diff --git a/test/app/background/api/shieldsAPITest.ts b/test/app/background/api/shieldsAPITest.ts
index c7afca6f7fdf..867426392dff 100644
--- a/test/app/background/api/shieldsAPITest.ts
+++ b/test/app/background/api/shieldsAPITest.ts
@@ -11,7 +11,7 @@ import * as shieldsAPI from '../../../../app/background/api/shieldsAPI'
import { activeTabData } from '../../../testData'
import { Tab as TabType } from '../../../../app/types/state/shieldsPannelState'
import * as resourceIdentifiers from '../../../../app/constants/resourceIdentifiers'
-
+
describe('Shields API', () => {
describe('getShieldSettingsForTabData', function () {
it('returns a rejected promise when no tab data is specified', function (cb) {
@@ -136,7 +136,7 @@ describe('Shields API', () => {
this.spy.restore()
})
- it('calls chrome.tabs.getAsync for the ative tab', function () {
+ it('calls chrome.tabs.getAsync for the active tab', function () {
assert(this.spy.withArgs(this.tabId).calledOnce)
})
@@ -374,8 +374,8 @@ describe('Shields API', () => {
it('resolves the returned promise', function (cb) {
this.p
.then(function () {
- cb()
- })
+ cb()
+ })
.catch((e: Error) => {
console.error(e.toString())
})
@@ -391,7 +391,7 @@ describe('Shields API', () => {
})
})
- describe('setAllowScriptOriginsOnce', function() {
+ describe('setAllowScriptOriginsOnce', function () {
before(function () {
this.spy = sinon.spy(chrome.braveShields, 'allowScriptsOnce')
this.p = shieldsAPI.setAllowScriptOriginsOnce(
@@ -411,7 +411,7 @@ describe('Shields API', () => {
})
it('resolves the returned promise', function (cb) {
this.p
- .then(function() {
+ .then(function () {
cb()
})
.catch((e: Error) => {
diff --git a/test/app/background/api/tabsAPITest.ts b/test/app/background/api/tabsAPITest.ts
index b5eceb778075..23a761ba8e39 100644
--- a/test/app/background/api/tabsAPITest.ts
+++ b/test/app/background/api/tabsAPITest.ts
@@ -43,7 +43,7 @@ describe('tabs API', () => {
p.then(() => {
assert(this.spy.calledOnce)
assert.equal(this.spy.getCall(0).args[0], tabId)
- assert.deepEqual(this.spy.getCall(0).args[1], {bypassCache})
+ assert.deepEqual(this.spy.getCall(0).args[1], { bypassCache })
cb()
})
})
@@ -54,7 +54,7 @@ describe('tabs API', () => {
p.then(() => {
assert(this.spy.calledOnce)
assert.equal(this.spy.getCall(0).args[0], tabId)
- assert.deepEqual(this.spy.getCall(0).args[1], {bypassCache})
+ assert.deepEqual(this.spy.getCall(0).args[1], { bypassCache })
cb()
})
})
diff --git a/test/app/background/reducers/cosmeticFilterReducerTest.ts b/test/app/background/reducers/cosmeticFilterReducerTest.ts
new file mode 100644
index 000000000000..5cfa4d687bd5
--- /dev/null
+++ b/test/app/background/reducers/cosmeticFilterReducerTest.ts
@@ -0,0 +1,473 @@
+/* global describe, it, before, after, afterEach */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this file,
+* You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import 'mocha'
+import * as sinon from 'sinon'
+import * as assert from 'assert'
+import * as shieldPanelTypes from '../../../../app/constants/shieldsPanelTypes'
+import * as cosmeticFilterTypes from '../../../../app/constants/cosmeticFilterTypes'
+import * as windowTypes from '../../../../app/constants/windowTypes'
+import * as tabTypes from '../../../../app/constants/tabTypes'
+import * as webNavigationTypes from '../../../../app/constants/webNavigationTypes'
+import shieldsPanelReducer from '../../../../app/background/reducers/shieldsPanelReducer'
+import * as shieldsAPI from '../../../../app/background/api/shieldsAPI'
+import cosmeticFilterReducer from '../../../../app/background/reducers/cosmeticFilterReducer'
+import * as cosmeticFilterAPI from '../../../../app/background/api/cosmeticFilterAPI'
+import * as tabsAPI from '../../../../app/background/api/tabsAPI'
+import * as shieldsPanelState from '../../../../app/state/shieldsPanelState'
+import { initialState } from '../../../testData'
+import * as deepFreeze from 'deep-freeze-node'
+import { ShieldDetails } from '../../../../app/types/actions/shieldsPanelActions'
+import * as actions from '../../../../app/actions/shieldsPanelActions'
+import { State } from '../../../../app/types/state/shieldsPannelState'
+
+describe('cosmeticFilterReducer', () => {
+ it('should handle initial state', () => {
+ assert.deepEqual(
+ shieldsPanelReducer(undefined, actions.blockAdsTrackers('allow')), initialState.cosmeticFilter)
+ })
+ describe('ON_BEFORE_NAVIGATION', function () {
+ before(function () {
+ this.spy = sinon.spy(shieldsPanelState, 'resetBlockingStats')
+ this.resetNoScriptInfoSpy = sinon.spy(shieldsPanelState, 'resetNoScriptInfo')
+ this.resetBlockingResourcesSpy = sinon.spy(shieldsPanelState, 'resetBlockingResources')
+ this.tabId = 1
+ })
+ after(function () {
+ this.spy.restore()
+ this.resetNoScriptInfoSpy.restore()
+ this.resetBlockingResourcesSpy.restore()
+ })
+ afterEach(function () {
+ this.spy.reset()
+ this.resetNoScriptInfoSpy.reset()
+ })
+ it('calls resetBlockingStats when isMainFrame is true', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: true
+ })
+ assert.equal(this.spy.calledOnce, true)
+ assert.equal(this.spy.getCall(0).args[1], this.tabId)
+ })
+ it('does not call resetBlockingStats when isMainFrame is false', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: false
+ })
+ assert.equal(this.spy.notCalled, true)
+ })
+ it('calls resetNoScriptInfo when isMainFrame is true', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: true
+ })
+ assert.equal(this.resetNoScriptInfoSpy.calledOnce, true)
+ assert.equal(this.resetNoScriptInfoSpy.getCall(0).args[1], this.tabId)
+ assert.equal(this.resetNoScriptInfoSpy.getCall(0).args[2], 'https://www.brave.com')
+ })
+ it('does not call resetNoScriptInfo when isMainFrame is false', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: false
+ })
+ assert.equal(this.resetNoScriptInfoSpy.notCalled, true)
+ })
+ it('calls resetBlockingResources when isMainFrame is true', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: true
+ })
+ assert.equal(this.spy.calledOnce, true)
+ assert.equal(this.spy.getCall(0).args[1], this.tabId)
+ })
+ it('does not call resetBlockingResources when isMainFrame is false', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: false
+ })
+ assert.equal(this.spy.notCalled, true)
+ })
+ })
+ describe('ON_COMMITTED', function () {
+ before(function () {
+ this.spy = sinon.spy(shieldsPanelState, 'resetBlockingStats')
+ this.resetNoScriptInfoSpy = sinon.spy(shieldsPanelState, 'resetNoScriptInfo')
+ this.resetBlockingResourcesSpy = sinon.spy(shieldsPanelState, 'resetBlockingResources')
+ this.tabId = 1
+ })
+ after(function () {
+ this.spy.restore()
+ this.resetNoScriptInfoSpy.restore()
+ this.resetBlockingResourcesSpy.restore()
+ })
+ afterEach(function () {
+ this.spy.reset()
+ this.resetNoScriptInfoSpy.reset()
+ })
+ it('does not call resetBlockingStats when isMainFrame is false', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: false
+ })
+ assert.equal(this.spy.notCalled, true)
+ })
+ it('calls resetNoScriptInfo when isMainFrame is true', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: true
+ })
+ assert.equal(this.resetNoScriptInfoSpy.calledOnce, true)
+ assert.equal(this.resetNoScriptInfoSpy.getCall(0).args[1], this.tabId)
+ assert.equal(this.resetNoScriptInfoSpy.getCall(0).args[2], 'https://www.brave.com')
+ })
+ it('does not call resetNoScriptInfo when isMainFrame is false', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: false
+ })
+ assert.equal(this.resetNoScriptInfoSpy.notCalled, true)
+ })
+ it('calls resetBlockingResources when isMainFrame is true', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: true
+ })
+ assert.equal(this.spy.calledOnce, true)
+ assert.equal(this.spy.getCall(0).args[1], this.tabId)
+ })
+ it('does not call resetBlockingResources when isMainFrame is false', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: webNavigationTypes.ON_BEFORE_NAVIGATION,
+ tabId: this.tabId,
+ url: 'https://www.brave.com',
+ isMainFrame: false
+ })
+ assert.equal(this.spy.notCalled, true)
+ })
+ })
+ describe('WINDOW_REMOVED', function () {
+ before(function () {
+ this.spy = sinon.spy(shieldsPanelState, 'removeWindowInfo')
+ this.windowId = 1
+ })
+ after(function () {
+ this.spy.restore()
+ })
+ it('calls shieldsPanelState.removeWindowInfo', function () {
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: windowTypes.WINDOW_REMOVED,
+ windowId: this.windowId
+ })
+ assert.equal(this.spy.calledOnce, true)
+ assert.equal(this.spy.getCall(0).args[1], this.windowId)
+ })
+ })
+ describe('WINDOW_FOCUS_CHANGED', function () {
+ before(function () {
+ this.updateFocusedWindowSpy = sinon.spy(shieldsPanelState, 'updateFocusedWindow')
+ this.requestShieldPanelDataSpy = sinon.spy(shieldsAPI, 'requestShieldPanelData')
+ this.windowId = 1
+ this.tabId = 2
+ const state = deepFreeze({
+ ...initialState.shieldsPanel,
+ windows: {
+ 1: this.tabId
+ },
+ tabs: {
+ [this.tabId]: { url: 'https://brave.com' }
+ }
+ })
+ shieldsPanelReducer(state, {
+ type: windowTypes.WINDOW_FOCUS_CHANGED,
+ windowId: this.windowId
+ })
+ })
+ after(function () {
+ this.updateFocusedWindowSpy.restore()
+ this.requestShieldPanelDataSpy.restore()
+ })
+ it('calls shieldsPanelState.updateFocusedWindow', function () {
+ assert.equal(this.updateFocusedWindowSpy.calledOnce, true)
+ assert.equal(this.updateFocusedWindowSpy.getCall(0).args[1], this.windowId)
+ })
+ it('calls shieldsPanelState.requestShieldPanelDataSpy ', function () {
+ assert.equal(this.requestShieldPanelDataSpy.withArgs(this.tabId).calledOnce, true)
+ })
+ })
+ describe('TAB_DATA_CHANGED', function () {
+ before(function () {
+ this.updateActiveTabSpy = sinon.spy(shieldsPanelState, 'updateActiveTab')
+ this.windowId = 1
+ this.tabId = 2
+ this.state = deepFreeze({ ...initialState.shieldsPanel, windows: { 1: this.tabId }, tabs: {} })
+ })
+ after(function () {
+ this.updateActiveTabSpy.restore()
+ })
+ afterEach(function () {
+ this.updateActiveTabSpy.reset()
+ })
+ it('calls shieldsPanelState.updateActiveTab when the tab is active', function () {
+ shieldsPanelReducer(this.state, {
+ type: tabTypes.TAB_DATA_CHANGED,
+ tabId: this.tabId,
+ tab: {
+ active: true,
+ id: this.tabId,
+ windowId: this.windowId,
+ index: 1,
+ pinned: false,
+ highlighted: false,
+ incognito: false,
+ selected: false
+ },
+ changeInfo: {}
+ })
+ assert.equal(this.updateActiveTabSpy.calledOnce, true)
+ assert.equal(this.updateActiveTabSpy.getCall(0).args[1], this.windowId)
+ assert.equal(this.updateActiveTabSpy.getCall(0).args[2], this.tabId)
+ })
+ it('does not call shieldsPanelState.updateActiveTab when the tab is not active', function () {
+ shieldsPanelReducer(this.state, {
+ type: tabTypes.TAB_DATA_CHANGED,
+ tabId: this.tabId,
+ tab: {
+ active: false,
+ id: this.tabId,
+ windowId: this.windowId,
+ index: 1,
+ pinned: false,
+ highlighted: false,
+ incognito: false,
+ selected: false
+ },
+ changeInfo: {}
+ })
+ assert.equal(this.updateActiveTabSpy.notCalled, true)
+ })
+ })
+ describe('TAB_CREATED', function () {
+ before(function () {
+ this.updateActiveTabSpy = sinon.spy(shieldsPanelState, 'updateActiveTab')
+ this.windowId = 1
+ this.tabId = 2
+ this.state = {
+ ...initialState.shieldsPanel,
+ windows: {
+ 1: this.tabId
+ },
+ tabs: {}
+ }
+ })
+ after(function () {
+ this.updateActiveTabSpy.restore()
+ })
+ afterEach(function () {
+ this.updateActiveTabSpy.reset()
+ })
+ it('calls shieldsPanelState.updateActiveTab when the tab is active', function () {
+ shieldsPanelReducer(this.state, {
+ type: tabTypes.TAB_CREATED,
+ tab: {
+ active: true,
+ id: this.tabId,
+ windowId: this.windowId,
+ index: 1,
+ pinned: false,
+ highlighted: false,
+ incognito: false,
+ selected: false
+ }
+ })
+ assert.equal(this.updateActiveTabSpy.calledOnce, true)
+ assert.equal(this.updateActiveTabSpy.getCall(0).args[1], this.windowId)
+ assert.equal(this.updateActiveTabSpy.getCall(0).args[2], this.tabId)
+ })
+ it('does not call shieldsPanelState.updateActiveTab when the tab is not active', function () {
+ shieldsPanelReducer(this.state, {
+ type: tabTypes.TAB_CREATED,
+ tab: {
+ active: false,
+ id: this.tabId,
+ windowId: this.windowId,
+ index: 1,
+ pinned: false,
+ highlighted: false,
+ incognito: false,
+ selected: false
+ }
+ })
+ assert.equal(this.updateActiveTabSpy.notCalled, true)
+ })
+ })
+ const origin = 'https://brave.com'
+ const state: State = deepFreeze({
+ tabs: {
+ 2: {
+ origin,
+ hostname: 'brave.com',
+ adsBlocked: 0,
+ controlsOpen: true,
+ braveShields: 'allow',
+ trackersBlocked: 0,
+ httpsRedirected: 0,
+ javascriptBlocked: 0,
+ fingerprintingBlocked: 0,
+ id: 2,
+ httpUpgradableResources: 'block',
+ javascript: 'block',
+ trackers: 'block',
+ ads: 'block',
+ fingerprinting: 'block',
+ cookies: 'block',
+ noScriptInfo: {},
+ adsBlockedResources: [],
+ fingerprintingBlockedResources: [],
+ httpsRedirectedResources: [],
+ javascriptBlockedResources: [],
+ trackersBlockedResources: []
+ }
+ },
+ windows: {
+ 1: 2
+ },
+ currentWindowId: 1
+ })
+ describe('SHIELDS_PANEL_DATA_UPDATED', function () {
+ it('updates state detail', function () {
+ const tabId = 2
+ const details: ShieldDetails = {
+ id: tabId,
+ hostname: 'brave.com',
+ origin: 'brave.com',
+ ads: 'block',
+ trackers: 'block',
+ httpUpgradableResources: 'block',
+ javascript: 'block',
+ fingerprinting: 'block',
+ cookies: 'block'
+ }
+ assert.deepEqual(
+ shieldsPanelReducer(initialState.shieldsPanel, {
+ type: shieldPanelTypes.SHIELDS_PANEL_DATA_UPDATED,
+ details
+ }), {
+ currentWindowId: -1,
+ tabs: {
+ [tabId]: {
+ adsBlocked: 0,
+ trackersBlocked: 0,
+ httpsRedirected: 0,
+ javascriptBlocked: 0,
+ fingerprintingBlocked: 0,
+ hostname: 'brave.com',
+ origin: 'brave.com',
+ id: tabId,
+ ads: 'block',
+ trackers: 'block',
+ httpUpgradableResources: 'block',
+ javascript: 'block',
+ fingerprinting: 'block',
+ cookies: 'block',
+ controlsOpen: true,
+ braveShields: 'allow',
+ noScriptInfo: {},
+ adsBlockedResources: [],
+ fingerprintingBlockedResources: [],
+ httpsRedirectedResources: [],
+ javascriptBlockedResources: [],
+ trackersBlockedResources: []
+ }
+ },
+ windows: {}
+ })
+ })
+ })
+ describe('SHIELDS_TOGGLED', function () {
+ before(function () {
+ this.reloadTabSpy = sinon.spy(tabsAPI, 'reloadTab')
+ this.setAllowBraveShieldsSpy = sinon.spy(shieldsAPI, 'setAllowBraveShields')
+ })
+ after(function () {
+ this.reloadTabSpy.restore()
+ this.setAllowBraveShieldsSpy.restore()
+ })
+ it('should call setAllowBraveShields', function () {
+ assert.deepEqual(
+ shieldsPanelReducer(state, {
+ type: shieldPanelTypes.SHIELDS_TOGGLED,
+ setting: 'allow'
+ }), state)
+ assert.equal(this.setAllowBraveShieldsSpy.withArgs(origin, 'allow').calledOnce, true)
+ })
+ })
+ describe('SITE_COSMETIC_FILTER_REMOVED', function () {
+ before(function () {
+ this.removeSiteFilterSpy = sinon.spy(cosmeticFilterAPI, 'removeSiteFilter')
+ })
+ after(function () {
+ this.removeSiteFilterSpy.restore()
+ })
+ it('should call removeSiteFilter', function () {
+ assert.deepEqual(
+ cosmeticFilterReducer(state, {
+ type: cosmeticFilterTypes.SITE_COSMETIC_FILTER_REMOVED,
+ origin
+ }), state)
+ })
+ })
+ describe('ALL_COSMETIC_FILTERS_REMOVED', function () {
+ before(function () {
+ this.removeSiteFilterSpy = sinon.spy(cosmeticFilterAPI, 'removeAllFilters')
+ })
+ after(function () {
+ this.removeSiteFilterSpy.restore()
+ })
+ it('should call removeAllFilters', function () {
+ assert.deepEqual(
+ cosmeticFilterReducer(state, {
+ type: cosmeticFilterTypes.ALL_COSMETIC_FILTERS_REMOVED
+ }), state)
+ })
+ })
+ describe('SITE_COSMETIC_FILTER_ADDED', function () {
+ before(function () {
+ this.removeSiteFilterSpy = sinon.spy(cosmeticFilterAPI, 'addSiteCosmeticFilter')
+ })
+ after(function () {
+ this.removeSiteFilterSpy.restore()
+ })
+ it('should call addSiteCosmeticFilter', function () {
+ const cssfilter = '#test'
+ assert.deepEqual(
+ cosmeticFilterReducer(state, {
+ type: cosmeticFilterTypes.SITE_COSMETIC_FILTER_ADDED,
+ origin,
+ cssfilter
+ }), state)
+ })
+ })
+})
diff --git a/test/app/background/reducers/shieldsPanelReducerTest.ts b/test/app/background/reducers/shieldsPanelReducerTest.ts
index 7a7ae6463edf..e0653f845957 100644
--- a/test/app/background/reducers/shieldsPanelReducerTest.ts
+++ b/test/app/background/reducers/shieldsPanelReducerTest.ts
@@ -160,7 +160,7 @@ describe('braveShieldsPanelReducer', () => {
this.updateActiveTabSpy = sinon.spy(shieldsPanelState, 'updateActiveTab')
this.windowId = 1
this.tabId = 2
- this.state = deepFreeze({...initialState.shieldsPanel, windows: {1: this.tabId}, tabs: {}})
+ this.state = deepFreeze({ ...initialState.shieldsPanel, windows: { 1: this.tabId }, tabs: {} })
})
after(function () {
this.updateActiveTabSpy.restore()
@@ -308,7 +308,7 @@ describe('braveShieldsPanelReducer', () => {
httpUpgradableResources: 'block',
javascript: 'block',
fingerprinting: 'block',
- cookies: 'block',
+ cookies: 'block'
}
assert.deepEqual(
shieldsPanelReducer(initialState.shieldsPanel, {
@@ -997,7 +997,7 @@ describe('braveShieldsPanelReducer', () => {
}
},
windows: {
- 1: 2
+ 1: 2
}
})
})
@@ -1253,7 +1253,7 @@ describe('braveShieldsPanelReducer', () => {
})
})
- describe('ALLOW_SCRIPT_ORIGINS_ONCE', function() {
+ describe('ALLOW_SCRIPT_ORIGINS_ONCE', function () {
before(function () {
this.reloadTabSpy = sinon.spy(tabsAPI, 'reloadTab')
this.setAllowScriptOriginsOnceSpy = sinon.spy(shieldsAPI, 'setAllowScriptOriginsOnce')
@@ -1274,7 +1274,7 @@ describe('braveShieldsPanelReducer', () => {
})
})
- describe('CHANGE_NO_SCRIPT_SETTINGS', function() {
+ describe('CHANGE_NO_SCRIPT_SETTINGS', function () {
before(function () {
this.spy = sinon.spy(shieldsPanelState, 'changeNoScriptSettings')
})
@@ -1283,7 +1283,7 @@ describe('braveShieldsPanelReducer', () => {
})
it('should call changeNoScriptSettings', function () {
const tabId = 2
- const stateWithNoScriptInfo : State = {
+ const stateWithNoScriptInfo: State = {
tabs: {
2: {
origin,
@@ -1321,7 +1321,7 @@ describe('braveShieldsPanelReducer', () => {
},
currentWindowId: 1
}
- let nextState = shieldsPanelReducer(stateWithNoScriptInfo, {
+ let nextState = shieldsPanelReducer(stateWithNoScriptInfo, {
type: types.CHANGE_NO_SCRIPT_SETTINGS,
origin
})
@@ -1355,15 +1355,15 @@ describe('braveShieldsPanelReducer', () => {
trackersBlockedResources: [],
httpsRedirectedResources: [],
javascriptBlockedResources: [],
- fingerprintingBlockedResources: [],
+ fingerprintingBlockedResources: []
}
},
windows: {
1: 2
},
currentWindowId: 1
- })
- assert.equal(this.spy.withArgs(stateWithNoScriptInfo, tabId, origin).calledOnce, true)
+ })
+ assert.equal(this.spy.withArgs(stateWithNoScriptInfo, tabId, origin).calledOnce, true)
})
})
})
diff --git a/test/app/background/reducersTest.ts b/test/app/background/reducersTest.ts
index 98356ee3eb10..86e232c7efc7 100644
--- a/test/app/background/reducersTest.ts
+++ b/test/app/background/reducersTest.ts
@@ -6,18 +6,18 @@
import 'mocha'
import * as assert from 'assert'
import reducers from '../../../app/background/reducers'
-import {initialState} from '../../testData'
+import { initialState } from '../../testData'
describe('reducers test', () => {
- it('reduers is a combined reducer function', function () {
+ it('reducers is a combined reducer function', function () {
assert.equal(typeof reducers, 'function')
})
- it('reduers passed with an unknown action returns the same input', function () {
+ it('reducers passed with an unknown action returns the same input', function () {
const unknownAction = {
type: 'DA07BE00-43FB-44C3-B020-49308A0D3E78'
}
- const state = {...initialState }
+ const state = { ...initialState }
assert.equal(reducers(state, unknownAction), state)
})
})
diff --git a/test/app/background/storeTest.ts b/test/app/background/storeTest.ts
index 8c8eac01a17a..ee052d9ce9a0 100644
--- a/test/app/background/storeTest.ts
+++ b/test/app/background/storeTest.ts
@@ -6,7 +6,7 @@
import 'mocha'
import * as assert from 'assert'
import store from '../../../app/background/store'
-import {initialState} from '../../testData'
+import { initialState } from '../../testData'
describe('store test', () => {
it('store can get state', function () {
diff --git a/test/app/state/shieldsPanelStateTest.ts b/test/app/state/shieldsPanelStateTest.ts
index 11e522948b45..8be5999515fc 100644
--- a/test/app/state/shieldsPanelStateTest.ts
+++ b/test/app/state/shieldsPanelStateTest.ts
@@ -24,7 +24,7 @@ const state: State = deepFreeze({
3: {
id: 3
},
- 4: {
+ 4: {
id: 4
}
},
diff --git a/test/testData.ts b/test/testData.ts
index 665186ff1b49..1857f3d2f31a 100644
--- a/test/testData.ts
+++ b/test/testData.ts
@@ -1,9 +1,10 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
+* License, v. 2.0. If a copy of the MPL was not distributed with this file,
+* You can obtain one at http://mozilla.org/MPL/2.0/. */
import * as deepFreeze from 'deep-freeze-node'
import { Tab } from '../app/types/state/shieldsPannelState'
+import { BlockDetails } from '../app/types/actions/shieldsPanelActions'
interface CustomTab extends Tab {
url: string
@@ -73,8 +74,8 @@ export const getMockChrome = () => {
onStartup: new ChromeEvent()
},
browserAction: {
- setBadgeText: function (text: string) { },
- setIcon: function (icon: string, tabId: number) { }
+ setBadgeText: function (text: string) {},
+ setIcon: function (icon: string, tabId: number) {}
},
tabs: {
queryAsync: function () {
@@ -89,6 +90,7 @@ export const getMockChrome = () => {
reload: function (tabId: number, reloadProperties: object, cb: () => void) {
setImmediate(cb)
},
+ insertCSS: function (details: any) {},
onActivated: new ChromeEvent(),
onCreated: new ChromeEvent(),
onUpdated: new ChromeEvent()
@@ -103,7 +105,7 @@ export const getMockChrome = () => {
},
braveShields: {
onBlocked: new ChromeEvent(),
- allowScriptsOnce: function(origins: Array, tabId: number, cb: () => void) {
+ allowScriptsOnce: function (origins: Array, tabId: number, cb: () => void) {
setImmediate(cb)
}
},
@@ -130,12 +132,23 @@ export const getMockChrome = () => {
}
},
i18n: {
- getMessage: function (message: string) { }
+ getMessage: function (message: string) {}
+ },
+ storage: {
+ local: {
+ get: function (url: string) {},
+ set: function (url: string, cssfilter: string) {}
+ }
}
}
}
export const initialState = deepFreeze({
+ cosmeticFilter: {
+ currentWindowId: -1,
+ tabs: {},
+ windows: {}
+ },
shieldsPanel: {
currentWindowId: -1,
tabs: {},
diff --git a/webpack/dev.config.js b/webpack/dev.config.js
index 946f2d7b3d72..74ab81eea765 100644
--- a/webpack/dev.config.js
+++ b/webpack/dev.config.js
@@ -12,9 +12,11 @@ const baseDevConfig = () => ({
devtool: 'eval-cheap-module-source-map',
entry: {
braveShieldsPanel: [customPath, hotScript, path.join(__dirname, '../app/braveShieldsPanel')],
- background: [customPath, hotScript, path.join(__dirname, '../app/background')]
+ background: [customPath, hotScript, path.join(__dirname, '../app/background')],
+ content: [customPath, path.join(__dirname, '../app/content')],
},
devMiddleware: {
+ writeToDisk: true,
publicPath: `http://${host}:${port}/js`,
stats: {
colors: true
diff --git a/webpack/prod.config.js b/webpack/prod.config.js
index 571dd0fc4b35..a7afec84ce95 100644
--- a/webpack/prod.config.js
+++ b/webpack/prod.config.js
@@ -8,7 +8,8 @@ const customPath = path.join(__dirname, './customPublicPath')
module.exports = {
entry: {
braveShieldsPanel: [customPath, path.join(__dirname, '../app/braveShieldsPanel')],
- background: [customPath, path.join(__dirname, '../app/background')]
+ background: [customPath, path.join(__dirname, '../app/background')],
+ content: [customPath, path.join(__dirname, '../app/content')],
},
mode: 'production',
optimization: {
@@ -58,8 +59,8 @@ module.exports = {
loaders: [
'style-loader',
'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]',
- {loader: 'postcss-loader', options: postCSSConfig}
+ { loader: 'postcss-loader', options: postCSSConfig }
]
}]
}
-}
+}
\ No newline at end of file