From f11c8fa1b115236cc88a363bb21f0d2f21d641af Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Sun, 9 Aug 2020 00:29:16 +0200 Subject: [PATCH 01/49] refactor: generate theme objects dynamically based on template data --- src/background/colorscheme.ts | 75 ++++++++++++----------------------- tsconfig.json | 2 +- 2 files changed, 26 insertions(+), 51 deletions(-) diff --git a/src/background/colorscheme.ts b/src/background/colorscheme.ts index 42c2986..6653551 100644 --- a/src/background/colorscheme.ts +++ b/src/background/colorscheme.ts @@ -1,12 +1,17 @@ import { DUCKDUCKGO_THEME_ID } from '../config/general'; import { EXTENDED_PYWAL_COLORS } from '../config/default-themes'; +import { THEME_TEMPLATE_DATA, PALETTE_TEMPLATE_DATA } from '../config/template-data'; + import { changeLuminance, normalizeLuminance } from '../utils/colors'; import { PaletteColors, IPalette, IPywalColors, + IBrowserTheme, + ITemplateItem, IThemeTemplate, + IPaletteTemplate, IColorschemeTemplate, IDuckDuckGoThemeTemplate, } from '../definitions'; @@ -37,16 +42,10 @@ export function generateColorscheme( customColors: Partial, template: IColorschemeTemplate ) { + const originalPalette = createObjectFromTemplateData(PALETTE_TEMPLATE_DATA, pywalPalette, template.palette); + // Override the templated palette with any custom colors set by the user - const palette = Object.assign({ - background: pywalPalette[template.palette.background], - backgroundLight: pywalPalette[template.palette.backgroundLight], - backgroundExtra: pywalPalette[template.palette.backgroundExtra], - accentPrimary: pywalPalette[template.palette.accentPrimary], - accentSecondary: pywalPalette[template.palette.accentSecondary], - text: pywalPalette[template.palette.text], - textFocus: pywalPalette[template.palette.textFocus], - }, customColors); + const palette = Object.assign(originalPalette, customColors); return { hash: createPaletteHash(palette), @@ -58,45 +57,7 @@ export function generateColorscheme( } export function generateBrowserTheme(palette: IPalette, template: IThemeTemplate) { - return { - icons: palette[template.icons], - icons_attention: palette[template.icons_attention], - frame: palette[template.frame], - tab_text: palette[template.tab_text], - tab_loading: palette[template.tab_loading], - tab_background_text: palette[template.tab_background_text], - tab_selected: palette[template.tab_selected], - tab_line: palette[template.tab_line], - tab_background_separator: palette[template.tab_background_separator], - toolbar: palette[template.toolbar], - toolbar_field: palette[template.toolbar_field], - toolbar_field_focus: palette[template.toolbar_field_focus], - toolbar_field_text: palette[template.toolbar_field_text], - toolbar_field_text_focus: palette[template.toolbar_field_text_focus], - toolbar_field_border: palette[template.toolbar_field_border], - toolbar_field_border_focus: palette[template.toolbar_field_border_focus], - toolbar_field_separator: palette[template.toolbar_field_separator], - toolbar_field_highlight: palette[template.toolbar_field_highlight], - toolbar_field_highlight_text: palette[template.toolbar_field_highlight_text], - toolbar_bottom_separator: palette[template.toolbar_bottom_separator], - toolbar_top_separator: palette[template.toolbar_top_separator], - toolbar_vertical_separator: palette[template.toolbar_vertical_separator], - ntp_background: palette[template.ntp_background], - ntp_text: palette[template.ntp_text], - popup: palette[template.popup], - popup_border: palette[template.popup_border], - popup_text: palette[template.popup_text], - popup_highlight: palette[template.popup_highlight], - popup_highlight_text: palette[template.popup_highlight_text], - sidebar: palette[template.sidebar], - sidebar_border: palette[template.sidebar_border], - sidebar_text: palette[template.sidebar_text], - sidebar_highlight: palette[template.sidebar_highlight], - sidebar_highlight_text: palette[template.sidebar_highlight_text], - bookmark_text: palette[template.bookmark_text], - button_background_hover: palette[template.button_background_hover], - button_background_active: palette[template.button_background_active], - }; + return createObjectFromTemplateData(THEME_TEMPLATE_DATA, palette, template); } export function generateDDGTheme(palette: IPalette, template: IDuckDuckGoThemeTemplate) { @@ -129,6 +90,22 @@ export function generateExtensionTheme(palette: IPalette) { return css; } +/** + * Creates a palette/browser theme object based on the target keys defined + * in 'data'. The target key is then used as index in 'template' to get + * the index of the color in 'values'. + */ +function createObjectFromTemplateData( + data: ITemplateItem[], + values: (IPywalColors | IPalette), + template: (IPaletteTemplate | IThemeTemplate) +) { + return data.reduce((obj: T, item: ITemplateItem) => { + obj[item.target] = values[template[item.target]]; + return obj; + }, {}); +} + function stripHashSymbol(color: string) { return color.substring(1); } @@ -148,5 +125,3 @@ function createPaletteHash(palette: IPalette) { return hash; } - - diff --git a/tsconfig.json b/tsconfig.json index b511a65..6e88a55 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "noImplicitAny": true, + "noImplicitAny": false, "module": "es6", "target": "es6", "allowJs": true, From 9e6a852a3491f620972a66a459ff11d4b9505cd6 Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Sun, 9 Aug 2020 13:02:29 +0200 Subject: [PATCH 02/49] refactor: added extension message for setting template theme mode --- src/background/extension.ts | 84 +++++++++++++++++++++---------------- src/communication/ui.ts | 10 +++-- src/config/general.ts | 3 +- src/definitions.ts | 5 --- src/ui/settings.ts | 51 +++++++++++----------- src/ui/update.ts | 22 ++++++---- 6 files changed, 94 insertions(+), 81 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index bd22566..6ad33d9 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -75,15 +75,11 @@ export class Extension { const themeMode = this.state.getThemeMode(); if (!themeMode) { - console.error('Theme mode is not set'); + console.error('Failed to get default template: theme mode is not set'); return; } - if (themeMode === ThemeModes.Dark) { - return DEFAULT_THEME_DARK; - } - - return DEFAULT_THEME_LIGHT; + return themeMode === ThemeModes.Dark ? DEFAULT_THEME_DARK : DEFAULT_THEME_LIGHT; } private startAutoThemeMode() { @@ -133,7 +129,7 @@ export class Extension { this.setThemeMode(ThemeModes.Light); break; case EXTENSION_COMMANDS.ENABLE_AUTO_MODE: - this.setThemeMode(ThemeModes.Auto, true); + this.setThemeMode(ThemeModes.Auto); break; default: console.warn(`Received unhandled command from Firefox: ${command}`); @@ -166,14 +162,10 @@ export class Extension { this.setThemeMode(data); break; case EXTENSION_MESSAGES.TEMPLATE_THEME_MODE_GET: - UI.sendThemeMode(this.state.getTemplateThemeMode(), false); + UI.sendTemplateThemeMode(this.state.getTemplateThemeMode()); break; case EXTENSION_MESSAGES.THEME_FETCH: - if (this.state.getConnected()) { - this.nativeApp.requestPywalColors(); - } else { - UI.sendNotification('Fetch failed', 'You are not connected to the Pywalfox daemon', true); - } + this.fetchTheme(); break; case EXTENSION_MESSAGES.THEME_DISABLE: this.resetThemes(); @@ -196,6 +188,17 @@ export class Extension { this.updatePage.setTheme(extensionTheme); } + private fetchTheme() { + const isConnected = this.state.getConnected(); + + if (!isConnected) { + UI.sendNotification('Fetch failed', 'You are not connected to the Pywalfox daemon', true); + return; + } + + this.nativeApp.requestPywalColors(); + } + private resetThemes() { browser.theme.reset(); this.updateExtensionPagesTheme(null); @@ -233,24 +236,23 @@ export class Extension { private applyUpdatedPaletteTemplate(template: IPaletteTemplate) { const pywalColors = this.state.getPywalColors(); - const customColors = this.state.getCustomColors(); if (!pywalColors) { return; } - for (const color in customColors) { - if (pywalColors[template[color]] === customColors[color]) { - delete customColors[color]; - } - } + const customColors = this.state.getCustomColors(); + const filteredCustomColors = customColors.filter((color) => { + pywalColors[template[color]] !== customColors[color]; + }); - this.setThemes(pywalColors, customColors); - UI.sendCustomColors(customColors); + this.setThemes(pywalColors, filteredCustomColors); + UI.sendCustomColors(filteredCustomColors); } private applyDuckDuckGoTheme() { const colorscheme = this.state.getColorscheme(); + if (colorscheme) { DDG.setTheme(colorscheme.hash, colorscheme.duckduckgo); } @@ -261,11 +263,11 @@ export class Extension { } private setDDGEnabled({ option, enabled }: IOptionSetData) { - const isEnabled = this.state.getDDGThemeEnabled(); + const isDDGEnabled = this.state.getDDGThemeEnabled(); - if (enabled && !isEnabled) { + if (enabled && !isDDGEnabled) { this.applyDuckDuckGoTheme(); - } else if (!enabled && isEnabled) { + } else if (!enabled && isDDGEnabled) { DDG.resetTheme(); } @@ -274,9 +276,9 @@ export class Extension { } private setDDGTheme() { - const isEnabled = this.state.getDDGThemeEnabled(); + const isDDGEnabled = this.state.getDDGThemeEnabled(); - if (isEnabled) { + if (isDDGEnabled) { this.applyDuckDuckGoTheme(); } else { DDG.resetTheme(); @@ -312,7 +314,7 @@ export class Extension { private async onThemeChangeTrigger(isDay: boolean) { await this.state.setIsDay(isDay); this.updateThemeForCurrentMode(); - UI.sendThemeMode(this.state.getTemplateThemeMode(), false); + UI.sendTemplateThemeMode(this.state.getTemplateThemeMode()); UI.sendDebuggingOutput(`Theme update triggered by automatic theme mode. Is day: ${isDay}`); } @@ -320,6 +322,7 @@ export class Extension { const pywalColors = this.state.getPywalColors(); const template = this.state.getTemplate(); const customColors = this.state.getCustomColors(); + pywalColors && this.setThemes(pywalColors, customColors); UI.sendPaletteTemplate(template.palette); @@ -327,8 +330,9 @@ export class Extension { UI.sendCustomColors(customColors); } - private async setThemeMode(mode: ThemeModes, updateSelectedModeInList=false) { + private async setThemeMode(mode: ThemeModes) { const currentMode = this.state.getThemeMode(); + if (currentMode === mode) { return; } @@ -341,25 +345,24 @@ export class Extension { this.startAutoThemeMode(); } - if (updateSelectedModeInList) { - UI.sendThemeMode(mode, true); - } - - UI.sendThemeMode(this.state.getTemplateThemeMode(), false); + UI.sendTemplateThemeMode(this.state.getTemplateThemeMode()); } else { this.autoMode.stop(); - UI.sendThemeMode(mode, true); } + + UI.sendThemeMode(mode); } private setPaletteTemplate(template: IPaletteTemplate) { let updatedTemplate: IPaletteTemplate = template; + if (updatedTemplate === null) { updatedTemplate = this.getDefaultTemplate().palette; } this.state.setPaletteTemplate(updatedTemplate); this.applyUpdatedPaletteTemplate(updatedTemplate); + UI.sendPaletteTemplate(updatedTemplate); UI.sendNotification('Palette template', 'Template was updated successfully'); } @@ -380,12 +383,14 @@ export class Extension { } this.state.setThemeTemplate(updatedTemplate); + UI.sendThemeTemplate(updatedTemplate); UI.sendNotification('Theme template', 'Template was updated successfully'); } private setPaletteColor(palette: Partial) { const pywalColors = this.state.getPywalColors(); + if (pywalColors !== null) { const customPalette = this.createCustomColorPalette(palette); this.setThemes(pywalColors, customPalette); @@ -441,9 +446,10 @@ export class Extension { } private nativeAppDisconnected() { + this.state.setConnected(false); + UI.sendDebuggingOutput('Disconnected from native app', true); UI.sendDebuggingInfo({ connected: false, version: this.state.getVersion() }); - this.state.setConnected(false); } private async onPywalColorsFetchSuccess(pywalColors: IPywalColors) { @@ -478,27 +484,31 @@ export class Extension { // the CSS has been enabled. if (target === CSSTargets.UserChrome) { const fontSize = this.state.getCssFontSize(); + if (fontSize !== DEFAULT_CSS_FONT_SIZE) { this.setCssFontSize(fontSize); } } } + this.state.setCssEnabled(target, newState); + UI.sendOption(target, newState); UI.sendNotification('Restart needed', notificationMessage); - this.state.setCssEnabled(target, newState); } private cssToggleFailed(target: string, error: string) { const currentState = this.state.getCssEnabled(target); + UI.sendOption(target, currentState); UI.sendNotification('Custom CSS', error); } private cssFontSizeSetSuccess(size: number) { + this.state.setCssFontSize(size); + UI.sendNotification('Restart needed', 'Updated base font size successfully'); UI.sendFontSize(size); - this.state.setCssFontSize(size); } private cssFontSizeSetFailed(error: string) { diff --git a/src/communication/ui.ts b/src/communication/ui.ts index df28e3b..31b5c95 100644 --- a/src/communication/ui.ts +++ b/src/communication/ui.ts @@ -12,7 +12,6 @@ import { IDebuggingInfoData, IOptionSetData, INotificationData, - IThemeModeSetData, } from '../definitions'; function sendMessage(data: any) { @@ -46,9 +45,12 @@ export function sendTemplate(template: IColorschemeTemplate) { sendMessage({ action: EXTENSION_MESSAGES.TEMPLATE_SET, data: template }); } -export function sendThemeMode(mode: ThemeModes, updateSelected: boolean) { - const themeModeData: IThemeModeSetData = { mode, updateSelected }; - sendMessage({ action: EXTENSION_MESSAGES.THEME_MODE_SET, data: themeModeData }); +export function sendThemeMode(mode: ThemeModes) { + sendMessage({ action: EXTENSION_MESSAGES.THEME_MODE_SET, data: mode }); +} + +export function sendTemplateThemeMode(mode: ThemeModes) { + sendMessage({ action: EXTENSION_MESSAGES.TEMPLATE_THEME_MODE_SET, data: mode }); } export function sendOption(option: string, enabled: boolean, value?: any) { diff --git a/src/config/general.ts b/src/config/general.ts index 58daac0..a7c5ae0 100644 --- a/src/config/general.ts +++ b/src/config/general.ts @@ -1,6 +1,6 @@ import { CSSTargets } from '../definitions'; -export const MIN_REQUIRED_DAEMON_VERSION = 2.5; +export const MIN_REQUIRED_DAEMON_VERSION = 2.7; export const DEFAULT_CSS_FONT_SIZE = 13; export const PYWAL_PALETTE_LENGTH = 20; export const AUTO_MODE_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes @@ -29,6 +29,7 @@ export const EXTENSION_MESSAGES = { THEME_DISABLE: 'theme:disable', THEME_MODE_SET: 'theme:mode:set', TEMPLATE_THEME_MODE_GET: 'template:theme:mode:get', + TEMPLATE_THEME_MODE_SET: 'template:theme:mode:set', PALETTE_COLOR_SET: 'palette:color:set', TEMPLATE_SET: 'template:set', PALETTE_TEMPLATE_SET: 'palette:template:set', diff --git a/src/definitions.ts b/src/definitions.ts index 34c07bb..1325ba8 100644 --- a/src/definitions.ts +++ b/src/definitions.ts @@ -243,11 +243,6 @@ export interface INotificationData { error: boolean; } -export interface IThemeModeSetData { - mode: ThemeModes; - updateSelected: boolean; -} - export interface IDuckDuckGoThemeSetData { hash: IPaletteHash; theme: IDuckDuckGoTheme; diff --git a/src/ui/settings.ts b/src/ui/settings.ts index 40e38a7..710b4a4 100644 --- a/src/ui/settings.ts +++ b/src/ui/settings.ts @@ -1,24 +1,3 @@ -import * as Utils from './utils'; -import * as Messenger from './messenger'; - -import { Dialog } from './dialog'; -import { Colorpicker } from './colorpicker'; -import { Themepicker } from './themepicker'; - -import { - EXTENSION_OPTIONS, - EXTENSION_MESSAGES, - PYWAL_PALETTE_LENGTH, - ENABLED_BODY_CLASS, - NOTIFICATION_TIMEOUT, - MAX_SIMULTANEOUS_NOTIFICATIONS, -} from '../config/general'; - -import { - THEME_TEMPLATE_DATA, - PALETTE_TEMPLATE_DATA, -} from '../config/template-data'; - import { IExtensionMessage, IColorschemeTemplate, @@ -35,6 +14,27 @@ import { PaletteColors, } from '../definitions'; +import { + EXTENSION_OPTIONS, + EXTENSION_MESSAGES, + PYWAL_PALETTE_LENGTH, + ENABLED_BODY_CLASS, + NOTIFICATION_TIMEOUT, + MAX_SIMULTANEOUS_NOTIFICATIONS, +} from '../config/general'; + +import { + THEME_TEMPLATE_DATA, + PALETTE_TEMPLATE_DATA, +} from '../config/template-data'; + +import * as Utils from './utils'; +import * as Messenger from './messenger'; + +import { Dialog } from './dialog'; +import { Colorpicker } from './colorpicker'; +import { Themepicker } from './themepicker'; + const optionButtons = >document.querySelectorAll('button[data-option]'); const helpToggleButtons = >document.querySelectorAll('button[data-help]'); const settingCardHeaders = >document.querySelectorAll('.setting-card-header'); @@ -534,11 +534,10 @@ function handleExtensionMessage({ action, data }: IExtensionMessage) { template.browser = data; break; case EXTENSION_MESSAGES.THEME_MODE_SET: - if (data.updateSelected) { - themepicker.setSelectedMode(data.mode); - } else { - themepicker.setBodyClass(data.mode); - } + themepicker.setSelectedMode(data); + break; + case EXTENSION_MESSAGES.TEMPLATE_THEME_MODE_SET: + themepicker.setBodyClass(data); break; case EXTENSION_MESSAGES.OPTION_SET: updateOptionState(data); diff --git a/src/ui/update.ts b/src/ui/update.ts index ab7e376..ac66005 100644 --- a/src/ui/update.ts +++ b/src/ui/update.ts @@ -9,18 +9,24 @@ let currentThemeMode: ThemeModes = null; function handleExtensionMessage({ action, data }: IExtensionMessage) { switch (action) { - case EXTENSION_MESSAGES.THEME_MODE_SET: - const { mode } = data; - if (currentThemeMode !== null) { - document.body.classList.remove(currentThemeMode); - } - - document.body.classList.add(mode); - currentThemeMode = mode; + case EXTENSION_MESSAGES.THEME_MODE_SET: /* fallthrough */ + case EXTENSION_MESSAGES.TEMPLATE_THEME_MODE_SET: + setThemeMode(data); break; } } +function setThemeMode(mode: ThemeModes) { + if (mode !== ThemeModes.Auto) { + if (currentThemeMode !== null) { + document.body.classList.remove(currentThemeMode); + } + + document.body.classList.add(mode); + currentThemeMode = mode; + } +} + disableButton.addEventListener('click', requestUpdatePageMute); browser.runtime.onMessage.addListener(handleExtensionMessage); From 2759fc8369280af61cfbca246414ad75ab54bb10 Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Tue, 11 Aug 2020 11:43:15 +0200 Subject: [PATCH 03/49] chore: print bundle sizes on build --- package.json | 1 + rollup.config.js | 8 +- yarn.lock | 984 +++++++++++++---------------------------------- 3 files changed, 271 insertions(+), 722 deletions(-) diff --git a/package.json b/package.json index 823c98e..98ae909 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "postcss-import": "^12.0.1", "postcss-url": "^8.0.0", "rollup": "^2.10.5", + "rollup-plugin-analyzer": "^3.3.0", "rollup-plugin-clear": "^2.0.7", "rollup-plugin-copy": "^3.3.0", "rollup-plugin-postcss": "^3.1.1", diff --git a/rollup.config.js b/rollup.config.js index 7c3bfdb..b0c7fd5 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,6 +2,7 @@ import path from 'path'; import copy from 'rollup-plugin-copy'; import clear from 'rollup-plugin-clear'; import postcss from 'rollup-plugin-postcss'; +import analyze from 'rollup-plugin-analyzer'; import { terser } from "rollup-plugin-terser"; import typescript from 'rollup-plugin-typescript2'; @@ -9,6 +10,7 @@ import cssimport from 'postcss-import'; import urlresolve from 'postcss-url'; const production = !process.env.ROLLUP_WATCH; +const analyzeConfig = { summaryOnly: true }; export default [ { @@ -30,6 +32,7 @@ export default [ ], minimize: production, }), + production && analyze(analyzeConfig), ], }, { @@ -40,7 +43,8 @@ export default [ }, plugins: [ typescript(), - production && terser() + production && terser(), + production && analyze(analyzeConfig), ], }, { @@ -52,6 +56,7 @@ export default [ plugins: [ typescript(), production && terser(), + production && analyze(analyzeConfig), copy({ targets: [ { src: 'src/ui/settings.html', dest: 'extension/dist/pages' } ] }), ], }, @@ -64,6 +69,7 @@ export default [ plugins: [ typescript(), production && terser(), + production && analyze(analyzeConfig), copy({ targets: [ { src: 'src/ui/update.html', dest: 'extension/dist/pages'} ] }), ], }, diff --git a/yarn.lock b/yarn.lock index 866f85e..d34f14e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,24 +2,31 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.5.5": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: "@babel/highlight" "^7.8.3" -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== +"@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: - "@babel/helper-validator-identifier" "^7.9.0" + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" @@ -32,13 +39,20 @@ regenerator-runtime "^0.13.2" "@babel/runtime-corejs3@^7.8.3": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz#67aded13fffbbc2cb93247388cf84d77a4be9a71" - integrity sha512-6toWAfaALQjt3KMZQc6fABqZwUDDuWzz+cAfPhqyEnzxvdWOAkjwPNxgF8xlmo7OWLsSjaKjsskpKHRLaMArOA== + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.11.2.tgz#02c3029743150188edeb66541195f54600278419" + integrity sha512-qh5IR+8VgFz83VBa6OkaET6uN/mJOhHONuy3m1sgF0CV6mXdPSEBdA7e1eUbVvyNtANjMbg22JUv71BaDXLY6A== dependencies: core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" +"@babel/runtime@7.10.2": + version "7.10.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839" + integrity sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@7.7.7": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" @@ -46,13 +60,6 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@7.9.2": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== - dependencies: - regenerator-runtime "^0.13.4" - "@cliqz-oss/firefox-client@0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@cliqz-oss/firefox-client/-/firefox-client-0.3.1.tgz#86479239f060835608b06584afe5e0a1dd91613c" @@ -153,9 +160,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "14.0.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" - integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== + version "14.0.27" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" + integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== "@types/q@^1.5.1": version "1.5.2" @@ -167,37 +174,20 @@ JSONSelect@0.2.1: resolved "https://registry.yarnpkg.com/JSONSelect/-/JSONSelect-0.2.1.tgz#415418a526d33fe31d74b4defa3c836d485ec203" integrity sha1-QVQYpSbTP+MddLTe+jyDbUhewgM= -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= - dependencies: - acorn "^3.0.4" - acorn-jsx@^5.0.0, acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= - -acorn@^5.5.0: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - acorn@^6.0.7: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== acorn@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + version "7.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== adbkit-logcat@^1.1.0: version "1.1.0" @@ -224,24 +214,24 @@ adbkit@2.11.1: node-forge "^0.7.1" split "~0.3.3" -addons-linter@1.23.0: - version "1.23.0" - resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-1.23.0.tgz#c887c6c91cabd373878b3da6a13292dd3ada78de" - integrity sha512-4ozo5E+KnsU9h94J496WQs6NYSnofxtw5/Sy63PmeB5FJ3KWERx1S9D8A+ixMAIMgaSiexHpp5alp9yjE0t4gg== +addons-linter@1.26.0: + version "1.26.0" + resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-1.26.0.tgz#85d2c37edcee2bff7192b45a4fc727656809ca83" + integrity sha512-PKytX6qxbZapc076auO0LBhAGuw2z7eyPnYusMgNBPbY72MAXzUCt3AhSbwGhZ43d5Tn/3At5H0xPi31VXG2Mg== dependencies: - "@babel/runtime" "7.9.2" - ajv "6.12.0" + "@babel/runtime" "7.10.2" + ajv "6.12.2" ajv-merge-patch "4.1.0" - chalk "3.0.0" + chalk "4.1.0" cheerio "1.0.0-rc.3" columnify "1.5.4" common-tags "1.8.0" deepmerge "4.2.2" dispensary "0.51.2" - es6-promisify "6.1.0" + es6-promisify "6.1.1" eslint "5.16.0" - eslint-plugin-no-unsafe-innerhtml "1.0.16" - eslint-visitor-keys "1.1.0" + eslint-plugin-no-unsanitized "3.1.2" + eslint-visitor-keys "1.2.0" espree "6.2.1" esprima "4.0.1" first-chunk-stream "3.0.0" @@ -249,32 +239,27 @@ addons-linter@1.23.0: glob "7.1.6" is-mergeable-object "1.1.1" jed "1.1.1" - mdn-browser-compat-data "1.0.15" + mdn-browser-compat-data "1.0.25" os-locale "5.0.0" - pino "6.0.0" - postcss "7.0.27" + pino "6.3.2" + postcss "7.0.32" probe-image-size "5.0.0" relaxed-json "1.0.3" - semver "7.1.3" - source-map-support "0.5.16" + semver "7.3.2" + source-map-support "0.5.19" strip-bom-stream "4.0.0" tosource "1.0.0" upath "1.2.0" - whatwg-url "8.0.0" + whatwg-url "8.1.0" yargs "15.3.1" yauzl "2.10.0" optionalDependencies: - fsevents "2.1.2" + fsevents "2.1.3" adm-zip@~0.4.x: - version "0.4.14" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.14.tgz#2cf312bcc9f8875df835b0f6040bd89be0a727a9" - integrity sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g== - -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== ajv-merge-patch@4.1.0: version "4.1.0" @@ -284,28 +269,20 @@ ajv-merge-patch@4.1.0: fast-json-patch "^2.0.6" json-merge-patch "^0.2.3" -ajv@6.12.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== +ajv@6.12.2: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^4.7.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== +ajv@^6.10.2, ajv@^6.12.3, ajv@^6.9.1: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -324,11 +301,6 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -576,18 +548,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== - -babel-code-frame@^6.16.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== balanced-match@^1.0.0: version "1.0.0" @@ -823,13 +786,6 @@ caller-callsite@^2.0.0: dependencies: callsites "^2.0.0" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" @@ -837,11 +793,6 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -877,15 +828,15 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@3.0.0, chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -905,6 +856,14 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" @@ -949,13 +908,14 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chrome-launcher@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.13.1.tgz#cd5ed4952b630b9fccf2037b211cba81e5aae044" - integrity sha512-q8UiCNAknw6kCUvCVBTAEw1BwT0vaxabCrSjN3B/NWohp12YBD9+DalymYElSoKRD4KpVSu4CCl0us4v/J81Sg== +chrome-launcher@0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.13.3.tgz#5dd72ae4e9b3de19ce3fe1941f89551c0ceb1d30" + integrity sha512-ovrDuFXgXS96lzeDqFPQRsczkxla+6QMvzsF+1u0mKlD1KE8EuhjdLwiDfIFedb0FSLz18RK3y6IbKu8oqA0qw== dependencies: "@types/node" "*" - is-wsl "^2.1.0" + escape-string-regexp "^1.0.5" + is-wsl "^2.2.0" lighthouse-logger "^1.0.0" mkdirp "^0.5.3" rimraf "^3.0.2" @@ -965,11 +925,6 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -985,13 +940,6 @@ cli-boxes@^2.2.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -1034,11 +982,6 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - coa@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" @@ -1048,11 +991,6 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1178,7 +1116,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.4.7, concat-stream@^1.5.2: +concat-stream@^1.4.7: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -1277,9 +1215,9 @@ cross-spawn@^6.0.5: which "^1.2.9" cross-spawn@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" - integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -1460,14 +1398,6 @@ cuint@^0.2.2: resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1480,7 +1410,7 @@ debounce@1.2.0: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== -debug@2, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@~2.6.3: +debug@2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@~2.6.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1618,13 +1548,6 @@ dispensary@0.51.2: source-map-support "~0.5.4" yargs "~15.3.0" -doctrine@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1755,9 +1678,9 @@ entities@^1.1.1, entities@~1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" - integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== error-ex@^1.3.1: version "1.3.2" @@ -1766,7 +1689,24 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.17.2: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -1792,41 +1732,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - es6-error@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - es6-promise@^2.0.1: version "2.3.0" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.3.0.tgz#96edb9f2fdb01995822b263dd8aadab6748181bc" @@ -1837,69 +1747,20 @@ es6-promisify@6.0.2: resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.2.tgz#525c23725b8510f5f1f2feb5a1fbad93a93e29b4" integrity sha512-eO6vFm0JvqGzjWIQA6QVKjxpmELfhWbDUWHm1rPfIbn55mhKPiAa5xpLmQWJrNa629ZIeQ8ZvMAi13kvrjK6Mg== -es6-promisify@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.1.0.tgz#32e3e7e796f924a6723f09ded24e71100ea57472" - integrity sha512-jCsk2fpfEFusVv1MDkF4Uf0hAzIKNDMgR6LyOIw6a3jwkN1sCgWzuwgnsHY9YSQ8n8P31HoncvE0LC44cpWTrw== - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" +es6-promisify@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.1.1.tgz#46837651b7b06bf6fff893d03f29393668d01621" + integrity sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg== escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-plugin-no-unsafe-innerhtml@1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz#7d02878c8e9bf7916b88836d5ac122b42f151932" - integrity sha1-fQKHjI6b95FriINtWsEitC8VGTI= - dependencies: - eslint "^3.7.1" +eslint-plugin-no-unsanitized@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.2.tgz#a54724e0b81d43279bb1f8f5e1d82c97da78c858" + integrity sha512-KPShfliA3Uy9qqwQx35P1fwIOeJjZkb0FbMMUFztRYRposzaynsM8JCEb952fqkidROl1kpqY80uSvn+TcWkQQ== eslint-scope@^4.0.3: version "4.0.3" @@ -1916,10 +1777,15 @@ eslint-utils@^1.3.1: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@1.1.0, eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz#74415ac884874495f78ec2a97349525344c981fa" + integrity sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ== + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint@5.16.0: version "5.16.0" @@ -1963,47 +1829,6 @@ eslint@5.16.0: table "^5.2.3" text-table "^0.2.0" -eslint@^3.7.1: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" - integrity sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw= - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" - espree@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" @@ -2013,14 +1838,6 @@ espree@6.2.1: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" -espree@^3.4.0: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - espree@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" @@ -2035,7 +1852,7 @@ esprima@4.0.1, esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.0, esquery@^1.0.1: +esquery@^1.0.1: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -2049,15 +1866,15 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== estree-walker@^0.6.1: version "0.6.1" @@ -2074,14 +1891,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - event-to-promise@0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/event-to-promise/-/event-to-promise-0.8.0.tgz#4b84f11772b6f25f7752fc74d971531ac6f5b626" @@ -2093,9 +1902,9 @@ eventemitter3@^4.0.0: integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== execa@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" - integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== + version "4.0.3" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" + integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -2107,11 +1916,6 @@ execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2125,13 +1929,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2191,9 +1988,9 @@ fast-deep-equal@^2.0.1: integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.0.3: version "3.2.2" @@ -2253,14 +2050,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -2268,14 +2057,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -2358,16 +2139,6 @@ first-chunk-stream@3.0.0, first-chunk-stream@^3.0.0: resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz#06972a66263505ed82b2c4db93c1b5e078a6576a" integrity sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw== -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2446,10 +2217,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== +fsevents@2.1.3, fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== fsevents@^1.2.7: version "1.2.13" @@ -2459,11 +2230,6 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2474,10 +2240,10 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -fx-runner@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fx-runner/-/fx-runner-1.0.11.tgz#528d2d0c3dc8bb05570b506728c4f62e0b0ef095" - integrity sha512-igHogHf5wTqqaPPTOav18MMTVq/eoeTJiw/PvPUuwnzU8vbyZInFPgR66G9ZBwvwxC7e611nbtB4xSMcYVhlvg== +fx-runner@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fx-runner/-/fx-runner-1.0.12.tgz#943579f7eedf54a711588982a6615e79b94b6a5e" + integrity sha512-SLATlfKI2lyIcQsU8Sgfcwrni6PpC1VMTgp3aRomK/6azrzSQ3r63HqoTRliE/6JP8WjqVkIdCOGWk1ZqhfceA== dependencies: commander "2.9.0" shell-quote "1.6.1" @@ -2486,20 +2252,6 @@ fx-runner@1.0.11: which "1.2.4" winreg "0.0.12" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= - dependencies: - is-property "^1.0.0" - generic-names@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" @@ -2520,9 +2272,9 @@ get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -2562,7 +2314,7 @@ glob-parent@^5.1.0: dependencies: is-glob "^4.0.1" -glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@7.1.6, glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2597,11 +2349,6 @@ globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^9.14.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globby@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" @@ -2664,11 +2411,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.0, har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -2814,11 +2561,6 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -ignore@^3.2.0: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2906,25 +2648,6 @@ ini@^1.3.5, ini@~1.3.0, ini@~1.3.3: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34= - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - inquirer@^6.2.2: version "6.5.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" @@ -2945,9 +2668,9 @@ inquirer@^6.2.2: through "^2.3.6" interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== invert-kv@^3.0.0: version "3.0.1" @@ -3007,10 +2730,10 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== is-ci@^2.0.0: version "2.0.0" @@ -3074,9 +2797,9 @@ is-directory@^0.3.1: integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -3095,13 +2818,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -3139,22 +2855,6 @@ is-mergeable-object@1.1.1: resolved "https://registry.yarnpkg.com/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz#faaa3ed1cfce87d6f7d2f5885e92cc30af3e2ebf" integrity sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA== -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== - -is-my-json-valid@^2.10.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz#1345a6fca3e8daefc10d0fa77067f54cedafd59a" - integrity sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA== - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-npm@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" @@ -3196,17 +2896,12 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== dependencies: - has "^1.0.3" + has-symbols "^1.0.1" is-relative@^0.1.0: version "0.1.3" @@ -3252,7 +2947,7 @@ is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.0, is-wsl@^2.1.1: +is-wsl@^2.1.0, is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -3327,17 +3022,20 @@ js-select@~0.6.0: JSONSelect "0.2.1" traverse "0.4.x" -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.5.1: +js-yaml@^3.13.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -3387,13 +3085,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -3418,11 +3109,6 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= - jsonwebtoken@8.5.1: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" @@ -3663,7 +3349,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.3.0, lodash@^4.8.0, lodash@~4.17.2: +lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.8.0, lodash@~4.17.2: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== @@ -3709,10 +3395,10 @@ marky@^1.2.0: resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.1.tgz#a3fcf82ffd357756b8b8affec9fdbf3a30dc1b02" integrity sha512-md9k+Gxa3qLH6sUKpeC2CNkJK/Ld+bEz5X96nYwloqphQE0CKCVEKco/6jxEZixinqNdz5RFi/KaCyfbMDMAXQ== -mdn-browser-compat-data@1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.15.tgz#2f22145debdb4c337e06fa3017bd923c51a8fcf7" - integrity sha512-0jxT4ZqqCzJJfktX9d4NKgfRENy60kFzhVNV0mXNHvlnw8KrMe2cKOlEKs/Bz+odlgO0rRZAxU0OKiptqVhAXg== +mdn-browser-compat-data@1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.25.tgz#140744490d69c3a1792338173d567f49377fca38" + integrity sha512-4klqILpitRnmWRai5Ols/GXP1eGDYMluAcBRoNZnGNkV2OnkDmpA9hUlM+9pTFym5FGDO5TAm3HweVSVc7ziiQ== dependencies: extend "3.0.2" @@ -3829,10 +3515,10 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.3.tgz#4cf2e30ad45959dddea53ad97d518b6c8205e1ea" - integrity sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g== +mkdirp@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: version "0.5.5" @@ -3842,9 +3528,9 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: minimist "^1.2.5" moment@^2.10.6: - version "2.26.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a" - integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw== + version "2.27.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" + integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== ms@2.0.0: version "2.0.0" @@ -3867,11 +3553,6 @@ multimatch@4.0.0: arrify "^2.0.1" minimatch "^3.0.4" -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -3933,20 +3614,15 @@ ncp@~2.0.0: integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= neo-async@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== next-tick@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -4034,17 +3710,12 @@ nth-check@^1.0.2, nth-check@~1.0.1: dependencies: boolbase "~1.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -4059,9 +3730,9 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== object-is@^1.0.1: version "1.1.2" @@ -4132,11 +3803,6 @@ once@~1.3.0: dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -4145,9 +3811,9 @@ onetime@^2.0.0: mimic-fn "^1.0.0" onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" @@ -4170,11 +3836,6 @@ optionator@^0.8.2: type-check "~0.3.2" word-wrap "~1.2.3" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-5.0.0.tgz#6d26c1d95b6597c5d5317bf5fba37eccec3672e0" @@ -4353,7 +4014,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -4425,7 +4086,19 @@ pino-std-serializers@^2.4.2: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz#cb5e3e58c358b26f88969d7e619ae54bdfcc1ae1" integrity sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ== -pino@6.0.0, pino@~6.0.0: +pino@6.3.2: + version "6.3.2" + resolved "https://registry.yarnpkg.com/pino/-/pino-6.3.2.tgz#55f73aa61584774ca5984068ffb78e8d519ce19e" + integrity sha512-EiP3L1hoFw19KPocWimjnfXeysld0ne89ZRQ+bf8nAeA2TyuLoggNlibAi+Kla67GvQBopLdIZOsh1z/Lruo5Q== + dependencies: + fast-redact "^2.0.0" + fast-safe-stringify "^2.0.7" + flatstr "^1.0.12" + pino-std-serializers "^2.4.2" + quick-format-unescaped "^4.0.1" + sonic-boom "^1.0.0" + +pino@~6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/pino/-/pino-6.0.0.tgz#047746220dd20c2c44b7d54ae34656da51f36036" integrity sha512-3RfX2L76o7v230FP1fZ3Fo/WX7Su+P1Ld+pvBm2j+MyUjtA/KqDYxMkzBqzcX3R00zbC7Gf/HqIzyuu3tgvi9Q== @@ -4451,11 +4124,6 @@ pkg-up@^2.0.0: dependencies: find-up "^2.1.0" -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -4816,10 +4484,10 @@ postcss@6.0.1: source-map "^0.5.6" supports-color "^3.2.3" -postcss@7.0.27: - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== +postcss@7.0.32: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -4878,11 +4546,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= - progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -4988,15 +4651,6 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -5017,9 +4671,9 @@ regenerate@^1.4.0: integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -5055,9 +4709,9 @@ regexpu-core@^4.6.0: unicode-match-property-value-ecmascript "^1.2.0" registry-auth-token@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" - integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" + integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== dependencies: rc "^1.2.8" @@ -5165,19 +4819,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -5219,14 +4860,6 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -5255,7 +4888,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3, rimraf@~2.6.2: +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -5283,6 +4916,11 @@ rimraf@~2.4.0: dependencies: glob "^6.0.1" +rollup-plugin-analyzer@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-analyzer/-/rollup-plugin-analyzer-3.3.0.tgz#52fb30465ae927d9c078b6ec90c578cfb9164fc2" + integrity sha512-zUPGitW4usmZcVa0nKecRvw3odtXgnxdCben9Hx1kxVoR3demek8RU9tmRG/R35hnRPQTb7wEsYEe3GUcjxIMA== + rollup-plugin-clear@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/rollup-plugin-clear/-/rollup-plugin-clear-2.0.7.tgz#27a191bccb3964246ca2aad427e8798cbe87c9b1" @@ -5357,13 +4995,6 @@ rollup@^2.10.5: optionalDependencies: fsevents "~2.1.2" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k= - dependencies: - once "^1.3.0" - run-async@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -5374,15 +5005,10 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= - rxjs@^6.4.0: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + version "6.6.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" + integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== dependencies: tslib "^1.9.0" @@ -5435,10 +5061,10 @@ semver-diff@^3.1.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" - integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" @@ -5521,15 +5147,6 @@ shelljs@0.7.7: interpret "^1.0.0" rechoir "^0.6.2" -shelljs@^0.7.5: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM= - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -5568,11 +5185,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -5613,9 +5225,9 @@ snapdragon@^0.8.1: use "^3.1.0" sonic-boom@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.0.1.tgz#a5fdfcab1ddea31732ce9c7c054f3a5751eee089" - integrity sha512-o9tx+bonVEXSaPtptyXQXpP8l6UV9Bi3im2geZskvWw2a/o/hrbWI7EBbbv+rOx6Hubnzun9GgH4WfbgEA3MFQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.0.2.tgz#8769646fac2ecb58bd0ed60562280aa4211598df" + integrity sha512-sRMmXu7uFDXoniGvtLHuQk5KWovLWoi6WKASn7rw0ro41mPf0fOolkGp4NE6680CbxvNh26zWNyFQYYWXe33EA== dependencies: atomic-sleep "^1.0.0" flatstr "^1.0.12" @@ -5639,7 +5251,7 @@ source-map-support@0.5.16: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.12, source-map-support@~0.5.4: +source-map-support@0.5.19, source-map-support@~0.5.12, source-map-support@~0.5.4: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -5771,16 +5383,7 @@ string-hash@^1.1.1: resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.0: +string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -5814,7 +5417,7 @@ string.prototype.padend@^3.0.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -string.prototype.trimend@^1.0.0: +string.prototype.trimend@^1.0.0, string.prototype.trimend@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== @@ -5840,7 +5443,7 @@ string.prototype.trimright@^2.1.1: es-abstract "^1.17.5" string.prototype.trimend "^1.0.0" -string.prototype.trimstart@^1.0.0: +string.prototype.trimstart@^1.0.0, string.prototype.trimstart@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== @@ -5996,18 +5599,6 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8= - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -6056,7 +5647,7 @@ terser@^4.6.2: source-map "~0.6.1" source-map-support "~0.5.12" -text-table@^0.2.0, text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -6069,9 +5660,9 @@ thenify-all@^1.0.0: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" @@ -6162,7 +5753,7 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@^2.0.0: +tr46@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== @@ -6218,16 +5809,6 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -6360,13 +5941,6 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8= - dependencies: - os-homedir "^1.0.0" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -6426,35 +6000,35 @@ wcwidth@^1.0.0: defaults "^1.0.3" web-ext@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/web-ext/-/web-ext-4.2.0.tgz#04a1d2a6dec1a621b9feca48e8fd75bb1ffe14e9" - integrity sha512-WM03BEeC7CVw4PV8lwXKO6ag00MYdwMMe1SAJJfxz0uNMbTu7cYoH6Ia+e2DnAzpeOJLKCeL1IXvgxZSwVp4/Q== + version "4.3.0" + resolved "https://registry.yarnpkg.com/web-ext/-/web-ext-4.3.0.tgz#50f6968e140b95d41ccff22b9ecbc9fbf3c05414" + integrity sha512-1BCFeXuMY3QHnlkiUqgCV4ODNN84X3mX4GJk+Gb8tFv0Z8Grj4LneYa4A/0txoxpsz5E05THnKtb31t0XPJ8EQ== dependencies: "@babel/polyfill" "7.7.0" "@babel/runtime" "7.7.7" "@cliqz-oss/firefox-client" "0.3.1" "@cliqz-oss/node-firefox-connect" "1.2.1" adbkit "2.11.1" - addons-linter "1.23.0" + addons-linter "1.26.0" bunyan "1.8.12" camelcase "5.3.1" - chrome-launcher "0.13.1" + chrome-launcher "0.13.3" debounce "1.2.0" decamelize "3.2.0" es6-error "4.1.1" event-to-promise "0.8.0" firefox-profile "1.3.1" - fx-runner "1.0.11" + fx-runner "1.0.12" git-rev-sync "2.0.0" import-fresh "3.2.1" - mkdirp "1.0.3" + mkdirp "1.0.4" multimatch "4.0.0" mz "2.7.0" node-notifier "6.0.0" open "7.0.0" parse-json "5.0.0" sign-addon "2.0.5" - source-map-support "0.5.16" + source-map-support "0.5.19" stream-to-promise "2.2.0" strip-bom "4.0.0" strip-json-comments "3.0.1" @@ -6462,7 +6036,7 @@ web-ext@^4.1.0: update-notifier "4.0.0" watchpack "1.6.1" ws "7.2.3" - yargs "15.1.0" + yargs "15.3.1" zip-dir "1.0.2" webidl-conversions@^5.0.0: @@ -6470,13 +6044,13 @@ webidl-conversions@^5.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -whatwg-url@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.0.0.tgz#37f256cb746398e19b107bd6ef820b4ae2d15871" - integrity sha512-41ou2Dugpij8/LPO5Pq64K5q++MnRCBpEHvQr26/mArEKTkCV5aoXIqyhuYtE0pkqScXwhf2JP57rkRTYM29lQ== +whatwg-url@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" + integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== dependencies: lodash.sortby "^4.7.0" - tr46 "^2.0.0" + tr46 "^2.0.2" webidl-conversions "^5.0.0" when@3.7.7: @@ -6568,13 +6142,6 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - ws@7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" @@ -6630,14 +6197,6 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^18.1.1: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -6646,23 +6205,6 @@ yargs-parser@^18.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" - integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^16.1.0" - yargs@15.3.1, yargs@~15.3.0: version "15.3.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" From c409c47489da65f6eee057f9f0e0186b015e4396 Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Tue, 11 Aug 2020 13:03:05 +0200 Subject: [PATCH 04/49] fix: reverted back to min daemon version 2.5 --- src/config/general.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/general.ts b/src/config/general.ts index a7c5ae0..7db3f98 100644 --- a/src/config/general.ts +++ b/src/config/general.ts @@ -1,6 +1,6 @@ import { CSSTargets } from '../definitions'; -export const MIN_REQUIRED_DAEMON_VERSION = 2.7; +export const MIN_REQUIRED_DAEMON_VERSION = 2.5; export const DEFAULT_CSS_FONT_SIZE = 13; export const PYWAL_PALETTE_LENGTH = 20; export const AUTO_MODE_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes From 9cc024688a34d209f11670844e76214f5164395c Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 11:07:00 +0200 Subject: [PATCH 05/49] build: move html files to extension dir --- {src => extension}/ui/settings.html | 4 +-- {src => extension}/ui/update.html | 4 +-- rollup.config.js | 39 ++++++++++------------------- src/config/general.ts | 4 +-- 4 files changed, 19 insertions(+), 32 deletions(-) rename {src => extension}/ui/settings.html (99%) rename {src => extension}/ui/update.html (96%) diff --git a/src/ui/settings.html b/extension/ui/settings.html similarity index 99% rename from src/ui/settings.html rename to extension/ui/settings.html index 243ac0d..8f6cb81 100644 --- a/src/ui/settings.html +++ b/extension/ui/settings.html @@ -4,7 +4,7 @@ Pywalfox - Settings - +
@@ -250,6 +250,6 @@

Creating a custom theme template

- + diff --git a/src/ui/update.html b/extension/ui/update.html similarity index 96% rename from src/ui/update.html rename to extension/ui/update.html index fc5c12b..7e02bb9 100644 --- a/src/ui/update.html +++ b/extension/ui/update.html @@ -4,7 +4,7 @@ Pywalfox - Update/install required - +
@@ -55,6 +55,6 @@

Why am I getting this?

- + diff --git a/rollup.config.js b/rollup.config.js index b0c7fd5..07be54b 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,16 +1,19 @@ import path from 'path'; -import copy from 'rollup-plugin-copy'; import clear from 'rollup-plugin-clear'; import postcss from 'rollup-plugin-postcss'; import analyze from 'rollup-plugin-analyzer'; -import { terser } from "rollup-plugin-terser"; +import { terser } from 'rollup-plugin-terser'; import typescript from 'rollup-plugin-typescript2'; import cssimport from 'postcss-import'; import urlresolve from 'postcss-url'; const production = !process.env.ROLLUP_WATCH; -const analyzeConfig = { summaryOnly: true }; +const defaultPlugins = [ + typescript(), + production && terser(), + production && analyze({ summaryOnly: true }), +]; export default [ { @@ -21,10 +24,8 @@ export default [ }, plugins: [ clear({ targets: ['extension/dist', 'artifacts'] }), - typescript(), - production && terser(), postcss({ - extract: path.resolve('extension/dist/pages/bundle.min.css'), + extract: path.resolve('extension/dist/styles.bundle.css'), extensions: [ '.css' ], plugins: [ cssimport(), @@ -32,7 +33,7 @@ export default [ ], minimize: production, }), - production && analyze(analyzeConfig), + ...defaultPlugins, ], }, { @@ -41,36 +42,22 @@ export default [ file: 'extension/dist/duckduckgo.js', format: 'iife', }, - plugins: [ - typescript(), - production && terser(), - production && analyze(analyzeConfig), - ], + plugins: defaultPlugins, }, { input: 'src/ui/settings.ts', output: { - file: 'extension/dist/pages/settings.min.js', + file: 'extension/dist/settings.bundle.js', format: 'iife', }, - plugins: [ - typescript(), - production && terser(), - production && analyze(analyzeConfig), - copy({ targets: [ { src: 'src/ui/settings.html', dest: 'extension/dist/pages' } ] }), - ], + plugins: defaultPlugins, }, { input: 'src/ui/update.ts', output: { - file: 'extension/dist/pages/update.min.js', + file: 'extension/dist/update.bundle.js', format: 'iife', }, - plugins: [ - typescript(), - production && terser(), - production && analyze(analyzeConfig), - copy({ targets: [ { src: 'src/ui/update.html', dest: 'extension/dist/pages'} ] }), - ], + plugins: defaultPlugins, }, ]; diff --git a/src/config/general.ts b/src/config/general.ts index 7db3f98..fb97e10 100644 --- a/src/config/general.ts +++ b/src/config/general.ts @@ -13,8 +13,8 @@ export const DUCKDUCKGO_THEME_ID = 'pywalfox'; export const INJECT_URL_PATTERN = [ '*://*.duckduckgo.com/*' ]; export const EXTENSION_PAGES = { - UPDATE: 'dist/pages/update.html', - SETTINGS: 'dist/pages/settings.html', + UPDATE: 'ui/update.html', + SETTINGS: 'ui/settings.html', }; export const EXTERNAL_MESSAGES = { From e4cf5a986524736a31466c5a0ac4f2e1e4ee173a Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 13:17:29 +0200 Subject: [PATCH 06/49] refactor: merge ui/messenger and communication/ui --- src/communication/ui.ts | 58 +++++++++++++++++++++++++++++++++++ src/ui/colorpicker.ts | 2 +- src/ui/messenger.ts | 68 ----------------------------------------- src/ui/settings.ts | 24 +++++++-------- src/ui/themepicker.ts | 4 ++- src/ui/update.ts | 2 +- 6 files changed, 75 insertions(+), 83 deletions(-) delete mode 100644 src/ui/messenger.ts diff --git a/src/communication/ui.ts b/src/communication/ui.ts index 31b5c95..da338c5 100644 --- a/src/communication/ui.ts +++ b/src/communication/ui.ts @@ -81,3 +81,61 @@ export function sendThemeTemplate(template: IThemeTemplate) { export function sendCustomColors(customColors: Partial) { sendMessage({ action: EXTENSION_MESSAGES.CUSTOM_COLORS_SET, data: customColors }); } + +export function requestInitialData() { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.INITIAL_DATA_GET }); +} + +export function requestFetch() { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_FETCH }); +} + +export function requestDisable() { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_DISABLE }); +} + +export function requestThemeModeSet(mode: ThemeModes) { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_MODE_SET, data: mode }); +} + +export function requestTemplateThemeMode() { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.TEMPLATE_THEME_MODE_GET }); +} + +export function requestPaletteColorSet(id: string, color: string) { + const paletteColorData: Partial = { [id]: color }; + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.PALETTE_COLOR_SET, data: paletteColorData }); +} + +export function requestFontSizeSet(option: string, size: number) { + requestOptionSet(option, true, size); +} + +export function requestAutoTimeSet(option: string, time: ITimeIntervalEndpoint) { + requestOptionSet(option, true, time); +} + +export function requestOptionSet(option: string, enabled: boolean, value?: any) { + const optionData: IOptionSetData = { option, enabled, value }; + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.OPTION_SET, data: optionData }); +} + +export function requestThemeTemplateSet(template: IThemeTemplate) { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_TEMPLATE_SET, data: template }); +} + +export function requestThemeTemplateReset() { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_TEMPLATE_SET, data: null }); +} + +export function requestPaletteTemplateSet(template: IPaletteTemplate) { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.PALETTE_TEMPLATE_SET, data: template }); +} + +export function requestPaletteTemplateReset() { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.PALETTE_TEMPLATE_SET, data: null }); +} + +export function requestUpdatePageMute() { + browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.UPDATE_PAGE_MUTE }); +} diff --git a/src/ui/colorpicker.ts b/src/ui/colorpicker.ts index bac1f4e..ae8d001 100644 --- a/src/ui/colorpicker.ts +++ b/src/ui/colorpicker.ts @@ -1,7 +1,7 @@ import * as Utils from './utils'; import { Dialog } from './dialog'; -import { requestPaletteColorSet } from './messenger'; +import { requestPaletteColorSet } from '../communication/ui'; import { PYWAL_PALETTE_LENGTH } from '../config/general'; import { diff --git a/src/ui/messenger.ts b/src/ui/messenger.ts deleted file mode 100644 index 728b2be..0000000 --- a/src/ui/messenger.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { EXTENSION_MESSAGES } from '../config/general'; - -import { - IPalette, - IOptionSetData, - IPaletteTemplate, - IThemeTemplate, - ITimeIntervalEndpoint, - ThemeModes, -} from '../definitions'; - -export function requestInitialData() { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.INITIAL_DATA_GET }); -} - -export function requestFetch() { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_FETCH }); -} - -export function requestDisable() { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_DISABLE }); -} - -export function requestThemeModeSet(mode: ThemeModes) { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_MODE_SET, data: mode }); -} - -export function requestTemplateThemeMode() { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.TEMPLATE_THEME_MODE_GET }); -} - -export function requestPaletteColorSet(id: string, color: string) { - const paletteColorData: Partial = { [id]: color }; - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.PALETTE_COLOR_SET, data: paletteColorData }); -} - -export function requestFontSizeSet(option: string, size: number) { - requestOptionSet(option, true, size); -} - -export function requestAutoTimeSet(option: string, time: ITimeIntervalEndpoint) { - requestOptionSet(option, true, time); -} - -export function requestOptionSet(option: string, enabled: boolean, value?: any) { - const optionData: IOptionSetData = { option, enabled, value }; - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.OPTION_SET, data: optionData }); -} - -export function requestThemeTemplateSet(template: IThemeTemplate) { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_TEMPLATE_SET, data: template }); -} - -export function requestThemeTemplateReset() { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.THEME_TEMPLATE_SET, data: null }); -} - -export function requestPaletteTemplateSet(template: IPaletteTemplate) { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.PALETTE_TEMPLATE_SET, data: template }); -} - -export function requestPaletteTemplateReset() { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.PALETTE_TEMPLATE_SET, data: null }); -} - -export function requestUpdatePageMute() { - browser.runtime.sendMessage({ action: EXTENSION_MESSAGES.UPDATE_PAGE_MUTE }); -} diff --git a/src/ui/settings.ts b/src/ui/settings.ts index 710b4a4..a166936 100644 --- a/src/ui/settings.ts +++ b/src/ui/settings.ts @@ -29,7 +29,7 @@ import { } from '../config/template-data'; import * as Utils from './utils'; -import * as Messenger from './messenger'; +import * as UI from '../communication/ui'; import { Dialog } from './dialog'; import { Colorpicker } from './colorpicker'; @@ -149,11 +149,11 @@ function onOptionClicked(e: Event) { Utils.loading(target); } - Messenger.requestOptionSet(option, newState); + UI.requestOptionSet(option, newState); } function onDisableClicked() { - Messenger.requestDisable(); + UI.requestDisable(); colorpicker.setPywalColors(null); colorpicker.setCustomColors(null); colorpicker.updateSelected(); @@ -164,7 +164,7 @@ function onDisableClicked() { function onFontSizeSave() { if (fontSizeSaveInput.checkValidity()) { const option = fontSizeSaveInput.getAttribute('data-option'); - Messenger.requestFontSizeSet(option, parseInt(fontSizeSaveInput.value)); + UI.requestFontSizeSet(option, parseInt(fontSizeSaveInput.value)); } else { createNotification({ title: 'Custom font size', @@ -206,7 +206,7 @@ function onAutoTimeStartSave() { if (validateAutoTimeInterval()) { const intervalObject = createTimeIntervalObject(autoTimeStartInput.value); if (intervalObject !== null) { - Messenger.requestAutoTimeSet(EXTENSION_OPTIONS.AUTO_TIME_START, intervalObject); + UI.requestAutoTimeSet(EXTENSION_OPTIONS.AUTO_TIME_START, intervalObject); } } } @@ -215,7 +215,7 @@ function onAutoTimeEndSave() { if (validateAutoTimeInterval()) { const intervalObject = createTimeIntervalObject(autoTimeEndInput.value); if (intervalObject !== null) { - Messenger.requestAutoTimeSet(EXTENSION_OPTIONS.AUTO_TIME_END, intervalObject); + UI.requestAutoTimeSet(EXTENSION_OPTIONS.AUTO_TIME_END, intervalObject); } } } @@ -272,7 +272,7 @@ function onPaletteTemplateSave() { return; } - Messenger.requestPaletteTemplateSet(template.palette); + UI.requestPaletteTemplateSet(template.palette); } function onPaletteTemplateUseCurrent() { @@ -302,7 +302,7 @@ function onThemeTemplateSave() { return; } - Messenger.requestThemeTemplateSet(template.browser); + UI.requestThemeTemplateSet(template.browser); } function updateOptionState({ option, enabled, value }: IOptionSetData) { @@ -557,18 +557,18 @@ function handleExtensionMessage({ action, data }: IExtensionMessage) { function setupListeners() { overlay.addEventListener('click', closeDialog); disableButton.addEventListener('click', onDisableClicked); - fetchButton.addEventListener('click', Messenger.requestFetch); + fetchButton.addEventListener('click', UI.requestFetch); themeButton.addEventListener('click', () => openDialog(themepicker, themeButton)); fontSizeSaveInput.addEventListener('change', Utils.debounce(onFontSizeSave, 500)); autoTimeStartInput.addEventListener('change', Utils.debounce(onAutoTimeStartSave, 500)); autoTimeEndInput.addEventListener('change', Utils.debounce(onAutoTimeEndSave, 500)); themeTemplateSaveButton.addEventListener('click', onThemeTemplateSave); - themeTemplateResetButton.addEventListener('click', Messenger.requestThemeTemplateReset); + themeTemplateResetButton.addEventListener('click', UI.requestThemeTemplateReset); paletteTemplateSaveButton.addEventListener('click', onPaletteTemplateSave); paletteTemplateCurrentButton.addEventListener('click', onPaletteTemplateUseCurrent); - paletteTemplateResetButton.addEventListener('click', Messenger.requestPaletteTemplateReset); + paletteTemplateResetButton.addEventListener('click', UI.requestPaletteTemplateReset); helpToggleButtons.forEach((button: HTMLElement) => button.addEventListener('click', () => onHelpToggle(button))); settingCardHeaders.forEach((header: HTMLElement) => header.addEventListener('click', () => Utils.toggleOpen(header.parentElement))); @@ -590,5 +590,5 @@ setupListeners(); createPaletteContent(); createThemeTemplateContent(); -Messenger.requestInitialData(); +UI.requestInitialData(); Utils.setVersionLabel(versionLabel); diff --git a/src/ui/themepicker.ts b/src/ui/themepicker.ts index 697a013..70a0aad 100644 --- a/src/ui/themepicker.ts +++ b/src/ui/themepicker.ts @@ -1,6 +1,7 @@ import { Dialog } from './dialog'; import { ThemeModes, INodeLookup } from '../definitions'; -import { requestThemeModeSet } from './messenger'; +import { requestThemeModeSet } from '../communication/ui'; + import * as Utils from './utils'; export class Themepicker extends Dialog { @@ -34,6 +35,7 @@ export class Themepicker extends Dialog { if (this.themeSelectButton !== null) { switch (mode) { + // TODO: Remove call to 'innerHTML' case ThemeModes.Dark: this.themeSelectButton.innerHTML = `Dark mode`; break; diff --git a/src/ui/update.ts b/src/ui/update.ts index ac66005..51e6275 100644 --- a/src/ui/update.ts +++ b/src/ui/update.ts @@ -1,7 +1,7 @@ import { setVersionLabel } from './utils'; import { EXTENSION_MESSAGES } from '../config/general'; import { IExtensionMessage, ThemeModes } from '../definitions'; -import { requestUpdatePageMute, requestTemplateThemeMode } from './messenger'; +import { requestUpdatePageMute, requestTemplateThemeMode } from '../communication/ui'; const versionLabel = document.getElementById('version'); const disableButton = document.getElementById('disable-button'); From c24af5dd6081ca1c5ea77cd069e6a0e534f794d7 Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 13:40:55 +0200 Subject: [PATCH 07/49] build: add aliased module resolve --- package.json | 1 + rollup.config.js | 2 ++ tsconfig.json | 10 +++++++++- yarn.lock | 5 +++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 98ae909..ec6a824 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "rollup-plugin-copy": "^3.3.0", "rollup-plugin-postcss": "^3.1.1", "rollup-plugin-terser": "^5.3.0", + "rollup-plugin-typescript-paths": "^1.2.2", "rollup-plugin-typescript2": "^0.27.1", "tslib": "^2.0.0", "typescript": "^3.9.3", diff --git a/rollup.config.js b/rollup.config.js index 07be54b..3fed136 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,6 +4,7 @@ import postcss from 'rollup-plugin-postcss'; import analyze from 'rollup-plugin-analyzer'; import { terser } from 'rollup-plugin-terser'; import typescript from 'rollup-plugin-typescript2'; +import { typescriptPaths } from 'rollup-plugin-typescript-paths'; import cssimport from 'postcss-import'; import urlresolve from 'postcss-url'; @@ -11,6 +12,7 @@ import urlresolve from 'postcss-url'; const production = !process.env.ROLLUP_WATCH; const defaultPlugins = [ typescript(), + typescriptPaths(), production && terser(), production && analyze({ summaryOnly: true }), ]; diff --git a/tsconfig.json b/tsconfig.json index 6e88a55..795dca4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,15 @@ "target": "es6", "allowJs": true, "lib": ["dom"], - "removeComments": true + "removeComments": true, + "baseUrl": ".", + "paths": { + "@ui/*": [ "src/ui/*" ], + "@pywalfox/*": [ "src/*" ], + "@config/*": [ "src/config/*" ], + "@definitions": [ "src/definitions" ], + "@communication/*": [ "src/communication/*" ] + } }, "include": [ "./src" diff --git a/yarn.lock b/yarn.lock index d34f14e..27d8ca7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4970,6 +4970,11 @@ rollup-plugin-terser@^5.3.0: serialize-javascript "^2.1.2" terser "^4.6.2" +rollup-plugin-typescript-paths@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript-paths/-/rollup-plugin-typescript-paths-1.2.2.tgz#325b9af1522b3f11b2cc6c3890ff15ace214a3fd" + integrity sha512-MMdnzx4Qbj3kZnPivNTlfnCYTvFKvl2Ac+tlVyq3EUK90mmaY5wCz6oEofxwUAF0YTwp8jI5AsasqJmDUwhDXQ== + rollup-plugin-typescript2@^0.27.1: version "0.27.1" resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.1.tgz#4f27193408a8f040139eed3e3db7b0c7f3668200" From 1a7f525512222e1d1914191be5401d994f7be4df Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 13:44:13 +0200 Subject: [PATCH 08/49] build: add alias for utils --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index 795dca4..db66629 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ "paths": { "@ui/*": [ "src/ui/*" ], "@pywalfox/*": [ "src/*" ], + "@utils/*": [ "src/utils/*" ], "@config/*": [ "src/config/*" ], "@definitions": [ "src/definitions" ], "@communication/*": [ "src/communication/*" ] From f9fcf6b10f947c3135c8ab75fadee35fa54e652f Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 14:25:34 +0200 Subject: [PATCH 09/49] refactor: change to aliased imports when possible --- src/background/auto-mode.ts | 8 +++---- src/background/colorscheme.ts | 14 +++++------ src/background/extension-page.ts | 2 +- src/background/extension.ts | 22 +++++++++--------- src/background/native-app.ts | 6 ++--- src/background/state.ts | 8 +++---- src/communication/duckduckgo.ts | 6 ++--- src/communication/ui.ts | 6 ++--- src/config/default-themes.ts | 2 +- src/config/general.ts | 2 +- src/config/template-data.ts | 2 +- src/inject/duckduckgo.ts | 13 +++-------- src/ui/{ => components}/colorpicker.ts | 30 +++++++++++------------- src/ui/{ => components}/dialog.ts | 18 ++++++++++----- src/ui/{ => components}/themepicker.ts | 15 +++++++----- src/ui/settings.ts | 32 +++++++++++++------------- src/ui/update.ts | 8 +++---- src/utils/colors.ts | 9 ++++++++ src/{ui/utils.ts => utils/dom.ts} | 21 +++++------------ 19 files changed, 112 insertions(+), 112 deletions(-) rename src/ui/{ => components}/colorpicker.ts (92%) rename src/ui/{ => components}/dialog.ts (83%) rename src/ui/{ => components}/themepicker.ts (91%) rename src/{ui/utils.ts => utils/dom.ts} (72%) diff --git a/src/background/auto-mode.ts b/src/background/auto-mode.ts index d6862ca..90062f6 100644 --- a/src/background/auto-mode.ts +++ b/src/background/auto-mode.ts @@ -1,10 +1,10 @@ -import { sendDebuggingOutput } from '../communication/ui'; -import { AUTO_MODE_INTERVAL_MS } from '../config/general'; - import { ITimeIntervalEndpoint, IAutoModeTriggerCallback -} from '../definitions'; +} from '@definitions'; + +import { sendDebuggingOutput } from '@communication/ui'; +import { AUTO_MODE_INTERVAL_MS } from '@config/general'; export class AutoMode { private startTime: ITimeIntervalEndpoint; diff --git a/src/background/colorscheme.ts b/src/background/colorscheme.ts index 6653551..67fe810 100644 --- a/src/background/colorscheme.ts +++ b/src/background/colorscheme.ts @@ -1,9 +1,3 @@ -import { DUCKDUCKGO_THEME_ID } from '../config/general'; -import { EXTENDED_PYWAL_COLORS } from '../config/default-themes'; -import { THEME_TEMPLATE_DATA, PALETTE_TEMPLATE_DATA } from '../config/template-data'; - -import { changeLuminance, normalizeLuminance } from '../utils/colors'; - import { PaletteColors, IPalette, @@ -14,7 +8,13 @@ import { IPaletteTemplate, IColorschemeTemplate, IDuckDuckGoThemeTemplate, -} from '../definitions'; +} from '@definitions'; + +import { DUCKDUCKGO_THEME_ID } from '@config/general'; +import { EXTENDED_PYWAL_COLORS } from '@config/default-themes'; +import { THEME_TEMPLATE_DATA, PALETTE_TEMPLATE_DATA } from '@config/template-data'; + +import { changeLuminance, normalizeLuminance } from '@utils/colors'; export function extendPywalColors(pywalColors: IPywalColors) { const colors = pywalColors; diff --git a/src/background/extension-page.ts b/src/background/extension-page.ts index 4198144..8fa3fb1 100644 --- a/src/background/extension-page.ts +++ b/src/background/extension-page.ts @@ -1,4 +1,4 @@ -import { IExtensionTheme } from '../definitions'; +import { IExtensionTheme } from '@definitions'; export class ExtensionPage { protected tab: browser.tabs.Tab; diff --git a/src/background/extension.ts b/src/background/extension.ts index 6ad33d9..dbd7cfc 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -10,13 +10,7 @@ import { IExtensionMessage, ThemeModes, CSSTargets, -} from '../definitions'; - -import { - extendPywalColors, - generateColorscheme, - generateBrowserTheme, -} from './colorscheme'; +} from '@definitions'; import { EXTENSION_PAGES, @@ -25,20 +19,26 @@ import { EXTENSION_MESSAGES, DEFAULT_CSS_FONT_SIZE, MIN_REQUIRED_DAEMON_VERSION, -} from '../config/general'; +} from '@config/general'; import { DEFAULT_THEME_DARK, DEFAULT_THEME_LIGHT, -} from '../config/default-themes'; +} from '@config/default-themes'; + +import { + extendPywalColors, + generateColorscheme, + generateBrowserTheme, +} from './colorscheme'; import { State } from './state'; import { NativeApp } from './native-app'; import { AutoMode } from './auto-mode'; import { ExtensionPage } from './extension-page'; -import * as UI from '../communication/ui'; -import * as DDG from '../communication/duckduckgo'; +import * as UI from '@communication/ui'; +import * as DDG from '@communication/duckduckgo'; export class Extension { private state: State; diff --git a/src/background/native-app.ts b/src/background/native-app.ts index c1a94b3..ae9f363 100644 --- a/src/background/native-app.ts +++ b/src/background/native-app.ts @@ -1,11 +1,11 @@ -import { RESPONSE_TIMEOUT, NATIVE_MESSAGES } from '../config/native'; - import { IPywalColors, INativeAppMessage, INativeAppRequest, INativeAppMessageCallbacks -} from '../definitions'; +} from '@definitions'; + +import { RESPONSE_TIMEOUT, NATIVE_MESSAGES } from '@config/native'; /** * Implements the communcation with the native messaging host. diff --git a/src/background/state.ts b/src/background/state.ts index 9f67a87..6f360ab 100644 --- a/src/background/state.ts +++ b/src/background/state.ts @@ -1,6 +1,3 @@ -import { DEFAULT_CSS_FONT_SIZE } from '../config/general'; -import { DEFAULT_THEME_DARK, DEFAULT_THEME_LIGHT } from '../config/default-themes'; - import { IPalette, IPaletteHash, @@ -20,7 +17,10 @@ import { ThemeModes, TemplateTypes, ColorschemeTypes, -} from '../definitions'; +} from '@definitions'; + +import { DEFAULT_CSS_FONT_SIZE } from '@config/general'; +import { DEFAULT_THEME_DARK, DEFAULT_THEME_LIGHT } from '@config/default-themes'; export interface IExtensionState { version: number, diff --git a/src/communication/duckduckgo.ts b/src/communication/duckduckgo.ts index 1e0a7d6..1958a0c 100644 --- a/src/communication/duckduckgo.ts +++ b/src/communication/duckduckgo.ts @@ -1,11 +1,11 @@ -import { EXTENSION_MESSAGES, INJECT_URL_PATTERN } from '../config/general'; - import { IDuckDuckGoTheme, IExtensionMessage, IPaletteHash, IDuckDuckGoThemeSetData -} from '../definitions'; +} from '@definitions'; + +import { EXTENSION_MESSAGES, INJECT_URL_PATTERN } from '@config/general'; async function sendMessage(message: IExtensionMessage) { const tabs = await browser.tabs.query({ url: INJECT_URL_PATTERN }); diff --git a/src/communication/ui.ts b/src/communication/ui.ts index da338c5..755c15b 100644 --- a/src/communication/ui.ts +++ b/src/communication/ui.ts @@ -1,5 +1,3 @@ -import { EXTENSION_MESSAGES, EXTENSION_OPTIONS } from '../config/general'; - import { IPalette, IInitialData, @@ -12,7 +10,9 @@ import { IDebuggingInfoData, IOptionSetData, INotificationData, -} from '../definitions'; +} from '@definitions'; + +import { EXTENSION_MESSAGES, EXTENSION_OPTIONS } from '@config/general'; function sendMessage(data: any) { // Mute errors from sending messages to non-existing listeners diff --git a/src/config/default-themes.ts b/src/config/default-themes.ts index 463b368..9c047be 100644 --- a/src/config/default-themes.ts +++ b/src/config/default-themes.ts @@ -5,7 +5,7 @@ import { IColorschemeTemplate, IDuckDuckGoThemeTemplate, IExtendedPywalColors, -} from '../definitions'; +} from '@definitions'; export const EXTENDED_PYWAL_COLORS: IExtendedPywalColors = [ { targetIndex: 16, colorIndex: 0, modifier: 1.25 }, diff --git a/src/config/general.ts b/src/config/general.ts index fb97e10..940b50e 100644 --- a/src/config/general.ts +++ b/src/config/general.ts @@ -1,4 +1,4 @@ -import { CSSTargets } from '../definitions'; +import { CSSTargets } from '@definitions'; export const MIN_REQUIRED_DAEMON_VERSION = 2.5; export const DEFAULT_CSS_FONT_SIZE = 13; diff --git a/src/config/template-data.ts b/src/config/template-data.ts index f2b0fc7..79a4cf3 100644 --- a/src/config/template-data.ts +++ b/src/config/template-data.ts @@ -1,4 +1,4 @@ -import { ITemplateItem, PaletteColors } from '../definitions'; +import { ITemplateItem, PaletteColors } from '@definitions'; export const PALETTE_TEMPLATE_DATA: ITemplateItem[] = [ { title: 'Background', description: 'Main background color', target: PaletteColors.Background }, diff --git a/src/inject/duckduckgo.ts b/src/inject/duckduckgo.ts index a0cef25..6337930 100644 --- a/src/inject/duckduckgo.ts +++ b/src/inject/duckduckgo.ts @@ -1,6 +1,6 @@ -import { EXTENSION_MESSAGES, DUCKDUCKGO_THEME_ID } from '../config/general'; -import { IDuckDuckGoTheme, IExtensionMessage } from '../definitions'; -import { requestTheme } from '../communication/duckduckgo'; +import { requestTheme } from '@communication/duckduckgo'; +import { IDuckDuckGoTheme, IExtensionMessage } from '@definitions'; +import { EXTENSION_MESSAGES, DUCKDUCKGO_THEME_ID } from '@config/general'; function getCurrentTheme() { return window.wrappedJSObject.DDG.settings.get('kae'); @@ -21,7 +21,6 @@ function resetTheme() { setHash(''); } - function applyTheme(hash: string, theme: IDuckDuckGoTheme) { console.log('Applying Pywalfox theme'); for (const id of Object.keys(theme)) { @@ -55,9 +54,3 @@ browser.runtime.onMessage.addListener(onMessage); requestTheme(); console.log('Pywalfox content script loaded'); - - - - - - diff --git a/src/ui/colorpicker.ts b/src/ui/components/colorpicker.ts similarity index 92% rename from src/ui/colorpicker.ts rename to src/ui/components/colorpicker.ts index ae8d001..833a100 100644 --- a/src/ui/colorpicker.ts +++ b/src/ui/components/colorpicker.ts @@ -1,16 +1,16 @@ -import * as Utils from './utils'; - -import { Dialog } from './dialog'; -import { requestPaletteColorSet } from '../communication/ui'; -import { PYWAL_PALETTE_LENGTH } from '../config/general'; - import { IPywalColors, IPaletteTemplate, IPalette, INodeLookup, PaletteColors -} from '../definitions'; +} from '@definitions'; + +import { Dialog } from './dialog'; +import { rgbToHex } from '@utils/colors'; +import { setSelected, setDeselected } from '@utils/dom'; +import { PYWAL_PALETTE_LENGTH } from '@config/general'; +import { requestPaletteColorSet } from '@communication/ui'; export class Colorpicker extends Dialog { private grid: HTMLElement; @@ -68,29 +68,29 @@ export class Colorpicker extends Dialog { protected onOpen(currentTarget: HTMLElement, nextTarget: HTMLElement) { if (currentTarget !== null) { - Utils.deselect(currentTarget.parentElement); + setDeselected(currentTarget.parentElement); } - Utils.select(nextTarget.parentElement); + setSelected(nextTarget.parentElement); } protected onClose(currentTarget: HTMLElement) { - Utils.deselect(currentTarget.parentElement); + setDeselected(currentTarget.parentElement); } private highlightSelectedColor(element: HTMLElement) { if (element === null) { if (this.selected !== null) { - Utils.deselect(this.selected); + setDeselected(this.selected); } return; } if (this.selected !== null) { - Utils.deselect(this.selected); + setDeselected(this.selected); } - Utils.select(element); + setSelected(element); this.setCustomColor(element); this.selected = element; } @@ -105,7 +105,7 @@ export class Colorpicker extends Dialog { } private updateCustomColorInputValue(color: string) { - this.customColorButton.value = Utils.rgbToHex(color); + this.customColorButton.value = rgbToHex(color); } private setCustomColor(element: HTMLElement) { @@ -248,5 +248,3 @@ export class Colorpicker extends Dialog { } } } - - diff --git a/src/ui/dialog.ts b/src/ui/components/dialog.ts similarity index 83% rename from src/ui/dialog.ts rename to src/ui/components/dialog.ts index 0d071b1..c98f511 100644 --- a/src/ui/dialog.ts +++ b/src/ui/components/dialog.ts @@ -1,4 +1,9 @@ -import * as Utils from './utils'; +import { + setOpen, + setClosed, + setSelected, + setDeselected +} from '@utils/dom'; /** * Base class for dialogs. @@ -23,11 +28,11 @@ export abstract class Dialog { * @param {HTMLElement} target - the dialog opener element */ public open(target: HTMLElement) { - Utils.open(this.dialog); - Utils.select(target); + setOpen(this.dialog); + setSelected(target); if (this.target !== null){ - Utils.deselect(this.target); + setDeselected(this.target); } this.onOpen !== undefined && this.onOpen(this.target, target); @@ -38,6 +43,7 @@ export abstract class Dialog { return this.target; } + protected onOpen(currentTarget: HTMLElement, nextTarget: HTMLElement) {}; protected onClose(currentTarget: HTMLElement) {}; @@ -46,8 +52,8 @@ export abstract class Dialog { * Callback is available by implementing the 'onClose' function. */ public close() { - Utils.close(this.dialog); - Utils.deselect(this.target); + setClosed(this.dialog); + setDeselected(this.target); this.onClose !== undefined && this.onClose(this.target); this.target = null; diff --git a/src/ui/themepicker.ts b/src/ui/components/themepicker.ts similarity index 91% rename from src/ui/themepicker.ts rename to src/ui/components/themepicker.ts index 70a0aad..ecc1866 100644 --- a/src/ui/themepicker.ts +++ b/src/ui/components/themepicker.ts @@ -1,8 +1,11 @@ -import { Dialog } from './dialog'; -import { ThemeModes, INodeLookup } from '../definitions'; -import { requestThemeModeSet } from '../communication/ui'; +import { + ThemeModes, + INodeLookup +} from '@definitions'; -import * as Utils from './utils'; +import { Dialog } from './dialog'; +import { setSelected, setDeselected } from '@utils/dom'; +import { requestThemeModeSet } from '@communication/ui'; export class Themepicker extends Dialog { private themeSelectButton: HTMLElement; @@ -30,7 +33,7 @@ export class Themepicker extends Dialog { private selectMode(target: HTMLElement, mode: ThemeModes) { if (this.selected !== null) { - Utils.deselect(this.selected); + setDeselected(this.selected); } if (this.themeSelectButton !== null) { @@ -50,7 +53,7 @@ export class Themepicker extends Dialog { } } - Utils.select(target); + setSelected(target); this.selected = target; this.setBodyClass(mode); diff --git a/src/ui/settings.ts b/src/ui/settings.ts index a166936..240693c 100644 --- a/src/ui/settings.ts +++ b/src/ui/settings.ts @@ -12,7 +12,7 @@ import { INotificationData, IDebuggingInfoData, PaletteColors, -} from '../definitions'; +} from '@definitions'; import { EXTENSION_OPTIONS, @@ -21,19 +21,19 @@ import { ENABLED_BODY_CLASS, NOTIFICATION_TIMEOUT, MAX_SIMULTANEOUS_NOTIFICATIONS, -} from '../config/general'; +} from '@config/general'; import { THEME_TEMPLATE_DATA, PALETTE_TEMPLATE_DATA, -} from '../config/template-data'; +} from '@config/template-data'; -import * as Utils from './utils'; -import * as UI from '../communication/ui'; +import * as Utils from '@utils/dom'; +import * as UI from '@communication/ui'; -import { Dialog } from './dialog'; -import { Colorpicker } from './colorpicker'; -import { Themepicker } from './themepicker'; +import { Dialog } from './components/dialog'; +import { Colorpicker } from './components/colorpicker'; +import { Themepicker } from './components/themepicker'; const optionButtons = >document.querySelectorAll('button[data-option]'); const helpToggleButtons = >document.querySelectorAll('button[data-help]'); @@ -77,7 +77,7 @@ let themeTemplateInputLookup: INodeLookup = {}; function openDialog(dialog: Dialog, target: HTMLElement) { if (!Utils.isOpen(overlay)) { - Utils.open(overlay); + Utils.setOpen(overlay); } if (currentDialog === dialog) { @@ -100,7 +100,7 @@ function closeDialog() { } if (Utils.isOpen(overlay)) { - Utils.close(overlay); + Utils.setClosed(overlay); } } @@ -126,16 +126,16 @@ function onColorClicked(e: Event) { function setOptionEnabled(target: HTMLElement, enabled: boolean) { if (Utils.isSet('loading', target)) { - Utils.loaded(target); + Utils.setLoaded(target); } if (enabled) { - Utils.select(target); - Utils.select(target.parentElement); + Utils.setSelected(target); + Utils.setSelected(target.parentElement); target.innerText = 'Yes'; } else { - Utils.deselect(target); - Utils.deselect(target.parentElement); + Utils.setDeselected(target); + Utils.setDeselected(target.parentElement); target.innerText = 'No'; } } @@ -146,7 +146,7 @@ function onOptionClicked(e: Event) { const newState = Utils.isSet('selected', target) ? false : true; if (Utils.isSet('async', target)) { - Utils.loading(target); + Utils.setLoading(target); } UI.requestOptionSet(option, newState); diff --git a/src/ui/update.ts b/src/ui/update.ts index 51e6275..80889b1 100644 --- a/src/ui/update.ts +++ b/src/ui/update.ts @@ -1,7 +1,7 @@ -import { setVersionLabel } from './utils'; -import { EXTENSION_MESSAGES } from '../config/general'; -import { IExtensionMessage, ThemeModes } from '../definitions'; -import { requestUpdatePageMute, requestTemplateThemeMode } from '../communication/ui'; +import { setVersionLabel } from '@utils/dom'; +import { EXTENSION_MESSAGES } from '@config/general'; +import { IExtensionMessage, ThemeModes } from '@definitions'; +import { requestUpdatePageMute, requestTemplateThemeMode } from '@communication/ui'; const versionLabel = document.getElementById('version'); const disableButton = document.getElementById('disable-button'); diff --git a/src/utils/colors.ts b/src/utils/colors.ts index 8e89a71..9c0e274 100644 --- a/src/utils/colors.ts +++ b/src/utils/colors.ts @@ -7,6 +7,15 @@ function validateHex(hex: string) { return validatedHex; } +export function rgbToHex(rgb: string) { + if (rgb[0] === '#' || !rgb) { return rgb; } + const hex = rgb.substr(4, rgb.indexOf(')') - 4).split(',').map((color) => { + let str = parseInt(color).toString(16); + return str.length === 1 ? str = "0" + str : str; + }).join(''); + return '#' + hex; +} + // https://www.sitepoint.com/javascript-generate-lighter-darker-color/ export function changeLuminance(hex: string, lum: number) { let validatedHex = validateHex(hex); diff --git a/src/ui/utils.ts b/src/utils/dom.ts similarity index 72% rename from src/ui/utils.ts rename to src/utils/dom.ts index dc26831..3227f73 100644 --- a/src/ui/utils.ts +++ b/src/utils/dom.ts @@ -28,27 +28,27 @@ export function setAttribute(element: HTMLElement, attr: string, enabled: boolea } } -export function open(element: HTMLElement) { +export function setOpen(element: HTMLElement) { setAttribute(element, 'open', true); } -export function close(element: HTMLElement) { +export function setClosed(element: HTMLElement) { setAttribute(element, 'open', false); } -export function select(element: HTMLElement) { +export function setSelected(element: HTMLElement) { setAttribute(element, 'selected', true); } -export function deselect(element: HTMLElement) { +export function setDeselected(element: HTMLElement) { setAttribute(element, 'selected', false); } -export function loading(element: HTMLElement) { +export function setLoading(element: HTMLElement) { setAttribute(element, 'loading', true); } -export function loaded(element: HTMLElement) { +export function setLoaded(element: HTMLElement) { setAttribute(element, 'loading', false); } @@ -60,15 +60,6 @@ export function toggleOpen(element: HTMLElement) { toggleAttribute(element, 'open'); } -export function rgbToHex(rgb: string) { - if (rgb[0] === '#' || !rgb) { return rgb; } - const hex = rgb.substr(4, rgb.indexOf(')') - 4).split(',').map((color) => { - let str = parseInt(color).toString(16); - return str.length === 1 ? str = "0" + str : str; - }).join(''); - return '#' + hex; -} - export function debounce void>(fn: F, delay: number) { let timeoutID: number = null; return function(this: any, ...args: any[]) { From 0af85fdee565c60516166829b446a7bc1e3d7d4c Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 14:46:51 +0200 Subject: [PATCH 10/49] fix: skip theme update when selecting auto mode, if possible --- src/background/extension.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/background/extension.ts b/src/background/extension.ts index dbd7cfc..45ef734 100644 --- a/src/background/extension.ts +++ b/src/background/extension.ts @@ -319,8 +319,8 @@ export class Extension { } private updateThemeForCurrentMode() { - const pywalColors = this.state.getPywalColors(); const template = this.state.getTemplate(); + const pywalColors = this.state.getPywalColors(); const customColors = this.state.getCustomColors(); pywalColors && this.setThemes(pywalColors, customColors); @@ -332,13 +332,25 @@ export class Extension { private async setThemeMode(mode: ThemeModes) { const currentMode = this.state.getThemeMode(); + const previousTemplateMode = this.state.getTemplateThemeMode(); if (currentMode === mode) { return; } - await this.state.setThemeMode(mode); // Must wait for this to finish - this.updateThemeForCurrentMode(); + /** + * TODO: Change 'setThemeMode' behaviour to allow use without 'await' + * + * Doing it this way is not clean and can easily cause bugs, since forgetting + * to await the promise will give us an invalid template mode. + */ + await this.state.setThemeMode(mode); + + // No need to update the theme if the currently applied theme mode + // matches the one that will be set by auto-mode. + if (previousTemplateMode !== this.state.getTemplateThemeMode()) { + this.updateThemeForCurrentMode(); + } if (mode === ThemeModes.Auto) { if (this.state.getApplied()) { From e9f3de9dcf3c538ba7ab21d3e08ea9ce14052361 Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 14:52:50 +0200 Subject: [PATCH 11/49] fix: colliding default keybindings On Linux/Windows, Ctrl+Shift+ is bound by Firefox to certain actions. This means that the default Pywalfox keybindings would not work correctly. Firefox on MacOS does not bind Ctrl+Shift by default, but those bindings were changed as well for predictability --- extension/manifest.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/extension/manifest.json b/extension/manifest.json index d26dfd5..807811f 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -36,42 +36,42 @@ "fetch_pywal_colors": { "description": "Fetches your Pywal colors and updates your browser theme", "suggested_key": { - "default": "Ctrl+Shift+F", - "mac": "MacCtrl+Shift+F" + "default": "Ctrl+Alt+F", + "mac": "MacCtrl+Alt+F" } }, "disable_theme": { "description": "Disables the Pywalfox theme", "suggested_key": { - "default": "Ctrl+Shift+R", - "mac": "MacCtrl+Shift+R" + "default": "Ctrl+Alt+R", + "mac": "MacCtrl+Alt+R" } }, "enable_dark_mode": { "description": "Enables the Pywalfox Dark mode", "suggested_key": { - "default": "Ctrl+Shift+D", - "mac": "MacCtrl+Shift+D" + "default": "Ctrl+Alt+D", + "mac": "MacCtrl+Alt+D" } }, "enable_light_mode": { "description": "Enables the Pywalfox Light mode", "suggested_key": { - "default": "Ctrl+Shift+L", - "mac": "MacCtrl+Shift+L" + "default": "Ctrl+Alt+L", + "mac": "MacCtrl+Alt+L" } }, "enable_auto_mode": { "description": "Enables the Pywalfox Auto mode", "suggested_key": { - "default": "Ctrl+Shift+A", - "mac": "MacCtrl+Shift+A" + "default": "Ctrl+Alt+A", + "mac": "MacCtrl+Alt+A" } }, "_execute_browser_action": { "suggested_key": { - "default": "Ctrl+Shift+P", - "mac": "MacCtrl+Shift+P" + "default": "Ctrl+Alt+P", + "mac": "MacCtrl+Alt+P" } } }, From 60b327e9e7e9a1c6d8ed22ed223862c0a81d1713 Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 15:18:55 +0200 Subject: [PATCH 12/49] refactor: add shared function for saving time intervals --- src/ui/settings.ts | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/ui/settings.ts b/src/ui/settings.ts index 240693c..cbb8da6 100644 --- a/src/ui/settings.ts +++ b/src/ui/settings.ts @@ -202,20 +202,12 @@ function createTimeIntervalObject(value: string) { return intervalObject; } -function onAutoTimeStartSave() { +function onTimeIntervalSave(input: HTMLInputElement, action: string) { if (validateAutoTimeInterval()) { - const intervalObject = createTimeIntervalObject(autoTimeStartInput.value); - if (intervalObject !== null) { - UI.requestAutoTimeSet(EXTENSION_OPTIONS.AUTO_TIME_START, intervalObject); - } - } -} + const intervalObject = createTimeIntervalObject(input.value); -function onAutoTimeEndSave() { - if (validateAutoTimeInterval()) { - const intervalObject = createTimeIntervalObject(autoTimeEndInput.value); if (intervalObject !== null) { - UI.requestAutoTimeSet(EXTENSION_OPTIONS.AUTO_TIME_END, intervalObject); + UI.requestAutoTimeSet(action, intervalObject); } } } @@ -560,8 +552,14 @@ function setupListeners() { fetchButton.addEventListener('click', UI.requestFetch); themeButton.addEventListener('click', () => openDialog(themepicker, themeButton)); fontSizeSaveInput.addEventListener('change', Utils.debounce(onFontSizeSave, 500)); - autoTimeStartInput.addEventListener('change', Utils.debounce(onAutoTimeStartSave, 500)); - autoTimeEndInput.addEventListener('change', Utils.debounce(onAutoTimeEndSave, 500)); + + autoTimeStartInput.addEventListener('change', Utils.debounce(() => { + onTimeIntervalSave(autoTimeStartInput, EXTENSION_OPTIONS.AUTO_TIME_START); + }, 500)); + + autoTimeEndInput.addEventListener('change', Utils.debounce(() => { + onTimeIntervalSave(autoTimeEndInput, EXTENSION_OPTIONS.AUTO_TIME_END); + }, 500)); themeTemplateSaveButton.addEventListener('click', onThemeTemplateSave); themeTemplateResetButton.addEventListener('click', UI.requestThemeTemplateReset); @@ -570,8 +568,14 @@ function setupListeners() { paletteTemplateCurrentButton.addEventListener('click', onPaletteTemplateUseCurrent); paletteTemplateResetButton.addEventListener('click', UI.requestPaletteTemplateReset); - helpToggleButtons.forEach((button: HTMLElement) => button.addEventListener('click', () => onHelpToggle(button))); - settingCardHeaders.forEach((header: HTMLElement) => header.addEventListener('click', () => Utils.toggleOpen(header.parentElement))); + helpToggleButtons.forEach((button: HTMLElement) => { + button.addEventListener('click', () => onHelpToggle(button)) + }); + + settingCardHeaders.forEach((header: HTMLElement) => { + header.addEventListener('click', () => Utils.toggleOpen(header.parentElement)) + }); + optionButtons.forEach((button: HTMLElement) => { const option = button.getAttribute('data-option'); button.addEventListener('click', onOptionClicked); From 06bac0f69e5b09531c0f855aec7bd52853c91a95 Mon Sep 17 00:00:00 2001 From: Fredrik Engstrand Date: Wed, 19 Aug 2020 17:34:17 +0200 Subject: [PATCH 13/49] refactor: remove unused button styles --- extension/ui/settings.html | 12 +-- extension/ui/update.html | 12 +-- src/ui/css/buttons.css | 179 ++++++++++++------------------------- src/ui/css/cards.css | 12 +-- src/ui/css/inputs.css | 9 +- src/ui/css/layout.css | 1 - src/ui/css/settings.css | 7 +- src/ui/css/variables.css | 18 +++- 8 files changed, 93 insertions(+), 157 deletions(-) diff --git a/extension/ui/settings.html b/extension/ui/settings.html index 8f6cb81..a80664d 100644 --- a/extension/ui/settings.html +++ b/extension/ui/settings.html @@ -15,10 +15,10 @@

Pywalfox

- +
- +