Electron 8
This commit is contained in:
		
							parent
							
								
									174b40f587
								
							
						
					
					
						commit
						dfb50d731f
					
				@ -1,6 +1,6 @@
 | 
			
		||||
<template>
 | 
			
		||||
    <!-- hiding elements instead of using 'v-if' is used here as an optimization -->
 | 
			
		||||
    <div class="image-preview-wrapper" :class="{interactive: sticky}" v-show="visible">
 | 
			
		||||
    <div class="image-preview-wrapper" :class="{interactive: sticky, visible: visible}">
 | 
			
		||||
        <div class="image-preview-toolbar" v-show="sticky || debug">
 | 
			
		||||
            <a @click="toggleDevMode()" :class="{toggled: debug}" title="Debug Mode"><i class="fa fa-terminal"></i></a>
 | 
			
		||||
            <a @click="toggleJsMode()" :class="{toggled: runJs}" title="Expand Images"><i class="fa fa-magic"></i></a>
 | 
			
		||||
@ -44,8 +44,12 @@
 | 
			
		||||
    import Timer = NodeJS.Timer;
 | 
			
		||||
    import IpcMessageEvent = Electron.IpcMessageEvent;
 | 
			
		||||
 | 
			
		||||
    const screen = remote.screen;
 | 
			
		||||
    import { ElectronBlocker } from '@cliqz/adblocker-electron';
 | 
			
		||||
    import fetch from 'node-fetch';
 | 
			
		||||
 | 
			
		||||
    // import { promises as fs } from 'fs';
 | 
			
		||||
 | 
			
		||||
    const screen = remote.screen;
 | 
			
		||||
 | 
			
		||||
    interface DidFailLoadEvent extends Event {
 | 
			
		||||
        errorCode: number;
 | 
			
		||||
@ -160,8 +164,11 @@
 | 
			
		||||
                    const e = event as DidFailLoadEvent;
 | 
			
		||||
 | 
			
		||||
                    if (e.errorCode < 0) {
 | 
			
		||||
                      const url = webview.getURL();
 | 
			
		||||
                      const qjs = this.jsMutator.getMutatorJsForSite(url, 'update-target-url');
 | 
			
		||||
                      console.error('DID FAIL LOAD', event);
 | 
			
		||||
                      const url = this.getUrl() || '';
 | 
			
		||||
 | 
			
		||||
                      const qjs = this.jsMutator.getMutatorJsForSite(url, 'update-target-url')
 | 
			
		||||
                        || this.jsMutator.getMutatorJsForSite(url, 'dom-ready');
 | 
			
		||||
 | 
			
		||||
                      // tslint:disable-next-line
 | 
			
		||||
                      this.executeJavaScript(qjs, 'did-fail-load-but-still-loading', event);
 | 
			
		||||
@ -254,9 +261,45 @@
 | 
			
		||||
                },
 | 
			
		||||
                50
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            // this.initAdBlocker();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        async initAdBlocker() {
 | 
			
		||||
            const webview = this.getWebview();
 | 
			
		||||
            const contents = remote.webContents.fromId(webview.getWebContentsId());
 | 
			
		||||
 | 
			
		||||
            console.log('INITADBLOCKER');
 | 
			
		||||
 | 
			
		||||
            const blocker = await ElectronBlocker.fromLists(
 | 
			
		||||
                fetch,
 | 
			
		||||
                [
 | 
			
		||||
                    'https://easylist.to/easylist/easylist.txt',
 | 
			
		||||
                    'https://easylist.to/easylist/easyprivacy.txt', // EasyPrivacy
 | 
			
		||||
                    'https://easylist.to/easylist/fanboy-social.txt', // Fanboy Social
 | 
			
		||||
                    'https://easylist.to/easylist/fanboy-annoyance.txt', // Fanboy Annoyances
 | 
			
		||||
                    'https://filters.adtidy.org/extension/chromium/filters/2.txt', // AdGuard Base
 | 
			
		||||
                    'https://filters.adtidy.org/extension/chromium/filters/11.txt', // AdGuard Mobile Ads
 | 
			
		||||
                    'https://filters.adtidy.org/extension/chromium/filters/4.txt', // AdGuard Social Media
 | 
			
		||||
                    'https://filters.adtidy.org/extension/chromium/filters/14.txt', // AdGuard Annoyances
 | 
			
		||||
                    'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt', // uBlock Origin Filters
 | 
			
		||||
                    'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt', // uBlock Origin Privacy
 | 
			
		||||
                    'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt', // uBlock Origin Resource Abuse
 | 
			
		||||
                ],
 | 
			
		||||
              {
 | 
			
		||||
                enableCompression: true,
 | 
			
		||||
              },
 | 
			
		||||
              // {
 | 
			
		||||
              //   path: 'engine.bin',
 | 
			
		||||
              //   read: fs.readFile,
 | 
			
		||||
              //   write: fs.writeFile
 | 
			
		||||
              // }
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            blocker.enableBlockingInSession(contents.session);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        reRenderStyles(): void {
 | 
			
		||||
            // tslint:disable-next-line:no-unsafe-any
 | 
			
		||||
            this.externalPreviewStyle = this.externalPreviewHelper.renderStyle();
 | 
			
		||||
@ -476,13 +519,17 @@
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            this.debugLog(`ImagePreview ${context}`, js, logDetails);
 | 
			
		||||
            this.debugLog(`ImagePreview execute-${context}`, js, logDetails);
 | 
			
		||||
 | 
			
		||||
            const result = await (webview.executeJavaScript(js) as unknown as Promise<any>);
 | 
			
		||||
            try {
 | 
			
		||||
                const result = await (webview.executeJavaScript(js) as unknown as Promise<any>);
 | 
			
		||||
 | 
			
		||||
            this.debugLog(`ImagePreview result-${context}`, result);
 | 
			
		||||
                this.debugLog(`ImagePreview result-${context}`, result);
 | 
			
		||||
 | 
			
		||||
            return result;
 | 
			
		||||
                return result;
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                this.debugLog(`ImagePreview error-${context}`, err);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        debugLog(...args: any[]): void {
 | 
			
		||||
@ -515,6 +562,7 @@
 | 
			
		||||
            return this.$refs.imagePreviewExt as WebviewTag;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        reset(): void {
 | 
			
		||||
            this.externalPreviewHelper = new ExternalImagePreviewHelper(this);
 | 
			
		||||
            this.localPreviewHelper = new LocalImagePreviewHelper(this);
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
(() => {
 | 
			
		||||
    try {
 | 
			
		||||
        const clear = () => {
 | 
			
		||||
            if (window.location.href.match(/https?:\/\/(www.)?pornhub.com/)) {
 | 
			
		||||
            if (window.location.href.match(/^https?:\/\/(www.)?pornhub.com/)) {
 | 
			
		||||
                if (!window.zest) {
 | 
			
		||||
                    window.zest = (q) => (document.querySelectorAll(q));
 | 
			
		||||
                }
 | 
			
		||||
@ -37,39 +37,38 @@
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            const intervalCount = setInterval(() => {}, 10000);
 | 
			
		||||
 | 
			
		||||
            for (let i = 0; i <= intervalCount; i++) {
 | 
			
		||||
                try {
 | 
			
		||||
                    clearInterval(i);
 | 
			
		||||
                } catch (e) {
 | 
			
		||||
                    console.error('Clear interval', i, e);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            const timeoutCount = setTimeout(() => {}, 10000);
 | 
			
		||||
 | 
			
		||||
            for (let i = 0; i <= timeoutCount; i++) {
 | 
			
		||||
                try {
 | 
			
		||||
                    clearTimeout(i);
 | 
			
		||||
                } catch (e) {
 | 
			
		||||
                    console.error('Clear timeout', i, e);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // const intervalCount = setInterval(() => {}, 10000);
 | 
			
		||||
            //
 | 
			
		||||
            // for (let i = 0; i <= intervalCount; i++) {
 | 
			
		||||
            //     try {
 | 
			
		||||
            //         clearInterval(i);
 | 
			
		||||
            //     } catch (e) {
 | 
			
		||||
            //         console.error('Clear interval', i, e);
 | 
			
		||||
            //     }
 | 
			
		||||
            // }
 | 
			
		||||
            //
 | 
			
		||||
            //
 | 
			
		||||
            // const timeoutCount = setTimeout(() => {}, 10000);
 | 
			
		||||
            //
 | 
			
		||||
            // for (let i = 0; i <= timeoutCount; i++) {
 | 
			
		||||
            //     try {
 | 
			
		||||
            //         clearTimeout(i);
 | 
			
		||||
            //     } catch (e) {
 | 
			
		||||
            //         console.error('Clear timeout', i, e);
 | 
			
		||||
            //     }
 | 
			
		||||
            // }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        console.log('Document loading', Date.now());
 | 
			
		||||
        clear();
 | 
			
		||||
 | 
			
		||||
        // window.stop();
 | 
			
		||||
 | 
			
		||||
        window.addEventListener('DOMContentLoaded', (event) => {
 | 
			
		||||
            console.log('DOM fully loaded and parsed', Date.now());
 | 
			
		||||
            clear();
 | 
			
		||||
        });
 | 
			
		||||
    } catch(e) {
 | 
			
		||||
        console.error(e);
 | 
			
		||||
        console.error('browser.pre', e);
 | 
			
		||||
        console.trace();
 | 
			
		||||
    }
 | 
			
		||||
})();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -123,8 +123,8 @@ export class ImagePreviewMutator {
 | 
			
		||||
        this.add('gelbooru.com', this.getBaseJsMutatorScript(['video', '#image']));
 | 
			
		||||
        this.add('chan.sankakucomplex.com', this.getBaseJsMutatorScript(['video', '#image']));
 | 
			
		||||
        this.add('danbooru.donmai.us', this.getBaseJsMutatorScript(['video', '#image']));
 | 
			
		||||
        this.add('gfycat.com', this.getBaseJsMutatorScript(['video']), undefined, 'dom-ready');
 | 
			
		||||
        this.add('gfycatporn.com', this.getBaseJsMutatorScript(['video']), undefined, 'dom-ready');
 | 
			
		||||
        this.add('gfycat.com', this.getBaseJsMutatorScript(['video']) /*, undefined, 'dom-ready' */);
 | 
			
		||||
        this.add('gfycatporn.com', this.getBaseJsMutatorScript(['video']) /*, undefined, 'dom-ready'*/);
 | 
			
		||||
        this.add('youtube.com', this.getBaseJsMutatorScript(['video']), undefined, 'dom-ready');
 | 
			
		||||
        this.add('instantfap.com', this.getBaseJsMutatorScript(['#post video', '#post img']));
 | 
			
		||||
        this.add('webmshare.com', this.getBaseJsMutatorScript(['video']));
 | 
			
		||||
@ -236,24 +236,27 @@ export class ImagePreviewMutator {
 | 
			
		||||
                ['width', 'height'],
 | 
			
		||||
            ];
 | 
			
		||||
 | 
			
		||||
            const imSize = sizePairs.reduce(
 | 
			
		||||
                (acc, val) => {
 | 
			
		||||
                    if ((acc.width) && (acc.height)) {
 | 
			
		||||
                        return acc;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if ((img[val[0]]) && (img[val[1]])) {
 | 
			
		||||
                        return {
 | 
			
		||||
                            width: img[val[0]],
 | 
			
		||||
                            height: img[val[1]]
 | 
			
		||||
            const resolveImgSize = function() {
 | 
			
		||||
                return sizePairs.reduce(
 | 
			
		||||
                    (acc, val) => {
 | 
			
		||||
                        if ((acc.width) && (acc.height)) {
 | 
			
		||||
                            return acc;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    return acc;
 | 
			
		||||
                },
 | 
			
		||||
                {}
 | 
			
		||||
            );
 | 
			
		||||
                        if ((img[val[0]]) && (img[val[1]])) {
 | 
			
		||||
                            return {
 | 
			
		||||
                                width: img[val[0]],
 | 
			
		||||
                                height: img[val[1]]
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        return acc;
 | 
			
		||||
                    },
 | 
			
		||||
                    {}
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            const imSize = resolveImgSize();
 | 
			
		||||
            ipcRenderer.sendToHost('webview.img', imSize.width, imSize.height);
 | 
			
		||||
 | 
			
		||||
            const el = document.createElement('div');
 | 
			
		||||
@ -285,14 +288,14 @@ export class ImagePreviewMutator {
 | 
			
		||||
            body.style = 'border: 0 !important; padding: 0 !important; margin: 0 !important; overflow: hidden !important;'
 | 
			
		||||
                + 'width: 100% !important; height: 100% !important; opacity: 1 !important;'
 | 
			
		||||
                + 'top: 0 !important; left: 0 !important; position: absolute !important;'
 | 
			
		||||
                + 'min-width: unset !important; min-height: unset !important; max-width: unset !important; max-height: unset !important;'
 | 
			
		||||
                + 'min-width: initial !important; min-height: initial !important; max-width: initial !important; max-height: initial !important;'
 | 
			
		||||
                + 'display: block !important; visibility: visible !important';
 | 
			
		||||
 | 
			
		||||
            img.style = 'object-position: top left !important; object-fit: contain !important;'
 | 
			
		||||
                + 'width: 100% !important; height: 100% !important; opacity: 1 !important;'
 | 
			
		||||
                + 'margin: 0 !imporant; border: 0 !important; padding: 0 !important;'
 | 
			
		||||
                + 'min-width: unset !important; min-height: unset !important; max-width: unset !important; max-height: unset !important;'
 | 
			
		||||
                + 'display: block !important; visibility: visible !important';
 | 
			
		||||
                + 'min-width: initial !important; min-height: initial !important; max-width: initial !important; max-height: initial !important;'
 | 
			
		||||
                + 'display: block !important; visibility: visible !important;';
 | 
			
		||||
 | 
			
		||||
            img.class = '';
 | 
			
		||||
            el.class = '';
 | 
			
		||||
@ -301,7 +304,7 @@ export class ImagePreviewMutator {
 | 
			
		||||
            html.style = 'border: 0 !important; padding: 0 !important; margin: 0 !important; overflow: hidden !important;'
 | 
			
		||||
                + 'width: 100% !important; height: 100% !important; opacity: 1 !important;'
 | 
			
		||||
                + 'top: 0 !important; left: 0 !important; position: absolute !important;'
 | 
			
		||||
                + 'min-width: unset !important; min-height: unset !important; max-width: unset !important; max-height: unset !important;'
 | 
			
		||||
                + 'min-width: initial !important; min-height: initial !important; max-width: initial !important; max-height: initial !important;'
 | 
			
		||||
                + 'display: block !important; visibility: visible !important';
 | 
			
		||||
 | 
			
		||||
            ${this.debug ? "console.log('Wrapper', el);" : ''}
 | 
			
		||||
@ -327,7 +330,8 @@ export class ImagePreviewMutator {
 | 
			
		||||
            document.addEventListener('DOMContentLoaded', (event) => {
 | 
			
		||||
                ${this.debug ? "console.log('on DOMContentLoaded');" : ''}
 | 
			
		||||
 | 
			
		||||
                ipcRenderer.sendToHost('webview.img', img.width || img.naturalWidth, img.height || img.naturalHeight);
 | 
			
		||||
                const imSize = resolveImgSize();
 | 
			
		||||
                ipcRenderer.sendToHost('webview.img', imSize.width, imSize.height);
 | 
			
		||||
 | 
			
		||||
                if (
 | 
			
		||||
                    (img.play)
 | 
			
		||||
@ -339,7 +343,8 @@ export class ImagePreviewMutator {
 | 
			
		||||
            document.addEventListener('load', (event) => {
 | 
			
		||||
                ${this.debug ? "console.log('on load');" : ''}
 | 
			
		||||
 | 
			
		||||
                ipcRenderer.sendToHost('webview.img', img.width || img.naturalWidth, img.height || img.naturalHeight);
 | 
			
		||||
                const imSize = resolveImgSize();
 | 
			
		||||
                ipcRenderer.sendToHost('webview.img', imSize.width, imSize.height);
 | 
			
		||||
 | 
			
		||||
                if (
 | 
			
		||||
                    (img.play)
 | 
			
		||||
@ -369,8 +374,6 @@ export class ImagePreviewMutator {
 | 
			
		||||
 | 
			
		||||
            ${skipElementRemove ? '' : 'removeList.forEach((el) => el.remove());'}
 | 
			
		||||
            removeList = [];
 | 
			
		||||
 | 
			
		||||
            window.stop();
 | 
			
		||||
        `;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -37,6 +37,15 @@ export class ImageUrlMutator {
 | 
			
		||||
          }
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        this.add(
 | 
			
		||||
          /^https?:\/\/(www.)?gfycat.com\/([a-z0-9A-Z\-]+)\/?$/,
 | 
			
		||||
          async(_url: string, match: RegExpMatchArray): Promise<string> => {
 | 
			
		||||
            const gfyId = match[2];
 | 
			
		||||
 | 
			
		||||
            return `https://gfycat.com/ifr/${gfyId}?controls=0&hd=1`;
 | 
			
		||||
          }
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        this.add(
 | 
			
		||||
            /^https?:\/\/imgur.com\/gallery\/([a-zA-Z0-9]+)/,
 | 
			
		||||
            async(url: string, match: RegExpMatchArray): Promise<string> => {
 | 
			
		||||
 | 
			
		||||
@ -85,7 +85,7 @@
 | 
			
		||||
        @Hook('mounted')
 | 
			
		||||
        async mounted(): Promise<void> {
 | 
			
		||||
            // top bar devtools
 | 
			
		||||
            // browserWindow.webContents.openDevTools( { mode: 'detach' } );
 | 
			
		||||
            browserWindow.webContents.openDevTools( { mode: 'detach' } );
 | 
			
		||||
 | 
			
		||||
            await this.addTab();
 | 
			
		||||
 | 
			
		||||
@ -196,10 +196,10 @@
 | 
			
		||||
            const tray = new electron.remote.Tray(trayIcon);
 | 
			
		||||
            tray.setToolTip(l('title'));
 | 
			
		||||
            tray.on('click', (_) => this.trayClicked(tab));
 | 
			
		||||
            const view = new electron.remote.BrowserView({webPreferences: {webviewTag: true, nodeIntegration: true}});
 | 
			
		||||
            const view = new electron.remote.BrowserView({webPreferences: {webviewTag: true, nodeIntegration: true, spellcheck: true}});
 | 
			
		||||
 | 
			
		||||
            // tab devtools
 | 
			
		||||
            // view.webContents.openDevTools();
 | 
			
		||||
            view.webContents.openDevTools();
 | 
			
		||||
 | 
			
		||||
            view.setAutoResize({width: true, height: true});
 | 
			
		||||
            electron.ipcRenderer.send('tab-added', view.webContents.id);
 | 
			
		||||
 | 
			
		||||
@ -47,18 +47,19 @@ import {setupRaven} from '../chat/vue-raven';
 | 
			
		||||
import Socket from '../chat/WebSocket';
 | 
			
		||||
import Connection from '../fchat/connection';
 | 
			
		||||
import {Keys} from '../keys';
 | 
			
		||||
import {GeneralSettings, nativeRequire} from './common';
 | 
			
		||||
import {GeneralSettings /*, nativeRequire*/ } from './common';
 | 
			
		||||
import {Logs, SettingsStore} from './filesystem';
 | 
			
		||||
import Notifications from './notifications';
 | 
			
		||||
import * as SlimcatImporter from './importer';
 | 
			
		||||
import Index from './Index.vue';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
document.addEventListener('keydown', (e: KeyboardEvent) => {
 | 
			
		||||
    if(e.ctrlKey && e.shiftKey && getKey(e) === Keys.KeyI)
 | 
			
		||||
        electron.remote.getCurrentWebContents().toggleDevTools();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
process.env.SPELLCHECKER_PREFER_HUNSPELL = '1';
 | 
			
		||||
/* process.env.SPELLCHECKER_PREFER_HUNSPELL = '1';
 | 
			
		||||
const sc = nativeRequire<{
 | 
			
		||||
    Spellchecker: new() => {
 | 
			
		||||
        add(word: string): void
 | 
			
		||||
@ -68,7 +69,7 @@ const sc = nativeRequire<{
 | 
			
		||||
        getCorrectionsForMisspelling(word: string): ReadonlyArray<string>
 | 
			
		||||
    }
 | 
			
		||||
}>('spellchecker/build/Release/spellchecker.node');
 | 
			
		||||
const spellchecker = new sc.Spellchecker();
 | 
			
		||||
const spellchecker = new sc.Spellchecker();*/
 | 
			
		||||
 | 
			
		||||
Axios.defaults.params = {__fchat: `desktop/${electron.remote.app.getVersion()}`};
 | 
			
		||||
 | 
			
		||||
@ -160,17 +161,17 @@ webContents.on('context-menu', (_, props) => {
 | 
			
		||||
            click: () => electron.clipboard.writeText(props.selectionText)
 | 
			
		||||
        });
 | 
			
		||||
    if(props.misspelledWord !== '') {
 | 
			
		||||
        const corrections = spellchecker.getCorrectionsForMisspelling(props.misspelledWord);
 | 
			
		||||
        menuTemplate.unshift({
 | 
			
		||||
            label: l('spellchecker.add'),
 | 
			
		||||
            click: () => electron.ipcRenderer.send('dictionary-add', props.misspelledWord)
 | 
			
		||||
        }, {type: 'separator'});
 | 
			
		||||
        if(corrections.length > 0)
 | 
			
		||||
            menuTemplate.unshift(...corrections.map((correction: string) => ({
 | 
			
		||||
                label: correction,
 | 
			
		||||
                click: () => webContents.replaceMisspelling(correction)
 | 
			
		||||
            })));
 | 
			
		||||
        else menuTemplate.unshift({enabled: false, label: l('spellchecker.noCorrections')});
 | 
			
		||||
        // const corrections = spellchecker.getCorrectionsForMisspelling(props.misspelledWord);
 | 
			
		||||
        // menuTemplate.unshift({
 | 
			
		||||
        //     label: l('spellchecker.add'),
 | 
			
		||||
        //     click: () => electron.ipcRenderer.send('dictionary-add', props.misspelledWord)
 | 
			
		||||
        // }, {type: 'separator'});
 | 
			
		||||
        // if(corrections.length > 0)
 | 
			
		||||
        //     menuTemplate.unshift(...corrections.map((correction: string) => ({
 | 
			
		||||
        //         label: correction,
 | 
			
		||||
        //         click: () => webContents.replaceMisspelling(correction)
 | 
			
		||||
        //     })));
 | 
			
		||||
        // else menuTemplate.unshift({enabled: false, label: l('spellchecker.noCorrections')});
 | 
			
		||||
    } else if(settings.customDictionary.indexOf(props.selectionText) !== -1)
 | 
			
		||||
        menuTemplate.unshift({
 | 
			
		||||
            label: l('spellchecker.remove'),
 | 
			
		||||
@ -181,14 +182,17 @@ webContents.on('context-menu', (_, props) => {
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
let dictDir = path.join(electron.remote.app.getPath('userData'), 'spellchecker');
 | 
			
		||||
 | 
			
		||||
if(process.platform === 'win32') //get the path in DOS (8-character) format as special characters cause problems otherwise
 | 
			
		||||
    exec(`for /d %I in ("${dictDir}") do @echo %~sI`, (_, stdout) => dictDir = stdout.trim());
 | 
			
		||||
electron.webFrame.setSpellCheckProvider('', {spellCheck: (words, callback) => callback(words.filter((x) => spellchecker.isMisspelled(x)))});
 | 
			
		||||
 | 
			
		||||
// electron.webFrame.setSpellCheckProvider('', {spellCheck: (words, callback) => callback(words.filter((x) => spellchecker.isMisspelled(x)))});
 | 
			
		||||
 | 
			
		||||
function onSettings(s: GeneralSettings): void {
 | 
			
		||||
    settings = s;
 | 
			
		||||
    spellchecker.setDictionary(s.spellcheckLang, dictDir);
 | 
			
		||||
    for(const word of s.customDictionary) spellchecker.add(word);
 | 
			
		||||
 | 
			
		||||
    // spellchecker.setDictionary(s.spellcheckLang, dictDir);
 | 
			
		||||
    // for(const word of s.customDictionary) spellchecker.add(word);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
electron.ipcRenderer.on('settings', (_: Event, s: GeneralSettings) => onSettings(s));
 | 
			
		||||
 | 
			
		||||
@ -45,6 +45,8 @@ import {ensureDictionary, getAvailableDictionaries} from './dictionaries';
 | 
			
		||||
import * as windowState from './window_state';
 | 
			
		||||
import BrowserWindow = Electron.BrowserWindow;
 | 
			
		||||
import MenuItem = Electron.MenuItem;
 | 
			
		||||
import { ElectronBlocker } from '@cliqz/adblocker-electron';
 | 
			
		||||
import fetch from 'node-fetch';
 | 
			
		||||
 | 
			
		||||
// Module to control application life.
 | 
			
		||||
const app = electron.app;
 | 
			
		||||
@ -124,7 +126,7 @@ function createWindow(): Electron.BrowserWindow | undefined {
 | 
			
		||||
    const lastState = windowState.getSavedWindowState();
 | 
			
		||||
    const windowProperties: Electron.BrowserWindowConstructorOptions & {maximized: boolean} = {
 | 
			
		||||
        ...lastState, center: lastState.x === undefined, show: false,
 | 
			
		||||
        webPreferences: { webviewTag: true, nodeIntegration: true }
 | 
			
		||||
        webPreferences: { webviewTag: true, nodeIntegration: true, spellcheck: true }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    if(process.platform === 'darwin') {
 | 
			
		||||
@ -137,6 +139,39 @@ function createWindow(): Electron.BrowserWindow | undefined {
 | 
			
		||||
    const window = new electron.BrowserWindow(windowProperties);
 | 
			
		||||
    windows.push(window);
 | 
			
		||||
 | 
			
		||||
    ElectronBlocker.fromPrebuiltAdsAndTracking(fetch)
 | 
			
		||||
      .then(
 | 
			
		||||
        (blocker) => {
 | 
			
		||||
            blocker.enableBlockingInSession(electron.session.defaultSession);
 | 
			
		||||
 | 
			
		||||
            console.log('Got this far!!!!');
 | 
			
		||||
 | 
			
		||||
            blocker.on('request-blocked', (request: Request) => {
 | 
			
		||||
                console.log('blocked', request.url);
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              blocker.on('request-redirected', (request: Request) => {
 | 
			
		||||
                console.log('redirected', request.url);
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              blocker.on('request-whitelisted', (request: Request) => {
 | 
			
		||||
                console.log('whitelisted', request.url);
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              blocker.on('csp-injected', (request: Request) => {
 | 
			
		||||
                console.log('csp', request.url);
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              blocker.on('script-injected', (script: string, url: string) => {
 | 
			
		||||
                console.log('script', script.length, url);
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              blocker.on('style-injected', (style: string, url: string) => {
 | 
			
		||||
                console.log('style', style.length, url);
 | 
			
		||||
              });
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
    window.loadFile(
 | 
			
		||||
        path.join(__dirname, 'window.html'),
 | 
			
		||||
        {
 | 
			
		||||
@ -144,6 +179,7 @@ function createWindow(): Electron.BrowserWindow | undefined {
 | 
			
		||||
        }
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // window.loadURL(url.format({ //tslint:disable-line:no-floating-promises
 | 
			
		||||
    //     pathname: path.join(__dirname, 'window.html'),
 | 
			
		||||
    //     protocol: 'file:',
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ const modules = path.join(__dirname, 'app', 'node_modules');
 | 
			
		||||
// fs.copyFileSync(require.resolve(keytarPath), path.join(modules, keytarPath));
 | 
			
		||||
 | 
			
		||||
const includedPaths = [
 | 
			
		||||
    'spellchecker/build/Release/spellchecker.node',
 | 
			
		||||
    // 'spellchecker/build/Release/spellchecker.node',
 | 
			
		||||
    'keytar/build/Release/keytar.node',
 | 
			
		||||
    'throat'
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							@ -9,15 +9,16 @@
 | 
			
		||||
    "@f-list/vue-ts": "^1.0.3",
 | 
			
		||||
    "@fortawesome/fontawesome-free": "^5.9.0",
 | 
			
		||||
    "@types/lodash": "^4.14.134",
 | 
			
		||||
    "@types/node-fetch": "^2.5.5",
 | 
			
		||||
    "@types/qs": "^6.9.1",
 | 
			
		||||
    "@types/sortablejs": "^1.7.2",
 | 
			
		||||
    "@vue/devtools": "^5.1.0",
 | 
			
		||||
    "axios": "^0.19.0",
 | 
			
		||||
    "bootstrap": "^4.3.1",
 | 
			
		||||
    "css-loader": "^3.0.0",
 | 
			
		||||
    "copy-webpack-plugin": "^5.1.1",
 | 
			
		||||
    "css-loader": "^3.0.0",
 | 
			
		||||
    "date-fns": "^1.30.1",
 | 
			
		||||
    "electron": "^5.0.4",
 | 
			
		||||
    "electron": "^8.2.0",
 | 
			
		||||
    "electron-log": "^3.0.1",
 | 
			
		||||
    "electron-packager": "^14.0.0",
 | 
			
		||||
    "electron-rebuild": "^1.8.4",
 | 
			
		||||
@ -42,8 +43,9 @@
 | 
			
		||||
    "webpack": "^4.35.0"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@cliqz/adblocker-electron": "^1.13.0",
 | 
			
		||||
    "keytar": "^4.10.0",
 | 
			
		||||
    "spellchecker": "^3.6.0"
 | 
			
		||||
    "node-fetch": "^2.6.0"
 | 
			
		||||
  },
 | 
			
		||||
  "optionalDependencies": {
 | 
			
		||||
    "appdmg": "^0.6.0",
 | 
			
		||||
@ -51,6 +53,6 @@
 | 
			
		||||
    "electron-winstaller": "^3.0.4"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "postinstall": "electron-rebuild -fo spellchecker,keytar"
 | 
			
		||||
    "postinstall": "electron-rebuild -fo keytar"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										287
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										287
									
								
								yarn.lock
									
									
									
									
									
								
							@ -25,6 +25,37 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    regenerator-runtime "^0.13.4"
 | 
			
		||||
 | 
			
		||||
"@cliqz/adblocker-content@^1.13.0":
 | 
			
		||||
  version "1.13.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@cliqz/adblocker-content/-/adblocker-content-1.13.0.tgz#0301fd77b8b821893d53d0c6d02d3b26e028c4f7"
 | 
			
		||||
  integrity sha512-2kStPzaON6qLe+/fY1mKnrRcmgnt2ZNJM6HJW+pcINquk6uEQ60R4kObbOJdVqtoKtGEH4OjyiOUUej2xxTxrg==
 | 
			
		||||
 | 
			
		||||
"@cliqz/adblocker-electron-preload@^1.13.0":
 | 
			
		||||
  version "1.13.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.13.0.tgz#83e90d196244d5498789df4e3f780855cb056348"
 | 
			
		||||
  integrity sha512-kUQm/s3R8WxYKsXFCN15GW1G4VWvXxMI+37KtY/9Chbi23GwgYe8T8J1Qx+GxLWiQU7X4xFgvkjySw5Le57VKA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@cliqz/adblocker-content" "^1.13.0"
 | 
			
		||||
 | 
			
		||||
"@cliqz/adblocker-electron@^1.13.0":
 | 
			
		||||
  version "1.13.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron/-/adblocker-electron-1.13.0.tgz#848244f7cdab7dbde2601b096664c9f57c817dc8"
 | 
			
		||||
  integrity sha512-G6C88p0kDpucNx4lPSfv4HU96gT2XJifWajdND3oFX+zvhuq09eT3RHxzANLLAfKV2XnMZQ6OtfdmIzuZHZ3rQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@cliqz/adblocker" "^1.13.0"
 | 
			
		||||
    "@cliqz/adblocker-electron-preload" "^1.13.0"
 | 
			
		||||
    tldts-experimental "^5.6.3"
 | 
			
		||||
 | 
			
		||||
"@cliqz/adblocker@^1.13.0":
 | 
			
		||||
  version "1.13.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@cliqz/adblocker/-/adblocker-1.13.0.tgz#e3b77c9226dc5906d100a7e60f5e4f1636dbe574"
 | 
			
		||||
  integrity sha512-6QQmUqsHBUOtPT7xRkSAojiT/mrLYagfmdMudlOVskF/+Rm78zLJBg0HxRGl4rCZsxTaFVl8Wy87dz32Xa4mTA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@remusao/smaz" "^1.7.1"
 | 
			
		||||
    "@types/chrome" "^0.0.103"
 | 
			
		||||
    "@types/firefox-webext-browser" "^70.0.1"
 | 
			
		||||
    tldts-experimental "^5.6.3"
 | 
			
		||||
 | 
			
		||||
"@electron/get@^1.0.1", "@electron/get@^1.6.0":
 | 
			
		||||
  version "1.9.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.9.0.tgz#7fa6e61d7ff50fb82a8a41f437af7de3b97aa9a5"
 | 
			
		||||
@ -68,6 +99,31 @@
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.1.tgz#2a98fea9fbb8a606ddc79a4680034e9d5591c550"
 | 
			
		||||
  integrity sha512-ZtjIIFplxncqxvogq148C3hBLQE+W3iJ8E4UvJ09zIJUgzwLcROsWwFDErVSXY2Plzao5J9KUYNHKHMEUYDMKw==
 | 
			
		||||
 | 
			
		||||
"@remusao/smaz-compress@^1.8.0":
 | 
			
		||||
  version "1.8.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@remusao/smaz-compress/-/smaz-compress-1.8.0.tgz#efdc3857cec1396349e52e44b89891e617448024"
 | 
			
		||||
  integrity sha512-gDlnWyYmDppwdVZZkBuN8/gzpcqxFwEEev8QxyArWbOn/1rIXMfnm+bwY/N80rmakHTWaybL0yNxTMJSoVXrUw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@remusao/trie" "^1.3.0"
 | 
			
		||||
 | 
			
		||||
"@remusao/smaz-decompress@^1.8.0":
 | 
			
		||||
  version "1.8.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@remusao/smaz-decompress/-/smaz-decompress-1.8.0.tgz#32cea68586d6d67a4b30c561d1ccde527805e3d7"
 | 
			
		||||
  integrity sha512-DDGL8wB2L1OUPbUEashqBQzuEVk1xmVOR+35lERkwl3Qg5UoiL//9GWSq38jq8XlTqUG5R+BY2dQa4XX2NDeeQ==
 | 
			
		||||
 | 
			
		||||
"@remusao/smaz@^1.7.1":
 | 
			
		||||
  version "1.8.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@remusao/smaz/-/smaz-1.8.0.tgz#6b03c39f99afaafa2113772cae900fad896061c0"
 | 
			
		||||
  integrity sha512-tpyluMIHQSCOX1VHBBrn7KP+S1m/fovJg9Tizo06qR9OYopYehDqkuBJGLnUthE3uhm7tbxb1XI2IN4tUjOFhw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@remusao/smaz-compress" "^1.8.0"
 | 
			
		||||
    "@remusao/smaz-decompress" "^1.8.0"
 | 
			
		||||
 | 
			
		||||
"@remusao/trie@^1.3.0":
 | 
			
		||||
  version "1.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@remusao/trie/-/trie-1.3.0.tgz#146b6f7f223d29db7106c19b9f4d4fab2754986a"
 | 
			
		||||
  integrity sha512-IykMLl0vr8L1sJzvtGR4izkNh1Ous2njaeC4NEvAcfALCdCo7Y4VpISU0I8DaZFU2lGAFKyeh2Jz4WaM/3hbEw==
 | 
			
		||||
 | 
			
		||||
"@sindresorhus/is@^0.14.0":
 | 
			
		||||
  version "0.14.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
 | 
			
		||||
@ -80,11 +136,36 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    defer-to-connect "^1.0.1"
 | 
			
		||||
 | 
			
		||||
"@types/chrome@^0.0.103":
 | 
			
		||||
  version "0.0.103"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.103.tgz#604f3d94ab4465cc8cde302c4916f4955eb7e8b6"
 | 
			
		||||
  integrity sha512-s8So1IG1fIu2dg2MRV3k6W5OjlVaJriNXIxIWDHi+Rdz5dLeuzPKcWzkVlcaVL4gONfn44JKC0RhW+P0UohLfg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/filesystem" "*"
 | 
			
		||||
    "@types/har-format" "*"
 | 
			
		||||
 | 
			
		||||
"@types/events@*":
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
 | 
			
		||||
  integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
 | 
			
		||||
 | 
			
		||||
"@types/filesystem@*":
 | 
			
		||||
  version "0.0.29"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.29.tgz#ee3748eb5be140dcf980c3bd35f11aec5f7a3748"
 | 
			
		||||
  integrity sha512-85/1KfRedmfPGsbK8YzeaQUyV1FQAvMPMTuWFQ5EkLd2w7szhNO96bk3Rh/SKmOfd9co2rCLf0Voy4o7ECBOvw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/filewriter" "*"
 | 
			
		||||
 | 
			
		||||
"@types/filewriter@*":
 | 
			
		||||
  version "0.0.28"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.28.tgz#c054e8af4d9dd75db4e63abc76f885168714d4b3"
 | 
			
		||||
  integrity sha1-wFTor02d11205jq8dviFFocU1LM=
 | 
			
		||||
 | 
			
		||||
"@types/firefox-webext-browser@^70.0.1":
 | 
			
		||||
  version "70.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/firefox-webext-browser/-/firefox-webext-browser-70.0.1.tgz#53a3915bfbe25e2c5ec439dbdbe6e303610012bb"
 | 
			
		||||
  integrity sha512-hjHsTR9vKs+yikWbNS/s7TVCx15M/MEn+VYx47wtT/W/wORsIZDD75gfUfP7lkzi+IxRvKMQBB/5/wMFlfgvgQ==
 | 
			
		||||
 | 
			
		||||
"@types/glob@^7.1.1":
 | 
			
		||||
  version "7.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
 | 
			
		||||
@ -94,6 +175,11 @@
 | 
			
		||||
    "@types/minimatch" "*"
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
 | 
			
		||||
"@types/har-format@*":
 | 
			
		||||
  version "1.2.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.4.tgz#3275842095abb60d14b47fa798cc9ff708dab6d4"
 | 
			
		||||
  integrity sha512-iUxzm1meBm3stxUMzRqgOVHjj4Kgpgu5w9fm4X7kPRfSgVRzythsucEN7/jtOo8SQzm+HfcxWWzJS0mJDH/3DQ==
 | 
			
		||||
 | 
			
		||||
"@types/lodash@^4.14.134":
 | 
			
		||||
  version "4.14.149"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440"
 | 
			
		||||
@ -104,16 +190,19 @@
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
 | 
			
		||||
  integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
 | 
			
		||||
 | 
			
		||||
"@types/node-fetch@^2.5.5":
 | 
			
		||||
  version "2.5.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.5.tgz#cd264e20a81f4600a6c52864d38e7fef72485e92"
 | 
			
		||||
  integrity sha512-IWwjsyYjGw+em3xTvWVQi5MgYKbRs0du57klfTaZkv/B24AEQ/p/IopNeqIYNy3EsfHOpg8ieQSDomPcsYMHpA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
    form-data "^3.0.0"
 | 
			
		||||
 | 
			
		||||
"@types/node@*":
 | 
			
		||||
  version "13.9.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72"
 | 
			
		||||
  integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==
 | 
			
		||||
 | 
			
		||||
"@types/node@^10.12.18":
 | 
			
		||||
  version "10.17.17"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.17.tgz#7a183163a9e6ff720d86502db23ba4aade5999b8"
 | 
			
		||||
  integrity sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q==
 | 
			
		||||
 | 
			
		||||
"@types/node@^12.0.12":
 | 
			
		||||
  version "12.12.30"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.30.tgz#3501e6f09b954de9c404671cefdbcc5d9d7c45f6"
 | 
			
		||||
@ -401,11 +490,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    color-convert "^1.9.0"
 | 
			
		||||
 | 
			
		||||
any-promise@^1.3.0:
 | 
			
		||||
  version "1.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
 | 
			
		||||
  integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
 | 
			
		||||
 | 
			
		||||
anymatch@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
 | 
			
		||||
@ -1272,7 +1356,7 @@ colors@^1.3.3:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
 | 
			
		||||
  integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
 | 
			
		||||
 | 
			
		||||
combined-stream@^1.0.6, combined-stream@~1.0.6:
 | 
			
		||||
combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
 | 
			
		||||
  version "1.0.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
 | 
			
		||||
  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
 | 
			
		||||
@ -1702,7 +1786,7 @@ de-indent@^1.0.2:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
 | 
			
		||||
  integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
 | 
			
		||||
 | 
			
		||||
debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.5.1, debug@^2.6.8:
 | 
			
		||||
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.5.1, debug@^2.6.8:
 | 
			
		||||
  version "2.6.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
 | 
			
		||||
  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
 | 
			
		||||
@ -1716,7 +1800,7 @@ debug@=3.1.0, debug@~3.1.0:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ms "2.0.0"
 | 
			
		||||
 | 
			
		||||
debug@^3.0.0, debug@^3.1.0:
 | 
			
		||||
debug@^3.1.0:
 | 
			
		||||
  version "3.2.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
 | 
			
		||||
  integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
 | 
			
		||||
@ -1927,21 +2011,6 @@ ee-first@1.1.1:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
 | 
			
		||||
  integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
 | 
			
		||||
 | 
			
		||||
electron-download@^4.1.0:
 | 
			
		||||
  version "4.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.1.tgz#02e69556705cc456e520f9e035556ed5a015ebe8"
 | 
			
		||||
  integrity sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    debug "^3.0.0"
 | 
			
		||||
    env-paths "^1.0.0"
 | 
			
		||||
    fs-extra "^4.0.1"
 | 
			
		||||
    minimist "^1.2.0"
 | 
			
		||||
    nugget "^2.0.1"
 | 
			
		||||
    path-exists "^3.0.0"
 | 
			
		||||
    rc "^1.2.1"
 | 
			
		||||
    semver "^5.4.1"
 | 
			
		||||
    sumchecker "^2.0.2"
 | 
			
		||||
 | 
			
		||||
electron-log@^3.0.1:
 | 
			
		||||
  version "3.0.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-3.0.9.tgz#53ff1fcdb2f3e4a73ea7096d2f7204121109ec6f"
 | 
			
		||||
@ -2030,15 +2099,6 @@ electron-winstaller@^3.0.4:
 | 
			
		||||
    pify "^4.0.1"
 | 
			
		||||
    temp "^0.9.0"
 | 
			
		||||
 | 
			
		||||
electron@^5.0.4:
 | 
			
		||||
  version "5.0.13"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/electron/-/electron-5.0.13.tgz#81d44f2078fb13d306279cf3854d3734f2c390b4"
 | 
			
		||||
  integrity sha512-AM73AMZpb/5zm8eIXsIcp2eMdniD5WO+FqMtlIzhhtSjixflDm0pLtgudz0fHtiT/w6V+6YcpDVb4TtHtrJbHQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node" "^10.12.18"
 | 
			
		||||
    electron-download "^4.1.0"
 | 
			
		||||
    extract-zip "^1.0.3"
 | 
			
		||||
 | 
			
		||||
electron@^7.0.0:
 | 
			
		||||
  version "7.1.14"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/electron/-/electron-7.1.14.tgz#1a58aa5968677a4fe564442f3b72771166c8904c"
 | 
			
		||||
@ -2048,6 +2108,15 @@ electron@^7.0.0:
 | 
			
		||||
    "@types/node" "^12.0.12"
 | 
			
		||||
    extract-zip "^1.0.3"
 | 
			
		||||
 | 
			
		||||
electron@^8.2.0:
 | 
			
		||||
  version "8.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/electron/-/electron-8.2.0.tgz#f3e3de23a6178b5ad7baa70f4814d6332a3212c2"
 | 
			
		||||
  integrity sha512-mnV43gKCrCUMHLmGws/DU/l8LhaxrFD53A4ofwtthdCqOZWGIdk1+eMphiVumXR5a3lC64XVvmXQ2k28i7F/zw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@electron/get" "^1.0.1"
 | 
			
		||||
    "@types/node" "^12.0.12"
 | 
			
		||||
    extract-zip "^1.0.3"
 | 
			
		||||
 | 
			
		||||
elliptic@^6.0.0:
 | 
			
		||||
  version "6.5.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
 | 
			
		||||
@ -2137,11 +2206,6 @@ entities@^2.0.0:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
 | 
			
		||||
  integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==
 | 
			
		||||
 | 
			
		||||
env-paths@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0"
 | 
			
		||||
  integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=
 | 
			
		||||
 | 
			
		||||
env-paths@^2.2.0:
 | 
			
		||||
  version "2.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
 | 
			
		||||
@ -2522,6 +2586,15 @@ forever-agent@~0.6.1:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
 | 
			
		||||
  integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
 | 
			
		||||
 | 
			
		||||
form-data@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
 | 
			
		||||
  integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    asynckit "^0.4.0"
 | 
			
		||||
    combined-stream "^1.0.8"
 | 
			
		||||
    mime-types "^2.1.12"
 | 
			
		||||
 | 
			
		||||
form-data@~2.3.2:
 | 
			
		||||
  version "2.3.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
 | 
			
		||||
@ -2561,7 +2634,7 @@ fs-constants@^1.0.0:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
 | 
			
		||||
  integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
 | 
			
		||||
 | 
			
		||||
fs-extra@^4.0.0, fs-extra@^4.0.1:
 | 
			
		||||
fs-extra@^4.0.0:
 | 
			
		||||
  version "4.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
 | 
			
		||||
  integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
 | 
			
		||||
@ -3409,11 +3482,6 @@ is-wsl@^1.1.0:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
 | 
			
		||||
  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
 | 
			
		||||
 | 
			
		||||
isarray@0.0.1:
 | 
			
		||||
  version "0.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
 | 
			
		||||
  integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
 | 
			
		||||
 | 
			
		||||
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
 | 
			
		||||
@ -3809,7 +3877,7 @@ memory-fs@^0.5.0:
 | 
			
		||||
    errno "^0.1.3"
 | 
			
		||||
    readable-stream "^2.0.1"
 | 
			
		||||
 | 
			
		||||
meow@^3.1.0, meow@^3.7.0:
 | 
			
		||||
meow@^3.7.0:
 | 
			
		||||
  version "3.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
 | 
			
		||||
  integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
 | 
			
		||||
@ -3931,7 +3999,7 @@ minimist@0.0.8:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
 | 
			
		||||
  integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
 | 
			
		||||
 | 
			
		||||
minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
 | 
			
		||||
minimist@^1.1.3, minimist@^1.2.0:
 | 
			
		||||
  version "1.2.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
 | 
			
		||||
  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
 | 
			
		||||
@ -4018,7 +4086,7 @@ murmur-32@^0.1.0:
 | 
			
		||||
    fmix "^0.1.0"
 | 
			
		||||
    imul "^1.0.0"
 | 
			
		||||
 | 
			
		||||
nan@2.14.0, nan@^2.12.1, nan@^2.13.2, nan@^2.14.0, nan@^2.4.0:
 | 
			
		||||
nan@2.14.0, nan@^2.12.1, nan@^2.13.2, nan@^2.4.0:
 | 
			
		||||
  version "2.14.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
 | 
			
		||||
  integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
 | 
			
		||||
@ -4067,6 +4135,11 @@ node-abi@^2.11.0, node-abi@^2.7.0:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    semver "^5.4.1"
 | 
			
		||||
 | 
			
		||||
node-fetch@^2.6.0:
 | 
			
		||||
  version "2.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
 | 
			
		||||
  integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
 | 
			
		||||
 | 
			
		||||
node-gyp@^3.8.0:
 | 
			
		||||
  version "3.8.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
 | 
			
		||||
@ -4245,19 +4318,6 @@ nth-check@^1.0.2:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    boolbase "~1.0.0"
 | 
			
		||||
 | 
			
		||||
nugget@^2.0.1:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0"
 | 
			
		||||
  integrity sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    debug "^2.1.3"
 | 
			
		||||
    minimist "^1.1.0"
 | 
			
		||||
    pretty-bytes "^1.0.2"
 | 
			
		||||
    progress-stream "^1.1.0"
 | 
			
		||||
    request "^2.45.0"
 | 
			
		||||
    single-line-log "^1.1.2"
 | 
			
		||||
    throttleit "0.0.2"
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
@ -4297,11 +4357,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
 | 
			
		||||
  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
 | 
			
		||||
 | 
			
		||||
object-keys@~0.4.0:
 | 
			
		||||
  version "0.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
 | 
			
		||||
  integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=
 | 
			
		||||
 | 
			
		||||
object-visit@^1.0.0:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
 | 
			
		||||
@ -5035,14 +5090,6 @@ prettier@^1.18.2:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
 | 
			
		||||
  integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 | 
			
		||||
 | 
			
		||||
pretty-bytes@^1.0.2:
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
 | 
			
		||||
  integrity sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    get-stdin "^4.0.1"
 | 
			
		||||
    meow "^3.1.0"
 | 
			
		||||
 | 
			
		||||
process-nextick-args@~2.0.0:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
 | 
			
		||||
@ -5053,14 +5100,6 @@ process@^0.11.10:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
 | 
			
		||||
  integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
 | 
			
		||||
 | 
			
		||||
progress-stream@^1.1.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
 | 
			
		||||
  integrity sha1-LNPP6jO6OonJwSHsM0er6asSX3c=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    speedometer "~0.1.2"
 | 
			
		||||
    through2 "~0.2.3"
 | 
			
		||||
 | 
			
		||||
progress@^2.0.3:
 | 
			
		||||
  version "2.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
 | 
			
		||||
@ -5232,7 +5271,7 @@ raw-body@2.4.0:
 | 
			
		||||
    iconv-lite "0.4.24"
 | 
			
		||||
    unpipe "1.0.0"
 | 
			
		||||
 | 
			
		||||
rc@^1.2.1, rc@^1.2.7:
 | 
			
		||||
rc@^1.2.7:
 | 
			
		||||
  version "1.2.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
 | 
			
		||||
  integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
 | 
			
		||||
@ -5294,16 +5333,6 @@ read-pkg@^2.0.0:
 | 
			
		||||
    string_decoder "~1.1.1"
 | 
			
		||||
    util-deprecate "~1.0.1"
 | 
			
		||||
 | 
			
		||||
readable-stream@~1.1.9:
 | 
			
		||||
  version "1.1.14"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
 | 
			
		||||
  integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    core-util-is "~1.0.0"
 | 
			
		||||
    inherits "~2.0.1"
 | 
			
		||||
    isarray "0.0.1"
 | 
			
		||||
    string_decoder "~0.10.x"
 | 
			
		||||
 | 
			
		||||
readdirp@^2.2.1:
 | 
			
		||||
  version "2.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
 | 
			
		||||
@ -5368,7 +5397,7 @@ repeating@^2.0.0:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    is-finite "^1.0.0"
 | 
			
		||||
 | 
			
		||||
request@^2.45.0, request@^2.87.0, request@^2.88.0:
 | 
			
		||||
request@^2.87.0, request@^2.88.0:
 | 
			
		||||
  version "2.88.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
 | 
			
		||||
  integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
 | 
			
		||||
@ -5735,13 +5764,6 @@ simple-swizzle@^0.2.2:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    is-arrayish "^0.3.1"
 | 
			
		||||
 | 
			
		||||
single-line-log@^1.1.2:
 | 
			
		||||
  version "1.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
 | 
			
		||||
  integrity sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    string-width "^1.0.1"
 | 
			
		||||
 | 
			
		||||
slash@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
 | 
			
		||||
@ -5918,19 +5940,6 @@ spdx-license-ids@^3.0.0:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
 | 
			
		||||
  integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
 | 
			
		||||
 | 
			
		||||
speedometer@~0.1.2:
 | 
			
		||||
  version "0.1.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
 | 
			
		||||
  integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=
 | 
			
		||||
 | 
			
		||||
spellchecker@^3.6.0:
 | 
			
		||||
  version "3.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/spellchecker/-/spellchecker-3.7.0.tgz#d63e6fd612352b0108e7bbf942f271665ff63c8b"
 | 
			
		||||
  integrity sha512-saQT4BR9nivbK70s0YjyIlSbZzO6bfWRULcGL2JU7fi7wotOnWl70P0QoUwwLywNQJQ47osgCo6GmOlqzRTxbQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    any-promise "^1.3.0"
 | 
			
		||||
    nan "^2.14.0"
 | 
			
		||||
 | 
			
		||||
split-string@^3.0.1, split-string@^3.0.2:
 | 
			
		||||
  version "3.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
 | 
			
		||||
@ -6081,11 +6090,6 @@ string_decoder@^1.0.0:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    safe-buffer "~5.2.0"
 | 
			
		||||
 | 
			
		||||
string_decoder@~0.10.x:
 | 
			
		||||
  version "0.10.31"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
 | 
			
		||||
  integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
 | 
			
		||||
 | 
			
		||||
string_decoder@~1.1.1:
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
 | 
			
		||||
@ -6160,13 +6164,6 @@ stylehacks@^4.0.0:
 | 
			
		||||
    postcss "^7.0.0"
 | 
			
		||||
    postcss-selector-parser "^3.0.0"
 | 
			
		||||
 | 
			
		||||
sumchecker@^2.0.2:
 | 
			
		||||
  version "2.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e"
 | 
			
		||||
  integrity sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    debug "^2.2.0"
 | 
			
		||||
 | 
			
		||||
sumchecker@^3.0.1:
 | 
			
		||||
  version "3.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42"
 | 
			
		||||
@ -6298,11 +6295,6 @@ throat@^5.0.0:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
 | 
			
		||||
  integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
 | 
			
		||||
 | 
			
		||||
throttleit@0.0.2:
 | 
			
		||||
  version "0.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
 | 
			
		||||
  integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8=
 | 
			
		||||
 | 
			
		||||
through2@^2.0.0:
 | 
			
		||||
  version "2.0.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
 | 
			
		||||
@ -6311,14 +6303,6 @@ through2@^2.0.0:
 | 
			
		||||
    readable-stream "~2.3.6"
 | 
			
		||||
    xtend "~4.0.1"
 | 
			
		||||
 | 
			
		||||
through2@~0.2.3:
 | 
			
		||||
  version "0.2.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
 | 
			
		||||
  integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    readable-stream "~1.1.9"
 | 
			
		||||
    xtend "~2.1.1"
 | 
			
		||||
 | 
			
		||||
timers-browserify@^2.0.4:
 | 
			
		||||
  version "2.0.11"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
 | 
			
		||||
@ -6331,6 +6315,18 @@ timsort@^0.3.0:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
 | 
			
		||||
  integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
 | 
			
		||||
 | 
			
		||||
tldts-core@^5.6.17:
 | 
			
		||||
  version "5.6.17"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-5.6.17.tgz#32ecfd710173a1841fe4e1447ff827b98cacfed1"
 | 
			
		||||
  integrity sha512-34o7eZ1DR2OxotxKCtFYceTHJRwSnFzhIz3hL6Mbker0aPlVysy/nFxixC8LUREo8ytzPd6HbsR2Tm/WVgrcwA==
 | 
			
		||||
 | 
			
		||||
tldts-experimental@^5.6.3:
 | 
			
		||||
  version "5.6.17"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tldts-experimental/-/tldts-experimental-5.6.17.tgz#6c94e18fafb598784659d28e0127e99ee2dfbfb5"
 | 
			
		||||
  integrity sha512-pdesifhl8cmjUFLrnVMG0YkO+VlJuKlfgmFUehBR20Ow1gPw/6oZAP0m2WVoejyCSWYC6TNjMSO720VuLNtEHg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    tldts-core "^5.6.17"
 | 
			
		||||
 | 
			
		||||
tmp-promise@^1.0.5:
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.1.0.tgz#bb924d239029157b9bc1d506a6aa341f8b13e64c"
 | 
			
		||||
@ -6899,13 +6895,6 @@ xtend@^4.0.0, xtend@~4.0.1:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
 | 
			
		||||
  integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
 | 
			
		||||
 | 
			
		||||
xtend@~2.1.1:
 | 
			
		||||
  version "2.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
 | 
			
		||||
  integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os=
 | 
			
		||||
  dependencies:
 | 
			
		||||
    object-keys "~0.4.0"
 | 
			
		||||
 | 
			
		||||
y18n@^3.2.1:
 | 
			
		||||
  version "3.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user