diff --git a/.npmrc b/.npmrc index 8c6c3cbcd..721c86455 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,5 @@ disturl=https://atom.io/download/electron -target=13.4.0 +target=15.1.0 runtime=electron arch=x64 target_arch=x64 diff --git a/app/package.json b/app/package.json index 6b66ac596..02b20a231 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "vortex", - "version": "1.5.0-r32+internal", + "version": "1.5.0-r34+internal", "productName": "Vortex", "description": "Vortex", "author": "Black Tree Gaming Ltd.", @@ -11,9 +11,10 @@ "url": "https://github.com/Nexus-Mods/Vortex" }, "vortex": { - "electron": "13.4.0" + "electron": "15.1.0" }, "dependencies": { + "@electron/remote": "^2.0.1", "@msgpack/msgpack": "^2.7.0", "@nexusmods/nexus-api": "git+ssh://git@gitlab.nexdev.uk:vortex/node-nexus-api.git#mod-packs", "bbcode-to-react": "TanninOne/bbcode-to-react", @@ -27,7 +28,7 @@ "crash-dump": "Nexus-Mods/node-crash-dump", "d3": "^5.14.1", "date-fns": "^2.8.0", - "diskusage": "^1.1.3", + "diskusage": "blagoev/node-diskusage", "dnd-core": "^9.4.0", "draggabilly": "^2.2.0", "drivelist": "TanninOne/drivelist", diff --git a/app/yarn.lock b/app/yarn.lock index 705efc192..da034582b 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -35,6 +35,11 @@ dependencies: regenerator-runtime "^0.13.4" +"@electron/remote@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.1.tgz#810cbc595a21f0f94641eb2d7e8264063a3f84de" + integrity sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA== + "@hypnosphi/create-react-context@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz#f8bfebdc7665f5d426cba3753e0e9c7d3154d7c6" @@ -1017,13 +1022,12 @@ detect-libc@^1.0.2, detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -diskusage@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/diskusage/-/diskusage-1.1.3.tgz#680d7dbf1b679168a195c9240eb3552cbd2c067b" - integrity sha512-EAyaxl8hy4Ph07kzlzGTfpbZMNAAAHXSZtNEMwdlnSd1noHzvA6HsgKt4fEMSvaEXQYLSphe5rPMxN4WOj0hcQ== +diskusage@blagoev/node-diskusage: + version "2.0.0" + resolved "https://codeload.github.com/blagoev/node-diskusage/tar.gz/635d4236ee41a14ca4ff8adf9f4b89aee109eb02" dependencies: es6-promise "^4.2.5" - nan "^2.14.0" + node-addon-api "^2.0.0" dnd-core@^10.0.2: version "10.0.2" @@ -2329,11 +2333,6 @@ msbuild@1.1.2: colors "*" events "*" -nan@^2.14.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - nan@~2.14.0: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" @@ -2390,6 +2389,11 @@ node-addon-api@*, node-addon-api@^3.1.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + node-addon-api@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.0.0.tgz#ac128f43eff7fac4b5f5ef2f39d6d7c2709efead" diff --git a/electron-builder-advanced.json b/electron-builder-advanced.json index 1193ab71b..96fff2520 100644 --- a/electron-builder-advanced.json +++ b/electron-builder-advanced.json @@ -9,7 +9,6 @@ "bundledPlugins", "lib/modinstaller", "node_modules/7z-bin", - "node_modules/nbind", "node_modules/bootstrap-sass/assets/stylesheets", "node_modules/react-select/scss", "node_modules/fomod-installer/dist", @@ -20,6 +19,7 @@ ], "afterSign": "./createMD5List.js", "appId": "com.nexusmods.vortex", + "includeSubNodeModules": true, "win": { "target": "nsis", "publish": [ @@ -69,6 +69,7 @@ "!**/*.js.map", "!**/*.iobj", "!**/*.ipdb", + "!**/*.ilk", "!**/*.vcxproj", "!**/*.vcxproj.filters", "!**/Makefile", diff --git a/electron-builder-oneclick.json b/electron-builder-oneclick.json index dcffd15ae..77fd49ea8 100644 --- a/electron-builder-oneclick.json +++ b/electron-builder-oneclick.json @@ -6,7 +6,6 @@ "bundledPlugins", "lib/modinstaller", "node_modules/7z-bin", - "node_modules/nbind", "node_modules/bootstrap-sass/assets/stylesheets", "node_modules/react-select/scss", "node_modules/fomod-installer/dist", @@ -17,6 +16,7 @@ ], "afterSign": "./createMD5List.js", "appId": "com.nexusmods.vortex", + "includeSubNodeModules": true, "win": { "target": "nsis", "publish": [ @@ -64,6 +64,7 @@ "!**/*.js.map", "!**/*.iobj", "!**/*.ipdb", + "!**/*.ilk", "!**/*.vcxproj", "!**/*.vcxproj.filters", "!**/Makefile", diff --git a/package.json b/package.json index e9eb175ca..94940bda3 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "url": "https://github.com/Nexus-Mods/Vortex" }, "vortex": { - "electron": "13.4.0" + "electron": "15.1.0" }, "scripts": { "_assets_out": "tsc -p extensions/games && node InstallAssets.js out && sass --style compressed src/stylesheets/loadingScreen.scss > out/assets/css/loadingScreen.css", @@ -118,7 +118,7 @@ "@types/levelup": "^4.3.0", "@types/lodash": "^4.14.149", "@types/minimatch": "^3.0.3", - "@types/node": "12.12.35", + "@types/node": "^16.5.0", "@types/node-uuid": "^0.0.28", "@types/react": "^16.9.43", "@types/react-bootstrap": "^0.32.20", @@ -162,8 +162,8 @@ "copyfiles": "^2.3.0", "cross-env": "^6.0.3", "devtron": "^1.4.0", - "electron": "^13.4.0", - "electron-builder": "20.15.0", + "electron": "^15.1.0", + "electron-builder": "^22.13.1", "electron-devtools-installer": "rwwagner90/electron-devtools-installer", "electron-download-tf": "^4.3.4", "electron-rebuild": "^1.8.8", @@ -187,19 +187,20 @@ "resolve-url-loader": "3.1.1", "rm-local-modules": "^0.0.2", "sass-loader": "^8.0.0", - "terser-webpack-plugin": "^2.2.1", + "terser-webpack-plugin": "^5.2.4", "ts-jest": "^24.1.0", - "ts-loader": "^6.2.1", + "ts-loader": "^9.2.6", "tslint": "^5.20.1", "tslint-eslint-rules": "^5.4.0", "tslint-react": "^4.1.0", - "typescript": "^3.7.2", + "typescript": "^4.4.3", "vortex-api": "Nexus-Mods/vortex-api#mod-packs", - "webpack": "^4.41.2", - "webpack-cli": "^3.3.10", - "webpack-node-externals": "^1.7.2" + "webpack": "^5.57.1", + "webpack-cli": "^4.8.0", + "webpack-node-externals": "^3.0.0" }, "dependencies": { + "@electron/remote": "^2.0.1", "@msgpack/msgpack": "^2.7.0", "@nexusmods/nexus-api": "git+ssh://git@gitlab.nexdev.uk:vortex/node-nexus-api.git#mod-packs", "bbcode-to-react": "TanninOne/bbcode-to-react", @@ -213,7 +214,7 @@ "crash-dump": "Nexus-Mods/node-crash-dump", "d3": "^5.14.1", "date-fns": "^2.8.0", - "diskusage": "^1.1.3", + "diskusage": "blagoev/node-diskusage", "dnd-core": "^9.4.0", "draggabilly": "^2.2.0", "drivelist": "TanninOne/drivelist", diff --git a/src/app/Application.ts b/src/app/Application.ts index c08d7c2f4..7c8ce2005 100644 --- a/src/app/Application.ts +++ b/src/app/Application.ts @@ -3,6 +3,7 @@ import { NEXUS_DOMAIN } from '../extensions/nexus_integration/constants'; import { STATE_BACKUP_PATH } from '../reducers/index'; import { ThunkStore } from '../types/api'; import {IState} from '../types/IState'; +import { getApplication } from '../util/application'; import commandLine, {IParameters, relaunch} from '../util/commandLine'; import { DataInvalid, DocumentsPathMissing, ProcessCanceled, UserCanceled } from '../util/CustomErrors'; @@ -202,6 +203,8 @@ class Application { }); app.on('web-contents-created', (event: Electron.Event, contents: Electron.WebContents) => { + // tslint:disable-next-line:no-submodule-imports + require('@electron/remote/main').enable(contents); contents.on('will-attach-webview', this.attachWebView); }); } @@ -215,7 +218,6 @@ class Application { delete webPreferences.preloadURL; webPreferences.nodeIntegration = false; - webPreferences.enableRemoteModule = false; } private genHandleError() { @@ -257,7 +259,7 @@ class Application { .catch(() => null) .tap(() => { log('info', '--------------------------'); - log('info', 'Vortex Version', app.getVersion()); + log('info', 'Vortex Version', getApplication().version); log('info', 'Parameters', process.argv.join(' ')); }) .then(() => this.testUserEnvironment()) @@ -468,7 +470,7 @@ class Application { } private checkUpgrade(): Promise { - const currentVersion = app.getVersion(); + const currentVersion = getApplication().version; return this.migrateIfNecessary(currentVersion) .then(() => { this.mStore.dispatch(setApplicationVersion(currentVersion)); @@ -676,7 +678,7 @@ class Application { // In development of 1.4 I assumed we had a case where this was necessary. // Turned out it wasn't, still feel it's sensible to have this // information available asap - startupSettings.storeVersion = app.getVersion(); + startupSettings.storeVersion = getApplication().version; // 1. load only user settings to determine if we're in multi-user mode // 2. load app settings to determine which extensions to load @@ -720,7 +722,7 @@ class Application { log('info', 'all further logging will happen in', path.join(dataPath, 'vortex.log')); setLogPath(dataPath); log('info', '--------------------------'); - log('info', 'Vortex Version', app.getVersion()); + log('info', 'Vortex Version', getApplication().version); return LevelPersist.create( path.join(dataPath, currentStatePath), undefined, diff --git a/src/app/MainWindow.ts b/src/app/MainWindow.ts index 81598d7f6..6a9a24f29 100644 --- a/src/app/MainWindow.ts +++ b/src/app/MainWindow.ts @@ -157,9 +157,9 @@ class MainWindow { } }); - this.mWindow.webContents.on('new-window', (event, url, frameName, disposition) => { - if (disposition === 'background-tab') { - event.preventDefault(); + this.mWindow.webContents.setWindowOpenHandler((details) => { + if (details.disposition === 'background-tab') { + return { action: 'deny' }; } }); @@ -268,7 +268,6 @@ class MainWindow { nodeIntegrationInWorker: true, webviewTag: true, enableWebSQL: false, - enableRemoteModule: true, contextIsolation: false, }, }; diff --git a/src/controls/Advanced.tsx b/src/controls/Advanced.tsx index 0ef77f019..1c1720ccd 100644 --- a/src/controls/Advanced.tsx +++ b/src/controls/Advanced.tsx @@ -51,4 +51,4 @@ function mapStateToProps(state: IState): IConnectedProps { }; } -export default connect(mapStateToProps)(Advanced); +export default connect(mapStateToProps)(Advanced) as React.ComponentType<{}>; diff --git a/src/controls/Dropdown.tsx b/src/controls/Dropdown.tsx index ab94a30ca..f20566551 100644 --- a/src/controls/Dropdown.tsx +++ b/src/controls/Dropdown.tsx @@ -61,7 +61,7 @@ class MyDropdown extends React.Component { ); } - private get bounds(): ClientRect { + private get bounds(): DOMRect { return this.props.container ? this.props.container.getBoundingClientRect() : { @@ -71,7 +71,7 @@ class MyDropdown extends React.Component { right: window.innerWidth, height: window.innerHeight, width: window.innerWidth, - }; + } as any; } private onToggle = (isOpen: boolean) => { diff --git a/src/controls/DropdownButton.tsx b/src/controls/DropdownButton.tsx index d8d8d5c2c..540059b78 100644 --- a/src/controls/DropdownButton.tsx +++ b/src/controls/DropdownButton.tsx @@ -47,7 +47,7 @@ class MyDropdownButton extends React.Component { diff --git a/src/controls/ErrorBoundary.tsx b/src/controls/ErrorBoundary.tsx index b49cbf552..adce886ea 100644 --- a/src/controls/ErrorBoundary.tsx +++ b/src/controls/ErrorBoundary.tsx @@ -6,11 +6,11 @@ import { renderError } from '../util/message'; import Icon from './Icon'; import { IconButton } from './TooltipControls'; -import { remote } from 'electron'; import * as _ from 'lodash'; import * as React from 'react'; import { Alert, Button } from 'react-bootstrap'; import { WithTranslation } from 'react-i18next'; +import { getApplication } from '../util/application'; export type CBFunction = (...args: any[]) => void; @@ -137,7 +137,7 @@ class ErrorBoundary extends ComponentEx { +export class FormPathItem extends ComponentEx { public render(): JSX.Element { const { t, controlId, label, placeholder, readOnly, style, value } = this.props; @@ -149,16 +149,16 @@ export class FormPathItem extends React.Component { private handleChangePath = () => { const {directory, extensions, onChangeValue, stateKey, value} = this.props; - remote.dialog.showOpenDialog(remote.getCurrentWindow(), { + const func = directory ? this.context.api.selectDir : this.context.api.selectFile; + + func({ defaultPath: value, - properties: [ directory ? 'openDirectory' : 'openFile' ], filters: extensions !== undefined ? [ { name: 'Files', extensions }, ] : [], }).then(result => { - const { filePaths } = result; - if ((filePaths !== undefined) && (filePaths.length > 0)) { - onChangeValue(stateKey, filePaths[0]); + if (result !== undefined) { + onChangeValue(stateKey, result); } }); } diff --git a/src/controls/Icon.tsx b/src/controls/Icon.tsx index bafa13399..92a6322ca 100644 --- a/src/controls/Icon.tsx +++ b/src/controls/Icon.tsx @@ -4,11 +4,11 @@ import IconBase from './Icon.base'; import Promise from 'bluebird'; // using fs directly because the svg may be bundled inside the asar so // we need the electron-fs hook here -import { remote } from 'electron'; import * as fs from 'fs'; import update from 'immutability-helper'; import * as path from 'path'; import * as React from 'react'; +import getVortexPath from '../util/getVortexPath'; export interface IIconProps { id?: string; @@ -108,7 +108,7 @@ class Icon extends React.Component { menuLayer: PropTypes.object, }; - public context: { menuLayer: JSX.Element }; + public declare context: { menuLayer: JSX.Element }; private portalTargetRef: Element; private mBackgroundClick: (evt: React.MouseEvent) => void; diff --git a/src/controls/More.tsx b/src/controls/More.tsx index 7a2bd4100..8587612f6 100644 --- a/src/controls/More.tsx +++ b/src/controls/More.tsx @@ -121,7 +121,7 @@ class More extends ComponentEx { this.setState({ open: false }); } - private getBounds = (): ClientRect => { + private getBounds = (): DOMRect => { const { container } = this.props; return container !== undefined ? container.getBoundingClientRect() : { @@ -131,7 +131,7 @@ class More extends ComponentEx { height: window.innerHeight, right: window.innerWidth, bottom: window.innerHeight, - }; + } as any; } } diff --git a/src/controls/PortalMenu.tsx b/src/controls/PortalMenu.tsx index 381ed4eec..493fa4fa2 100644 --- a/src/controls/PortalMenu.tsx +++ b/src/controls/PortalMenu.tsx @@ -24,7 +24,7 @@ class PortalMenu extends React.Component { ); } - private get bounds(): ClientRect { + private get bounds(): DOMRect { return this.props.container ? this.props.container.getBoundingClientRect() : { @@ -51,7 +51,7 @@ class SelectUpDown extends React.Component { right: window.innerWidth, height: window.innerHeight, width: window.innerWidth, - }; + } as any; } private onMenuOpen = () => { diff --git a/src/controls/Webview.tsx b/src/controls/Webview.tsx index 54ae28c33..51ab1e57a 100644 --- a/src/controls/Webview.tsx +++ b/src/controls/Webview.tsx @@ -1,6 +1,5 @@ import { log } from '../util/log'; -import { WebviewTag } from 'electron'; import { omit } from 'lodash'; import * as React from 'react'; import * as ReactDOM from 'react-dom'; @@ -30,15 +29,15 @@ export interface IWebviewProps { } class Webview extends React.Component { - private mNode: WebviewTag; + private mNode: HTMLElement; public componentDidMount() { - this.mNode = ReactDOM.findDOMNode(this) as WebviewTag; + this.mNode = ReactDOM.findDOMNode(this) as HTMLElement; this.mNode.addEventListener('did-start-loading', this.startLoad); this.mNode.addEventListener('did-stop-loading', this.stopLoad); this.mNode.addEventListener('dom-ready', () => { // this.mNode.insertCSS('body { background-color: red !important }'); - // this.mNode.openDevTools(); + // (this.mNode as any).openDevTools(); }); this.mNode.addEventListener('console-message', this.logMessage); this.mNode.addEventListener('new-window', this.newWindow); diff --git a/src/controls/ZoomableImage.tsx b/src/controls/ZoomableImage.tsx index 6de392ea2..3fc21e0ee 100644 --- a/src/controls/ZoomableImage.tsx +++ b/src/controls/ZoomableImage.tsx @@ -31,7 +31,7 @@ class ZoomableImage extends React.Component { const cellType = typeof(data); if (cellType === 'string') { return {data}; + } else if ((cellType === 'number') && (attribute.edit.onChangeValue !== undefined)) { + return ( + + ); } else if (cellType === 'boolean') { if (attribute.edit.onChangeValue !== undefined) { return ( @@ -261,6 +273,12 @@ class TableCell extends React.Component { ); } + private onChangeNumValue = (newValue: string) => { + const { attribute, rawData } = this.props; + + attribute.edit.onChangeValue(rawData, parseInt(newValue, 10)); + } + private toggle = () => { const { attribute, data, rawData } = this.props; const value = data; diff --git a/src/extensions/about_dialog/views/AboutPage.tsx b/src/extensions/about_dialog/views/AboutPage.tsx index 11c98f750..742cb96d2 100644 --- a/src/extensions/about_dialog/views/AboutPage.tsx +++ b/src/extensions/about_dialog/views/AboutPage.tsx @@ -6,21 +6,23 @@ import MainPage from '../../../views/MainPage'; import { ILicense } from '../types/ILicense'; -import { remote } from 'electron'; import * as fs from 'fs'; import I18next from 'i18next'; import * as path from 'path'; import * as React from 'react'; import { Image, Media, Panel } from 'react-bootstrap'; import ReactMarkdown from 'react-markdown'; +import { getApplication } from '../../../util/application'; +import getVortexPath from '../../../util/getVortexPath'; let modules = {}; let ownLicenseText: string = ''; -if (remote !== undefined) { +if (process.type === 'renderer') { try { - const modulesPath = path.join(remote.app.getAppPath(), 'assets', 'modules.json'); + const modulesPath = path.join(getVortexPath('assets'), 'modules.json'); modules = JSON.parse(fs.readFileSync(modulesPath, { encoding: 'utf8' })); - ownLicenseText = fs.readFileSync(path.join(remote.app.getAppPath(), 'LICENSE.md')).toString(); + ownLicenseText = fs.readFileSync( + path.join(getVortexPath('package_unpacked'), 'LICENSE.md')).toString(); } catch (err) { // should we display this in the ui? It shouldn't ever happen in the release and 99% of users // won't care anyway. @@ -46,7 +48,6 @@ type IProps = IBaseProps; class AboutPage extends ComponentEx { private mMounted: boolean; private mVersion: string; - private mAppPath: string; constructor(props) { super(props); this.mMounted = false; @@ -59,8 +60,7 @@ class AboutPage extends ComponentEx { tag: undefined, }); - this.mVersion = remote.app.getVersion(); - this.mAppPath = remote.app.getAppPath(); + this.mVersion = getApplication().version; } public componentDidMount() { @@ -103,7 +103,7 @@ class AboutPage extends ComponentEx { const moduleList = Object.keys(modules).map(key => ({ key, ...modules[key] })); - const imgPath = path.resolve(this.mAppPath, 'assets', 'images', 'vortex.png'); + const imgPath = path.resolve(getVortexPath('assets'), 'images', 'vortex.png'); let body = null; @@ -186,8 +186,8 @@ class AboutPage extends ComponentEx { const mod: ILicense = modules[modKey]; const license = typeof (mod.licenses) === 'string' ? mod.licenses : mod.licenses[0]; const licenseFile = mod.licenseFile !== undefined - ? path.join(this.mAppPath, mod.licenseFile) - : path.join(this.mAppPath, 'assets', 'licenses', license + '.md'); + ? path.resolve(getVortexPath('modules'), '..', mod.licenseFile) + : path.join(getVortexPath('assets'), 'licenses', license + '.md'); fs.readFile(licenseFile, { }, (err, licenseText) => { if (!this.mMounted) { return; diff --git a/src/extensions/announcement_dashlet/AnnouncementDashlet.tsx b/src/extensions/announcement_dashlet/AnnouncementDashlet.tsx index f0d2bbca7..b59a1d3c4 100644 --- a/src/extensions/announcement_dashlet/AnnouncementDashlet.tsx +++ b/src/extensions/announcement_dashlet/AnnouncementDashlet.tsx @@ -1,4 +1,3 @@ -import { remote } from 'electron'; import { TFunction } from 'i18next'; import * as React from 'react'; import { WithTranslation } from 'react-i18next'; @@ -8,6 +7,7 @@ import { matchesGameMode, matchesVersion } from './util'; import Dashlet from '../../controls/Dashlet'; import { Icon, IconButton } from '../../controls/TooltipControls'; +import { getApplication } from '../../util/application'; import { ComponentEx, translate } from '../../util/ComponentEx'; import opn from '../../util/opn'; import * as selectors from '../../util/selectors'; @@ -26,7 +26,7 @@ class AnnouncementDashlet extends ComponentEx { private mAppVersion: string; constructor(props: IProps) { super(props); - this.mAppVersion = remote.app.getVersion(); + this.mAppVersion = getApplication().version; } public render(): JSX.Element { diff --git a/src/extensions/announcement_dashlet/index.ts b/src/extensions/announcement_dashlet/index.ts index d92e1d184..a11547e60 100644 --- a/src/extensions/announcement_dashlet/index.ts +++ b/src/extensions/announcement_dashlet/index.ts @@ -1,5 +1,4 @@ import Bluebird from 'bluebird'; -import { remote } from 'electron'; import * as https from 'https'; import * as _ from 'lodash'; import * as path from 'path'; @@ -9,6 +8,8 @@ import * as url from 'url'; import { addNotification } from '../../actions/notifications'; import { IExtensionContext, ThunkStore } from '../../types/IExtensionContext'; import { IState } from '../../types/IState'; +import { getApplication } from '../../util/application'; +import { DataInvalid } from '../../util/CustomErrors'; import * as fs from '../../util/fs'; import getVortexPath from '../../util/getVortexPath'; import { log } from '../../util/log'; @@ -26,7 +27,6 @@ import { IAnnouncement, ISurveyInstance, ParserError } from './types'; import { matchesGameMode, matchesVersion } from './util'; -import { DataInvalid } from '../../util/api'; const ANNOUNCEMENT_LINK = 'https://raw.githubusercontent.com/Nexus-Mods/Vortex/announcements/announcements.json'; @@ -106,7 +106,7 @@ function updateSurveys(store: Redux.Store) { } // Ugly but needed. - const validSurveys = res.filter(iter => + const validSurveys = res.filter(iter => (!!iter.endDate) && (!!iter.id) && (!!iter.link)); if (validSurveys.length !== res.length) { @@ -152,7 +152,7 @@ function showSurveyNotification(context) { return surveyCutoffDateMS <= now; }; - const appVersion = remote.app.getVersion(); + const appVersion = getApplication().version; const filtered = surveys.filter(survey => { const isSuppressed = (suppressedIds.includes(survey.id) && (suppressed[survey.id] === true)); diff --git a/src/extensions/browser/views/BrowserView.tsx b/src/extensions/browser/views/BrowserView.tsx index ba272f3a9..819c042ec 100644 --- a/src/extensions/browser/views/BrowserView.tsx +++ b/src/extensions/browser/views/BrowserView.tsx @@ -14,7 +14,6 @@ import Notification from '../../../views/Notification'; import { closeBrowser } from '../actions'; import Promise from 'bluebird'; -import { WebviewTag } from 'electron'; import * as _ from 'lodash'; import * as React from 'react'; import { Breadcrumb, Button } from 'react-bootstrap'; @@ -61,7 +60,7 @@ function nop() { class BrowserView extends ComponentEx { private mRef: Webview = null; - private mWebView: WebviewTag = null; + private mWebView = null; private mCallbacks: { [event: string]: (...args: any[]) => void }; private mSessionCallbacks: { [event: string]: (...args: any[]) => void }; private mLoadingDebouncer: Debouncer; @@ -89,7 +88,7 @@ class BrowserView extends ComponentEx { this.mCallbacks = { 'did-finish-load': () => { - const newUrl: string = (this.mWebView as any).getURL(); + const newUrl: string = this.mWebView.getURL(); this.nextState.url = newUrl; this.props.onEvent(this.props.subscriber, 'navigate', newUrl); if (newUrl !== this.nextState.history[this.nextState.historyIdx]) { diff --git a/src/extensions/category_management/views/CategoryList.tsx b/src/extensions/category_management/views/CategoryList.tsx index 96f926768..2014907e7 100644 --- a/src/extensions/category_management/views/CategoryList.tsx +++ b/src/extensions/category_management/views/CategoryList.tsx @@ -72,7 +72,7 @@ type IProps = IConnectedProps & IActionProps; * */ class CategoryList extends ComponentEx { - public context: IComponentContext; + public declare context: IComponentContext; private mButtons: IActionDefinition[]; constructor(props) { diff --git a/src/extensions/dashboard/views/Dashboard.tsx b/src/extensions/dashboard/views/Dashboard.tsx index 5c804799f..2d6f1e71c 100644 --- a/src/extensions/dashboard/views/Dashboard.tsx +++ b/src/extensions/dashboard/views/Dashboard.tsx @@ -10,11 +10,14 @@ import { IDashletProps } from '../types/IDashletProps'; import PackeryGrid from './PackeryGrid'; import PackeryItem from './PackeryItem'; -import { remote } from 'electron'; +import * as remoteT from '@electron/remote'; import * as _ from 'lodash'; import * as React from 'react'; import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; +import lazyRequire from '../../../util/lazyRequire'; + +const remote: typeof remoteT = lazyRequire(() => require('@electron/remote')); const UPDATE_FREQUENCY_MS = 1000; diff --git a/src/extensions/diagnostics_files/util/loadVortexLogs.ts b/src/extensions/diagnostics_files/util/loadVortexLogs.ts index 267de1a12..ae66642db 100644 --- a/src/extensions/diagnostics_files/util/loadVortexLogs.ts +++ b/src/extensions/diagnostics_files/util/loadVortexLogs.ts @@ -4,8 +4,8 @@ import {LogLevel} from '../../../util/log'; import { ILog, ISession } from '../types/ISession'; import Promise from 'bluebird'; -import { remote } from 'electron'; import * as path from 'path'; +import getVortexPath from '../../../util/getVortexPath'; const lineRE = /^([^-]*) - ([a-z]*): (.*)\r?$/; @@ -24,7 +24,7 @@ function parseLine(line: string, idx: number): ILog { } export function loadVortexLogs(): Promise { - const logPath = remote.app.getPath('userData'); + const logPath = getVortexPath('userData'); return Promise.resolve(fs.readdirAsync(logPath)) .filter((fileName: string) => fileName.match(/vortex[0-9]?\.log/) !== null) diff --git a/src/extensions/diagnostics_files/views/DiagnosticsFilesDialog.tsx b/src/extensions/diagnostics_files/views/DiagnosticsFilesDialog.tsx index 2a0aca1fe..a5bade895 100644 --- a/src/extensions/diagnostics_files/views/DiagnosticsFilesDialog.tsx +++ b/src/extensions/diagnostics_files/views/DiagnosticsFilesDialog.tsx @@ -4,13 +4,14 @@ import { IState } from '../../../types/IState'; import { ComponentEx, connect, translate } from '../../../util/ComponentEx'; import { didIgnoreError, isOutdated } from '../../../util/errorHandling'; import * as fs from '../../../util/fs'; +import getVortexPath from '../../../util/getVortexPath'; import { showError } from '../../../util/message'; import { ILog, ISession } from '../types/ISession'; import { loadVortexLogs } from '../util/loadVortexLogs'; +import * as RemoteT from '@electron/remote'; import Promise from 'bluebird'; -import { remote } from 'electron'; import update from 'immutability-helper'; import * as os from 'os'; import * as path from 'path'; @@ -21,6 +22,9 @@ import { } from 'react-bootstrap'; import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; +import lazyRequire from '../../../util/lazyRequire'; + +const remote = lazyRequire(() => require('@electron/remote')); export interface IBaseProps { visible: boolean; @@ -303,7 +307,7 @@ class DiagnosticsFilesDialog extends ComponentEx { const { onShowError } = this.props; const { logSessions, sessionIdx } = this.state; - const nativeCrashesPath = path.join(remote.app.getPath('userData'), 'temp'); + const nativeCrashesPath = path.join(getVortexPath('userData'), 'temp'); const fullLog: string = logSessions[sessionIdx].logs .map(line => `${line.time} - ${line.type}: ${line.text}`) .join(os.EOL); diff --git a/src/extensions/download_management/DownloadManager.ts b/src/extensions/download_management/DownloadManager.ts index 5562023ef..b26d22f6c 100644 --- a/src/extensions/download_management/DownloadManager.ts +++ b/src/extensions/download_management/DownloadManager.ts @@ -1,5 +1,6 @@ import { DataInvalid, HTTPError, ProcessCanceled, StalledError, UserCanceled } from '../../util/CustomErrors'; +import makeRemoteCall from '../../util/electronRemote'; import * as fs from '../../util/fs'; import { log } from '../../util/log'; import { countIf, INVALID_FILENAME_RE, truthy } from '../../util/util'; @@ -18,7 +19,6 @@ import SpeedCalculator from './SpeedCalculator'; import Promise from 'bluebird'; import * as contentDisposition from 'content-disposition'; import * as contentType from 'content-type'; -import { remote } from 'electron'; import * as http from 'http'; import * as https from 'https'; import * as _ from 'lodash'; @@ -27,6 +27,11 @@ import * as stream from 'stream'; import * as url from 'url'; import * as zlib from 'zlib'; +const getCookies = makeRemoteCall('get-cookies', + (electron, webContents, filter: Electron.CookiesGetFilter) => { + return webContents.session.cookies.get(filter); +}); + // assume urls are valid for at least 5 minutes const URL_RESOLVE_EXPIRE_MS = 1000 * 60 * 5; // don't follow redirects arbitrarily long @@ -210,7 +215,7 @@ class DownloadWorker { } try { - remote.getCurrentWebContents().session.cookies.get({ url: jobUrl }) + getCookies({ url: jobUrl }) .then(cookies => { this.startDownload(job, jobUrl, cookies); }) diff --git a/src/extensions/download_management/FileAssembler.ts b/src/extensions/download_management/FileAssembler.ts index 7b2af5dc2..620bbef88 100644 --- a/src/extensions/download_management/FileAssembler.ts +++ b/src/extensions/download_management/FileAssembler.ts @@ -5,11 +5,14 @@ import { log } from '../../util/log'; import { makeQueue } from '../../util/util'; import Promise from 'bluebird'; -import { dialog as dialogIn, remote } from 'electron'; +import { dialog as dialogIn } from 'electron'; import * as fsFast from 'fs-extra'; import * as path from 'path'; -const dialog = remote !== undefined ? remote.dialog : dialogIn; +const dialog = (process.type === 'renderer') + // tslint:disable-next-line:no-var-requires + ? require('@electron/remote').dialog + : dialogIn; /** * assembles a file received in chunks. diff --git a/src/extensions/download_management/index.ts b/src/extensions/download_management/index.ts index e7848d095..26c34760e 100644 --- a/src/extensions/download_management/index.ts +++ b/src/extensions/download_management/index.ts @@ -1,6 +1,7 @@ import { IExtensionApi, IExtensionContext } from '../../types/IExtensionContext'; import { IState } from '../../types/IState'; import { ITestResult } from '../../types/ITestResult'; +import { getApplication } from '../../util/application'; import { DataInvalid, ProcessCanceled, UserCanceled } from '../../util/CustomErrors'; import Debouncer from '../../util/Debouncer'; import * as fs from '../../util/fs'; @@ -40,16 +41,17 @@ import SpeedOMeter from './views/SpeedOMeter'; import DownloadManager from './DownloadManager'; import observe, { DownloadObserver } from './DownloadObserver'; +import * as RemoteT from '@electron/remote'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as _ from 'lodash'; import { genHash, IHashResult } from 'modmeta-db'; import * as path from 'path'; import * as Redux from 'redux'; import {generate as shortid} from 'shortid'; import winapi from 'winapi-bindings'; +import lazyRequire from '../../util/lazyRequire'; -const app = remote !== undefined ? remote.app : appIn; +const remote = lazyRequire(() => require('@electron/remote')); let observer: DownloadObserver; let manager: DownloadManager; @@ -922,7 +924,7 @@ function init(context: IExtensionContextExt): boolean { } powerTimer = setTimeout(stopTimer, 60000); } - }, `Nexus Client v2.${app.getVersion()}`, protocolHandlers, + }, `Nexus Client v2.${getApplication().version}`, protocolHandlers, () => context.api.getState().settings.downloads.maxBandwidth * 8); manager.setFileExistsCB(fileName => { return context.api.showDialog('question', 'File already exists', { diff --git a/src/extensions/download_management/util/downloadDirectory.ts b/src/extensions/download_management/util/downloadDirectory.ts index 321ed1768..b4e90e9bf 100644 --- a/src/extensions/download_management/util/downloadDirectory.ts +++ b/src/extensions/download_management/util/downloadDirectory.ts @@ -1,10 +1,10 @@ import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; import { generate as shortid } from 'shortid'; import { IDialogResult } from '../../../types/IDialog'; import { IExtensionApi } from '../../../types/IExtensionContext'; import { IDownload, IState } from '../../../types/IState'; +import { getApplication } from '../../../util/application'; import { ProcessCanceled, UserCanceled } from '../../../util/CustomErrors'; import * as fs from '../../../util/fs'; import { truthy } from '../../../util/util'; @@ -12,8 +12,6 @@ import { setDownloadPath } from '../actions/settings'; import { removeDownload } from '../actions/state'; import getDownloadPath from './getDownloadPath'; -const app = remote !== undefined ? remote.app : appIn; - export const DOWNLOADS_DIR_TAG = '__vortex_downloads_folder'; export function writeDownloadsTag(api: IExtensionApi, tagPath: string): Promise { @@ -168,7 +166,7 @@ export function ensureDownloadsDirectory(api: IExtensionApi): Promise { return queryDownloadFolderInvalid(api, err, dirExists, currentDownloadPath) .then(result => { if (result.action === 'Quit Vortex') { - app.exit(0); + getApplication().quit(0); return Promise.reject(new UserCanceled()); } else if (result.action === 'Reinitialize') { const id = shortid(); diff --git a/src/extensions/download_management/util/getDownloadPath.ts b/src/extensions/download_management/util/getDownloadPath.ts index e0fe9820e..5c8fa29f7 100644 --- a/src/extensions/download_management/util/getDownloadPath.ts +++ b/src/extensions/download_management/util/getDownloadPath.ts @@ -1,11 +1,9 @@ import makeCI from '../../../util/makeCaseInsensitive'; -import { app as appIn, remote } from 'electron'; import * as os from 'os'; import * as path from 'path'; import format from 'string-template'; - -const app = remote !== undefined ? remote.app : appIn; +import getVortexPath from '../../../util/getVortexPath'; let userData: string; @@ -16,7 +14,7 @@ export function getDownloadPathPattern(pattern: string): string { function getDownloadPath(pattern: string, gameId?: string): string { if (userData === undefined) { // cached to avoid ipcs from renderer -> main process - userData = app.getPath('userData'); + userData = getVortexPath('userData'); } const formatKeys = makeCI({ userdata: userData, @@ -33,7 +31,7 @@ function getDownloadPath(pattern: string, gameId?: string): string { || ((process.platform === 'win32') && ((result[0] === '\\') && (result[1] !== '\\')) || (result[0] === '/') && (result[1] !== '/'))) { - result = path.resolve(app.getPath('userData'), result); + result = path.resolve(getVortexPath('userData'), result); } return result; diff --git a/src/extensions/download_management/views/DownloadView.tsx b/src/extensions/download_management/views/DownloadView.tsx index 5969ac50a..6396d926a 100644 --- a/src/extensions/download_management/views/DownloadView.tsx +++ b/src/extensions/download_management/views/DownloadView.tsx @@ -92,7 +92,7 @@ function MountTrigger(props: { cb: () => void }) { } class DownloadView extends ComponentEx { - public context: IComponentContext; + public declare context: IComponentContext; private actions: ITableRowAction[]; private mColumns: Array>; private mTableActions: IActionDefinition[]; diff --git a/src/extensions/download_management/views/Settings.tsx b/src/extensions/download_management/views/Settings.tsx index ec308ab03..c27d2de18 100644 --- a/src/extensions/download_management/views/Settings.tsx +++ b/src/extensions/download_management/views/Settings.tsx @@ -34,7 +34,6 @@ import getDownloadPath, {getDownloadPathPattern} from '../util/getDownloadPath'; import getText from '../texts'; import Promise from 'bluebird'; -import { remote } from 'electron'; import * as path from 'path'; import * as process from 'process'; import * as React from 'react'; @@ -42,6 +41,7 @@ import { Button as BSButton, ControlLabel, FormControl, FormGroup, HelpBlock, In Jumbotron, Modal, ProgressBar } from 'react-bootstrap'; import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; +import getVortexPath from '../../../util/getVortexPath'; const MB = 1024 * 1024; @@ -267,12 +267,6 @@ class Settings extends ComponentEx { private validateDownloadPath(input: string): { state: ValidationState, reason?: string } { const { modsInstallPath } = this.props; - let vortexPath = remote.app.getAppPath(); - if (path.basename(vortexPath) === 'app.asar') { - // in asar builds getAppPath returns the path of the asar so need to go up 2 levels - // (resources/app.asar) - vortexPath = path.dirname(path.dirname(vortexPath)); - } if (modsInstallPath !== undefined) { const normalizedInstallPath = path.normalize(modsInstallPath.toLowerCase()); @@ -293,7 +287,7 @@ class Settings extends ComponentEx { }; } - if (isChildPath(input, vortexPath)) { + if (isChildPath(input, getVortexPath('application'))) { return { state: 'error', reason: 'Download folder can\'t be a subdirectory of the Vortex application folder.', @@ -388,12 +382,7 @@ class Settings extends ComponentEx { const newPath: string = getDownloadPath(this.state.downloadPath); const oldPath: string = getDownloadPath(this.props.downloadPath); - let vortexPath = remote.app.getAppPath(); - if (path.basename(vortexPath) === 'app.asar') { - // in asar builds getAppPath returns the path of the asar so need to go up 2 levels - // (resources/app.asar) - vortexPath = path.dirname(path.dirname(vortexPath)); - } + const vortexPath = getVortexPath('application'); try { const statNew = fs.statSync(newPath, { bigint: true }); diff --git a/src/extensions/extension_manager/BrowseExtensions.tsx b/src/extensions/extension_manager/BrowseExtensions.tsx index 24b0b90d5..358cf3355 100644 --- a/src/extensions/extension_manager/BrowseExtensions.tsx +++ b/src/extensions/extension_manager/BrowseExtensions.tsx @@ -6,6 +6,7 @@ import Spinner from '../../controls/Spinner'; import { IconButton } from '../../controls/TooltipControls'; import ZoomableImage from '../../controls/ZoomableImage'; import { NEXUS_BASE_URL } from '../nexus_integration/constants'; + import { IState } from '../../types/IState'; import bbcode from '../../util/bbcode'; import { ComponentEx, connect, translate } from '../../util/ComponentEx'; @@ -15,10 +16,10 @@ import { largeNumToString } from '../../util/util'; import { IAvailableExtension, IExtension, ISelector } from './types'; import { downloadAndInstallExtension, selectorMatch } from './util'; -import { app, remote } from 'electron'; import * as React from 'react'; import { Button, FormControl, ListGroup, ListGroupItem, ModalHeader } from 'react-bootstrap'; import * as semver from 'semver'; +import { getApplication } from '../../util/application'; const NEXUS_MODS_URL: string = `${NEXUS_BASE_URL}/site/mods/`; const GITHUB_BASE_URL: string = 'https://www.github.com'; @@ -66,8 +67,7 @@ const version = (() => { return () => { if (result === undefined) { - const electronApp = remote !== undefined ? remote.app : app; - result = electronApp.getVersion(); + result = getApplication().version; } return result; diff --git a/src/extensions/extension_manager/installExtension.ts b/src/extensions/extension_manager/installExtension.ts index ac5cf7863..832aed61f 100644 --- a/src/extensions/extension_manager/installExtension.ts +++ b/src/extensions/extension_manager/installExtension.ts @@ -3,6 +3,7 @@ import { IExtensionApi } from '../../types/IExtensionContext'; import { IState } from '../../types/IState'; import { DataInvalid } from '../../util/CustomErrors'; import * as fs from '../../util/fs'; +import getVortexPath from '../../util/getVortexPath'; import { log } from '../../util/log'; import { INVALID_FILENAME_RE } from '../../util/util'; @@ -12,15 +13,12 @@ import { ExtensionType, IExtension } from './types'; import { readExtensionInfo } from './util'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as _ from 'lodash'; import ZipT = require('node-7z'); import * as path from 'path'; import rimraf from 'rimraf'; import { dynreq } from 'vortex-run'; -const app = appIn || remote.app; - const rimrafAsync: (removePath: string, options: any) => Promise = Promise.promisify(rimraf); class ContextProxyHandler implements ProxyHandler { @@ -242,7 +240,7 @@ function validateInstall(extPath: string, info?: IExtension): Promise { - const extensionsPath = path.join(app.getPath('userData'), 'plugins'); + const extensionsPath = path.join(getVortexPath('userData'), 'plugins'); let destPath: string; const tempPath = path.join(extensionsPath, path.basename(archivePath)) + '.installing'; diff --git a/src/extensions/extension_manager/util.ts b/src/extensions/extension_manager/util.ts index d038e60f7..ea5a8cc11 100644 --- a/src/extensions/extension_manager/util.ts +++ b/src/extensions/extension_manager/util.ts @@ -18,7 +18,6 @@ import { ExtensionType, IAvailableExtension, IExtension, IExtensionDownloadInfo, IExtensionManifest, ISelector } from './types'; import Promise from 'bluebird'; -import { remote } from 'electron'; import * as _ from 'lodash'; import SevenZip from 'node-7z'; import * as path from 'path'; @@ -135,7 +134,7 @@ export function readExtensions(force: boolean): Promise<{ [extId: string]: IExte function doReadExtensions(): Promise<{ [extId: string]: IExtension }> { const bundledPath = getVortexPath('bundledPlugins'); - const extensionsPath = path.join(remote.app.getPath('userData'), 'plugins'); + const extensionsPath = path.join(getVortexPath('userData'), 'plugins'); return Promise.all([readExtensionDir(bundledPath, true), readExtensionDir(extensionsPath, false)]) @@ -170,7 +169,7 @@ function downloadExtensionList(cachePath: string): Promise { - const cachePath = path.join(remote.app.getPath('temp'), EXTENSION_FILENAME); + const cachePath = path.join(getVortexPath('temp'), EXTENSION_FILENAME); let time = new Date(); const checkCache = forceDownload diff --git a/src/extensions/gamemode_management/index.ts b/src/extensions/gamemode_management/index.ts index 6310070ea..48a3cbb8c 100644 --- a/src/extensions/gamemode_management/index.ts +++ b/src/extensions/gamemode_management/index.ts @@ -53,7 +53,6 @@ import GameModeManager, { IGameStub } from './GameModeManager'; import { currentGame, currentGameDiscovery, discoveryByGame, gameById } from './selectors'; import Promise from 'bluebird'; -import { remote } from 'electron'; import * as fsExtra from 'fs-extra'; import * as path from 'path'; import * as Redux from 'redux'; @@ -204,14 +203,10 @@ function browseGameLocation(api: IExtensionApi, gameId: string): Promise { return new Promise((resolve, reject) => { if ((discovery !== undefined) && (discovery.path !== undefined)) { - remote.dialog.showOpenDialog(remote.getCurrentWindow(), { - properties: ['openDirectory'], - defaultPath: discovery.path, - }) + api.selectDir({ defaultPath: discovery.path }) .then(result => { - const { filePaths } = result; - if ((filePaths !== undefined) && truthy(filePaths[0])) { - findGamePath(game, filePaths[0], 0, searchDepth(game.requiredFiles)) + if (result !== undefined) { + findGamePath(game, result, 0, searchDepth(game.requiredFiles)) .then((corrected: string) => { api.store.dispatch(setGamePath(game.id, corrected)); resolve(); @@ -233,13 +228,10 @@ function browseGameLocation(api: IExtensionApi, gameId: string): Promise { } }); } else { - remote.dialog.showOpenDialog(remote.getCurrentWindow(), { - properties: ['openDirectory'], - }) + api.selectDir({}) .then(result => { - const { filePaths } = result; - if ((filePaths !== undefined) && (filePaths.length > 0)) { - findGamePath(game, filePaths[0], 0, searchDepth(game.requiredFiles || [])) + if (result !== undefined) { + findGamePath(game, result, 0, searchDepth(game.requiredFiles || [])) .then((corrected: string) => { const exe = game.executable(corrected); api.store.dispatch(addDiscoveredGame(game.id, { @@ -652,11 +644,9 @@ function init(context: IExtensionContext): boolean { $.gameModeManager.startSearchDiscovery(paths); }, onSelectPath: (basePath: string): Promise => { - return Promise.resolve(remote.dialog.showOpenDialog(remote.getCurrentWindow(), { - properties: ['openDirectory'], + return Promise.resolve(context.api.selectDir({ defaultPath: basePath, - }) - .then(result => result.filePaths[0])); + })); }, })); diff --git a/src/extensions/gamemode_management/util/ProcessMonitor.ts b/src/extensions/gamemode_management/util/ProcessMonitor.ts index 4a34a8ea6..cc797dae1 100644 --- a/src/extensions/gamemode_management/util/ProcessMonitor.ts +++ b/src/extensions/gamemode_management/util/ProcessMonitor.ts @@ -8,7 +8,7 @@ import { currentGame, currentGameDiscovery } from '../../../util/selectors'; import { getSafe } from '../../../util/storeHelper'; import { setdefault } from '../../../util/util'; -import { BrowserWindow, remote } from 'electron'; +import { BrowserWindow } from 'electron'; import * as path from 'path'; import * as Redux from 'redux'; import * as winapi from 'winapi-bindings'; @@ -38,8 +38,8 @@ class ProcessMonitor { clearTimeout(this.mTimer); } - if (remote !== undefined) { - this.mWindow = remote.getCurrentWindow(); + if (process.type === 'renderer') { + this.mWindow = require('@electron/remote').getCurrentWindow(); } log('debug', 'start process monitor'); diff --git a/src/extensions/gamemode_management/util/discovery.ts b/src/extensions/gamemode_management/util/discovery.ts index be978c34c..8c796e744 100644 --- a/src/extensions/gamemode_management/util/discovery.ts +++ b/src/extensions/gamemode_management/util/discovery.ts @@ -16,13 +16,10 @@ import getNormalizeFunc, { Normalize } from '../../../util/getNormalizeFunc'; import Progress from './Progress'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as fsExtra from 'fs-extra'; import * as path from 'path'; import turbowalk from 'turbowalk'; -const app = appIn || remote.app; - export type DiscoveredCB = (gameId: string, result: IDiscoveryResult) => void; export type DiscoveredToolCB = (gameId: string, result: IDiscoveredTool) => void; diff --git a/src/extensions/gamemode_management/views/GamePicker.tsx b/src/extensions/gamemode_management/views/GamePicker.tsx index 526784f2d..a6fe18dec 100644 --- a/src/extensions/gamemode_management/views/GamePicker.tsx +++ b/src/extensions/gamemode_management/views/GamePicker.tsx @@ -89,7 +89,7 @@ function nop() { * @class GamePicker */ class GamePicker extends ComponentEx { - public context: IComponentContext; + public declare context: IComponentContext; private buttons: IActionDefinition[]; private mRef: HTMLElement; diff --git a/src/extensions/gamemode_management/views/GameThumbnail.tsx b/src/extensions/gamemode_management/views/GameThumbnail.tsx index 652902dfe..02e354d25 100644 --- a/src/extensions/gamemode_management/views/GameThumbnail.tsx +++ b/src/extensions/gamemode_management/views/GameThumbnail.tsx @@ -229,7 +229,7 @@ class GameThumbnail extends PureComponentEx { private lowPriorityButtons = (action: IActionDefinition) => action.position >= 100 - private getWindowBounds = (): ClientRect => { + private getWindowBounds = (): DOMRect => { return { top: 0, left: 0, @@ -237,7 +237,7 @@ class GameThumbnail extends PureComponentEx { width: window.innerWidth, bottom: window.innerHeight, right: window.innerWidth, - }; + } as any; } private setRef = ref => { diff --git a/src/extensions/harmony_injector/delegates/Context.ts b/src/extensions/harmony_injector/delegates/Context.ts index 83e4819d7..08b37efc4 100644 --- a/src/extensions/harmony_injector/delegates/Context.ts +++ b/src/extensions/harmony_injector/delegates/Context.ts @@ -1,6 +1,7 @@ import { IExtensionApi } from '../../../types/IExtensionContext'; import { IGame } from '../../../types/IGame'; +import { getApplication } from '../../../util/application'; import { ProcessCanceled } from '../../../util/CustomErrors'; import { log } from '../../../util/log'; import { currentGame } from '../../../util/selectors'; @@ -15,15 +16,12 @@ import { getGame } from '../../gamemode_management/util/getGame'; import DelegateBase from './DelegateBase'; import Promise from 'bluebird'; -import { app as appIn, remote} from 'electron'; import getVersion from 'exe-version'; import * as path from 'path'; import turbowalk, { IEntry } from 'turbowalk'; import { IPatcherDetails } from '../types/injector'; -const app = appIn || remote.app; - export class Context extends DelegateBase { private mGameId: string; private mGameDiscovery: IDiscoveryResult; @@ -56,7 +54,7 @@ export class Context extends DelegateBase { public getAppVersion = (dummy: any, callback: (err, res: string) => void) => { log('debug', '[Harmony-Injector] getAppVersion called'); - return callback(null, app.getVersion()); + return callback(null, getApplication().version); } public getCurrentGameVersion = diff --git a/src/extensions/harmony_injector/index.ts b/src/extensions/harmony_injector/index.ts index 1970b9fac..69f942e75 100644 --- a/src/extensions/harmony_injector/index.ts +++ b/src/extensions/harmony_injector/index.ts @@ -14,7 +14,6 @@ import { checkAssemblies, getNetVersion } from './util/netVersion'; import Bluebird from 'bluebird'; import { ChildProcess } from 'child_process'; -import { app as appIn, remote } from 'electron'; import { createIPC } from 'harmony-patcher'; import * as net from 'net'; import path from 'path'; @@ -27,8 +26,6 @@ import { IPatchConfig } from './types/injector'; import { fs } from '../..'; import { IGameStored } from '../gamemode_management/types/IGameStored'; -const app = appIn !== undefined ? appIn : remote.app; - function transformError(err: any): Error { let result: Error; if (typeof(err) === 'string') { @@ -74,7 +71,7 @@ function transformError(err: any): Error { + 'characters. This usually means that your mod staging path is too long.'); } else if ((err.name === 'System.IO.IOException') && (err.stack.indexOf('System.IO.Path.InternalGetTempFileName'))) { - const tempDir = app.getPath('temp'); + const tempDir = getVortexPath('temp'); result = new SetupError(`Your temp directory "${tempDir}" contains too many files. ` + 'You need to clean up that directory. Files in that directory ' + 'should be safe to delete (they are temporary after all) but ' diff --git a/src/extensions/ini_prep/gameSupport.ts b/src/extensions/ini_prep/gameSupport.ts index efd89673b..c74e18946 100644 --- a/src/extensions/ini_prep/gameSupport.ts +++ b/src/extensions/ini_prep/gameSupport.ts @@ -1,12 +1,10 @@ +import getVortexPath from '../../util/getVortexPath'; import { getSafe } from '../../util/storeHelper'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; import format from 'string-template'; import { IDiscoveryResult } from '../gamemode_management/types/IDiscoveryResult'; -const app = appIn || remote.app; - const gameSupportGamePass = { skyrimse: { iniFiles: [ @@ -112,7 +110,7 @@ function isXboxPath(discoveryPath: string) { } export function iniFiles(gameMode: string, discovery: IDiscoveryResult) { - const mygames = path.join(app.getPath('documents'), 'My Games'); + const mygames = path.join(getVortexPath('documents'), 'My Games'); if ((gameSupportGamePass[gameMode] !== undefined) && (discovery?.path !== undefined)) { if (isXboxPath(discovery.path)) { diff --git a/src/extensions/ini_prep/index.ts b/src/extensions/ini_prep/index.ts index d4d575359..0879fa97a 100644 --- a/src/extensions/ini_prep/index.ts +++ b/src/extensions/ini_prep/index.ts @@ -5,6 +5,7 @@ import { UserCanceled } from '../../util/CustomErrors'; import deepMerge from '../../util/deepMerge'; import { disableErrorReport } from '../../util/errorHandling'; import * as fs from '../../util/fs'; +import getVortexPath from '../../util/getVortexPath'; import {log} from '../../util/log'; import { installPathForGame } from '../../util/selectors'; import {getSafe} from '../../util/storeHelper'; @@ -25,9 +26,6 @@ import { TFunction } from 'i18next'; import * as path from 'path'; import IniParser, { IniFile, WinapiFormat } from 'vortex-parse-ini'; -import { app as appIn, remote } from 'electron'; -const app = appIn || remote.app; - function ensureIniBackups(t: TFunction, gameMode: string, discovery: IDiscoveryResult): Promise { return Promise.map(iniFiles(gameMode, discovery), file => { @@ -239,14 +237,14 @@ function testProtectedFolderAccess(): Promise { // the documents path. This may be related to: // tslint:disable-next-line:max-line-length // https://forums.asp.net/t/1889407.aspx?GetFolderPath+Environment+GetFolderPath+Environment+SpecialFolder+MyDocuments+returning+blank+when+hosted+on+IIS - writablePath = app.getPath('documents'); + writablePath = getVortexPath('documents'); } catch (err) { // We can't retrieve the documents path, but for the purpose of completing this // test, we can simply query a different folder which is also guaranteed to trigger // folder protection functionality. // tslint:disable-next-line log('error', 'Unable to get path to my documents folder - user environment is misconfigured!', err); - writablePath = app.getPath('home'); + writablePath = getVortexPath('home'); } const canary = path.join(writablePath, '__vortex_canary.tmp'); diff --git a/src/extensions/installer_fomod/delegates/Context.ts b/src/extensions/installer_fomod/delegates/Context.ts index 5d884bac4..90d2f2cbe 100644 --- a/src/extensions/installer_fomod/delegates/Context.ts +++ b/src/extensions/installer_fomod/delegates/Context.ts @@ -1,5 +1,6 @@ import {IExtensionApi} from '../../../types/IExtensionContext'; import {IGame} from '../../../types/IGame'; +import { getApplication } from '../../../util/application'; import {ProcessCanceled} from '../../../util/CustomErrors'; import * as fs from '../../../util/fs'; import {log} from '../../../util/log'; @@ -12,15 +13,12 @@ import {getGame} from '../../gamemode_management/util/getGame'; import DelegateBase from './DelegateBase'; import Promise from 'bluebird'; -import { app as appIn, remote} from 'electron'; import getVersion from 'exe-version'; import minimatch from 'minimatch'; import * as path from 'path'; import turbowalk, { IEntry } from 'turbowalk'; import * as util from 'util'; -const app = appIn || remote.app; - function extenderForGame(gameId: string) { return { morrowind: 'mwse', @@ -55,7 +53,7 @@ export class Context extends DelegateBase { public getAppVersion = (dummy: any, callback: (err, res: string) => void) => { log('debug', 'getAppVersion called'); - return callback(null, app.getVersion()); + return callback(null, getApplication().version); } public getCurrentGameVersion = diff --git a/src/extensions/installer_fomod/index.ts b/src/extensions/installer_fomod/index.ts index bf9bac26b..b0e57c88a 100644 --- a/src/extensions/installer_fomod/index.ts +++ b/src/extensions/installer_fomod/index.ts @@ -6,8 +6,9 @@ import { ProgressDelegate, } from '../../types/IExtensionContext'; import { ITestResult } from '../../types/ITestResult'; -import { DataInvalid, ProcessCanceled, SetupError, UserCanceled } from '../../util/CustomErrors'; +import { DataInvalid, SetupError, UserCanceled } from '../../util/CustomErrors'; import * as fs from '../../util/fs'; +import getVortexPath from '../../util/getVortexPath'; import { log } from '../../util/log'; import { getSafe } from '../../util/storeHelper'; import {delayed, toPromise, truthy} from '../../util/util'; @@ -29,7 +30,6 @@ import InstallerDialog from './views/InstallerDialog'; import Bluebird from 'bluebird'; import { ChildProcess } from 'child_process'; -import { app as appIn, remote } from 'electron'; import { createIPC } from 'fomod-installer'; import * as net from 'net'; import * as path from 'path'; @@ -37,8 +37,6 @@ import * as semver from 'semver'; import { generate as shortid } from 'shortid'; import * as util from 'util'; -const app = appIn !== undefined ? appIn : remote.app; - function transformError(err: any): Error { let result: Error; if (err === undefined) { @@ -91,7 +89,7 @@ function transformError(err: any): Error { + 'characters. This usually means that your mod staging path is too long.'); } else if ((err.name === 'System.IO.IOException') && (err.stack.indexOf('System.IO.Path.InternalGetTempFileName'))) { - const tempDir = app.getPath('temp'); + const tempDir = getVortexPath('temp'); result = new SetupError(`Your temp directory "${tempDir}" contains too many files. ` + 'You need to clean up that directory. Files in that directory ' + 'should be safe to delete (they are temporary after all) but ' @@ -146,7 +144,7 @@ function processAttributes(input: any, modPath: string): Bluebird { return fs.readFileAsync(path.join(modPath, 'fomod', 'info.xml')) .then((data: Buffer) => { let offset = 0; - let encoding = 'utf8'; + let encoding: BufferEncoding = 'utf8'; if (data.readUInt16LE(0) === 0xFEFF) { encoding = 'utf16le'; offset = 2; diff --git a/src/extensions/installer_fomod/util/gameSupport.ts b/src/extensions/installer_fomod/util/gameSupport.ts index b4039c8b4..26d79941b 100644 --- a/src/extensions/installer_fomod/util/gameSupport.ts +++ b/src/extensions/installer_fomod/util/gameSupport.ts @@ -1,14 +1,12 @@ import { IGame } from '../../../types/IGame'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; import * as Redux from 'redux'; import { IState } from '../../../types/IState'; - -const app = appIn || remote.app; +import getVortexPath from '../../../util/getVortexPath'; function bethIni(gamePath: string, iniName: string) { - return path.join(app.getPath('documents'), 'My Games', gamePath, iniName + '.ini'); + return path.join(getVortexPath('documents'), 'My Games', gamePath, iniName + '.ini'); } function toWordExp(input: string): string { diff --git a/src/extensions/mod_management/eventHandlers.ts b/src/extensions/mod_management/eventHandlers.ts index 1ac3a3f78..e272e9aa1 100644 --- a/src/extensions/mod_management/eventHandlers.ts +++ b/src/extensions/mod_management/eventHandlers.ts @@ -2,6 +2,7 @@ import { startActivity, stopActivity } from '../../actions/session'; import { IDialogResult } from '../../types/IDialog'; import {IExtensionApi} from '../../types/IExtensionContext'; import {IModTable, IProfile, IState} from '../../types/IState'; +import { getApplication } from '../../util/application'; import { DataInvalid, ProcessCanceled, TemporaryError, UserCanceled } from '../../util/CustomErrors'; import { setErrorContext } from '../../util/errorHandling'; import * as fs from '../../util/fs'; @@ -43,13 +44,10 @@ import {currentActivator, installPath, installPathForGame} from './selectors'; import { ensureStagingDirectory } from './stagingDirectory'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as _ from 'lodash'; import { RuleType } from 'modmeta-db'; import * as path from 'path'; -const app = remote !== undefined ? remote.app : appIn; - function checkStagingGame(api: IExtensionApi, gameId: string, manifestGameId: string) : Promise { if ((manifestGameId !== undefined) && (gameId !== manifestGameId)) { @@ -120,7 +118,7 @@ function checkStagingFolder(api: IExtensionApi, gameId: string, ]) .then((result: IDialogResult) => { if (result.action === 'Quit Vortex') { - app.exit(); + getApplication().quit(); // resolve never return new Promise(() => null); } else if ((result.action === 'Use selected') diff --git a/src/extensions/mod_management/stagingDirectory.ts b/src/extensions/mod_management/stagingDirectory.ts index 4ff2f2579..8d9ec69a7 100644 --- a/src/extensions/mod_management/stagingDirectory.ts +++ b/src/extensions/mod_management/stagingDirectory.ts @@ -1,10 +1,10 @@ import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; import { generate as shortid } from 'shortid'; import { IDialogResult } from '../../types/IDialog'; import { IExtensionApi } from '../../types/IExtensionContext'; import { IState } from '../../types/IState'; +import { getApplication } from '../../util/application'; import { ProcessCanceled, UserCanceled } from '../../util/CustomErrors'; import * as fs from '../../util/fs'; import { log } from '../../util/log'; @@ -14,8 +14,6 @@ import { truthy } from '../../util/util'; import { setInstallPath } from './actions/settings'; import { fallbackPurge } from './util/activationStore'; -const app = remote !== undefined ? remote.app : appIn; - export const STAGING_DIR_TAG = '__vortex_staging_folder'; function writeStagingTag(api: IExtensionApi, tagPath: string, gameId: string) { @@ -140,7 +138,7 @@ export function ensureStagingDirectory(api: IExtensionApi, return queryStagingFolderInvalid(api, err, dirExists, instPath) .then(dialogResult => { if (dialogResult.action === 'Quit Vortex') { - app.exit(0); + getApplication().quit(0); return Promise.reject(new UserCanceled()); } else if (dialogResult.action === 'Reinitialize') { const id = shortid(); diff --git a/src/extensions/mod_management/util/getInstallPath.ts b/src/extensions/mod_management/util/getInstallPath.ts index 954acf7a7..1cf1b61fb 100644 --- a/src/extensions/mod_management/util/getInstallPath.ts +++ b/src/extensions/mod_management/util/getInstallPath.ts @@ -1,13 +1,10 @@ import makeCI from '../../../util/makeCaseInsensitive'; -import { app as appIn, remote } from 'electron'; +import { app as appIn } from 'electron'; import * as os from 'os'; import * as path from 'path'; import format from 'string-template'; - -const app = remote !== undefined ? remote.app : appIn; - -let userData: string; +import getVortexPath from '../../../util/getVortexPath'; export function getInstallPathPattern(pattern: string): string { return pattern || path.join('{USERDATA}', '{GAME}', 'mods'); @@ -17,12 +14,8 @@ function getInstallPath(pattern: string, gameId: string): string { if (gameId === undefined) { throw new Error('gameId can\'t be undefined'); } - if (userData === undefined) { - // cached to avoid ipcs from renderer -> main process - userData = app.getPath('userData'); - } const formatKeys = makeCI({ - userdata: userData, + userdata: getVortexPath('userData'), username: os.userInfo().username, game: gameId, }); @@ -37,7 +30,7 @@ function getInstallPath(pattern: string, gameId: string): string { || ((process.platform === 'win32') && ((result[0] === '\\') && (result[1] !== '\\')) || (result[0] === '/') && (result[1] !== '/'))) { - result = path.resolve(app.getPath('userData'), result); + result = path.resolve(getVortexPath('userData'), result); } return result; diff --git a/src/extensions/mod_management/util/refreshMods.ts b/src/extensions/mod_management/util/refreshMods.ts index 8713a5804..fc4a335ba 100644 --- a/src/extensions/mod_management/util/refreshMods.ts +++ b/src/extensions/mod_management/util/refreshMods.ts @@ -1,5 +1,6 @@ import { IExtensionApi } from '../../../types/IExtensionContext'; import { IState } from '../../../types/IState'; +import { getApplication } from '../../../util/application'; import * as fs from '../../../util/fs'; import { log } from '../../../util/log'; import { getSafe } from '../../../util/storeHelper'; @@ -8,11 +9,8 @@ import { setModArchiveId } from '../actions/mods'; import {IMod} from '../types/IMod'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; -const app = remote !== undefined ? remote.app : appIn; - /** * reads the installation dir and adds mods missing in our database * @@ -119,7 +117,7 @@ function refreshMods(api: IExtensionApi, gameId: string, }) .then(() => onRemoveMods(removedMods)); } else { - app.quit(); + getApplication().quit(); } }); }) diff --git a/src/extensions/mod_management/util/resolvePath.ts b/src/extensions/mod_management/util/resolvePath.ts index 0103b0def..017490af8 100644 --- a/src/extensions/mod_management/util/resolvePath.ts +++ b/src/extensions/mod_management/util/resolvePath.ts @@ -1,12 +1,10 @@ +import getVortexPath from '../../../util/getVortexPath'; import makeCI from '../../../util/makeCaseInsensitive'; import { getSafe } from '../../../util/storeHelper'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; import format from 'string-template'; -const app = remote !== undefined ? remote.app : appIn; - export type PathKey = 'base' | 'download' | 'install'; export const pathDefaults = { @@ -15,25 +13,14 @@ export const pathDefaults = { install: path.join('{base}', 'mods'), }; -let userData; - function resolvePath(key: PathKey, paths: {[gameId: string]: any}, gameMode: string): string { if (gameMode === undefined) { return undefined; } - if (userData === undefined) { - // if called in the renderer process, app.getPath requires an ipc. - // since this function may be called a lot and userData does't change after - // startup, caching it makes sense. - // (userData _may_ change during startup though so caching during inital loading of this - // module would be unsafe!) - userData = app.getPath('userData'); - } - const formatKeys = makeCI({ - userdata: userData, + userdata: getVortexPath('userData'), game: gameMode, base: undefined, }); diff --git a/src/extensions/mod_management/views/InstallArchiveButton.tsx b/src/extensions/mod_management/views/InstallArchiveButton.tsx index edf5ee730..2d3e0c2f7 100644 --- a/src/extensions/mod_management/views/InstallArchiveButton.tsx +++ b/src/extensions/mod_management/views/InstallArchiveButton.tsx @@ -4,11 +4,8 @@ import { IState } from '../../../types/IState'; import { ComponentEx, connect, translate } from '../../../util/ComponentEx'; import { activeGameId } from '../../../util/selectors'; -import { dialog as dialogIn, remote } from 'electron'; import * as React from 'react'; -const dialog = remote !== undefined ? remote.dialog : dialogIn; - export interface IBaseProps { buttonType: ButtonType; } @@ -39,19 +36,18 @@ class InstallButton extends ComponentEx { properties: ['openFile'], }; - dialog.showOpenDialog(remote.getCurrentWindow(), options) + this.context.api.selectFile(options) .then(result => { - const { filePaths } = result; const { api } = this.context; - if ((filePaths !== undefined) && (filePaths.length > 0)) { + if (result !== undefined) { if (this.props.copyOnIFF) { - api.events.emit('import-downloads', [filePaths[0]], (dlIds: string[]) => { + api.events.emit('import-downloads', [result], (dlIds: string[]) => { dlIds.forEach(dlId => { api.events.emit('start-install-download', dlId); }); }); } else { - api.events.emit('start-install', filePaths[0]); + api.events.emit('start-install', result); } } }); diff --git a/src/extensions/mod_management/views/Settings.tsx b/src/extensions/mod_management/views/Settings.tsx index d78dd5a56..e053e6ae0 100644 --- a/src/extensions/mod_management/views/Settings.tsx +++ b/src/extensions/mod_management/views/Settings.tsx @@ -39,8 +39,8 @@ import { modPathsForGame } from '../selectors'; import { STAGING_DIR_TAG } from '../stagingDirectory'; import getText from '../texts'; +import * as remote from '@electron/remote'; import Promise from 'bluebird'; -import { remote } from 'electron'; import * as path from 'path'; import * as React from 'react'; import { diff --git a/src/extensions/nexus_integration/index.tsx b/src/extensions/nexus_integration/index.tsx index c3411a1b1..a2d313320 100644 --- a/src/extensions/nexus_integration/index.tsx +++ b/src/extensions/nexus_integration/index.tsx @@ -3,11 +3,14 @@ import { IDialogResult, showDialog } from '../../actions/notifications'; import { IExtensionApi, IExtensionContext, ILookupResult } from '../../types/IExtensionContext'; import { IModLookupResult } from '../../types/IModLookupResult'; import { IState } from '../../types/IState'; +import { getApplication } from '../../util/application'; import { DataInvalid, HTTPError, ProcessCanceled, ServiceTemporarilyUnavailable, UserCanceled } from '../../util/CustomErrors'; import Debouncer from '../../util/Debouncer'; import * as fs from '../../util/fs'; +import getVortexPath from '../../util/getVortexPath'; import LazyComponent from '../../util/LazyComponent'; +import lazyRequire from '../../util/lazyRequire'; import { log, LogLevel } from '../../util/log'; import { prettifyNodeErrorMessage, showError } from '../../util/message'; import opn from '../../util/opn'; @@ -61,12 +64,12 @@ import { endorseModImpl, getCollectionInfo, getInfo, IRemoteInfo, nexusGames, ne import { checkModVersion } from './util/checkModsVersion'; import transformUserInfo from './util/transformUserInfo'; +import * as RemoteT from '@electron/remote'; import NexusT, { IDateTime, IDownloadURL, IFileInfo, IModFile, IModFileQuery, IModInfo, IRevision, NexusError, RateLimitError, TimeoutError } from '@nexusmods/nexus-api'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as fuzz from 'fuzzball'; import { TFunction } from 'i18next'; import * as path from 'path'; @@ -76,7 +79,7 @@ import { Action } from 'redux'; import {} from 'uuid'; import WebSocket from 'ws'; -const app = remote !== undefined ? remote.app : appIn; +const remote = lazyRequire(() => require('@electron/remote')); let nexus: NexusT; @@ -173,7 +176,7 @@ function framePos(frame: any) { const requestLog = { requests: [], - logPath: path.join(app.getPath('userData'), 'network.log'), + logPath: path.join(getVortexPath('userData'), 'network.log'), debouncer: new Debouncer(() => { // TODO: why does "this" not point to the right object here? const reqs = requestLog.requests; @@ -998,7 +1001,7 @@ function once(api: IExtensionApi, callbacks: Array<(nexus: NexusT) => void>) { nexus = new Proxy( new Proxy( - new Nexus('Vortex', remote.app.getVersion(), gameMode, 30000), + new Nexus('Vortex', getApplication().version, gameMode, 30000), requestLog), new Disableable(api)); diff --git a/src/extensions/nexus_integration/util.ts b/src/extensions/nexus_integration/util.ts index 95a2df530..546f66904 100644 --- a/src/extensions/nexus_integration/util.ts +++ b/src/extensions/nexus_integration/util.ts @@ -3,13 +3,14 @@ import Nexus, { IRevision, IUpdateEntry, NexusError, RateLimitError, TimeoutError, } from '@nexusmods/nexus-api'; import Promise from 'bluebird'; -import { app as appIn, ipcRenderer, remote } from 'electron'; +import { app as appIn, ipcRenderer } from 'electron'; import { TFunction } from 'i18next'; import * as Redux from 'redux'; import * as semver from 'semver'; import * as util from 'util'; import { addNotification, dismissNotification, setExtensionEndorsed, setModAttribute } from '../../actions'; import { IExtensionApi, IMod, IState, ThunkStore } from '../../types/api'; +import { getApplication } from '../../util/application'; import { DataInvalid, HTTPError, ProcessCanceled, TemporaryError, UserCanceled } from '../../util/CustomErrors'; import { contextify, setApiKey } from '../../util/errorHandling'; import github, { RateLimitExceeded } from '../../util/github'; @@ -35,8 +36,6 @@ const UPDATE_CHECK_DELAY = 60 * 60 * 1000; const GAMES_JSON_URL = 'https://data.nexusmods.com/file/nexus-data/games.json'; -const app = remote !== undefined ? remote.app : appIn; - export function startDownload(api: IExtensionApi, nexus: Nexus, nxmurl: string, @@ -812,7 +811,7 @@ export function updateKey(api: IExtensionApi, nexus: Nexus, key: string): Promis } return github.fetchConfig('api') .then(configObj => { - const currentVer = app.getVersion(); + const currentVer = getApplication().version; if ((currentVer !== '0.0.1') && (semver.lt(currentVer, configObj.minversion))) { (nexus as any).disable(); diff --git a/src/extensions/nexus_integration/util/chromePath.ts b/src/extensions/nexus_integration/util/chromePath.ts index 09693876c..273c44ed7 100644 --- a/src/extensions/nexus_integration/util/chromePath.ts +++ b/src/extensions/nexus_integration/util/chromePath.ts @@ -1,19 +1,17 @@ import * as fs from '../../../util/fs'; +import getVortexPath from '../../../util/getVortexPath'; import { deBOM, truthy } from '../../../util/util'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; -const app = appIn || remote.app; - /** * return the path where chrome stores its settings regarding disabled schemes * * @returns */ function chromePath(): Promise { - const appPath = remote.app.getPath('appData'); + const appPath = getVortexPath('appData'); if (process.platform === 'win32') { const userData = process.env.LOCALAPPDATA !== undefined ? path.join(process.env.LOCALAPPDATA, 'Google', 'Chrome', 'User Data') diff --git a/src/extensions/profile_management/index.ts b/src/extensions/profile_management/index.ts index 3e8e8791e..b9c2c3afa 100644 --- a/src/extensions/profile_management/index.ts +++ b/src/extensions/profile_management/index.ts @@ -57,7 +57,6 @@ import { activeGameId, activeProfile, lastActiveProfileForGame, profileById } fr import { syncFromProfile, syncToProfile } from './sync'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; import * as Redux from 'redux'; import { generate as shortid } from 'shortid'; @@ -67,8 +66,6 @@ const profileFiles: { [gameId: string]: string[] } = {}; const profileFeatures: IProfileFeature[] = []; function profilePath(profile: IProfile): string { - const app = appIn || remote.app; - return path.join(getVortexPath('userData'), profile.gameId, 'profiles', profile.id); } diff --git a/src/extensions/profile_management/views/ProfileItem.tsx b/src/extensions/profile_management/views/ProfileItem.tsx index 9f18c1ee6..68d7d0294 100644 --- a/src/extensions/profile_management/views/ProfileItem.tsx +++ b/src/extensions/profile_management/views/ProfileItem.tsx @@ -3,6 +3,7 @@ import { IActionDefinition } from '../../../types/IActionDefinition'; import { IMod } from '../../../types/IState'; import { ComponentEx } from '../../../util/ComponentEx'; import * as fs from '../../../util/fs'; +import getVortexPath from '../../../util/getVortexPath'; import { log } from '../../../util/log'; import { getSafe } from '../../../util/storeHelper'; @@ -13,7 +14,7 @@ import { IProfileFeature } from '../types/IProfileFeature'; import TransferIcon from './TransferIcon'; -import { nativeImage, remote } from 'electron'; +import { nativeImage } from 'electron'; import { TFunction } from 'i18next'; import * as path from 'path'; import * as React from 'react'; @@ -60,7 +61,7 @@ class ProfileItem extends ComponentEx { hasProfileImage: false, counter: 0, }); - this.mUserData = remote.app.getPath('userData'); + this.mUserData = getVortexPath('userData'); } public componentDidMount() { diff --git a/src/extensions/profile_management/views/ProfileView.tsx b/src/extensions/profile_management/views/ProfileView.tsx index 3557d655f..ed78745fe 100644 --- a/src/extensions/profile_management/views/ProfileView.tsx +++ b/src/extensions/profile_management/views/ProfileView.tsx @@ -3,6 +3,7 @@ import { DialogActions, DialogType, IDialogContent, IDialogResult, import { IMod, IState } from '../../../types/IState'; import { ComponentEx, connect, translate } from '../../../util/ComponentEx'; import * as fs from '../../../util/fs'; +import getVortexPath from '../../../util/getVortexPath'; import { log } from '../../../util/log'; import { activeGameId, lastActiveProfileForGame } from '../../../util/selectors'; import { getSafe } from '../../../util/storeHelper'; @@ -19,7 +20,7 @@ import { IProfileFeature } from '../types/IProfileFeature'; import ProfileEdit from './ProfileEdit'; import ProfileItem from './ProfileItem'; -import { remote, shell } from 'electron'; +import { shell } from 'electron'; import update from 'immutability-helper'; import * as path from 'path'; import * as React from 'react'; @@ -179,7 +180,7 @@ class ProfileView extends ComponentEx { t={t} key={profileId} profile={profile} - mods={mods[profile.gameId]} + mods={mods[profile.gameId] ?? emptyObject} features={features} active={currentProfile === profileId} available={available} @@ -210,10 +211,10 @@ class ProfileView extends ComponentEx { const { t, profiles } = this.props; const profile = profiles[profileId]; const appDir = (process.env.NODE_ENV !== 'development') - ? path.dirname(remote.app.getPath('exe')) + ? path.dirname(getVortexPath('exe')) : 'C:/Program Files/Black Tree Gaming Ltd/Vortex'; - const desktopLocation = remote.app.getPath('desktop'); + const desktopLocation = getVortexPath('desktop'); const shortcutPath = path.join(desktopLocation, `Start Vortex Profile_${profileId}(${profile.gameId}).lnk`); const created = shell.writeShortcutLink(shortcutPath, 'create', { target: path.join(appDir, 'Vortex.exe'), @@ -394,7 +395,7 @@ class ProfileView extends ComponentEx { } function profilePath(profile: IProfile): string { - return path.join(remote.app.getPath('userData'), profile.gameId, 'profiles', profile.id); + return path.join(getVortexPath('userData'), profile.gameId, 'profiles', profile.id); } const emptyArray = []; diff --git a/src/extensions/recovery/Workarounds.tsx b/src/extensions/recovery/Workarounds.tsx index 4db060e74..40013df1a 100644 --- a/src/extensions/recovery/Workarounds.tsx +++ b/src/extensions/recovery/Workarounds.tsx @@ -1,5 +1,4 @@ import PromiseBB from 'bluebird'; -import { remote } from 'electron'; import * as path from 'path'; import * as React from 'react'; import { Button, ControlLabel, FormGroup, HelpBlock } from 'react-bootstrap'; @@ -9,6 +8,7 @@ import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; import { DialogActions, DialogType, ICheckbox, IDialogContent, IDialogResult, showDialog } from '../../actions'; import { IState } from '../../types/IState'; +import { getApplication } from '../../util/application'; import { ComponentEx } from '../../util/ComponentEx'; import * as fs from '../../util/fs'; import getVortexPath from '../../util/getVortexPath'; @@ -168,7 +168,7 @@ class Settings extends ComponentEx { ]); if (confirm.action === 'Confirm') { spawnSelf(['--restore', filePath]); - remote.app.exit(); + getApplication().quit(); } } } catch (err) { diff --git a/src/extensions/settings_application/SettingsVortex.tsx b/src/extensions/settings_application/SettingsVortex.tsx index 87da26a0d..7967745a7 100644 --- a/src/extensions/settings_application/SettingsVortex.tsx +++ b/src/extensions/settings_application/SettingsVortex.tsx @@ -6,7 +6,6 @@ import { ComponentEx, connect, translate } from '../../util/ComponentEx'; import getText from './texts'; -import { remote } from 'electron'; import * as React from 'react'; import { Alert, Button, FormControl, FormGroup, HelpBlock } from 'react-bootstrap'; import * as Redux from 'redux'; diff --git a/src/extensions/settings_interface/SettingsInterface.tsx b/src/extensions/settings_interface/SettingsInterface.tsx index dcd542d0e..7a4fab826 100644 --- a/src/extensions/settings_interface/SettingsInterface.tsx +++ b/src/extensions/settings_interface/SettingsInterface.tsx @@ -23,8 +23,9 @@ import { setAdvancedMode, setDesktopNotifications, setForegroundDL, setHideTopLe import { nativeCountryName, nativeLanguageName } from './languagemap'; import getText from './texts'; +import * as remoteT from '@electron/remote'; import Promise from 'bluebird'; -import { app, remote } from 'electron'; +import { app } from 'electron'; import update from 'immutability-helper'; import * as path from 'path'; import * as React from 'react'; @@ -32,6 +33,9 @@ import { Alert, Button, ControlLabel, FormControl, FormGroup, HelpBlock } from 'react-bootstrap'; import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; +import lazyRequire from '../../util/lazyRequire'; + +const remote: typeof remoteT = lazyRequire(() => require('@electron/remote')); interface ILanguage { key: string; @@ -405,7 +409,7 @@ class SettingsInterface extends ComponentEx { // bug reports. onSetStartMinimized(false); } - const uniApp = app || remote.app; + const uniApp = (process.type === 'renderer') ? remote.app : app; uniApp.setLoginItemSettings({ openAtLogin: startOnBoot, path: process.execPath, // Yes this is currently needed - thanks Electron @@ -417,7 +421,7 @@ class SettingsInterface extends ComponentEx { const { autoStart, startMinimized, onSetStartMinimized } = this.props; const isMinimized = ((!startMinimized) === true); onSetStartMinimized(isMinimized); - const uniApp = app || remote.app; + const uniApp = (process.type === 'renderer') ? remote.app : app; uniApp.setLoginItemSettings({ openAtLogin: autoStart, path: process.execPath, // Yes this is currently needed - thanks Electron @@ -471,7 +475,7 @@ class SettingsInterface extends ComponentEx { private readLocales(props: IProps) { const { extensions } = props; const bundledLanguages = getVortexPath('locales'); - const userLanguages = path.normalize(path.join(remote.app.getPath('userData'), 'locales')); + const userLanguages = path.normalize(path.join(getVortexPath('userData'), 'locales')); const translationExts = extensions.filter(ext => ext.type === 'translation'); diff --git a/src/extensions/starter_dashlet/Starter.tsx b/src/extensions/starter_dashlet/Starter.tsx index 331272ab6..01b98f5f5 100644 --- a/src/extensions/starter_dashlet/Starter.tsx +++ b/src/extensions/starter_dashlet/Starter.tsx @@ -10,6 +10,7 @@ import { DialogActions, DialogType, IDialogContent, IDialogResult } from '../../ import { IDiscoveredTool } from '../../types/IDiscoveredTool'; import { IRunningTool } from '../../types/IState'; import { ComponentEx, connect } from '../../util/ComponentEx'; +import lazyRequire from '../../util/lazyRequire'; import { log } from '../../util/log'; import { showError } from '../../util/message'; import { activeGameId } from '../../util/selectors'; @@ -34,8 +35,8 @@ import ToolButton from './ToolButton'; import ToolEditDialogT from './ToolEditDialog'; let ToolEditDialog: typeof ToolEditDialogT; +import * as remoteT from '@electron/remote'; import Promise from 'bluebird'; -import { remote } from 'electron'; import * as React from 'react'; import { Media, MenuItem } from 'react-bootstrap'; import * as ReactDOM from 'react-dom'; @@ -43,6 +44,8 @@ import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; import { generate as shortid } from 'shortid'; +const remote: typeof remoteT = lazyRequire(() => require('@electron/remote')); + interface IWelcomeScreenState { editTool: StarterInfo; counter: number; diff --git a/src/extensions/starter_dashlet/ToolEditDialog.tsx b/src/extensions/starter_dashlet/ToolEditDialog.tsx index e02804666..4c02058cb 100644 --- a/src/extensions/starter_dashlet/ToolEditDialog.tsx +++ b/src/extensions/starter_dashlet/ToolEditDialog.tsx @@ -19,7 +19,7 @@ import { addDiscoveredTool, setGameParameters } from '../gamemode_management/act import ToolIcon from './ToolIcon'; import Promise from 'bluebird'; -import { nativeImage, remote } from 'electron'; +import { nativeImage } from 'electron'; import * as _ from 'lodash'; import * as path from 'path'; import * as PropTypes from 'prop-types'; @@ -29,8 +29,6 @@ import { Col, ControlLabel, Form, FormControl, FormGroup, InputGroup, ListGroup, import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; -const {app} = remote; - interface IEnvButtonProps { t: TFunction; variable?: { key: string, value: string }; @@ -199,7 +197,7 @@ class ToolEditDialog extends ComponentEx { api: PropTypes.object.isRequired, }; - public context: IComponentContext; + public declare context: IComponentContext; private mUpdateImageDebouncer: Debouncer; constructor(props: IProps) { diff --git a/src/extensions/symlink_activator/index.ts b/src/extensions/symlink_activator/index.ts index 10842a32b..5fb856fcd 100644 --- a/src/extensions/symlink_activator/index.ts +++ b/src/extensions/symlink_activator/index.ts @@ -13,15 +13,10 @@ import LinkingDeployment from '../mod_management/LinkingDeployment'; import { IDeploymentMethod, IUnavailableReason } from '../mod_management/types/IDeploymentMethod'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; - -const app = appIn || remote.app; +import getVortexPath from '../../util/getVortexPath'; class DeploymendMethod extends LinkingDeployment { - public id: string; - public name: string; - public description: string; public compatible: string[] = ['symlink_activator_elevated']; public priority: number = 10; @@ -217,7 +212,7 @@ class DeploymendMethod extends LinkingDeployment { } private ensureAdmin(): boolean { - const userData = app.getPath('userData'); + const userData = getVortexPath('userData'); // any file we know exists const srcFile = path.join(userData, 'Cookies'); const destFile = path.join(userData, '__link_test'); diff --git a/src/extensions/symlink_activator_elevate/index.ts b/src/extensions/symlink_activator_elevate/index.ts index b575bab22..dc39b9fc1 100644 --- a/src/extensions/symlink_activator_elevate/index.ts +++ b/src/extensions/symlink_activator_elevate/index.ts @@ -25,7 +25,6 @@ import Settings from './Settings'; import walk from './walk'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import { TFunction } from 'i18next'; import JsonSocket from 'json-socket'; import * as net from 'net'; @@ -41,8 +40,6 @@ const TASK_NAME = 'Vortex Symlink Deployment'; const SCRIPT_NAME = 'vortexSymlinkService.js'; const IPC_ID = 'vortex_elevate_symlink'; -const app = appIn || remote.app; - function monitorConsent(onDisappeared: () => void): () => void { if (process.platform !== 'win32') { // on non-windows platforms we don't need to do any of this. @@ -94,9 +91,6 @@ function startIPCServer(ipcPath: string, onMessage: OnMessageCB): net.Server { } class DeploymentMethod extends LinkingDeployment { - public id: string; - public name: string; - public description: string; public compatible: string[] = ['symlink_activator']; public priority: number = 20; @@ -336,7 +330,7 @@ class DeploymentMethod extends LinkingDeployment { } private ensureAdmin(): boolean { - const userData = app.getPath('userData'); + const userData = getVortexPath('userData'); // any file we know exists const srcFile = path.join(userData, 'Cookies'); const destFile = path.join(userData, '__link_test'); @@ -731,7 +725,7 @@ function installTask(scriptPath: string) { } function ensureTaskEnabled(api: IExtensionApi, delayed: boolean) { - const scriptPath = path.join(app.getPath('userData'), SCRIPT_NAME); + const scriptPath = path.join(getVortexPath('userData'), SCRIPT_NAME); return fs.writeFileAsync(scriptPath, makeScript({ })) .then(() => { diff --git a/src/extensions/updater/autoupdater.ts b/src/extensions/updater/autoupdater.ts index 18c9ccded..733eadc38 100644 --- a/src/extensions/updater/autoupdater.ts +++ b/src/extensions/updater/autoupdater.ts @@ -8,14 +8,21 @@ import { truthy } from '../../util/util'; import { NEXUS_BASE_URL } from '../nexus_integration/constants'; -import {app as appIn, dialog as dialogIn, ipcMain, remote} from 'electron'; +import {app as appIn, dialog as dialogIn, ipcMain} from 'electron'; import {autoUpdater as AUType, UpdateInfo} from 'electron-updater'; import * as semver from 'semver'; import uuidv5 from 'uuid/v5'; import { RegGetValue } from 'winapi-bindings'; +import { getApplication } from '../../util/application'; -const app = remote !== undefined ? remote.app : appIn; -const dialog = remote !== undefined ? remote.dialog : dialogIn; +let app = appIn; +let dialog = dialogIn; +if (process.type === 'renderer') { + // tslint:disable-next-line:no-var-requires + const remote = require('@electron/remote'); + app = remote.app; + dialog = remote.dialog; +} const appName = 'com.nexusmods.vortex'; const ELECTRON_BUILDER_NS_UUID = '50e065bc-3134-11e6-9bab-38c9862bdaf3'; @@ -138,7 +145,7 @@ function setupAutoUpdate(api: IExtensionApi) { autoUpdater.on('update-available', (info: UpdateInfo) => { log('info', 'found update available', info.version); - const installedVersion = semver.parse(app.getVersion()); + const installedVersion = semver.parse(getApplication().version); const version = semver.parse(info.version); const channel = channelOverride ?? api.getState().settings.update.channel; @@ -184,7 +191,7 @@ function setupAutoUpdate(api: IExtensionApi) { } } log('info', 'update available', { - current: app.getVersion(), + current: getApplication().version, update: info.version, instPath, }); diff --git a/src/main.ts b/src/main.ts index 244d34b41..7a79314f3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,6 +2,7 @@ * entry point for the main process */ +import './util/application.electron'; import getVortexPath from './util/getVortexPath'; import { app, dialog } from 'electron'; @@ -132,8 +133,6 @@ const handleError = (error: any) => { }; function main() { - app.allowRendererProcessReuse = false; - const mainArgs = commandLine(process.argv, false); if (mainArgs.report) { return sendReportFile(mainArgs.report) @@ -142,6 +141,9 @@ function main() { }); } + // tslint:disable-next-line:no-submodule-imports + require('@electron/remote/main').initialize(); + let fixedT = require('i18next').getFixedT('en'); try { fixedT('dummy'); diff --git a/src/renderer.tsx b/src/renderer.tsx index 760a8940f..afa684544 100644 --- a/src/renderer.tsx +++ b/src/renderer.tsx @@ -5,7 +5,7 @@ const earlyErrHandler = (evt) => { const {error} = evt; // tslint:disable-next-line:no-shadowed-variable - const { remote } = require('electron'); + const remote = require('@electron/remote'); remote.dialog.showErrorBox('Unhandled error', error.stack); remote.app.exit(1); }; @@ -55,6 +55,7 @@ import * as path from 'path'; import { addNotification, setupNotificationSuppression } from './actions/notifications'; import reducer, { Decision } from './reducers/index'; +import './util/application.electron'; import { setOutdated, terminate, toError } from './util/errorHandling'; import ExtensionManager from './util/ExtensionManager'; import { ExtensionContext } from './util/ExtensionProvider'; @@ -69,9 +70,10 @@ import { reduxSanity, StateError } from './util/reduxSanity'; import LoadingScreen from './views/LoadingScreen'; import MainWindow from './views/MainWindow'; +import * as remote from '@electron/remote'; import * as msgpackT from '@msgpack/msgpack'; import Promise from 'bluebird'; -import { ipcRenderer, remote, webFrame } from 'electron'; +import { ipcRenderer, webFrame } from 'electron'; import { forwardToMain, replayActionRenderer } from 'electron-redux'; import { EventEmitter } from 'events'; import * as fs from 'fs-extra'; @@ -99,7 +101,7 @@ import { reduxLogger } from './util/reduxLogger'; import { getSafe } from './util/storeHelper'; import { bytesToString, getAllPropertyNames, replaceRecursive } from './util/util'; -log('debug', 'renderer process started', { pid: process.pid }); +log('debug', 'renderer process started', { pid: process['pid'] }); function fetchReduxState(tries: number = 5) { // using implicit structured clone algorithm diff --git a/src/util/ComponentEx.ts b/src/util/ComponentEx.ts index 3c709f0dc..015f8a544 100644 --- a/src/util/ComponentEx.ts +++ b/src/util/ComponentEx.ts @@ -6,6 +6,7 @@ import { deleteOrNop, setSafe } from './storeHelper'; import * as PropTypes from 'prop-types'; import { WithTranslation, withTranslation } from 'react-i18next'; +import { clearImmediate, setImmediate } from 'timers'; export { connect } from 'react-redux'; export { extend } from './ExtensionProvider'; @@ -129,7 +130,7 @@ export class ComponentEx getModifiers: PropTypes.func, }; - public context: IComponentContext; + public declare context: IComponentContext; public nextState: S; @@ -150,7 +151,7 @@ export class PureComponentEx getModifiers: PropTypes.func, }; - public context: IComponentContext; + public declare context: IComponentContext; public nextState: S; diff --git a/src/util/ExtensionManager.ts b/src/util/ExtensionManager.ts index da00c08f6..fdaf9a0bd 100644 --- a/src/util/ExtensionManager.ts +++ b/src/util/ExtensionManager.ts @@ -48,7 +48,7 @@ import { isFunction, setdefault, timeout, truthy, wrapExtCBAsync, wrapExtCBSync import Promise from 'bluebird'; import { spawn, SpawnOptions } from 'child_process'; import { app as appIn, dialog as dialogIn, ipcMain, ipcRenderer, OpenDialogOptions, - remote, WebContents } from 'electron'; + WebContents } from 'electron'; import { EventEmitter } from 'events'; import * as fs from 'fs-extra'; import * as fuzz from 'fuzzball'; @@ -64,17 +64,38 @@ import * as semver from 'semver'; import { generate as shortid } from 'shortid'; import stringFormat from 'string-template'; import { dynreq, runElevated } from 'vortex-run'; +import { getApplication } from './application'; +import makeRemoteCall from './electronRemote'; const ERROR_OUTPUT_CUTOFF = 3; let app = appIn; -let dialog = dialogIn; +// let dialog = dialogIn; -if (remote !== undefined) { +if (process.type === 'renderer') { + // tslint:disable-next-line:no-var-requires + const remote = require('@electron/remote'); app = remote.app; - dialog = remote.dialog; } +const showOpenDialog = makeRemoteCall('show-open-dialog', + (electron, contents, options: Electron.OpenDialogOptions) => { + const window = electron.BrowserWindow.fromWebContents(contents); + return electron.dialog.showOpenDialog(window, options); + }); + +const showErrorBox = makeRemoteCall('show-error-box', + (electron, contents, title: string, content: string) => { + electron.dialog.showErrorBox(title, content); + return undefined; + }); + +const showMessageBox = makeRemoteCall('show-message-box', + (electron, contents, options: Electron.MessageBoxOptions) => { + const window = electron.BrowserWindow.fromWebContents(contents); + return electron.dialog.showMessageBox(window, options); + }); + export interface IRegisteredExtension { name: string; namespace: string; @@ -410,7 +431,9 @@ class ContextProxyHandler implements ProxyHandler { this.getCalls('requireVersion').forEach(call => { if ((process.env.NODE_ENV !== 'development') - && !semver.satisfies(app.getVersion(), call.arguments[0], { includePrerelease: true })) { + && !semver.satisfies(getApplication().version, + call.arguments[0], + { includePrerelease: true })) { setdefault(incompatibleExtensions, call.extension, []).push( { id: 'unsupported-version' }); } @@ -422,7 +445,7 @@ class ContextProxyHandler implements ProxyHandler { this.mInitCalls = this.mInitCalls.filter((call: IInitCall) => incompatibleExtensions[call.extension] === undefined); } else { - if (remote !== undefined) { + if (process.type === 'renderer') { log('debug', 'all extensions compatible'); } } @@ -640,7 +663,7 @@ class ExtensionManager { // only the first extension with a specific name is loaded, so // load the bundled ones last so a user can replace them return [ - { path: path.join(app.getPath('userData'), 'plugins'), bundled: false }, + { path: path.join(getVortexPath('userData'), 'plugins'), bundled: false }, { path: getVortexPath('bundledPlugins'), bundled: true }, ]; } @@ -732,13 +755,13 @@ class ExtensionManager { // and everything in this phase of startup is synchronous anyway try { const disableExtensions = - fs.readdirSync(app.getPath('temp')) + fs.readdirSync(getVortexPath('temp')) .filter(name => name.startsWith('__disable_')); disableExtensions.forEach(ext => { const extId = ext.substr(10); log('info', 'disabling extension that caused a crash before', { extId }); initStore.dispatch(setExtensionEnabled(extId, false)); - fs.unlinkSync(path.join(app.getPath('temp'), ext)); + fs.unlinkSync(path.join(getVortexPath('temp'), ext)); }); } catch (err) { // an ENOENT will happen on the first start where the dir doesn't @@ -749,7 +772,7 @@ class ExtensionManager { } this.mExtensionState = initStore.getState().app.extensions; - const extensionsPath = path.join(app.getPath('userData'), 'plugins'); + const extensionsPath = path.join(getVortexPath('userData'), 'plugins'); Object.keys(this.mExtensionState) .filter(extId => this.mExtensionState[extId].remove) .forEach(extId => { @@ -766,7 +789,7 @@ class ExtensionManager { } else { this.mExtensionState = ipcRenderer.sendSync('__get_extension_state'); } - if (remote !== undefined) { + if (process.type === 'renderer') { this.mStyleManager = new StyleManager(this.mApi); } this.mExtensions = this.prepareExtensions(); @@ -1008,7 +1031,8 @@ class ExtensionManager { * once. */ public doOnce(): Promise { - const calls = this.mContextProxyHandler.getCalls(remote !== undefined ? 'once' : 'onceMain'); + const calls = this.mContextProxyHandler.getCalls( + process.type === 'renderer' ? 'once' : 'onceMain'); const reportError = (err: Error, call: IInitCall, allowReport: boolean = true) => { log('warn', 'failed to call once', @@ -1069,7 +1093,7 @@ class ExtensionManager { } public get numOnce() { - const calls = this.mContextProxyHandler.getCalls(remote !== undefined ? 'once' : 'onceMain'); + const calls = this.mContextProxyHandler.getCalls(process.type === 'renderer' ? 'once' : 'onceMain'); return calls.length; } @@ -1094,7 +1118,7 @@ class ExtensionManager { } private queryLoadTimeout(extension: string): Promise { - return Promise.resolve(dialog.showMessageBox(getVisibleWindow(), { + return Promise.resolve(showMessageBox({ type: 'warning', title: 'Extension slow', message: `An extension (${extension}) is taking unusually long to load. ` @@ -1169,7 +1193,7 @@ class ExtensionManager { } private connectMetaDB(gameId: string, apiKey: string): Promise { - const dbPath = path.join(app.getPath('userData'), 'metadb'); + const dbPath = path.join(getVortexPath('userData'), 'metadb'); return modmeta.ModDB.create( dbPath, gameId, this.getMetaServerList(), log) @@ -1183,7 +1207,7 @@ class ExtensionManager { ]) .then(result => { if (result.action === 'Quit') { - app.quit(); + getApplication().quit(); return Promise.reject(new ProcessCanceled('meta db locked')); } return this.connectMetaDB(gameId, apiKey); @@ -1242,9 +1266,9 @@ class ExtensionManager { private showErrorBox = (message: string, details: string | Error | any) => { if (typeof (details) === 'string') { - dialog.showErrorBox(message, details); + showErrorBox(message, details); } else { - dialog.showErrorBox(message, details.message); + showErrorBox(message, details.message); } } @@ -1259,7 +1283,7 @@ class ExtensionManager { this.mContextProxyHandler = new ContextProxyHandler(context); const contextProxy = new Proxy(context, this.mContextProxyHandler); this.mExtensions.forEach(ext => { - if (remote !== undefined) { + if (process.type === 'renderer') { // log this only once so we don't spam the log file with this log('info', 'init extension', {name: ext.name, path: ext.path}); } @@ -1299,8 +1323,7 @@ class ExtensionManager { this.mApi.ext[key] = func; }); - if (remote !== undefined) { - // renderer process + if (process.type === 'renderer') { log('info', 'all extensions initialized'); } } @@ -1353,7 +1376,7 @@ class ExtensionManager { } private getPath(name: string) { - return app.getPath(name as any); + return getVortexPath(name as any); } private selectFile(options: IOpenOptions): Promise { @@ -1364,8 +1387,7 @@ class ExtensionManager { if (options.create === true) { fullOptions.properties.push('promptToCreate'); } - const win = remote !== undefined ? remote.getCurrentWindow() : null; - return Promise.resolve(dialog.showOpenDialog(win, fullOptions)) + return Promise.resolve(showOpenDialog(fullOptions)) .then(result => (result.filePaths !== undefined) && (result.filePaths.length > 0) ? result.filePaths[0] : undefined); @@ -1383,8 +1405,7 @@ class ExtensionManager { { name: 'Python', extensions: ['py'] }, ], }; - const win = remote !== undefined ? remote.getCurrentWindow() : null; - return Promise.resolve(dialog.showOpenDialog(win, fullOptions)) + return Promise.resolve(showOpenDialog(fullOptions)) .then(result => (result.filePaths !== undefined) && (result.filePaths.length > 0) ? result.filePaths[0] : undefined); @@ -1395,8 +1416,7 @@ class ExtensionManager { ..._.omit(options, ['create']), properties: ['openDirectory'], }; - const win = remote !== undefined ? remote.getCurrentWindow() : null; - return Promise.resolve(dialog.showOpenDialog(win, fullOptions)) + return Promise.resolve(showOpenDialog(fullOptions)) .then(result => (result.filePaths !== undefined) && (result.filePaths.length > 0) ? result.filePaths[0] : undefined); diff --git a/src/util/StarterInfo.ts b/src/util/StarterInfo.ts index 81e30f6f1..465047f5a 100644 --- a/src/util/StarterInfo.ts +++ b/src/util/StarterInfo.ts @@ -14,16 +14,25 @@ import { getGame } from '../extensions/gamemode_management/util/getGame'; import { IExtensionApi } from '../types/IExtensionContext'; +import { getApplication } from './application'; import { MissingDependency, MissingInterpreter, ProcessCanceled, UserCanceled } from './CustomErrors'; +import getVortexPath from './getVortexPath'; import Promise from 'bluebird'; -import { remote } from 'electron'; import * as fs from 'fs'; import * as path from 'path'; import { GameEntryNotFound } from '../types/IGameStore'; import { GameNotFound } from './Steam'; +function getCurrentWindow() { + if (process.type === 'renderer') { + return require('@electron/remote').getCurrentWindow(); + } else { + return undefined; + } +} + export interface IStarterInfo { id: string; gameId: string; @@ -44,16 +53,6 @@ export interface IStarterInfo { logoName: string; } -const userDataPath = ((): () => string => { - let cache: string; - return () => { - if (cache === undefined) { - cache = remote.app.getPath('userData'); - } - return cache; - }; -})(); - type OnShowErrorFunc = (message: string, details?: string | Error | any, allowReport?: boolean) => void; @@ -72,7 +71,7 @@ class StarterInfo implements IStarterInfo { } public static toolIconRW(gameId: string, toolId: string) { - return path.join(userDataPath(), gameId, 'icons', toolId + '.png'); + return path.join(getVortexPath('userData'), gameId, 'icons', toolId + '.png'); } public static run(info: IStarterInfo, api: IExtensionApi, onShowError: OnShowErrorFunc) { @@ -103,9 +102,9 @@ class StarterInfo implements IStarterInfo { // to the launcher api.store.dispatch(setToolRunning(info.exePath, Date.now(), info.exclusive)); if (['hide', 'hide_recover'].includes(info.onStart)) { - remote.getCurrentWindow().hide(); + getCurrentWindow().hide(); } else if (info.onStart === 'close') { - remote.app.quit(); + getApplication().quit(); } }) .catch(GameNotFound, () => { @@ -151,9 +150,9 @@ class StarterInfo implements IStarterInfo { const spawned = () => { onSpawned(); if (['hide', 'hide_recover'].includes(info.onStart)) { - remote.getCurrentWindow().hide(); + getCurrentWindow().hide(); } else if (info.onStart === 'close') { - remote.app.quit(); + getApplication().quit(); } }; @@ -219,8 +218,8 @@ class StarterInfo implements IStarterInfo { }) .then(() => { if ((info.onStart === 'hide_recover') - && !remote.getCurrentWindow().isVisible()) { - remote.getCurrentWindow().show(); + && !getCurrentWindow().isVisible()) { + getCurrentWindow().show(); } }); } @@ -252,7 +251,7 @@ class StarterInfo implements IStarterInfo { } private static gameIconRW(gameId: string) { - return path.join(userDataPath(), gameId, 'icon.png'); + return path.join(getVortexPath('userData'), gameId, 'icon.png'); } private static toolIcon(gameId: string, extensionPath: string, diff --git a/src/util/Steam.ts b/src/util/Steam.ts index 53297a7aa..d7c12922a 100644 --- a/src/util/Steam.ts +++ b/src/util/Steam.ts @@ -4,7 +4,6 @@ import * as fs from './fs'; import { log } from './log'; import { getSafeCI } from './storeHelper'; -import { app as appIn, remote } from 'electron'; import * as path from 'path'; import { parse } from 'simple-vdf'; import * as winapi from 'winapi-bindings'; @@ -13,8 +12,7 @@ import { ICustomExecutionInfo, IExecInfo, IGameStore, IGameStoreEntry } from '.. import opn from './opn'; import { IExtensionApi } from '../types/IExtensionContext'; - -const app = (remote !== undefined) ? remote.app : appIn; +import getVortexPath from './getVortexPath'; const STORE_ID = 'steam'; const STEAM_EXEC = 'Steam.exe'; @@ -58,7 +56,7 @@ class Steam implements IGameStore { this.mBaseFolder = Promise.resolve(undefined); } } else { - this.mBaseFolder = Promise.resolve(path.resolve(app.getPath('home'), '.steam', 'steam')); + this.mBaseFolder = Promise.resolve(path.resolve(getVortexPath('home'), '.steam', 'steam')); } } diff --git a/src/util/StyleManager.ts b/src/util/StyleManager.ts index 8842aef4a..9e3764a4a 100644 --- a/src/util/StyleManager.ts +++ b/src/util/StyleManager.ts @@ -6,12 +6,11 @@ import {log} from './log'; import { sanitizeCSSId } from './util'; import Promise from 'bluebird'; -import { app as appIn, ipcMain, ipcRenderer, remote } from 'electron'; +import { ipcMain, ipcRenderer } from 'electron'; import * as _ from 'lodash'; import * as path from 'path'; import * as sassT from 'sass'; - -const app = appIn || remote.app; +import { getApplication } from './application'; function asarUnpacked(input: string): string { return input.replace('app.asar' + path.sep, 'app.asar.unpacked' + path.sep); @@ -68,7 +67,7 @@ if (ipcMain !== undefined) { }).join('\n'); // development builds are always versioned as 0.0.1 - const isDevel: boolean = app.getVersion() === '0.0.1'; + const isDevel: boolean = getApplication().version === '0.0.1'; const assetsPath = path.join(getVortexPath('assets_unpacked'), 'css'); const modulesPath = getVortexPath('modules_unpacked'); diff --git a/src/util/api.ts b/src/util/api.ts index 88a5b7353..ea643aaa0 100644 --- a/src/util/api.ts +++ b/src/util/api.ts @@ -25,6 +25,7 @@ import sortMods, { CycleError } from '../extensions/mod_management/util/sort'; import testModReference from '../extensions/mod_management/util/testModReference'; import { convertGameIdReverse, nexusGameId } from '../extensions/nexus_integration/util/convertGameId'; import GameStoreHelper from '../util/GameStoreHelper'; +import { getApplication } from './application'; import { Archive } from './archives'; import bbcodeToReact, { bbcodeToHTML } from './bbcode'; import { checksum, fileMD5 } from './checksum'; @@ -92,6 +93,7 @@ export { GameNotFound, GameStoreHelper, getActivator, + getApplication, getCurrentActivator, getCurrentLanguage, getGame, diff --git a/src/util/application.electron.ts b/src/util/application.electron.ts new file mode 100644 index 000000000..f4d2768d3 --- /dev/null +++ b/src/util/application.electron.ts @@ -0,0 +1,55 @@ +import { app as appIn, BrowserWindow } from 'electron'; +import { getApplication, IApplication, setApplication } from './application'; + +class ElectronApplication implements IApplication { + private mName: string; + private mVersion: string; + private mFocused: () => boolean; + private mWindow: BrowserWindow; + private mApp: Electron.App; + + constructor() { + const remote = process.type === 'browser' ? undefined : require('@electron/remote'); + this.mApp = remote?.app ?? appIn; + + this.mName = this.mApp.name; + this.mVersion = this.mApp.getVersion(); + if (remote !== undefined) { + this.mWindow = remote.getCurrentWindow(); + } + // if called from renderer process, this will determine if this window is focused, + // if called from browser process, it will determine if _any_ Vortex window is focused + this.mFocused = (remote !== undefined) + ? () => remote.getCurrentWindow().isFocused() + : () => BrowserWindow.getAllWindows().find(win => win.isFocused()) !== undefined; + } + + public get name() { + return this.mName; + } + + public get version() { + return this.mVersion; + } + + public get window(): BrowserWindow { + return this.mWindow; + } + + public get memory(): { total: number } { + return process.getSystemMemoryInfo(); + } + + /** + * returns whether the window is in focus + */ + public get isFocused(): boolean { + return this.mFocused(); + } + + public quit(exitCode?: number): void { + this.mApp.exit(exitCode); + } +} + +setApplication(new ElectronApplication()); diff --git a/src/util/application.ts b/src/util/application.ts new file mode 100644 index 000000000..a7400514e --- /dev/null +++ b/src/util/application.ts @@ -0,0 +1,39 @@ +import local from './local'; + +export interface IApplication { + name: string; + version: string; + isFocused: boolean; + window: Electron.BrowserWindow; + memory: { + total: number; + }; + quit: (exitCode?: number) => void; +} + +const app: { inst: IApplication } = local('application_global', { inst: { + name: 'vortex', + version: '0.0.1', + isFocused: true, + window: null, + memory: { + total: 0, + }, + quit: (code?: number) => process['exit'](code), +}}); + +export function setApplication(appIn: IApplication) { + app.inst = appIn; +} + +export function getApplication() { + return app.inst; +} + +const proxy: unknown = new Proxy(app, { + get: (target, key, receiver) => Reflect.get(target.inst, key, receiver), + set: () => { throw new Error('attempt to change read-only object'); }, + deleteProperty: () => { throw new Error('attempt to change read-only object'); }, +}); + +export default proxy as IApplication; diff --git a/src/util/commandLine.ts b/src/util/commandLine.ts index c2c521571..eace64875 100644 --- a/src/util/commandLine.ts +++ b/src/util/commandLine.ts @@ -1,6 +1,7 @@ import program from 'commander'; import { app, ipcMain, ipcRenderer } from 'electron'; import * as process from 'process'; +import { getApplication } from './application'; import startupSettings from './startupSettings'; export interface IParameters { @@ -99,7 +100,7 @@ function parseCommandline(argv: string[], electronIsShitHack: boolean): IParamet let version: string = '1.0.0'; try { // won't happen in regular operation but lets us test this function outside vortex - version = app.getVersion(); + version = getApplication().version; } catch (err) { // nop } diff --git a/src/util/electron.ts b/src/util/electron.ts new file mode 100644 index 000000000..a151bbb29 --- /dev/null +++ b/src/util/electron.ts @@ -0,0 +1,13 @@ +import * as remoteT from '@electron/remote'; +import * as electron from 'electron'; + +const myExport: typeof electron & { remote?: typeof remoteT } = { + ...electron, +}; + +module.exports = myExport; + +if (process.type === 'renderer') { + // tslint:disable-next-line:no-var-requires + module.exports['remote'] = require('@electron/remote'); +} diff --git a/src/util/electronRemote.ts b/src/util/electronRemote.ts new file mode 100644 index 000000000..80eef13d9 --- /dev/null +++ b/src/util/electronRemote.ts @@ -0,0 +1,72 @@ +import { ipcMain, ipcRenderer } from 'electron'; +import * as electron from 'electron'; +import { generate as shortid } from 'shortid'; +import { log } from './log'; + +const IPC_CHANNEL = '__remote_electron_invocation'; +const IPC_CHANNEL_REPLY = IPC_CHANNEL + '_reply'; + +type StoredCB = (mainElectron: typeof electron, ...args: any[]) => Promise; + +const knownCalls: { [id: string]: StoredCB } = {}; + +interface IOutstandingCall { + resolve: (res: any) => void; + reject: (err: Error) => void; +} + +const outstandingCalls: { [callId: string]: IOutstandingCall } = {}; + +ipcMain?.on?.(IPC_CHANNEL, async (event, arg) => { + const { id, callId, args } = JSON.parse(arg); + if (knownCalls[id] === undefined) { + event.sender.send(IPC_CHANNEL_REPLY, + JSON.stringify({ callId, error: new Error('invalid remote call') })); + return; + } + + try { + const result = await knownCalls[id](electron, event.sender, ...args); + event.sender.send(IPC_CHANNEL_REPLY, JSON.stringify({ callId, result })); + } catch (error) { + event.sender.send(IPC_CHANNEL_REPLY, JSON.stringify({ callId, error })); + } +}); + +ipcRenderer?.on?.(IPC_CHANNEL_REPLY, (event, arg) => { + const { callId, error, result } = JSON.parse(arg); + if (outstandingCalls[callId] === undefined) { + log('warn', 'unexpected remote reply', arg); + return; + } + + if (error !== undefined) { + outstandingCalls[callId].reject(error); + } else { + outstandingCalls[callId].resolve(result); + } + delete outstandingCalls[callId]; +}); + +function makeRemoteCall(id: string, + cb: (mainElectron: typeof electron, + window: electron.WebContents, + ...args: any[]) => Promise) + : (...args: any[]) => Promise { + if (ipcRenderer !== undefined) { + return (...args: any[]) => { + const callId = shortid(); + ipcRenderer.send(IPC_CHANNEL, JSON.stringify({ id, args, callId })); + return new Promise((resolve, reject) => { + outstandingCalls[callId] = { resolve, reject }; + }); + }; + } else { + knownCalls[id] = cb; + return (...args: any[]) => { + return cb(electron, electron.webContents.getFocusedWebContents(), args); + }; + } +} + +export default makeRemoteCall; diff --git a/src/util/errorHandling.ts b/src/util/errorHandling.ts index cc7897550..59c76cf57 100644 --- a/src/util/errorHandling.ts +++ b/src/util/errorHandling.ts @@ -13,14 +13,13 @@ import opn from './opn'; import { getSafe } from './storeHelper'; import { flatten, getAllPropertyNames, spawnSelf, truthy } from './util'; +import * as RemoteT from '@electron/remote'; import NexusT, { IFeedbackResponse } from '@nexusmods/nexus-api'; import Promise from 'bluebird'; import { - app as appIn, BrowserWindow, dialog as dialogIn, ipcRenderer, - remote, } from 'electron'; import * as fs from 'fs-extra'; import I18next from 'i18next'; @@ -29,6 +28,10 @@ import * as path from 'path'; import * as semver from 'semver'; import { inspect } from 'util'; import {} from 'uuid'; +import { getApplication } from './application'; +import lazyRequire from './lazyRequire'; + +const remote = lazyRequire(() => require('@electron/remote')); function createTitle(type: string, error: IError, hash: string) { return `${type}: ${error.message}`; @@ -111,8 +114,7 @@ ${error.stack} export function createErrorReport(type: string, error: IError, context: IErrorContext, labels: string[], state: any, sourceProcess?: string) { - const app = appIn || remote.app; - const reportPath = path.join(app.getPath('userData'), 'crashinfo.json'); + const reportPath = path.join(getVortexPath('userData'), 'crashinfo.json'); fs.writeFileSync(reportPath, JSON.stringify({ type, error, labels: labels || [], context, reporterId: getSafe(state, ['confidential', 'account', 'nexus', 'APIKey'], undefined), @@ -124,14 +126,13 @@ export function createErrorReport(type: string, error: IError, context: IErrorCo function nexusReport(hash: string, type: string, error: IError, labels: string[], context: IErrorContext, apiKey: string, reporterProcess: string, sourceProcess: string, attachment: string): Promise { - const app = appIn || remote.app; const Nexus: typeof NexusT = require('@nexusmods/nexus-api').default; const referenceId = require('uuid').v4(); - return Promise.resolve(Nexus.create(apiKey, 'Vortex', app.getVersion(), undefined)) + return Promise.resolve(Nexus.create(apiKey, 'Vortex', getApplication().version, undefined)) .then(nexus => nexus.sendFeedback( createTitle(type, error, hash), - createReport(type, error, context, app.getVersion(), reporterProcess, sourceProcess), + createReport(type, error, context, getApplication().version, reporterProcess, sourceProcess), attachment, apiKey === undefined, hash, @@ -157,8 +158,7 @@ export function setOutdated(api: IExtensionApi) { return; } const state = api.store.getState(); - const app = appIn || remote.app; - const version = app.getVersion(); + const version = getApplication().version; if (state.persistent.nexus?.newestVersion !== undefined) { try { outdated = semver.lt(version, state.persistent.nexus.newestVersion); @@ -221,9 +221,9 @@ export function sendReport(type: string, error: IError, context: IErrorContext, labels: string[], reporterId: string, reporterProcess: string, sourceProcess: string, attachment: string): Promise { + const dialog = process.type === 'renderer' ? remote.dialog : dialogIn; const hash = genHash(error); if (process.env.NODE_ENV === 'development') { - const dialog = dialogIn || remote.dialog; const fullMessage = error.title !== undefined ? error.message + `\n(${error.title})` : error.message; @@ -248,9 +248,20 @@ export function getWindow(): BrowserWindow { return defaultWindow; } +let currentWindow: BrowserWindow; + +function getCurrentWindow() { + if (currentWindow === undefined) { + currentWindow = process.type === 'renderer' + ? remote.getCurrentWindow() : null; + } + + return currentWindow; +} + export function getVisibleWindow(win?: BrowserWindow): BrowserWindow | null { if (!truthy(win)) { - win = remote !== undefined ? remote.getCurrentWindow() : getWindow(); + win = getCurrentWindow() ?? getWindow(); } return ((win !== null) && !win.isDestroyed() && win.isVisible()) @@ -268,9 +279,8 @@ export function getVisibleWindow(win?: BrowserWindow): BrowserWindow | null { * @param {ITermination} error */ export function terminate(error: IError, state: any, allowReport?: boolean, source?: string) { - const app = appIn || remote.app; - const dialog = dialogIn || remote.dialog; - let win = remote !== undefined ? remote.getCurrentWindow() : defaultWindow; + const dialog = process.type === 'renderer' ? remote.dialog : dialogIn; + let win = process.type === 'renderer' ? remote.getCurrentWindow() : defaultWindow; if (truthy(win) && (win.isDestroyed() || !win.isVisible())) { win = null; } @@ -349,7 +359,7 @@ export function terminate(error: IError, state: any, allowReport?: boolean, sour }); // can't access the store at this point because we won't be waiting for the store // to be persisted - fs.writeFileSync(path.join(app.getPath('temp'), '__disable_' + error.extension), ''); + fs.writeFileSync(path.join(getVortexPath('temp'), '__disable_' + error.extension), ''); } } } catch (err) { @@ -361,7 +371,7 @@ export function terminate(error: IError, state: any, allowReport?: boolean, sour 'issue tracker (github)'); } - app.exit(1); + getApplication().quit(1); throw new UserCanceled(); } diff --git a/src/util/exeIcon.ts b/src/util/exeIcon.ts index 3c4a664fd..c30ffeb04 100644 --- a/src/util/exeIcon.ts +++ b/src/util/exeIcon.ts @@ -1,8 +1,11 @@ -import { app as appIn, remote } from 'electron'; +import { app } from 'electron'; import * as iconExtract from 'icon-extract'; import * as fs from './fs'; -const app = remote !== undefined ? remote.app : appIn; +const getFileIcon = (process.type === 'renderer') + // tslint:disable-next-line:no-var-requires + ? require('@electron/remote').app.getFileIcon + : app.getFileIcon; function extractExeIcon(exePath: string, destPath: string): Promise { if (process.platform === 'win32') { @@ -18,8 +21,7 @@ function extractExeIcon(exePath: string, destPath: string): Promise { }); }); } else { - app - .getFileIcon(exePath, { size: 'normal' }) + getFileIcon(exePath, { size: 'normal' }) .then(icon => fs.writeFileAsync(destPath, icon.toPNG())); } } diff --git a/src/util/fs.ts b/src/util/fs.ts index 2fed67507..35979c05a 100644 --- a/src/util/fs.ts +++ b/src/util/fs.ts @@ -21,7 +21,7 @@ import { decodeSystemError } from './nativeErrors'; import { truthy } from './util'; import PromiseBB from 'bluebird'; -import { dialog as dialogIn, remote } from 'electron'; +import { dialog as dialogIn } from 'electron'; import * as fs from 'fs-extra'; import JsonSocket from 'json-socket'; import * as _ from 'lodash'; @@ -34,7 +34,10 @@ import * as tmp from 'tmp'; import { runElevated } from 'vortex-run'; import wholocks from 'wholocks'; -const dialog = remote !== undefined ? remote.dialog : dialogIn; +const dialog = (process.type === 'renderer') + // tslint:disable-next-line:no-var-requires + ? require('@electron/remote').dialog + : dialogIn; export { constants, FSWatcher, Stats, WriteStream } from 'fs'; diff --git a/src/util/getVortexPath.ts b/src/util/getVortexPath.ts index 6ea99fec0..a1f038812 100644 --- a/src/util/getVortexPath.ts +++ b/src/util/getVortexPath.ts @@ -1,11 +1,15 @@ -import { app as appIn, remote } from 'electron'; +import { app as appIn } from 'electron'; import * as path from 'path'; -const app = remote !== undefined ? remote.app : appIn; +const app = process.type === 'browser' + ? appIn + // tslint:disable-next-line:no-var-requires + : require('@electron/remote').app; export type AppPath = 'base' | 'assets' | 'assets_unpacked' | 'modules' | 'modules_unpacked' - | 'bundledPlugins' | 'locales' | 'package' | 'application' - | 'userData' | 'appData' | 'localAppData' | 'temp' | 'home' | 'documents'; + | 'bundledPlugins' | 'locales' | 'package' | 'package_unpacked' | 'application' + | 'userData' | 'appData' | 'localAppData' | 'temp' | 'home' | 'documents' + | 'exe' | 'desktop'; /** * app.getAppPath() returns the path to the app.asar, @@ -60,10 +64,17 @@ function getLocalesPath(): string { /** * path to the directory containing package.json file */ -function getPackagePath(): string { - return isDevelopment - ? applicationPath - : basePath; +function getPackagePath(unpacked: boolean): string { + if (isDevelopment) { + return applicationPath; + } + + let res = basePath; + if (unpacked && (path.basename(res) === 'app.asar')) { + res = path.join(path.dirname(res), 'app.asar.unpacked'); + } + + return res; } const cachedAppPath = (() => { @@ -97,20 +108,41 @@ const localAppData = (() => { */ function getVortexPath(id: AppPath): string { switch (id) { + // c:\users\\appdata\roaming\vortex case 'userData': return cachedAppPath('userData'); + // c:\users\\appdata\roaming\vortex\temp case 'temp': return cachedAppPath('temp'); + // c:\users\\appdata\roaming case 'appData': return cachedAppPath('appData'); + // c:\users\\appdata\local case 'localAppData': return localAppData(); + // C:\Users\Tannin case 'home': return cachedAppPath('home'); + // C:\Users\Tannin\Documents case 'documents': return cachedAppPath('documents'); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\Vortex.exe + case 'exe': return cachedAppPath('exe'); + // C:\Users\Tannin\Desktop + case 'desktop': return cachedAppPath('desktop'); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar case 'base': return basePath; + // C:\Program Files\Black Tree Gaming Ltd\Vortex case 'application': return applicationPath; - case 'package': return getPackagePath(); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar + case 'package': return getPackagePath(false); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar.unpacked + case 'package_unpacked': return getPackagePath(true); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar\assets case 'assets': return getAssets(false); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar.unpacked\assets case 'assets_unpacked': return getAssets(true); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar\node_modules case 'modules': return getModulesPath(false); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar.unpacked\node_modules case 'modules_unpacked': return getModulesPath(true); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar.unpacked\bundledPlugins case 'bundledPlugins': return getBundledPluginsPath(); + // C:\Program Files\Black Tree Gaming Ltd\Vortex\resources\locales case 'locales': return getLocalesPath(); } } diff --git a/src/util/i18n.ts b/src/util/i18n.ts index 41d8d0e32..c5b031de6 100644 --- a/src/util/i18n.ts +++ b/src/util/i18n.ts @@ -5,7 +5,6 @@ import getVortexPath from './getVortexPath'; import { log } from './log'; import Promise from 'bluebird'; -import { app as appIn, remote } from 'electron'; import I18next, { i18n, TOptions } from 'i18next'; import FSBackend from 'i18next-node-fs-backend'; import * as path from 'path'; @@ -13,8 +12,6 @@ import { initReactI18next } from 'react-i18next'; type TFunction = typeof I18next.t; -const app = remote !== undefined ? remote.app : appIn; - let debugging = false; let currentLanguage = 'en'; const fallbackTFunc: TFunction = @@ -197,7 +194,7 @@ function init(language: string, translationExts: () => IExtension[]): Promise { + ipcRenderer.send('__libxmljs_del', heldValue); +}) : null; + +/** + * proxy handler around libxmljs objects that forwards all access to the main process + */ +class XMLProxy implements ProxyHandler { + public get(target: IProxyRef, p: string | symbol, receiver: any): any { + if ((target.proxy === undefined) + || ((typeof p === 'string') && !target.props.includes(p))) { + return (...args) => { + return this.deserializeResult( + ipcRenderer.sendSync('__libxmljs_invoke', p, target?.['proxy'], args)); + }; + } else { + return this.deserializeResult( + ipcRenderer.sendSync('__libxmljs_get', p, target?.['proxy'])); + } + } + + private deserializeResult(res) { + if (res.error !== undefined) { + throw new Error(res.error); + } else if (res.results !== undefined) { + return res.results.map(i => this.unpackProxy(i)); + } else { + return this.unpackProxy(res); + } + } + + private unpackProxy(input) { + if (input.result !== undefined) { + return input.result; + } else { + const prox = new Proxy(input, new XMLProxy()); + finReg.register(prox, input.proxy); + return prox; + } + } +} + +/** + * for plain data types, pack the data, otherwise pack just an object id for the proxy + */ +function packProperty(res) { + if (isPlain(res)) { + return { result: res }; + } + const id = shortid(); + knownObjects[id] = res; + + return { + proxy: id, + props: Object.getOwnPropertyNames(res).filter(key => !isFunction(res[key])), + }; +} + +function serializeResult(res) { + return (Array.isArray(res)) + ? { results: res.map(i => packProperty(i)) } + : packProperty(res); +} + +if (process['type'] === 'renderer') { + module.exports = new Proxy({ proxy: undefined }, new XMLProxy()); +} else { + // tslint:disable-next-line:no-var-requires + const libxmljs: typeof libxmljsT = require('libxmljs'); + + // function invocation to a libxmljs object + ipcMain.on('__libxmljs_invoke', (event, func: string, obj: string, args) => { + try { + if ((obj !== undefined) && (knownObjects[obj][func] === undefined)) { + const type = knownObjects[obj].type?.() ?? 'custom'; + event.returnValue = { + error: `Element of type ${type} has no property ${func}` }; + return; + } + const res = (obj === undefined) + ? libxmljs[func](...args) + : knownObjects[obj][func](...args); + + event.returnValue = serializeResult(res); + } catch (err) { + event.returnValue = { error: err.message }; + } + }); + + // data access to a libxmljs object + ipcMain.on('__libxmljs_get', (event, prop: string, obj: string) => { + const res = (obj === undefined) + ? libxmljs[prop] + : knownObjects[obj][prop]; + event.returnValue = serializeResult(res); + }); + + ipcMain.on('__libxmljs_del', (event, objId) => { + delete knownObjects[objId]; + }); + + // tslint:disable-next-line:no-var-requires + module.exports = require('libxmljs'); +} diff --git a/src/util/makeCaseInsensitive.ts b/src/util/makeCaseInsensitive.ts index af889a02f..f7a00b722 100644 --- a/src/util/makeCaseInsensitive.ts +++ b/src/util/makeCaseInsensitive.ts @@ -1,4 +1,4 @@ -function normalize(key: PropertyKey): PropertyKey { +function normalize(key: string | symbol): string | symbol { return typeof(key) === 'string' ? key.toLowerCase() : key; } @@ -13,15 +13,15 @@ function makeInsensitive(input: any): any { return prev; }, {}); return new Proxy(inputL, { - has: (target: any, key: PropertyKey) => + has: (target: any, key: string | symbol) => Reflect.has(target, key) || Reflect.has(target, normalize(key)), - get: (target: any, key: PropertyKey) => + get: (target: any, key: string | symbol) => target[key] !== undefined ? target[key] : Reflect.get(target, normalize(key)), - set: (target: any, key: PropertyKey, value, receiver) => + set: (target: any, key: string | symbol, value, receiver) => Reflect.set(target, normalize(key), value, receiver), - getOwnPropertyDescriptor: (target: any, key: PropertyKey) => + getOwnPropertyDescriptor: (target: any, key: string | symbol) => Reflect.getOwnPropertyDescriptor(target, key) || Reflect.getOwnPropertyDescriptor(target, normalize(key)), ownKeys: (target: any) => diff --git a/src/util/menu.ts b/src/util/menu.ts index 774d492bf..106cccbaa 100644 --- a/src/util/menu.ts +++ b/src/util/menu.ts @@ -4,11 +4,15 @@ import ExtensionManager from './ExtensionManager'; import { debugTranslations, getMissingTranslations } from './i18n'; import { log } from './log'; -import { remote, webFrame } from 'electron'; +import * as RemoteT from '@electron/remote'; +import { webFrame } from 'electron'; import * as path from 'path'; import { setZoomFactor } from '../actions/window'; +import { getApplication } from './application'; +import getVortexPath from './getVortexPath'; +import lazyRequire from './lazyRequire'; -const { app, Menu, clipboard, contentTracing } = remote; +const remote = lazyRequire(() => require('@electron/remote')); /** * initializes the application menu and with it, hotkeys @@ -42,7 +46,7 @@ export function initApplicationMenu(extensions: ExtensionManager) { { label: 'Close', click() { - remote.app.quit(); + getApplication().quit(); }, }, ]; @@ -129,7 +133,7 @@ export function initApplicationMenu(extensions: ExtensionManager) { viewMenu.push({ label: 'Copy missing translations to clipboard', click(item, focusedWindow) { - clipboard.writeText(JSON.stringify(getMissingTranslations(), undefined, 2)); + remote.clipboard.writeText(JSON.stringify(getMissingTranslations(), undefined, 2)); }, }); viewMenu[copyTranslationsIdx].enabled = false; @@ -157,8 +161,8 @@ export function initApplicationMenu(extensions: ExtensionManager) { let profiling: boolean = false; const stopProfiling = () => { - const outPath = path.join(app.getPath('temp'), 'profile.dat'); - contentTracing.stopRecording(outPath) + const outPath = path.join(getVortexPath('temp'), 'profile.dat'); + remote.contentTracing.stopRecording(outPath) .then(() => { extensions.getApi().sendNotification({ id: 'profiling', @@ -187,9 +191,9 @@ export function initApplicationMenu(extensions: ExtensionManager) { categoryFilter: defaultTraceCategories.join(','), traceOptions: 'record-until-full,enable-sampling', options: 'sampling-frequency=10000', - } + }; - contentTracing.startRecording(options).then(() => { + remote.contentTracing.startRecording(options).then(() => { console.log('Tracing started'); extensions.getApi().sendNotification({ id: 'profiling', @@ -211,12 +215,12 @@ export function initApplicationMenu(extensions: ExtensionManager) { }, }]; - const menu = Menu.buildFromTemplate([ + const menu = remote.Menu.buildFromTemplate([ { label: 'File', submenu: fileMenu }, { label: 'View', submenu: viewMenu }, { label: 'Performance', submenu: performanceMenu }, ]); - Menu.setApplicationMenu(menu); + remote.Menu.setApplicationMenu(menu); }; refresh(); return refresh; diff --git a/src/util/network.ts b/src/util/network.ts index f1970e23f..3a28d8625 100644 --- a/src/util/network.ts +++ b/src/util/network.ts @@ -7,7 +7,7 @@ import { log } from './log'; export interface IRequestOptions { expectedContentType?: RegExp; - encoding?: string; + encoding?: BufferEncoding; } export function rawRequest(apiURL: string, options?: IRequestOptions): Promise { diff --git a/src/util/requireRebuild.ts b/src/util/requireRebuild.ts index c5db24059..5b3bbd4ba 100644 --- a/src/util/requireRebuild.ts +++ b/src/util/requireRebuild.ts @@ -2,14 +2,12 @@ import { log } from './log'; import { spawnSync, SpawnSyncOptions } from 'child_process'; import { createHash } from 'crypto'; -import { app as appIn, remote } from 'electron'; import * as fs from 'fs-extra'; import {} from 'module'; import * as os from 'os'; import * as path from 'path'; import * as reqResolve from 'resolve'; - -const app = appIn || remote.app; +import getVortexPath from './getVortexPath'; // tslint:disable-next-line:no-var-requires const Module = require('module'); @@ -34,7 +32,7 @@ const loggingHandler = { // e.g. const modulesToLog = new Set(['https']); const modulesToLog = new Set([]); -const cachePath = path.join(app.getPath('temp'), 'native_cache'); +const cachePath = path.join(getVortexPath('temp'), 'native_cache'); fs.ensureDirSync(cachePath); // whitelist of native libraries that we know should load correctly. @@ -48,6 +46,7 @@ const nativeLibs = [ 'msgpack', 'native-errors', 'permissions', + 'vortexmt', 'windump', ]; diff --git a/src/util/requireRemap.ts b/src/util/requireRemap.ts index a438138be..acfc584e9 100644 --- a/src/util/requireRemap.ts +++ b/src/util/requireRemap.ts @@ -2,6 +2,8 @@ const Module = require('module'); import * as path from 'path'; +import * as electron from './electron'; +import * as libxmljs from './libxmljs'; // when spawning a binary, the code doing the spawning will be baked by webpack // in release builds and thus reside in the app.asar file. @@ -30,6 +32,12 @@ function patchedLoad(orig) { && ((parent.filename.indexOf('graceful-fs') !== -1) || (parent.filename.indexOf('rimraf') !== -1))) { request = 'original-fs'; + } else if (request === 'electron') { + return electron; + } else if ((request === '@electron/remote') && (process.type !== 'renderer')) { + return undefined; + } else if (request === 'libxmljs') { + return libxmljs; } let res = orig.apply(this, [request, parent, ...rest]); diff --git a/src/util/startupSettings.ts b/src/util/startupSettings.ts index cabeb70d0..684e0c10b 100644 --- a/src/util/startupSettings.ts +++ b/src/util/startupSettings.ts @@ -1,5 +1,5 @@ -import { app as appIn, remote } from 'electron'; import * as path from 'path'; +import { getApplication } from './application'; import { IParameters } from './commandLine'; import Debouncer from './Debouncer'; @@ -8,9 +8,8 @@ import { writeFileAtomic } from './fsAtomic'; import getVortexPath from './getVortexPath'; import { log } from './log'; -const app = remote !== undefined ? remote.app : appIn; - -const startupPath = () => path.join(getVortexPath('appData'), app.name, 'startup.json'); +const startupPath = () => + path.join(getVortexPath('appData'), getApplication().name, 'startup.json'); function read(): IParameters { try { diff --git a/src/util/store.ts b/src/util/store.ts index 7c1438384..b231fb923 100644 --- a/src/util/store.ts +++ b/src/util/store.ts @@ -12,8 +12,8 @@ import ReduxPersistor from './ReduxPersistor'; import {reduxSanity, StateError} from './reduxSanity'; import Promise from 'bluebird'; -import { app as appIn, dialog, ipcMain, remote } from 'electron'; -import { forwardToRenderer, replayActionMain } from 'electron-redux'; +import { dialog, ipcMain } from 'electron'; +import { forwardToRenderer } from 'electron-redux'; import encode from 'encoding-down'; import * as leveldownT from 'leveldown'; import levelup from 'levelup'; @@ -22,13 +22,12 @@ import * as path from 'path'; import * as Redux from 'redux'; import { applyMiddleware, compose, createStore } from 'redux'; import thunkMiddleware from 'redux-thunk'; +import getVortexPath from './getVortexPath'; let basePersistor: ReduxPersistor; const IMPORTED_TAG = 'imported__do_not_delete.txt'; -const app = remote !== undefined ? remote.app : appIn; - export const currentStatePath = 'state.v2'; export const FULL_BACKUP_PATH = 'state_backups_full'; @@ -67,9 +66,11 @@ export function createVortexStore(sanityCallback: (err: StateError) => void): Re ipcMain.on('redux-action', (event, payload) => { try { const action = JSON.parse(payload); + /* if (process.env.NODE_ENV === 'development') { log('info', 'forwarded action', payload); } + */ // TODO: this code is required for redux-batched-actions // we may end up not using this for batched actions in which case this // code is obsolete but not harmful @@ -225,7 +226,7 @@ export function createFullStateBackup(backupName: string, return Promise.reject(new DataInvalid('Failed to create state backup')); } - const basePath = path.join(app.getPath('userData'), 'temp', FULL_BACKUP_PATH); + const basePath = path.join(getVortexPath('userData'), 'temp', FULL_BACKUP_PATH); const backupFilePath = path.join(basePath, backupName + '.json'); diff --git a/src/util/updateStore.ts b/src/util/updateStore.ts index f434fb85e..94f22161d 100644 --- a/src/util/updateStore.ts +++ b/src/util/updateStore.ts @@ -3,8 +3,8 @@ import {IState} from '../types/IState'; import {getSafe} from './storeHelper'; -import {app} from 'electron'; import * as Redux from 'redux'; +import { getApplication } from './application'; interface IMigrator { apply: (store: Redux.Store, previousVersion: string) => void; @@ -14,7 +14,7 @@ const settingsMigrator: { [oldVersion: string]: IMigrator } = {}; function updateStore(store: Redux.Store): Redux.Store { const oldVersion = getSafe(store.getState(), ['app', 'version'], ''); - const newVersion = app.getVersion(); + const newVersion = getApplication().version; if (oldVersion !== newVersion) { const migrator = settingsMigrator[newVersion]; if (migrator !== undefined) { diff --git a/src/util/util.ts b/src/util/util.ts index eba062e47..bfc6c0bcd 100644 --- a/src/util/util.ts +++ b/src/util/util.ts @@ -5,7 +5,6 @@ import { log } from './log'; import Bluebird from 'bluebird'; import { spawn } from 'child_process'; -import { remote } from 'electron'; import * as _ from 'lodash'; import * as path from 'path'; import * as process from 'process'; @@ -324,7 +323,7 @@ export function isReservedDirectory(dirPath: string, normalize?: Normalize): boo ? normalized.slice(0, -1) : normalized; - const vortexAppData = remote.app.getPath('userData'); + const vortexAppData = getVortexPath('userData'); const invalidDirs = ['blob_storage', 'Cache', 'Code Cache', 'Dictionaries', 'extensions', 'GPUCache', 'metadb', 'Partitions', 'plugins', 'Session Storage', 'shared_proto_db', 'state.v2', 'temp', 'VideoDecodeStats'] diff --git a/src/views/Dialog.tsx b/src/views/Dialog.tsx index 7cd6875ab..20c1262c1 100644 --- a/src/views/Dialog.tsx +++ b/src/views/Dialog.tsx @@ -14,7 +14,7 @@ import { ComponentEx, connect, translate } from '../util/ComponentEx'; import { TFunction } from '../util/i18n'; import { MutexWrapper } from '../util/MutexContext'; -import { remote } from 'electron'; +import * as RemoteT from '@electron/remote'; import update from 'immutability-helper'; import * as React from 'react'; import { @@ -25,6 +25,9 @@ import * as ReactDOM from 'react-dom'; import ReactMarkdown from 'react-markdown'; import * as Redux from 'redux'; import { ThunkDispatch } from 'redux-thunk'; +import lazyRequire from '../util/lazyRequire'; + +const remote = lazyRequire(() => require('@electron/remote')); const nop = () => undefined; diff --git a/src/views/MainPageContainer.tsx b/src/views/MainPageContainer.tsx index e97ce3734..5e6bcdd27 100644 --- a/src/views/MainPageContainer.tsx +++ b/src/views/MainPageContainer.tsx @@ -6,11 +6,11 @@ import { didIgnoreError, isOutdated } from '../util/errorHandling'; import { genHash } from '../util/genHash'; import { log } from '../util/log'; -import { remote } from 'electron'; import * as PropTypes from 'prop-types'; import * as React from 'react'; import { Alert, Button, Jumbotron } from 'react-bootstrap'; import { WithTranslation } from 'react-i18next'; +import { getApplication } from '../util/application'; export interface IBaseProps { page: IMainPage; @@ -114,7 +114,7 @@ class MainPageContainer extends ComponentEx { const { error, errorInfo } = this.state; events.emit('report-feedback', error.stack.split('\n')[0], `Component rendering error -Vortex Version: ${remote.app.getVersion()}, +Vortex Version: ${getApplication().version}, ${error.stack} diff --git a/src/views/MainPageHeader.tsx b/src/views/MainPageHeader.tsx index a4bd7eb27..d1b1150e6 100644 --- a/src/views/MainPageHeader.tsx +++ b/src/views/MainPageHeader.tsx @@ -26,7 +26,7 @@ class MainPageHeader extends React.Component { page: PropTypes.string, }; - public context: IComponentContext; + public declare context: IComponentContext; public shouldComponentUpdate() { return true; diff --git a/src/views/WindowControls.tsx b/src/views/WindowControls.tsx index 7197f01c0..e14267f8b 100644 --- a/src/views/WindowControls.tsx +++ b/src/views/WindowControls.tsx @@ -1,6 +1,9 @@ -import { remote } from 'electron'; +import * as RemoteT from '@electron/remote'; import * as React from 'react'; import { IconButton } from '../controls/TooltipControls'; +import lazyRequire from '../util/lazyRequire'; + +const remote = lazyRequire(() => require('@electron/remote')); const window = (() => { let res: Electron.BrowserWindow; diff --git a/tsconfig.json b/tsconfig.json index 16ed4c1e7..5d4fa8a23 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compileOnSave": true, "compilerOptions": { - "target": "es6", + "target": "esnext", "module": "commonjs", "moduleResolution": "node", "noImplicitAny": false, diff --git a/webpack.main.config.js b/webpack.main.config.js index 1936276cc..16c0eae2d 100644 --- a/webpack.main.config.js +++ b/webpack.main.config.js @@ -52,15 +52,14 @@ module.exports = { optimization: { minimizer: [ new TerserPlugin({ - cache: true, parallel: true, - sourceMap: true, terserOptions: { compress: {}, output: { max_line_len: 256, }, mangle: false, + sourceMap: true, keep_fnames: true, // required atm, name mangling breaks extensions } }) diff --git a/webpack.renderer.config.js b/webpack.renderer.config.js index 90de60f1d..ac62d4a7f 100644 --- a/webpack.renderer.config.js +++ b/webpack.renderer.config.js @@ -55,15 +55,14 @@ module.exports = { optimization: { minimizer: [ new TerserPlugin({ - cache: true, parallel: true, - sourceMap: true, terserOptions: { compress: {}, output: { max_line_len: 256, }, mangle: false, + sourceMap: true, keep_fnames: true, // required atm, name mangling breaks extensions } }) diff --git a/yarn.lock b/yarn.lock index 069bb0106..2a57bea7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6,10 +6,10 @@ version "19.0.0-r5" resolved "https://codeload.github.com/Nexus-Mods/7z-bin/tar.gz/2cfc1c6e16ab39fc1bb5d05995bed9bda40365fc" -"7zip-bin@~4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-4.0.2.tgz#6abbdc22f33cab742053777a26db2e25ca527179" - integrity sha512-XtGk+IF57pr852UK1AhQJXqmm1WmSgS5uISL+LPs0z/iAxXouMvdlLJrHPeukP6gd7yR2rDTMSMkHNODgwIq7A== +"7zip-bin@~5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" + integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== "@babel/cli@7.7.0": version "7.7.0" @@ -1173,6 +1173,19 @@ enabled "2.0.x" kuler "^2.0.0" +"@develar/schema-utils@~2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" + integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" + integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== + "@electron-forge/async-ora@6.0.0-beta.57": version "6.0.0-beta.57" resolved "https://registry.yarnpkg.com/@electron-forge/async-ora/-/async-ora-6.0.0-beta.57.tgz#14da07e663ff62b47fef6ae489d4a679790715c2" @@ -1433,7 +1446,23 @@ "@electron-forge/template-base" "6.0.0-beta.57" fs-extra "^10.0.0" -"@electron/get@^1.0.1", "@electron/get@^1.6.0", "@electron/get@^1.9.0": +"@electron/get@^1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.13.0.tgz#95c6bcaff4f9a505ea46792424f451efea89228c" + integrity sha512-+SjZhRuRo+STTO1Fdhzqnv9D2ZhjxXP6egsJ9kiO8dtP68cDx7dFCwWi64dlMQV7sWcfW1OYCW4wviEBzmRsfQ== + dependencies: + debug "^4.1.1" + env-paths "^2.2.0" + fs-extra "^8.1.0" + got "^9.6.0" + progress "^2.0.3" + semver "^6.2.0" + sumchecker "^3.0.1" + optionalDependencies: + global-agent "^2.0.2" + global-tunnel-ng "^2.7.1" + +"@electron/get@^1.6.0", "@electron/get@^1.9.0": version "1.12.4" resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.12.4.tgz#a5971113fc1bf8fa12a8789dc20152a7359f06ab" integrity sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg== @@ -1449,6 +1478,22 @@ global-agent "^2.0.2" global-tunnel-ng "^2.7.1" +"@electron/remote@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.1.tgz#810cbc595a21f0f94641eb2d7e8264063a3f84de" + integrity sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA== + +"@electron/universal@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.0.5.tgz#b812340e4ef21da2b3ee77b2b4d35c9b86defe37" + integrity sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag== + dependencies: + "@malept/cross-spawn-promise" "^1.1.0" + asar "^3.0.3" + debug "^4.3.1" + dir-compare "^2.4.0" + fs-extra "^9.0.1" + "@hypnosphi/create-react-context@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz#f8bfebdc7665f5d426cba3753e0e9c7d3154d7c6" @@ -1605,13 +1650,23 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@malept/cross-spawn-promise@^1.0.0", "@malept/cross-spawn-promise@^1.1.1": +"@malept/cross-spawn-promise@^1.0.0", "@malept/cross-spawn-promise@^1.1.0", "@malept/cross-spawn-promise@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== dependencies: cross-spawn "^7.0.1" +"@malept/flatpak-bundler@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" + integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== + dependencies: + debug "^4.1.1" + fs-extra "^9.0.0" + lodash "^4.17.15" + tmp-promise "^3.0.2" + "@marudor/node-pre-gyp@^0.16.1": version "0.16.1" resolved "https://registry.yarnpkg.com/@marudor/node-pre-gyp/-/node-pre-gyp-0.16.1.tgz#dbbff18a9f6701cc2a6bed133d0ed58f180bab68" @@ -2035,6 +2090,13 @@ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== +"@types/debug@^4.1.6": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + "@types/encoding-down@5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@types/encoding-down/-/encoding-down-5.0.0.tgz#0b5b90b93ac3aa75148f19508044e7bd36463557" @@ -2051,6 +2113,27 @@ "@types/cheerio" "*" "@types/react" "*" +"@types/eslint-scope@^3.7.0": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" + integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" + integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + "@types/ffi@^0.2.2": version "0.2.3" resolved "https://registry.yarnpkg.com/@types/ffi/-/ffi-0.2.3.tgz#71ab2704ccc9f31d6775e3c1a9d7e7b1f3dfe428" @@ -2074,6 +2157,13 @@ dependencies: "@types/node" "*" +"@types/fs-extra@^9.0.11": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + "@types/geojson@*": version "7946.0.7" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" @@ -2156,6 +2246,11 @@ dependencies: jest-diff "^24.3.0" +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "@types/json-schema@^7.0.5": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" @@ -2205,6 +2300,11 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node-uuid@^0.0.28": version "0.0.28" resolved "https://registry.yarnpkg.com/@types/node-uuid/-/node-uuid-0.0.28.tgz#41655b5ce63b2f3374c4e826b4dd21e729058e3d" @@ -2217,16 +2317,24 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== -"@types/node@12.12.35": - version "12.12.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.35.tgz#1e61b226c14380f4384f70cfe49a65c2c553ad2b" - integrity sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ== - "@types/node@^14.6.2": version "14.17.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.5.tgz#b59daf6a7ffa461b5648456ca59050ba8e40ed54" integrity sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA== +"@types/node@^16.5.0": + version "16.10.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.3.tgz#7a8f2838603ea314d1d22bb3171d899e15c57bd5" + integrity sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ== + +"@types/plist@^3.0.1": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" + integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== + dependencies: + "@types/node" "*" + xmlbuilder ">=11.0.1" + "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -2483,6 +2591,11 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.9.tgz#fcf01997bbc9f7c09ae5f91383af076d466594e1" integrity sha512-XDwyIlt/47l2kWLTzw/mtrpLdB+GPSskR2n/PIcPn+VYhVO77rGhRncIR5GPU0KRzXuqkDO+J5qqrG0Y8P6jzQ== +"@types/verror@^1.10.3": + version "1.10.5" + resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1" + integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw== + "@types/webpack-sources@*": version "2.1.0" resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" @@ -2549,6 +2662,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^17.0.1": + version "17.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.3.tgz#e6c552aa3277b21a8e802019d03ee5e77894cf27" + integrity sha512-K7rm3Ke3ag/pAniBe80A6J6fjoqRibvCrl3dRmtXV9eCEt9h/pZwmHX9MzjQVUc/elneQTL4Ky7XKorC71Lmxw== + dependencies: + "@types/yargs-parser" "*" + "@types/yauzl@^2.9.1": version "2.9.1" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" @@ -2556,150 +2676,143 @@ dependencies: "@types/node" "*" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" +"@webpack-cli/configtest@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.4.tgz#f03ce6311c0883a83d04569e2c03c6238316d2aa" + integrity sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ== -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webpack-cli/info@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.3.0.tgz#9d78a31101a960997a4acd41ffd9b9300627fe2b" + integrity sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" + envinfo "^7.7.3" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" +"@webpack-cli/serve@^1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.2.tgz#ea584b637ff63c5a477f6f21604b5a205b72c9ec" + integrity sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw== "@webpack-contrib/schema-utils@^1.0.0-beta.0": version "1.0.0-beta.0" @@ -2773,6 +2886,11 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + acorn-walk@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" @@ -2783,11 +2901,16 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1, acorn@^6.4.1: +acorn@^6.0.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== +acorn@^8.4.1: + version "8.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" + integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + addressparser@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" @@ -2804,14 +2927,6 @@ adjust-sourcemap-loader@2.0.0: object-path "0.11.4" regex-parser "2.2.10" -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - airbnb-prop-types@^2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" @@ -2827,17 +2942,12 @@ airbnb-prop-types@^2.16.0: prop-types-exact "^1.2.0" react-is "^16.13.1" -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.2.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.4.0: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2847,12 +2957,12 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.4.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^2.0.0" + string-width "^4.1.0" ansi-escapes@^3.0.0: version "3.2.0" @@ -2886,6 +2996,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -2921,22 +3036,43 @@ anymatch@^3.0.0, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -app-builder-bin@1.9.5: - version "1.9.5" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-1.9.5.tgz#f4e2b26e26578c9a48cea85da44f0bc1a7582fc0" - integrity sha512-Uw8jhfww5gYcAvMVgeRZ9cdlXOv+Ivqy4LSbALPMrQrCHHTmfVXETthkhW3cQKdvDo9pRuYn+Q5egSSn04F+Wg== - -app-builder-bin@1.9.7: - version "1.9.7" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-1.9.7.tgz#9f01439fa8088a43471df9e5e071dd3880a8cff0" - integrity sha512-CBwiiTeilkvsrSOPV7tFsqrd5yR+V8hKqwQa21DD8nZpwN7W7v3GwVgWbaJiX97Llo4S+fvRTHSP92F3FJxIwA== - -app-builder-bin@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.0.0.tgz#bda985bee14370b254841a9982753b8f383415c5" - integrity sha512-JUJ1Wiaig1589MxF110HHh5I5v9hn2Qu4ZeleNwSZHfD1S2LrCxm4H+q7Snr/rWlWdEChFoWM2lj11Cdl4LP0Q== +app-builder-bin@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.7.1.tgz#cb0825c5e12efc85b196ac3ed9c89f076c61040e" + integrity sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw== + +app-builder-lib@22.14.4: + version "22.14.4" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.14.4.tgz#0e8ac4f84e3f7cb7e901e194ccc7e3204207655d" + integrity sha512-xuzuNe8Bbpdyr6rW82tWlpZASaaVj1GXTTRUq4JRk2YpobimRP47gfJQ8HFs8zCSgEQYhv4ki2Pl+5Rzpvp+8g== + dependencies: + "7zip-bin" "~5.1.1" + "@develar/schema-utils" "~2.6.5" + "@electron/universal" "1.0.5" + "@malept/flatpak-bundler" "^0.4.0" + async-exit-hook "^2.0.1" + bluebird-lst "^1.0.9" + builder-util "22.14.0" + builder-util-runtime "8.9.0" + chromium-pickle-js "^0.2.0" + debug "^4.3.2" + ejs "^3.1.6" + electron-osx-sign "^0.5.0" + electron-publish "22.14.0" + form-data "^4.0.0" + fs-extra "^10.0.0" + hosted-git-info "^4.0.2" + is-ci "^3.0.0" + isbinaryfile "^4.0.8" + js-yaml "^4.1.0" + lazy-val "^1.0.5" + minimatch "^3.0.4" + read-config-file "6.2.0" + sanitize-filename "^1.6.3" + semver "^7.3.5" + temp-file "^3.4.0" -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== @@ -3061,15 +3197,17 @@ asar@^3.0.0: optionalDependencies: "@types/glob" "^7.1.1" -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== +asar@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473" + integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ== dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" + chromium-pickle-js "^0.2.0" + commander "^5.0.0" + glob "^7.1.6" + minimatch "^3.0.4" + optionalDependencies: + "@types/glob" "^7.1.1" asn1@~0.2.3: version "0.2.4" @@ -3090,14 +3228,6 @@ assert@1.4.1: dependencies: util "0.10.3" -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -3128,6 +3258,11 @@ async@*: resolved "https://registry.yarnpkg.com/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8" integrity sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg== +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -3426,12 +3561,7 @@ base16@^1.0.0: resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA= -base64-js@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" - integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE= - -base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3500,7 +3630,7 @@ bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bluebird-lst@^1.0.5: +bluebird-lst@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== @@ -3512,16 +3642,6 @@ bluebird@^3.1.1, bluebird@^3.4.0, bluebird@^3.4.6, bluebird@^3.4.7, bluebird@^3. resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - body-parser@^1.15.2: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -3558,18 +3678,19 @@ bootswatch@^4.3.1: resolved "https://registry.yarnpkg.com/bootswatch/-/bootswatch-4.6.0.tgz#295237ed0e118decb3e3543f2ac14e9bb8ae48ea" integrity sha512-Yr6YqFBC8jwTzoJoLViYlvO97IhPWGqZEm+6FXHfD/G6gbUok6sZkdXxdh4Zb6iCGEwr9p7zGCn38yKQD/bh2Q== -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== +boxen@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" brace-expansion@^1.1.7: version "1.1.11" @@ -3602,11 +3723,6 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -3619,66 +3735,16 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== +browserslist@^4.14.5: + version "4.17.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.3.tgz#2844cd6eebe14d12384b0122d217550160d2d624" + integrity sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ== dependencies: - pako "~1.0.5" + caniuse-lite "^1.0.30001264" + electron-to-chromium "^1.3.857" + escalade "^3.1.1" + node-releases "^1.1.77" + picocolors "^0.2.1" browserslist@^4.16.6: version "4.16.6" @@ -3723,6 +3789,11 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +buffer-equal@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -3733,21 +3804,7 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.1.0, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -3755,16 +3812,6 @@ buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builder-util-runtime@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-4.2.1.tgz#0caa358f1331d70680010141ca591952b69b35bc" - integrity sha512-6Ufp6ExT40RDYNXQgD4xG0fgtpUHyc8XIld6lptKr0re1DNnUrQP4sSV/lJOajpzyercMP/YIzO60/mNuAFiWg== - dependencies: - bluebird-lst "^1.0.5" - debug "^3.1.0" - fs-extra-p "^4.6.0" - sax "^1.2.4" - builder-util-runtime@8.7.5: version "8.7.5" resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.5.tgz#fbe59e274818885e0d2e358d5b7017c34ae6b0f5" @@ -3773,136 +3820,45 @@ builder-util-runtime@8.7.5: debug "^4.3.2" sax "^1.2.4" -builder-util-runtime@^4.2.1, builder-util-runtime@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-4.4.1.tgz#2770d03241e51fde46acacc7ed3ed8a9f45f02cb" - integrity sha512-8L2pbL6D3VdI1f8OMknlZJpw0c7KK15BRz3cY77AOUElc4XlCv2UhVV01jJM7+6Lx7henaQh80ALULp64eFYAQ== +builder-util-runtime@8.9.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.9.0.tgz#5d8e7ef101c0bf8a54fec3a70f0c551e8fdd58c2" + integrity sha512-XT7asdRMiSqUj/7EtvSW1mzVARvnhj0Nv4Ei4kD0p8GrKMFJt1Nadm4XwD+PrI2+srrtU+l8JMoBgSe4LX8EmQ== dependencies: - bluebird-lst "^1.0.5" - debug "^3.1.0" - fs-extra-p "^4.6.1" + debug "^4.3.2" sax "^1.2.4" -builder-util@5.11.1: - version "5.11.1" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-5.11.1.tgz#e1540935bc0efcb3948ae364a2f71e08d7bc82e0" - integrity sha512-fZu9j33B4VMeUJaeb1q2TubKWrk9tAg2Jwpgjstxk7Mu7sNw7v/XB87/EbpNBlE3RPMrXblG6f8asfCRC8IiNQ== - dependencies: - "7zip-bin" "~4.0.2" - app-builder-bin "1.9.5" - bluebird-lst "^1.0.5" - builder-util-runtime "^4.2.1" - chalk "^2.4.1" - debug "^3.1.0" - fs-extra-p "^4.6.0" - is-ci "^1.1.0" - js-yaml "^3.11.0" - lazy-val "^1.0.3" - semver "^5.5.0" - source-map-support "^0.5.6" - stat-mode "^0.2.2" - temp-file "^3.1.2" - -builder-util@5.11.2: - version "5.11.2" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-5.11.2.tgz#2d4829f0743ce1b654e94586fade63fd6cfefae5" - integrity sha512-Do6xVlXa6MBaxMdfCHajcfOzyzo8CBDuDVDr0PftVI0CcKpUQIe81kWwcA5w6Ossd7d52harHFuVO3NzxSwWUA== - dependencies: - "7zip-bin" "~4.0.2" - app-builder-bin "1.9.7" - bluebird-lst "^1.0.5" - builder-util-runtime "^4.2.1" - chalk "^2.4.1" - debug "^3.1.0" - fs-extra-p "^4.6.0" - is-ci "^1.1.0" - js-yaml "^3.11.0" - lazy-val "^1.0.3" - semver "^5.5.0" - source-map-support "^0.5.6" - stat-mode "^0.2.2" - temp-file "^3.1.2" - -builder-util@^5.11.0, builder-util@^5.11.2: - version "5.20.1" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-5.20.1.tgz#64544def24a9fbbdc77ac0c027661bb3dbb520a2" - integrity sha512-rqSl3Tbi/sECIVWAys8Blic4UEzUpZkGgmVXR2mZwdVPreNnfY3MHqSGSxlJRMTqxSsO0SgxnAEnanBNw4212g== - dependencies: - "7zip-bin" "~4.0.2" - app-builder-bin "2.0.0" - bluebird-lst "^1.0.5" - builder-util-runtime "^4.4.1" - chalk "^2.4.1" - debug "^3.1.0" - fs-extra-p "^4.6.1" - is-ci "^1.1.0" - js-yaml "^3.12.0" - lazy-val "^1.0.3" - semver "^5.5.0" - source-map-support "^0.5.6" - stat-mode "^0.2.2" - temp-file "^3.1.3" +builder-util@22.14.0: + version "22.14.0" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.14.0.tgz#ace28d17d3dac54d5bcdb0921703d0a4bf1b4826" + integrity sha512-oHAxjYSFsduRkLxVzg7zgjK+gBhfa+JkBJbiF61QveOkl3KiZFVLvb44a7OV4EET8LuKFGvrKMa65va1+I00Iw== + dependencies: + "7zip-bin" "~5.1.1" + "@types/debug" "^4.1.6" + "@types/fs-extra" "^9.0.11" + app-builder-bin "3.7.1" + bluebird-lst "^1.0.9" + builder-util-runtime "8.9.0" + chalk "^4.1.1" + cross-spawn "^7.0.3" + debug "^4.3.2" + fs-extra "^10.0.0" + is-ci "^3.0.0" + js-yaml "^4.1.0" + source-map-support "^0.5.19" + stat-mode "^1.0.0" + temp-file "^3.4.0" builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3985,16 +3941,26 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^4.0.0, camelcase@^4.1.0: +camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-lite@^1.0.30001219: version "1.0.30001236" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001236.tgz#0a80de4cdf62e1770bb46a30d884fc8d633e3958" integrity sha512-o0PRQSrSCGJKCPZcgMzl5fUaj5xHe8qA2m4QRvnyY4e1lITqoNkr7q/Oh1NcpGSy0Th97UZ35yoKcINPoq7YOQ== +caniuse-lite@^1.0.30001264: + version "1.0.30001265" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" + integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -4002,11 +3968,6 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -4106,7 +4067,7 @@ cheerio@^1.0.0-rc.3: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: +"chokidar@>=3.0.0 <4.0.0": version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -4140,7 +4101,7 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: +chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -4160,23 +4121,15 @@ chromium-pickle-js@^0.2.0: resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU= -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" +ci-info@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== class-utils@^0.3.5: version "0.3.6" @@ -4193,15 +4146,10 @@ classnames@*, classnames@^2.2.4, classnames@^2.2.5, classnames@^2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-color@^1.1.0: version "1.4.0" @@ -4234,20 +4182,19 @@ cli-spinners@^2.0.0, cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== +cli-truncate@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" + integrity sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA== + dependencies: + slice-ansi "^1.0.0" + string-width "^2.0.0" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -4333,11 +4280,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-convert@~0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" - integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= - color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" @@ -4364,6 +4306,11 @@ color@3.0.x: color-convert "^1.9.1" color-string "^1.5.2" +colorette@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" @@ -4374,7 +4321,7 @@ colors@*, colors@^1.2.1, colors@^1.3.3, colors@^1.4.0: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -colors@1.0.x: +colors@1.0.3, colors@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= @@ -4404,6 +4351,13 @@ commander@2, commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@2.9.0, commander@~2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= + dependencies: + graceful-readlink ">= 1.0.0" + commander@^4.0.1, commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -4414,12 +4368,10 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@~2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= - dependencies: - graceful-readlink ">= 1.0.0" +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commondir@^1.0.1: version "1.0.1" @@ -4448,7 +4400,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.5.0, concat-stream@^1.6.2: +concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -4481,33 +4433,23 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" -configstore@^3.0.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f" - integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA== +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: - dot-prop "^4.2.1" + dot-prop "^5.2.0" graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - content-disposition@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -4532,18 +4474,6 @@ convert-source-map@^0.3.3: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -4611,43 +4541,12 @@ crash-dump@Nexus-Mods/node-crash-dump: node-addon-api "^4.0.0" node-gyp "^6.0.1" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== +crc@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + buffer "^5.1.0" cross-env@^6.0.3: version "6.0.3" @@ -4656,15 +4555,6 @@ cross-env@^6.0.3: dependencies: cross-spawn "^7.0.0" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4676,7 +4566,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4690,27 +4580,10 @@ cross-zip@^4.0.0: resolved "https://registry.yarnpkg.com/cross-zip/-/cross-zip-4.0.0.tgz#c29bfb2c001659a6d480ae9596f3bee83b48a230" integrity sha512-MEzGfZo0rqE10O/B+AEcCSJLZsrWuRUvmqJTqHNqBtALhaJc3E3ixLGLJNTRzEA2K34wbmOHC4fwYs9sVsdcCA== -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== css-select@^4.1.3: version "4.1.3" @@ -4787,11 +4660,6 @@ cycle@1.0.x: resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI= -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: version "1.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" @@ -5102,7 +4970,7 @@ debuglog@^1.0.1: resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= -decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -5239,24 +5107,11 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - desandro-matches-selector@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz#717beed4dc13e7d8f3762f707a6d58a6774218e1" integrity sha1-cXvu1NwT59jzdi9wem1YpndCGOE= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -5306,41 +5161,56 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== +dir-compare@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" + integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" + buffer-equal "1.0.0" + colors "1.0.3" + commander "2.9.0" + minimatch "3.0.4" discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= -diskusage@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/diskusage/-/diskusage-1.1.3.tgz#680d7dbf1b679168a195c9240eb3552cbd2c067b" - integrity sha512-EAyaxl8hy4Ph07kzlzGTfpbZMNAAAHXSZtNEMwdlnSd1noHzvA6HsgKt4fEMSvaEXQYLSphe5rPMxN4WOj0hcQ== +diskusage@blagoev/node-diskusage: + version "2.0.0" + resolved "https://codeload.github.com/blagoev/node-diskusage/tar.gz/635d4236ee41a14ca4ff8adf9f4b89aee109eb02" dependencies: es6-promise "^4.2.5" - nan "^2.14.0" - -dmg-builder@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-4.10.1.tgz#5603daa1f93e23b6b3572549f188a62e16eb1ffb" - integrity sha512-+NqdmZb5uhPV1exzeH+hD+WLtr79qRjfA38S7DckOIMQW0C5Vykvp4dqCypnupfEnEOVZMcaNCCKK639h/uS/g== - dependencies: - bluebird-lst "^1.0.5" - builder-util "^5.11.0" - electron-builder-lib "~20.14.6" - fs-extra-p "^4.6.0" - iconv-lite "^0.4.23" - js-yaml "^3.11.0" - parse-color "^1.0.0" - sanitize-filename "^1.6.1" + node-addon-api "^2.0.0" + +dmg-builder@22.14.4: + version "22.14.4" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.14.4.tgz#569238fc347183cb94e6393413497acf960ba2ce" + integrity sha512-LmpRku01Dfes364qf/4lvA3tSRZdf3z7bwOvtkVy/e/LZhs5edHl0aPrjnI+GRNtEVyj+QWqqH90mBjuXpJCvA== + dependencies: + app-builder-lib "22.14.4" + builder-util "22.14.0" + builder-util-runtime "8.9.0" + fs-extra "^10.0.0" + iconv-lite "^0.6.2" + js-yaml "^4.1.0" + optionalDependencies: + dmg-license "^1.0.9" + +dmg-license@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.9.tgz#a2fb8d692af0e30b0730b5afc91ed9edc2d9cb4f" + integrity sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q== + dependencies: + "@types/plist" "^3.0.1" + "@types/verror" "^1.10.3" + ajv "^6.10.0" + cli-truncate "^1.1.0" + crc "^3.8.0" + iconv-corefoundation "^1.1.6" + plist "^3.0.1" + smart-buffer "^4.0.2" + verror "^1.10.0" dnd-core@^10.0.2: version "10.0.2" @@ -5419,11 +5289,6 @@ dom-serializer@~0.1.0: domelementtype "^1.3.0" entities "^1.1.1" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -5480,22 +5345,22 @@ domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: domelementtype "^2.2.0" domhandler "^4.2.0" -dot-prop@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" - integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: - is-obj "^1.0.0" + is-obj "^2.0.0" -dotenv-expand@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" - integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== +dotenv@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" + integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== draggabilly@^2.2.0: version "2.3.0" @@ -5519,16 +5384,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5542,92 +5397,30 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -electron-builder-lib@20.15.0: - version "20.15.0" - resolved "https://registry.yarnpkg.com/electron-builder-lib/-/electron-builder-lib-20.15.0.tgz#0f0a534c98aa1f6cd527060111f463aed91f2063" - integrity sha512-CZM/m29XPzMeqqdlDIqlm6plLzwZvS7yDxJarf7z2vv1bWACvgOs6p0rE+d7N6IzXDluGInswd7C1oOVeUMffg== - dependencies: - "7zip-bin" "~4.0.2" - app-builder-bin "1.9.7" - async-exit-hook "^2.0.1" - bluebird-lst "^1.0.5" - builder-util "5.11.2" - builder-util-runtime "4.2.1" - chromium-pickle-js "^0.2.0" - debug "^3.1.0" - ejs "^2.6.1" - electron-osx-sign "0.4.10" - electron-publish "20.15.0" - fs-extra-p "^4.6.0" - hosted-git-info "^2.6.0" - is-ci "^1.1.0" - isbinaryfile "^3.0.2" - js-yaml "^3.11.0" - lazy-val "^1.0.3" - minimatch "^3.0.4" - normalize-package-data "^2.4.0" - plist "^3.0.1" - read-config-file "3.0.1" - sanitize-filename "^1.6.1" - semver "^5.5.0" - stream-json "^0.6.1" - temp-file "^3.1.2" - -electron-builder-lib@~20.14.6: - version "20.14.7" - resolved "https://registry.yarnpkg.com/electron-builder-lib/-/electron-builder-lib-20.14.7.tgz#db91977dd13b0a288e1da5629183807a9847de21" - integrity sha512-sPlpRN5Nea9ZK+nwZcD5ZuGoK2uCj2muQ7enc+9BeXPAxnEu4yYmYanICAi4BQqUdusm4yjjnN9uPowlbvCNzA== +ejs@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== dependencies: - "7zip-bin" "~4.0.2" - app-builder-bin "1.9.5" - async-exit-hook "^2.0.1" - bluebird-lst "^1.0.5" - builder-util "5.11.1" - builder-util-runtime "4.2.1" - chromium-pickle-js "^0.2.0" - debug "^3.1.0" - ejs "^2.6.1" - electron-osx-sign "0.4.10" - electron-publish "20.14.6" - fs-extra-p "^4.6.0" - hosted-git-info "^2.6.0" - is-ci "^1.1.0" - isbinaryfile "^3.0.2" - js-yaml "^3.11.0" - lazy-val "^1.0.3" - minimatch "^3.0.4" - normalize-package-data "^2.4.0" - plist "^3.0.1" - read-config-file "3.0.1" - sanitize-filename "^1.6.1" - semver "^5.5.0" - stream-json "^0.6.1" - temp-file "^3.1.2" + jake "^10.6.1" -electron-builder@20.15.0: - version "20.15.0" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-20.15.0.tgz#ded6e5b1d696897e9f7fc848942c33f1e88d5bc0" - integrity sha512-ZR5KJBXqMa+QjrP4XY+dtFUFI0FQnagbyZ2vbTsAqbOdtWUUYaTnkStakTPGyqKmFmgbg9t7lN9MrXSPDQW6KQ== +electron-builder@^22.13.1: + version "22.14.4" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.14.4.tgz#f421ffac0e5795d82bc55e523343f71fbb85409a" + integrity sha512-VkTfNJRKnbUwUBeuizzTOl6oPgY0fL+AzxlA0+LTpUqsAidND7akMJGq/fzGOuyVFWbY6hYIvVPYf/4GbHv62A== dependencies: - bluebird-lst "^1.0.5" - builder-util "5.11.2" - builder-util-runtime "4.2.1" - chalk "^2.4.1" - dmg-builder "4.10.1" - electron-builder-lib "20.15.0" - electron-download-tf "4.3.4" - fs-extra-p "^4.6.0" - is-ci "^1.1.0" - lazy-val "^1.0.3" - read-config-file "3.0.1" - sanitize-filename "^1.6.1" - update-notifier "^2.5.0" - yargs "^11.0.0" + "@types/yargs" "^17.0.1" + app-builder-lib "22.14.4" + builder-util "22.14.0" + builder-util-runtime "8.9.0" + chalk "^4.1.1" + dmg-builder "22.14.4" + fs-extra "^10.0.0" + is-ci "^3.0.0" + lazy-val "^1.0.5" + read-config-file "6.2.0" + update-notifier "^5.1.0" + yargs "^17.0.1" electron-devtools-installer@rwwagner90/electron-devtools-installer: version "0.0.0-development" @@ -5637,7 +5430,7 @@ electron-devtools-installer@rwwagner90/electron-devtools-installer: semver "^7.2.1" unzip-crx-3 "^0.2.0" -electron-download-tf@4.3.4, electron-download-tf@^4.3.4: +electron-download-tf@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/electron-download-tf/-/electron-download-tf-4.3.4.tgz#b03740b2885aa2ad3f8784fae74df427f66d5165" integrity sha512-SQYDGMLpTgty1bx3NycuDb7dNPzktVSdK2sqPZjyRocauq/uN/V4S2lcpFVLupaHhKlD8zozm9fTpm5UdohvTg== @@ -5704,18 +5497,6 @@ electron-notarize@^1.0.0: debug "^4.1.1" fs-extra "^9.0.1" -electron-osx-sign@0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.10.tgz#be4f3b89b2a75a1dc5f1e7249081ab2929ca3a26" - integrity sha1-vk87ibKnWh3F8eckkIGrKSnKOiY= - dependencies: - bluebird "^3.5.0" - compare-version "^0.1.2" - debug "^2.6.8" - isbinaryfile "^3.0.2" - minimist "^1.2.0" - plist "^2.1.0" - electron-osx-sign@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a" @@ -5751,31 +5532,18 @@ electron-packager@^15.0.0: semver "^7.1.3" yargs-parser "^20.0.0" -electron-publish@20.14.6: - version "20.14.6" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.14.6.tgz#ced15b0c08fdaef2fb25beba9f55f20d1c19e215" - integrity sha512-14u2eT8qTNKD1ek20UK5AbjDn6qmdhAOEiTcgmjmrMoRJFQIhGwV3emFmfaY1S6uFnFdY/4MyMcU92AXD1oRsw== +electron-publish@22.14.0: + version "22.14.0" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.14.0.tgz#10e31144e5a92385f37ba187bb3c1d890c17c31c" + integrity sha512-XM5gOMFEUQFkvV1mVPBsXweXk/dKTlmFkim9gOCa6lrIt2bQCg3L5hYxz6JocwrLU5B6X94ZoIXSLJO1GFsolg== dependencies: - bluebird-lst "^1.0.5" - builder-util "^5.11.0" - builder-util-runtime "^4.2.1" - chalk "^2.4.1" - fs-extra-p "^4.6.0" - lazy-val "^1.0.3" - mime "^2.3.1" - -electron-publish@20.15.0: - version "20.15.0" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.15.0.tgz#4dd96b2ce82b8856342a6d60dda571669a390d2d" - integrity sha512-0v1jXvbRDlPK5S+LzEZqcvuFHLCSWPKmMYmbDwVheeNRjbJjQLlZyQAINVlV+Ky+yhawChEaAF+dyGLvXEyONg== - dependencies: - bluebird-lst "^1.0.5" - builder-util "^5.11.2" - builder-util-runtime "^4.2.1" - chalk "^2.4.1" - fs-extra-p "^4.6.0" - lazy-val "^1.0.3" - mime "^2.3.1" + "@types/fs-extra" "^9.0.11" + builder-util "22.14.0" + builder-util-runtime "8.9.0" + chalk "^4.1.1" + fs-extra "^10.0.0" + lazy-val "^1.0.5" + mime "^2.5.2" electron-rebuild@^1.8.8: version "1.11.0" @@ -5823,6 +5591,11 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.750.tgz#7e5ef6f478316b0bd656af5942fe502610e97eaf" integrity sha512-Eqy9eHNepZxJXT+Pc5++zvEi5nQ6AGikwFYDCYwXUFBr+ynJ6pDG7MzZmwGYCIuXShLJM0n4bq+aoKDmvSGJ8A== +electron-to-chromium@^1.3.857: + version "1.3.860" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.860.tgz#d612e54ed75fa524c12af8da3ad8121ebfe2802b" + integrity sha512-gWwGZ+Wv4Mou2SJRH6JQzhTPjL5f95SX7n6VkLTQ/Q/INsZLZNQ1vH2GlZjozKyvT0kkFuCmWTwIoCj+/hUDPw== + electron-updater@^4.2.0: version "4.3.9" resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.9.tgz#247c660bafad7c07935e1b81acd3e9a5fd733154" @@ -5864,28 +5637,15 @@ electron-wix-msi@^3.0.6: optionalDependencies: "@bitdisaster/exe-icon-extractor" "^1.0.10" -electron@^13.4.0: - version "13.4.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-13.4.0.tgz#f9f9e518d8c6bf23bfa8b69580447eea3ca0f880" - integrity sha512-KJGWS2qa0xZXIMPMDUNkRVO8/JxRd4+M0ejYYOzu2LIQ5ijecPzNuNR9nvDkml9XyyRBzu975FkhJcwD17ietQ== +electron@^15.1.0: + version "15.1.1" + resolved "https://registry.yarnpkg.com/electron/-/electron-15.1.1.tgz#cd3eaaaf62aa30c0f2d28ba28c5b62bd5ee2c325" + integrity sha512-ogVGNWL38KegiqAhUdgjWoKPOufTqDb+cNIqQF/WpVxgauNjzXEk/RNEk7qlw946B/g2dHpzpHeUhi+D/4EcIg== dependencies: - "@electron/get" "^1.0.1" + "@electron/get" "^1.13.0" "@types/node" "^14.6.2" extract-zip "^1.0.3" -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -5926,21 +5686,20 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" entities@^1.1.1, entities@~1.1.1: version "1.1.2" @@ -5962,6 +5721,11 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + enzyme-adapter-react-16@^1.15.1: version "1.15.6" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" @@ -6026,7 +5790,7 @@ enzyme@^3.10.0: rst-selector-parser "^2.2.3" string.prototype.trim "^1.2.1" -errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: +errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== @@ -6067,6 +5831,11 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-module-lexer@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.2.tgz#d0a8c72c5d904014111fac7fab4c92b9ac545564" + integrity sha512-YkAGWqxZq2B4FxQ5y687UwywDwvLQhIMCZ+SDU7ZW729SDHOEI6wVFXwTRecz+yiwJzCsVwC6V7bxyNbZSB1rg== + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -6127,6 +5896,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + 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" @@ -6154,12 +5928,12 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" esprima@^4.0.0, esprima@^4.0.1: @@ -6167,7 +5941,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.1.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -6207,19 +5981,11 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" -events@*, events@^3.0.0: +events@*, events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - exe-version@Nexus-Mods/node-exe-version: version "2.0.0" resolved "https://codeload.github.com/Nexus-Mods/node-exe-version/tar.gz/7cb6efd338742718a0761b7b9b9f96b8f92dce2f" @@ -6231,19 +5997,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -6257,6 +6010,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -6405,6 +6173,11 @@ fast-safe-stringify@^2.0.4: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -6439,11 +6212,6 @@ feedparser@^2.2.9: readable-stream "^2.3.7" sax "^1.2.4" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -6456,6 +6224,13 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filelist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + dependencies: + minimatch "^3.0.4" + filename-reserved-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" @@ -6487,7 +6262,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -6513,7 +6288,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -6543,16 +6318,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - fizzy-ui-utils@^2.0.0: version "2.0.7" resolved "https://registry.yarnpkg.com/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz#7df45dcc4eb374a08b65d39bb9a4beedf7330505" @@ -6568,14 +6333,6 @@ flora-colossus@^1.0.0: debug "^4.1.1" fs-extra "^7.0.0" -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - flux-standard-action@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/flux-standard-action/-/flux-standard-action-2.1.1.tgz#b2e204145ea8e4294d6b0f178d8e8c416802948f" @@ -6626,7 +6383,7 @@ fork-ts-checker-webpack-plugin@^4.1.3: tapable "^1.0.0" worker-rpc "^0.1.0" -form-data@*: +form-data@*, form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== @@ -6660,14 +6417,6 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - frontend-collective-react-dnd-scrollzone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/frontend-collective-react-dnd-scrollzone/-/frontend-collective-react-dnd-scrollzone-1.0.2.tgz#cf5ed6165335f7d26504a40126f8e972ee644698" @@ -6686,14 +6435,6 @@ 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-p@^4.6.0, fs-extra-p@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/fs-extra-p/-/fs-extra-p-4.6.1.tgz#6156e0cc98097f415fcd17029578fc41c78b5092" - integrity sha512-IsTMbUS0svZKZTvqF4vDS9c/L7Mw9n8nZQWWeSzAGacOSe+8CzowhUN0tdZEZFIJNP5HC7L9j3MMikz/G4hDeQ== - dependencies: - bluebird-lst "^1.0.5" - fs-extra "^6.0.1" - fs-extra@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" @@ -6712,15 +6453,6 @@ fs-extra@^4.0.0, fs-extra@^4.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" - integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -6768,16 +6500,6 @@ fs-readdir-recursive@^1.1.0: resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -6859,11 +6581,6 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -6918,11 +6635,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -6937,6 +6649,11 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -6969,6 +6686,11 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.5, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -7006,12 +6728,12 @@ global-agent@^2.0.2: semver "^7.3.2" serialize-error "^7.0.1" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.4" + ini "2.0.0" global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" @@ -7022,13 +6744,6 @@ global-modules@1.0.0, global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -7040,15 +6755,6 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - global-tunnel-ng@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" @@ -7093,23 +6799,6 @@ got@^11.7.0: p-cancelable "^2.0.0" responselike "^2.0.0" -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - got@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -7132,7 +6821,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -graceful-fs@^4.2.2: +graceful-fs@^4.2.2, graceful-fs@^4.2.4: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -7265,6 +6954,11 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -7272,23 +6966,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - heap@>=0.2.0: version "0.2.6" resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" @@ -7299,15 +6976,6 @@ highlight.js@^9.3.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -7330,11 +6998,18 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: +hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" + integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + dependencies: + lru-cache "^6.0.0" + html-element-map@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.3.1.tgz#44b2cbcfa7be7aa4ff59779e47e51012e1c73c08" @@ -7422,10 +7097,10 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== humanize-plus@^1.8.1: version "1.8.2" @@ -7455,7 +7130,15 @@ icon-extract@Nexus-Mods/node-icon-extract: node-addon-api "*" node-gyp "^6.0.0" -iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.23, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-corefoundation@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz#27c135470237f6f8d13462fa1f5eaf250523c29a" + integrity sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw== + dependencies: + cli-truncate "^1.1.0" + node-addon-api "^1.6.3" + +iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -7469,16 +7152,18 @@ iconv-lite@^0.5.0: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13, ieee754@^1.1.4: +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - ignore-walk@^3.0.1, ignore-walk@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" @@ -7514,6 +7199,14 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" + integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -7526,16 +7219,6 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -7559,7 +7242,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -7589,10 +7277,10 @@ inquirer@^8.0.0: strip-ansi "^6.0.0" through "^2.3.6" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -7601,11 +7289,6 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -7703,13 +7386,6 @@ is-callable@^1.2.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -is-ci@^1.0.10, is-ci@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -7717,6 +7393,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + dependencies: + ci-info "^3.1.1" + is-core-module@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" @@ -7834,13 +7517,13 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-interactive@^1.0.0: version "1.0.0" @@ -7852,10 +7535,10 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: version "1.0.5" @@ -7874,17 +7557,15 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^2.0.0: version "2.1.0" @@ -7903,11 +7584,6 @@ is-promise@^2.2.2: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" @@ -7916,12 +7592,7 @@ is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.3: call-bind "^1.0.2" has-symbols "^1.0.2" -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -7980,12 +7651,17 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + 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: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -7997,6 +7673,11 @@ isbinaryfile@^3.0.2: dependencies: buffer-alloc "^1.2.0" +isbinaryfile@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -8064,6 +7745,16 @@ istanbul-reports@^2.2.6: dependencies: html-escaper "^2.0.0" +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-changed-files@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" @@ -8410,13 +8101,14 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^25.4.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== +jest-worker@^27.0.6: + version "27.2.4" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.4.tgz#881455df75e22e7726a53f43703ab74d6b36f82d" + integrity sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g== dependencies: + "@types/node" "*" merge-stream "^2.0.0" - supports-color "^7.0.0" + supports-color "^8.0.0" jest@^24.9.0: version "24.9.0" @@ -8444,7 +8136,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.13.1, js-yaml@^3.14.0: +js-yaml@^3.13.1, js-yaml@^3.14.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -8569,7 +8261,7 @@ json5@2.0.0: dependencies: minimist "^1.2.0" -json5@2.x, json5@^2.1.0, json5@^2.1.2: +json5@2.x, json5@^2.1.0, json5@^2.1.2, json5@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -8694,25 +8386,18 @@ kuler@^2.0.0: resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= +latest-version@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - package-json "^4.0.0" + package-json "^6.3.0" -lazy-val@^1.0.3, lazy-val@^1.0.4: +lazy-val@^1.0.4, lazy-val@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" @@ -8848,10 +8533,10 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@1.2.3: version "1.2.3" @@ -8862,7 +8547,7 @@ loader-utils@1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" -loader-utils@^1.0.2, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -9120,21 +8805,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -9169,13 +8839,6 @@ lzma-native@^6.0.1: readable-stream "^2.3.5" rimraf "^2.7.1" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -9184,7 +8847,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -9239,15 +8902,6 @@ math-expression-evaluator@^1.2.14: resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.3.7.tgz#1b62225db86af06f7ea1fd9576a34af605a5b253" integrity sha512-nrbaifCl42w37hYd6oRLvoymFK42tWB+WQTMFtksDGQMi5GvlJwnz/CsS30FFAISFLtX+A0csJ0xLiuuyyec7w== -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdast-util-definitions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" @@ -9295,7 +8949,7 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0, mem@^4.3.0: +mem@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== @@ -9323,22 +8977,6 @@ memoizee@^0.4.14: next-tick "^1.1.0" timers-ext "^0.1.7" -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - meow@^3.1.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -9373,7 +9011,7 @@ micromark@~2.11.0: debug "^4.0.0" parse-entities "^2.0.0" -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -9400,19 +9038,16 @@ micromatch@^4.0.0: braces "^3.0.1" picomatch "^2.2.3" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.48.0: version "1.48.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== +mime-db@1.50.0: + version "1.50.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" + integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== + mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.31" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" @@ -9420,7 +9055,14 @@ mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.48.0" -mime@^2.3.1: +mime-types@^2.1.27: + version "2.1.33" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" + integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== + dependencies: + mime-db "1.50.0" + +mime@^2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== @@ -9450,17 +9092,7 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -9472,27 +9104,6 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1. resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -9501,7 +9112,7 @@ minipass@^2.6.0, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" -minipass@^3.0.0, minipass@^3.1.1: +minipass@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== @@ -9523,22 +9134,6 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -9552,7 +9147,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@0.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5: +mkdirp@0.x, mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -9579,18 +9174,6 @@ moo@^0.5.0: resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - mri@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" @@ -9630,11 +9213,6 @@ nan@^2.12.1, nan@~2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nan@^2.14.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -9703,7 +9281,7 @@ needle@^2.5.0: iconv-lite "^0.4.4" sax "^1.2.4" -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -9742,11 +9320,16 @@ node-addon-api@*, node-addon-api@^3.1.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-addon-api@^1.6.0: +node-addon-api@^1.6.0, node-addon-api@^1.6.3: version "1.7.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + node-addon-api@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.0.0.tgz#ac128f43eff7fac4b5f5ef2f39d6d7c2709efead" @@ -9800,35 +9383,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -9866,6 +9420,11 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== +node-releases@^1.1.77: + version "1.1.77" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" + integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== + noms@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" @@ -9894,7 +9453,7 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -9972,6 +9531,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -10155,7 +9721,7 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -10210,25 +9776,11 @@ ora@^5.0.0, ora@^5.1.0, ora@^5.3.0: strip-ansi "^6.0.0" wcwidth "^1.0.1" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - 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@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -10290,14 +9842,14 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -10332,13 +9884,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" @@ -10354,15 +9899,15 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" packery@^2.1.2: version "2.1.2" @@ -10372,31 +9917,11 @@ packery@^2.1.2: get-size "^2.0.2" outlayer "^2.0.0" -pako@~1.0.2, pako@~1.0.5: +pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-author@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f" @@ -10404,13 +9929,6 @@ parse-author@^2.0.0: dependencies: author-regex "^1.0.0" -parse-color@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" - integrity sha1-e3SLlag/A/FqlPU15S1/PZRlhhk= - dependencies: - color-convert "~0.5.0" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -10465,21 +9983,11 @@ parse5@^6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -parser-toolkit@>=0.0.3: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parser-toolkit/-/parser-toolkit-0.0.5.tgz#ec4b61729c86318b56ea971bfba6b3c672d62c01" - integrity sha1-7EthcpyGMYtW6pcb+6azxnLWLAE= - pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -10507,17 +10015,12 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 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: - 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= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -10550,17 +10053,6 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -10577,6 +10069,11 @@ permissions@Nexus-Mods/node-permissions: dependencies: winapi-bindings Nexus-Mods/node-winapi-bindings +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -10630,15 +10127,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -plist@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/plist/-/plist-2.1.0.tgz#57ccdb7a0821df21831217a3cad54e3e146a1025" - integrity sha1-V8zbeggh3yGDEhejytVOPhRqECU= - dependencies: - base64-js "1.2.0" - xmlbuilder "8.2.2" - xmldom "0.1.x" - plist@^3.0.0, plist@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.2.tgz#74bbf011124b90421c22d15779cee60060ba95bc" @@ -10698,11 +10186,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -10748,11 +10231,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== -process@^0.11.10: - version "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" @@ -10766,11 +10244,6 @@ progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - prompts@^2.0.1: version "2.4.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" @@ -10822,36 +10295,11 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -10860,30 +10308,18 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + pure-color@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" @@ -10899,16 +10335,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" @@ -10939,21 +10365,13 @@ randexp@0.4.6: discontinuous-range "1.0.0" ret "~0.1.10" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - raw-body@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" @@ -10964,7 +10382,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.1, rc@^1.2.7: +rc@^1.2.1, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -11322,20 +10740,16 @@ react@^16.12.0, react@^16.3.0: object-assign "^4.1.1" prop-types "^15.6.2" -read-config-file@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-3.0.1.tgz#307ed2e162fa54306d0ae6d41e9cdc829720d2a9" - integrity sha512-xMKmxBYENBqcTMc7r/VteufWgqI9c7oASnOxFa6Crlk4d/nVTOTOJKDhAHJCiGpD8cWzUY9t7K1+M3d75w4f9A== - dependencies: - ajv "^6.4.0" - ajv-keywords "^3.2.0" - bluebird-lst "^1.0.5" - dotenv "^5.0.1" - dotenv-expand "^4.2.0" - fs-extra-p "^4.6.0" - js-yaml "^3.11.0" - json5 "^1.0.1" - lazy-val "^1.0.3" +read-config-file@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" + integrity sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg== + dependencies: + dotenv "^9.0.2" + dotenv-expand "^5.1.0" + js-yaml "^4.1.0" + json5 "^2.2.0" + lazy-val "^1.0.4" read-installed@~4.0.3: version "4.0.3" @@ -11421,7 +10835,7 @@ read-pkg@^4.0.1: parse-json "^4.0.0" pify "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@^2.3.7, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -11434,7 +10848,7 @@ read-pkg@^4.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -11520,6 +10934,13 @@ recharts@^1.8.5: recharts-scale "^0.4.2" reduce-css-calc "^1.3.0" +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -11700,20 +11121,19 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" + rc "^1.2.8" -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - rc "^1.0.1" + rc "^1.2.8" regjsgen@^0.5.1: version "0.5.2" @@ -11818,11 +11238,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -11850,7 +11265,14 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-dir@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= @@ -11863,6 +11285,11 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-package@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-package/-/resolve-package-1.0.1.tgz#686f70b188bd7d675f5bbc4282ccda060abb9d27" @@ -11896,7 +11323,7 @@ resolve@1.1.7, resolve@~1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.3.2: +resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.9.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -11979,14 +11406,6 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - rm-local-modules@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/rm-local-modules/-/rm-local-modules-0.0.2.tgz#e45a4419276b7b05cf8717491f840dacc3902838" @@ -12026,13 +11445,6 @@ run-async@^2.4.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - rw@1: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" @@ -12050,7 +11462,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -12062,7 +11474,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -12082,7 +11494,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sanitize-filename@^1.6.1: +sanitize-filename@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== @@ -12120,16 +11532,7 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6: +schema-utils@^2.6.1, schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -12138,6 +11541,15 @@ schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6: ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + section-matter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" @@ -12151,14 +11563,14 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: - semver "^5.0.3" + semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -12173,7 +11585,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: +semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -12187,10 +11599,10 @@ serialize-error@^7.0.1: dependencies: type-fest "^0.13.1" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" @@ -12214,7 +11626,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4, setimmediate@^1.0.5: +setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -12224,14 +11636,6 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -12283,6 +11687,11 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.3: + version "3.0.5" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" + integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -12330,11 +11739,23 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slice-ansi@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + slide@~1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= +smart-buffer@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -12365,11 +11786,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -12388,7 +11804,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@^0.5.6: 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== @@ -12396,6 +11812,14 @@ source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@^0.5. buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.5.19, source-map-support@~0.5.20: + version "0.5.20" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" + integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -12411,7 +11835,7 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -12521,21 +11945,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.1.tgz#33e44f896a967158e3c63468e47ec46613b95b5f" - integrity sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -12548,10 +11957,10 @@ stack-utils@^1.0.1: dependencies: escape-string-regexp "^2.0.0" -stat-mode@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" - integrity sha1-5sgLYjEj19gM8TLOU480YokHJQI= +stat-mode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" + integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== static-extend@^0.1.1: version "0.1.2" @@ -12571,45 +11980,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-json@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-0.6.1.tgz#c9413e7f42ba8eac4883be712220455f64dcea67" - integrity sha512-Tmhl5yUVusgkgCiWnoHD1BA8/LqFX5/OlYj+YMCgUuUMjbacQvSWV8p1grbKvzP6s4EBS4nK5WNsMHX7kugzyg== - dependencies: - parser-toolkit ">=0.0.3" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -12632,7 +12002,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -12649,6 +12019,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.0.0, string-width@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" @@ -12693,7 +12072,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -12740,6 +12119,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -12762,6 +12148,11 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -12826,13 +12217,20 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.0.3, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -12843,11 +12241,16 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tapable@^1.0.0, tapable@^1.1.3: +tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -12894,7 +12297,7 @@ tar@^6.0.2, tar@^6.0.5: mkdirp "^1.0.3" yallist "^4.0.0" -temp-file@^3.1.2, temp-file@^3.1.3: +temp-file@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== @@ -12910,51 +12313,26 @@ temp@^0.9.0: mkdirp "^0.5.1" rimraf "~2.6.2" -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1" + integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA== dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" + jest-worker "^27.0.6" + p-limit "^3.1.0" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + terser "^5.7.2" -terser-webpack-plugin@^2.2.1: - version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" - integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.6.12" - webpack-sources "^1.4.3" - -terser@^4.1.2, terser@^4.6.12: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== +terser@^5.7.2: + version "5.9.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" + integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== dependencies: commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map "~0.7.2" + source-map-support "~0.5.20" test-exclude@^5.2.3: version "5.2.3" @@ -12986,7 +12364,7 @@ throttleit@0.0.2: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8= -through2@^2.0.0, through2@^2.0.1: +through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -13007,18 +12385,6 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - timers-ext@^0.1.5, timers-ext@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" @@ -13073,11 +12439,6 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -13205,16 +12566,15 @@ ts-jest@^24.1.0: semver "^5.5" yargs-parser "10.x" -ts-loader@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.2.tgz#dffa3879b01a1a1e0a4b85e2b8421dc0dfff1c58" - integrity sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== +ts-loader@^9.2.6: + version "9.2.6" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.6.tgz#9937c4dd0a1e3dbbb5e433f8102a6601c6615d74" + integrity sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw== dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" + chalk "^4.1.0" + enhanced-resolve "^5.0.0" micromatch "^4.0.0" - semver "^6.0.0" + semver "^7.3.4" tslib@1.9.0: version "1.9.0" @@ -13280,11 +12640,6 @@ tsutils@^3.0.0, tsutils@^3.9.1: dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -13321,6 +12676,11 @@ type-fest@^0.13.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -13368,10 +12728,10 @@ typedoc-plugin-markdown@^3.0.11: dependencies: handlebars "^4.7.7" -typescript@^3.7.2: - version "3.9.9" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" - integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== +typescript@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" + integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== uglify-js@^3.1.4: version "3.13.9" @@ -13465,26 +12825,12 @@ unipointer@^2.3.0: dependencies: ev-emitter "^1.0.1" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - crypto-random-string "^1.0.0" + crypto-random-string "^2.0.0" unist-builder@^2.0.0: version "2.0.3" @@ -13567,31 +12913,30 @@ unzip-crx-3@^0.2.0: mkdirp "^0.5.1" yaku "^0.16.6" -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-notifier@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== +update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" uri-js@^4.2.2: version "4.4.1" @@ -13605,13 +12950,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" @@ -13619,14 +12957,6 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -13673,19 +13003,12 @@ util@0.10.3: dependencies: inherits "2.0.1" -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - uuid@^3.1.0, uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.1.1: +v8-compile-cache@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== @@ -13698,7 +13021,7 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -verror@1.10.0: +verror@1.10.0, verror@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -13725,11 +13048,6 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - void-elements@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" @@ -13793,23 +13111,13 @@ warning@^4.0.0, warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +watchpack@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" + integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" wcwidth@^1.0.1: version "1.0.1" @@ -13823,22 +13131,24 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-cli@^3.3.10: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== - dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" +webpack-cli@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.8.0.tgz#5fc3c8b9401d3c8a43e2afceacfa8261962338d1" + integrity sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.0.4" + "@webpack-cli/info" "^1.3.0" + "@webpack-cli/serve" "^1.5.2" + colorette "^1.2.1" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" + webpack-merge "^5.7.3" webpack-log@^1.1.2: version "1.2.0" @@ -13850,47 +13160,53 @@ webpack-log@^1.1.2: loglevelnext "^1.0.1" uuid "^3.1.0" -webpack-node-externals@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz#6e1ee79ac67c070402ba700ef033a9b8d52ac4e3" - integrity sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg== - -webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" + clone-deep "^4.0.1" + wildcard "^2.0.0" -webpack@^4.41.2: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" +webpack-node-externals@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" + integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== + +webpack-sources@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" + integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== + +webpack@^5.57.1: + version "5.57.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.57.1.tgz#ead5ace2c17ecef2ae8126f143bfeaa7f55eab44" + integrity sha512-kHszukYjTPVfCOEyrUthA3jqJwduY/P3eO8I0gMNOZGIQWKAwZftxmp5hq6paophvwo9NoUrcZOecs9ulOyyTg== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" + enhanced-resolve "^5.8.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.2.0" + webpack-sources "^3.2.0" whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" @@ -13970,12 +13286,17 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - string-width "^2.1.1" + string-width "^4.0.0" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== winapi-bindings@Nexus-Mods/node-winapi-bindings: version "2.3.2" @@ -14030,13 +13351,6 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - worker-rpc@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" @@ -14044,14 +13358,6 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -14093,16 +13399,7 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.1: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -14124,10 +13421,10 @@ ws@^7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.0.tgz#0033bafea031fb9df041b2026fc72a571ca44691" integrity sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw== -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== xml-name-validator@^3.0.0: version "3.0.0" @@ -14142,10 +13439,10 @@ xml2js@^0.4.23: sax ">=0.6.0" xmlbuilder "~11.0.0" -xmlbuilder@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" - integrity sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M= +xmlbuilder@>=11.0.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== xmlbuilder@^9.0.7: version "9.0.7" @@ -14157,11 +13454,6 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== -xmldom@0.1.x: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" - integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== - xmldom@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.5.0.tgz#193cb96b84aa3486127ea6272c4596354cb4962e" @@ -14184,11 +13476,6 @@ xxhash-addon@^1.3.0: resolved "https://registry.yarnpkg.com/xxhash-addon/-/xxhash-addon-1.4.0.tgz#b96a69aab2be18735b25b6f256144bd70ffffed9" integrity sha512-n3Ml0Vgvy7jMYJBlQIoFLjYxXNZQ5CbzW8E2Ynq2QCUpWMqCouooW7j02+7Oud5FijBuSrjQNuN/fCiz1SHN+w== -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -14204,12 +13491,7 @@ yaku@^0.16.6: resolved "https://registry.yarnpkg.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e" integrity sha1-HRlceKqbW/hHnIlblQT9TwhHmE4= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.0, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -14260,32 +13542,7 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" - integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^13.3.0, yargs@^13.3.2: +yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -14348,6 +13605,19 @@ yargs@^16.0.0, yargs@^16.0.2, yargs@^16.1.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.0.1: + version "17.2.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.2.1.tgz#e2c95b9796a0e1f7f3bf4427863b42e0418191ea" + integrity sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yarn-or-npm@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz#6336eea4dff7e23e226acc98c1a8ada17a1b8666"