diff --git a/.github/workflows/build-app-beta.yaml b/.github/workflows/build-app-beta.yaml index cf9e68371..e7a95860b 100644 --- a/.github/workflows/build-app-beta.yaml +++ b/.github/workflows/build-app-beta.yaml @@ -22,10 +22,10 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 1 - - name: Use Node.js 12.x + - name: Use Node.js 14.x uses: actions/setup-node@v1 with: - node-version: 12.x + node-version: 14.x - name: yarn install run: | yarn install diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index a9fc75fb2..a6b6b4df6 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -26,10 +26,10 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 1 - - name: Use Node.js 12.x + - name: Use Node.js 14.x uses: actions/setup-node@v1 with: - node-version: 12.x + node-version: 14.x - name: yarn install run: | yarn install diff --git a/.github/workflows/build-docker-beta.yaml b/.github/workflows/build-docker-beta.yaml index 233ce7fd7..e1f9fd35a 100644 --- a/.github/workflows/build-docker-beta.yaml +++ b/.github/workflows/build-docker-beta.yaml @@ -24,10 +24,10 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 1 - - name: Use Node.js 12.x + - name: Use Node.js 14.x uses: actions/setup-node@v1 with: - node-version: 12.x + node-version: 14.x - name: yarn install run: | yarn install diff --git a/.github/workflows/build-docker.yaml b/.github/workflows/build-docker.yaml index 92d18b3fe..2192863bd 100644 --- a/.github/workflows/build-docker.yaml +++ b/.github/workflows/build-docker.yaml @@ -30,10 +30,10 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 1 - - name: Use Node.js 12.x + - name: Use Node.js 14.x uses: actions/setup-node@v1 with: - node-version: 12.x + node-version: 14.x - name: yarn install run: | yarn install diff --git a/.github/workflows/build-npm.yaml b/.github/workflows/build-npm.yaml index 630dd1785..f43184447 100644 --- a/.github/workflows/build-npm.yaml +++ b/.github/workflows/build-npm.yaml @@ -30,10 +30,10 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 1 - - name: Use Node.js 12.x + - name: Use Node.js 14.x uses: actions/setup-node@v1 with: - node-version: 12.x + node-version: 14.x - name: Configure NPM token env: diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index a9acd1262..8e14f7aec 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -8,7 +8,7 @@ on: jobs: test-runner: runs-on: ubuntu-latest - container: node:12.22 + container: node:14.18 steps: - name: Context diff --git a/app/package.json b/app/package.json index cf3829d76..bacda4e3b 100644 --- a/app/package.json +++ b/app/package.json @@ -5,10 +5,8 @@ "author": "Jan Prochazka ", "description": "Opensource database administration tool", "dependencies": { - "better-sqlite3-with-prebuilds": "^7.1.8", - "electron-log": "^4.3.1", - "electron-store": "^5.1.1", - "electron-updater": "^4.3.5", + "electron-log": "^4.4.1", + "electron-updater": "^4.6.1", "patch-package": "^6.4.7" }, "repository": { @@ -90,23 +88,25 @@ }, "homepage": "./", "scripts": { - "start": "cross-env ELECTRON_START_URL=http://localhost:5000 electron .", + "start": "cross-env ELECTRON_START_URL=http://localhost:5000 DEVMODE=1 electron .", "start:local": "cross-env electron .", "dist": "electron-builder", "build": "cd ../packages/api && yarn build && cd ../web && yarn build && cd ../../app && yarn dist", "build:mac": "cd ../packages/api && yarn build && cd ../web && yarn build && cd ../../app && node setMacPlatform x64 && yarn dist && node setMacPlatform arm64 && yarn dist", "build:local": "cd ../packages/api && yarn build && cd ../web && yarn build && cd ../../app && yarn predist", - "postinstall": "electron-builder install-app-deps && patch-package", + "postinstall": "yarn rebuild && patch-package", + "rebuild": "electron-builder install-app-deps", "predist": "copyfiles ../packages/api/dist/* packages && copyfiles \"../packages/web/public/*\" packages && copyfiles \"../packages/web/public/**/*\" packages && copyfiles --up 3 \"../plugins/dist/**/*\" packages/plugins" }, "main": "src/electron.js", "devDependencies": { "copyfiles": "^2.2.0", "cross-env": "^6.0.3", - "electron": "11.2.3", - "electron-builder": "22.10.5" + "electron": "13.6.3", + "electron-builder": "22.14.5" }, "optionalDependencies": { - "msnodesqlv8": "^2.4.0" + "better-sqlite3": "7.4.5", + "msnodesqlv8": "^2.4.4" } } diff --git a/app/src/electron.js b/app/src/electron.js index 23f1992ce..c9563cc6a 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -1,9 +1,8 @@ const electron = require('electron'); const os = require('os'); +const fs = require('fs'); const { Menu, ipcMain } = require('electron'); -const { fork } = require('child_process'); const { autoUpdater } = require('electron-updater'); -const Store = require('electron-store'); const log = require('electron-log'); // Module to control application life. @@ -14,7 +13,17 @@ const BrowserWindow = electron.BrowserWindow; const path = require('path'); const url = require('url'); -const store = new Store(); +// require('@electron/remote/main').initialize(); + +const configRootPath = path.join(app.getPath('userData'), 'config-root.json'); +let initialConfig = {}; + +try { + initialConfig = JSON.parse(fs.readFileSync(configRootPath, { encoding: 'utf-8' })); +} catch (err) { + console.log('Error loading config-root:', err.message); + initialConfig = {}; +} // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. @@ -36,7 +45,7 @@ function commandItem(id) { accelerator: command ? command.keyText : undefined, enabled: command ? command.enabled : false, click() { - mainWindow.webContents.executeJavaScript(`dbgate_runCommand('${id}')`); + mainWindow.webContents.send('run-command', id); }, }; } @@ -49,7 +58,7 @@ function buildMenu() { commandItem('new.connection'), commandItem('new.sqliteDatabase'), commandItem('new.modelCompare'), - commandItem('new.freetable'), + commandItem('new.freetable'), { type: 'separator' }, commandItem('file.open'), commandItem('file.openArchive'), @@ -99,25 +108,25 @@ function buildMenu() { { label: 'dbgate.org', click() { - require('electron').shell.openExternal('https://dbgate.org'); + electron.shell.openExternal('https://dbgate.org'); }, }, { label: 'DbGate on GitHub', click() { - require('electron').shell.openExternal('https://github.com/dbgate/dbgate'); + electron.shell.openExternal('https://github.com/dbgate/dbgate'); }, }, { label: 'DbGate on docker hub', click() { - require('electron').shell.openExternal('https://hub.docker.com/r/dbgate/dbgate'); + electron.shell.openExternal('https://hub.docker.com/r/dbgate/dbgate'); }, }, { label: 'Report problem or feature request', click() { - require('electron').shell.openExternal('https://github.com/dbgate/dbgate/issues/new'); + electron.shell.openExternal('https://github.com/dbgate/dbgate/issues/new'); }, }, commandItem('tabs.changelog'), @@ -146,10 +155,27 @@ ipcMain.on('update-commands', async (event, arg) => { menu.enabled = command.enabled; } }); +ipcMain.on('close-window', async (event, arg) => { + mainWindow.close(); +}); + +ipcMain.handle('showOpenDialog', async (event, options) => { + const res = electron.dialog.showOpenDialogSync(mainWindow, options); + return res; +}); +ipcMain.handle('showSaveDialog', async (event, options) => { + const res = electron.dialog.showSaveDialogSync(mainWindow, options); + return res; +}); +ipcMain.handle('showItemInFolder', async (event, path) => { + electron.shell.showItemInFolder(path); +}); +ipcMain.handle('openExternal', async (event, url) => { + electron.shell.openExternal(url); +}); function createWindow() { - const bounds = store.get('winBounds'); - + const bounds = initialConfig['winBounds']; mainWindow = new BrowserWindow({ width: 1200, height: 800, @@ -158,10 +184,11 @@ function createWindow() { icon: os.platform() == 'win32' ? 'icon.ico' : path.resolve(__dirname, '../icon.png'), webPreferences: { nodeIntegration: true, - enableRemoteModule: true, + contextIsolation: false, }, }); - if (store.get('winIsMaximized')) { + + if (initialConfig['winIsMaximized']) { mainWindow.maximize(); } @@ -176,12 +203,15 @@ function createWindow() { protocol: 'file:', slashes: true, }); - mainWindow.webContents.on('did-finish-load', function () { - // hideSplash(); - }); mainWindow.on('close', () => { - store.set('winBounds', mainWindow.getBounds()); - store.set('winIsMaximized', mainWindow.isMaximized()); + fs.writeFileSync( + configRootPath, + JSON.stringify({ + winBounds: mainWindow.getBounds(), + winIsMaximized: mainWindow.isMaximized(), + }), + 'utf-8' + ); }); mainWindow.loadURL(startUrl); if (os.platform() == 'linux') { @@ -189,31 +219,27 @@ function createWindow() { } } - if (process.env.ELECTRON_START_URL) { - loadMainWindow(); - } else { - const apiProcess = fork(path.join(__dirname, '../packages/api/dist/bundle.js'), [ - '--dynport', - '--is-electron-bundle', - '--native-modules', - path.join(__dirname, 'nativeModules'), - // '../../../src/nativeModules' - ]); - apiProcess.on('message', msg => { - if (msg.msgtype == 'listening') { - const { port, authorization } = msg; - global['port'] = port; - global['authorization'] = authorization; - loadMainWindow(); - } - }); - } + const apiPackage = path.join( + __dirname, + process.env.DEVMODE ? '../../packages/api/src/index' : '../packages/api/dist/bundle.js' + ); - // and load the index.html of the app. - // mainWindow.loadURL('http://localhost:3000'); + global.API_PACKAGE = apiPackage; + global.NATIVE_MODULES = path.join(__dirname, 'nativeModules'); - // Open the DevTools. - // mainWindow.webContents.openDevTools(); + // console.log('global.API_PACKAGE', global.API_PACKAGE); + const api = require(apiPackage); + // console.log( + // 'REQUIRED', + // path.resolve( + // path.join(__dirname, process.env.DEVMODE ? '../../packages/api/src/index' : '../packages/api/dist/bundle.js') + // ) + // ); + const main = api.getMainModule(); + main.initializeElectronSender(mainWindow.webContents); + main.useAllControllers(null, electron); + + loadMainWindow(); // Emitted when the window is closed. mainWindow.on('closed', function () { @@ -225,7 +251,9 @@ function createWindow() { } function onAppReady() { - autoUpdater.checkForUpdatesAndNotify(); + if (!process.env.DEVMODE) { + autoUpdater.checkForUpdatesAndNotify(); + } createWindow(); } diff --git a/app/yarn.lock b/app/yarn.lock index 280075a27..c7ca69a69 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"7zip-bin@~5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.0.3.tgz#bc5b5532ecafd923a61f2fb097e3b108c0106a3f" - integrity sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA== +"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== "@develar/schema-utils@~2.6.5": version "2.6.5" @@ -16,25 +16,25 @@ ajv-keywords "^3.4.1" "@electron/get@^1.0.1": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.9.0.tgz#7fa6e61d7ff50fb82a8a41f437af7de3b97aa9a5" - integrity sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw== + version "1.13.1" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.13.1.tgz#42a0aa62fd1189638bd966e23effaebb16108368" + integrity sha512-U5vkXDZ9DwXtkPqlB45tfYnnYBN8PePp1z/XDCupnSpdrxT8/ThCv9WCwPLf9oqiSGZTkH6dx2jDUPuoXpjkcA== dependencies: debug "^4.1.1" env-paths "^2.2.0" fs-extra "^8.1.0" got "^9.6.0" progress "^2.0.3" - sanitize-filename "^1.6.2" + semver "^6.2.0" sumchecker "^3.0.1" optionalDependencies: - global-agent "^2.0.2" + global-agent "^3.0.0" global-tunnel-ng "^2.7.1" -"@electron/universal@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.0.4.tgz#231ac246c39d45b80e159bd21c3f9027dcaa10f5" - integrity sha512-ajZoumi4XwqwmZe8YVhu4XGkZBCPyWZsVCQONPTIe9TUlleSN+dic3YpXlaWcilx/HOzTdldTKtabNTeI0gDoA== +"@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" @@ -49,6 +49,16 @@ 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" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -61,50 +71,47 @@ dependencies: defer-to-connect "^1.0.1" -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@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/debug@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" - integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== - -"@types/fs-extra@^9.0.7": - version "9.0.11" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.11.tgz#8cc99e103499eab9f347dbc6ca4e99fb8d2c2b87" - integrity sha512-mZsifGG4QeQ7hlkhO56u7zt/ycBgGxSVsFI/6lGTU34VtwkiqrrSDgw0+ygs8kFGWcXnFQWMrzF2h7TtDFNixA== +"@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/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" -"@types/integer@latest": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/integer/-/integer-4.0.0.tgz#3b778715df72d2cf8ba73bad27bd9d830907f944" - integrity sha512-2U1i6bIRiqizl6O+ETkp2HhUZIxg7g+burUabh9tzGd0qcszfNaFRaY9bGNlQKgEU7DCsH5qMajRDW5QamWQbw== - "@types/minimatch@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" - integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node@*": - version "13.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" - integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.0.tgz#62797cee3b8b497f6547503b2312254d4fe3c2bb" + integrity sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw== -"@types/node@^12.0.12": - version "12.12.30" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.30.tgz#3501e6f09b954de9c404671cefdbcc5d9d7c45f6" - integrity sha512-sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg== +"@types/node@^14.6.2": + version "14.18.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.2.tgz#00fe4d1686d5f6cf3a2f2e9a0eef42594d06abfc" + integrity sha512-fqtSN5xn/bBzDxMT77C1rJg6CsH/R49E7qsGuvdPJa20HtV5zSTuLJPNfnlyVH3wauKnkHdLggTVkOW/xP9oQg== "@types/plist@^3.0.1": version "3.0.2" @@ -114,25 +121,25 @@ "@types/node" "*" xmlbuilder ">=11.0.1" -"@types/semver@^7.3.1": - version "7.3.4" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.4.tgz#43d7168fec6fa0988bb1a513a697b29296721afb" - integrity sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ== +"@types/semver@^7.3.6": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" + integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== "@types/verror@^1.10.3": - version "1.10.4" - resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.4.tgz#805c0612b3a0c124cf99f517364142946b74ba3b" - integrity sha512-OjJdqx6QlbyZw9LShPwRW+Kmiegeg3eWNI41MQQKaG3vjdU2L9SRElntM51HmHBY1cu7izxQJ1lMYioQh3XMBg== + version "1.10.5" + resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1" + integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw== "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== -"@types/yargs@^15.0.13": - version "15.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" - integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== +"@types/yargs@^17.0.1": + version "17.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.7.tgz#44a484c634761da4391477515a98772b82b5060f" + integrity sha512-OvLKmpKdea1aWtqHv9bxVVcMoT6syAeK+198dfETIFkAevYRGwqh4H+KFxfjUETZuUuE5sQCAFwdOdoHUdo8eg== dependencies: "@types/yargs-parser" "*" @@ -156,44 +163,24 @@ ajv@^6.10.0, ajv@^6.12.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.10.2: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + 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 "^3.0.0" + string-width "^4.1.0" ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +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-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -201,46 +188,47 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" -app-builder-bin@3.5.12: - version "3.5.12" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.12.tgz#bbe174972cc1f481f73d6d92ad47a8b4c7eb4530" - integrity sha512-lQARM2AielmFoBeIo6LZigAe+58Wwe07ZWkt+wVeDxzyieNmeWjlvz/V5dKzinydwdHd+CNswN86sww46yijjA== +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.10.5: - version "22.10.5" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.10.5.tgz#24a88581c891e5b187a0d569aa44e7c4a0dc8de2" - integrity sha512-/W8nlGamJCtKlQtsMWwU9vb+cX4pTNY+rJWCuc7oXUykVSMS50W7LhQusIjCelNfymUQ1XCu6cXEY/ylqhX12A== +app-builder-lib@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.14.5.tgz#a61a50b132b858e98fdc70b6b88994ae99b4f96d" + integrity sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg== dependencies: - "7zip-bin" "~5.0.3" + "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.0.4" + "@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.10.5" - builder-util-runtime "8.7.3" + builder-util "22.14.5" + builder-util-runtime "8.9.1" chromium-pickle-js "^0.2.0" debug "^4.3.2" ejs "^3.1.6" - electron-publish "22.10.5" - fs-extra "^9.1.0" - hosted-git-info "^3.0.8" - is-ci "^2.0.0" - istextorbinary "^5.12.0" - js-yaml "^4.0.0" - lazy-val "^1.0.4" + electron-osx-sign "^0.5.0" + electron-publish "22.14.5" + 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" - normalize-package-data "^3.0.0" - read-config-file "6.0.0" + read-config-file "6.2.0" sanitize-filename "^1.6.3" - semver "^7.3.4" - temp-file "^3.3.7" + semver "^7.3.5" + temp-file "^3.4.0" aproba@^1.0.3: version "1.2.0" @@ -248,29 +236,22 @@ aproba@^1.0.3: integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== asar@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.0.3.tgz#1fef03c2d6d2de0cbad138788e4f7ae03b129c7b" - integrity sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473" + integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ== dependencies: chromium-pickle-js "^0.2.0" commander "^5.0.0" @@ -284,6 +265,11 @@ assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-exit-hook@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" @@ -294,35 +280,34 @@ async@0.9.x: resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 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== -better-sqlite3-with-prebuilds@^7.1.8: - version "7.1.8" - resolved "https://registry.yarnpkg.com/better-sqlite3-with-prebuilds/-/better-sqlite3-with-prebuilds-7.1.8.tgz#3090c478fe9b60e74ce053a76807b189784f62d7" - integrity sha512-trwg1qhN91cPYEB8D2K0KVHIsMsiAnxKx6/syfQ7rLrtD+zOS3fqJq4VGszMF+OuYAZJNAR4oLsikys3YW/6aA== +better-sqlite3@7.4.5: + version "7.4.5" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-7.4.5.tgz#acfc48d786114227f550a0a45e22ace51336e2d0" + integrity sha512-mybC3dgrtJeHkIRGP36tST7wjBlIMgTRAXhhO4bMpPZ17EG23FZxZeFcwKWy6o8mV1SKQFnQNyeAZlQpGrgheQ== dependencies: - "@types/integer" latest bindings "^1.5.0" - prebuild-install "^6.0.1" - tar "^6.1.0" - -binaryextensions@^4.15.0: - version "4.15.0" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-4.15.0.tgz#c63a502e0078ff1b0e9b00a9f74d3c2b0f8bd32e" - integrity sha512-MkUl3szxXolQ2scI1PM14WOT951KnaTNJ0eMKg7WzOI4kvSxyNo/Cygx4LOBNhwyINhAuSQpJW1rYD9aBSxGaw== + prebuild-install "^7.0.0" + tar "^6.1.11" bindings@^1.5.0: version "1.5.0" @@ -332,9 +317,9 @@ bindings@^1.5.0: file-uri-to-path "1.0.0" bl@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" inherits "^2.0.4" @@ -347,26 +332,26 @@ bluebird-lst@^1.0.9: dependencies: bluebird "^3.5.5" -bluebird@^3.5.5: +bluebird@^3.5.0, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -boolean@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.1.tgz#35ecf2b4a2ee191b0b44986f14eb5f052a5cbb4f" - integrity sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA== +boolean@^3.0.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.1.4.tgz#f51a2fb5838a99e06f9b6ec1edb674de67026435" + integrity sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w== boxen@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" - integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + 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 "^3.0.0" camelcase "^6.2.0" chalk "^4.1.0" cli-boxes "^2.2.1" - string-width "^4.2.0" + string-width "^4.2.2" type-fest "^0.20.2" widest-line "^3.1.0" wrap-ansi "^7.0.0" @@ -386,15 +371,38 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + 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" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer@^5.1.0, buffer@^5.5.0: version "5.7.1" @@ -404,41 +412,34 @@ buffer@^5.1.0, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builder-util-runtime@8.7.2: - version "8.7.2" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.2.tgz#d93afc71428a12789b437e13850e1fa7da956d72" - integrity sha512-xBqv+8bg6cfnzAQK1k3OGpfaHg+QkPgIgpEkXNhouZ0WiUkyZCftuRc2LYzQrLucFywpa14Xbc6+hTbpq83yRA== - dependencies: - debug "^4.1.1" - sax "^1.2.4" - -builder-util-runtime@8.7.3: - version "8.7.3" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.3.tgz#0aaafa52d25295c939496f62231ca9ff06c30e40" - integrity sha512-1Q2ReBqFblimF5g/TLg2+0M5Xzv0Ih5LxJ/BMWXvEy/e6pQKeeEpbkPMGsN6OiQgkygaZo5VXCXIjOkOQG5EoQ== +builder-util-runtime@8.9.1: + version "8.9.1" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz#25f066b3fbc20b3e6236a9b956b1ebb0e33ff66a" + integrity sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg== dependencies: debug "^4.3.2" sax "^1.2.4" -builder-util@22.10.5: - version "22.10.5" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.10.5.tgz#8d0b04a3be6acc74938679aa90dcb3181b1ae86b" - integrity sha512-/MkLhmyo1gU3xMwXJxccQaRj/9tm5eTd6ZyebTf8SYouY4r3hRser+LxhOm/f8Z9W6oJvfPe0jc9TFsxYfMcsg== +builder-util@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.14.5.tgz#42a18608d2a566c0846e91266464776c8bfb0cc9" + integrity sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA== dependencies: - "7zip-bin" "~5.0.3" - "@types/debug" "^4.1.5" - "@types/fs-extra" "^9.0.7" - app-builder-bin "3.5.12" + "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.7.3" - chalk "^4.1.0" + builder-util-runtime "8.9.1" + chalk "^4.1.1" + cross-spawn "^7.0.3" debug "^4.3.2" - fs-extra "^9.1.0" - is-ci "^2.0.0" - js-yaml "^4.0.0" + 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.3.7" + temp-file "^3.4.0" cacheable-request@^6.0.0: version "6.1.0" @@ -453,15 +454,10 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + version "6.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" + integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== chalk@^2.4.2: version "2.4.2" @@ -472,10 +468,10 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -500,27 +496,23 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + 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-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== +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - slice-ansi "^1.0.0" - string-width "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + slice-ansi "^3.0.0" + string-width "^4.2.0" cliui@^7.0.2: version "7.0.4" @@ -572,6 +564,13 @@ colors@1.0.3: resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -584,12 +583,17 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +compare-version@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA= + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -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== @@ -599,26 +603,10 @@ concat-stream@1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" -conf@^6.2.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/conf/-/conf-6.2.3.tgz#0c0611f0fca25174d72c7b633ff6af9173a55f62" - integrity sha512-xwce2fuN77kiXiUq0tQImwJM0SXkGKt1/uZYyiQ9OWUKUQmF6gzIMyCL0idlpgQelKomSFMkAGn2QK7JJ2c1Cg== - dependencies: - ajv "^6.10.2" - debounce-fn "^3.0.1" - dot-prop "^5.0.0" - env-paths "^2.2.0" - json-schema-typed "^7.0.1" - make-dir "^3.0.0" - onetime "^5.1.0" - pkg-up "^3.0.1" - semver "^6.2.0" - write-file-atomic "^3.0.0" - config-chain@^1.1.11: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -641,27 +629,28 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= copyfiles@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.2.0.tgz#d9fc6c06f299337fb7eeb7ea5887e9d7188d9d47" - integrity sha512-iJbHJI+8OKqsq+4JF0rqgRkZzo++jqO6Wf4FUU1JM41cJF6JcY5968XyF4tm3Kkm7ZOMrqlljdm8N9oyY5raGw== + version "2.4.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== dependencies: glob "^7.0.5" minimatch "^3.0.3" - mkdirp "^0.5.1" + mkdirp "^1.0.4" noms "0.0.0" through2 "^2.0.1" - yargs "^13.2.4" + untildify "^4.0.0" + yargs "^16.1.0" -core-js@^3.6.4: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" - integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== - -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + crc@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" @@ -687,16 +676,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -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== @@ -710,46 +690,20 @@ crypto-random-string@^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== -debounce-fn@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-3.0.1.tgz#034afe8b904d985d1ec1aa589cd15f388741d680" - integrity sha512-aBoJh5AhpqlRoHZjHmOzZlRx+wz2xVwGL9rjs+Kj0EWUrL4/h4K7OD176thl2Tdoqui/AaA4xhHrNArGLAaI3Q== - dependencies: - mimic-fn "^2.1.0" - -debug@2.6.9: +debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" -debug@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.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= - decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -764,6 +718,13 @@ decompress-response@^4.2.0: dependencies: mimic-response "^2.0.0" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -781,6 +742,11 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -792,9 +758,9 @@ detect-libc@^1.0.3: integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== dir-compare@^2.4.0: version "2.4.0" @@ -806,39 +772,38 @@ dir-compare@^2.4.0: commander "2.9.0" minimatch "3.0.4" -dmg-builder@22.10.5: - version "22.10.5" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.10.5.tgz#65a33c106ead5a350c7de8997c546559bd6e0e7c" - integrity sha512-58FEpfH8PEFqjbUNka4bYr52snRT8+LSXrP4gy6EZWOVICbOlmTOYj988pfoLam5C5iXb3odmyUQqwWOxlsEUw== +dmg-builder@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.14.5.tgz#137c0b55e639badcc0b119eb060e6fa4ed61d948" + integrity sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w== dependencies: - app-builder-lib "22.10.5" - builder-util "22.10.5" - fs-extra "^9.1.0" + app-builder-lib "22.14.5" + builder-util "22.14.5" + builder-util-runtime "8.9.1" + fs-extra "^10.0.0" iconv-lite "^0.6.2" - js-yaml "^4.0.0" - sanitize-filename "^1.6.3" + js-yaml "^4.1.0" optionalDependencies: - dmg-license "^1.0.8" + dmg-license "^1.0.9" -dmg-license@^1.0.8: - 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== +dmg-license@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.10.tgz#89f52afae25d827fce8d818c13aff30af1c16bcc" + integrity sha512-SVeeyiOeinV5JCPHXMdKOgK1YVbak/4+8WL2rBnfqRYpA5FaeFaQnQWb25x628am1w70CbipGDv9S51biph63A== 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" + iconv-corefoundation "^1.1.7" + plist "^3.0.4" smart-buffer "^4.0.2" verror "^1.10.0" -dot-prop@^5.0.0, dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== +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 "^2.0.0" @@ -847,24 +812,16 @@ dotenv-expand@^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@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotenv@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05" + integrity sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg== duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -editions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/editions/-/editions-6.1.0.tgz#ba6c6cf9f4bb571d9e53ea34e771a602e5a66549" - integrity sha512-h6nWEyIocfgho9J3sTSuhU/WoFOu1hTX75rPBebNrbF38Y9QFDjCDizYXdikHTySW7Y3mSxli8bpDz9RAtc7rA== - dependencies: - errlop "^4.0.0" - version-range "^1.0.0" - ejs@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" @@ -872,80 +829,77 @@ ejs@^3.1.6: dependencies: jake "^10.6.1" -electron-builder@22.10.5: - version "22.10.5" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.10.5.tgz#03b156b93e6012609027c3aaa69201a3ad21e454" - integrity sha512-0q/289UUJUhRou6lZKDz/wzK6WprIQ6VXMTmaI+w9qXvSNugPC9UA5s2zXInOkjZOvO/xKnjeyiavrVSHYF3tA== +electron-builder@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.14.5.tgz#3a25547bd4fe3728d4704da80956a794c5c31496" + integrity sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg== dependencies: - "@types/yargs" "^15.0.13" - app-builder-lib "22.10.5" - bluebird-lst "^1.0.9" - builder-util "22.10.5" - builder-util-runtime "8.7.3" - chalk "^4.1.0" - dmg-builder "22.10.5" - fs-extra "^9.1.0" - is-ci "^2.0.0" - lazy-val "^1.0.4" - read-config-file "6.0.0" - sanitize-filename "^1.6.3" + "@types/yargs" "^17.0.1" + app-builder-lib "22.14.5" + builder-util "22.14.5" + builder-util-runtime "8.9.1" + chalk "^4.1.1" + dmg-builder "22.14.5" + 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 "^16.2.0" + yargs "^17.0.1" -electron-log@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.3.1.tgz#1405fef9d4e6964a5fdb8790a69163aa237ffe91" - integrity sha512-S/0CMjYjgyWUsZ3d27VvErPaI5W4oILp4jfeCuN4DhDqrJW6jKRUD2PxFfTdeZEIjM7+fttGg7A61rPcAcZC1w== +electron-log@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-4.4.1.tgz#28ebeb474eccba2ebf194a96c40d6328e5353e4d" + integrity sha512-nK/DwxPLtwWbggPCm27eMQhYHc3gzoZ+cokBK99diO4WsZJKrv5l44EUW8mRfWpmC8ZubnMyp6GTUIJyTc9AJA== -electron-publish@22.10.5: - version "22.10.5" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.10.5.tgz#9cbe46266b6c79d8c6e99840755682e2262d3543" - integrity sha512-dHyuazv3P3j1Xyv7pdwTwAvxWab2pCb0G0Oa6qWQoCc4b1/mRGY00M7AvYW1cPuUijj9zYAf1HmXfM6MifaMlA== +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" + integrity sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ== dependencies: - "@types/fs-extra" "^9.0.7" - bluebird-lst "^1.0.9" - builder-util "22.10.5" - builder-util-runtime "8.7.3" - chalk "^4.1.0" - fs-extra "^9.1.0" - lazy-val "^1.0.4" - mime "^2.5.0" + bluebird "^3.5.0" + compare-version "^0.1.2" + debug "^2.6.8" + isbinaryfile "^3.0.2" + minimist "^1.2.0" + plist "^3.0.1" -electron-store@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-5.1.1.tgz#3040e5b4ad25d2e4caea59d505646c1e7c94a09b" - integrity sha512-FLidOVE8JVCdJXHd7xY/JojKJ2r2WNmWt0O/LlX2LuSVV7dkG2RSy2/Gm2LFw8OKDfrNBd9c/s4X1ikMrJEUKg== +electron-publish@22.14.5: + version "22.14.5" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.14.5.tgz#34bcdce671f0e651330db20040d6919c77c94bd6" + integrity sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg== dependencies: - conf "^6.2.1" - type-fest "^0.7.1" + "@types/fs-extra" "^9.0.11" + builder-util "22.14.5" + builder-util-runtime "8.9.1" + chalk "^4.1.1" + fs-extra "^10.0.0" + lazy-val "^1.0.5" + mime "^2.5.2" -electron-updater@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.5.tgz#4fb36f593a031c87ea07ee141c9f064d5deffb15" - integrity sha512-5jjN7ebvfj1cLI0VZMdCnJk6aC4bP+dy7ryBf21vArR0JzpRVk0OZHA2QBD+H5rm6ZSeDYHOY6+8PrMEqJ4wlQ== +electron-updater@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.6.1.tgz#80ca805c4f51b2e682aac29d18fed75d6a533d32" + integrity sha512-YsU1mHqXLrXXmBMsxhxy24PrbaB8rnpZDPmFa2gOkTYk/Ch13+R0fjsRSpPYvqtskVVY0ux8fu+HnUkVkqc7og== dependencies: - "@types/semver" "^7.3.1" - builder-util-runtime "8.7.2" - fs-extra "^9.0.1" - js-yaml "^3.14.0" - lazy-val "^1.0.4" + "@types/semver" "^7.3.6" + builder-util-runtime "8.9.1" + fs-extra "^10.0.0" + js-yaml "^4.1.0" + lazy-val "^1.0.5" + lodash.escaperegexp "^4.1.2" lodash.isequal "^4.5.0" - semver "^7.3.2" + semver "^7.3.5" -electron@11.2.3: - version "11.2.3" - resolved "https://registry.yarnpkg.com/electron/-/electron-11.2.3.tgz#8ad1d9858436cfca0e2e5ea7fea326794ae58ebb" - integrity sha512-6yxOc42nDAptHKNlUG/vcOh2GI9x2fqp2nQbZO0/3sz2CrwsJkwR3i3oMN9XhVJaqI7GK1vSCJz0verOkWlXcQ== +electron@13.6.3: + version "13.6.3" + resolved "https://registry.yarnpkg.com/electron/-/electron-13.6.3.tgz#c0217178807d3e0b2175c49dbe33ea8dac447e73" + integrity sha512-kevgR6/RuEhchJQbgCKhHle9HvJhi2dOJlicFZJqbbqa9BVpZARqqFDlwTSatYxmUPUJwu09FvyMwJG2DMQIng== dependencies: "@electron/get" "^1.0.1" - "@types/node" "^12.0.12" + "@types/node" "^14.6.2" extract-zip "^1.0.3" -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -964,14 +918,9 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: once "^1.4.0" env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -errlop@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-4.1.0.tgz#8e7b8f4f1bf0a6feafce4d14f0c0cf4bf5ef036b" - integrity sha512-vul6gGBuVt0M2TPi1/WrcL86+Hb3Q2Tpu3TME3sbVhZrYf7J1ZMHCodI25RQKCVurh56qTfvgM0p3w5cT4reSQ== + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== es6-error@^4.1.1: version "4.1.1" @@ -993,15 +942,10 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== expand-template@^2.0.3: version "2.0.3" @@ -1009,34 +953,34 @@ expand-template@^2.0.3: integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== extract-zip@^1.0.3: - version "1.6.7" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" - integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= + version "1.7.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== dependencies: - concat-stream "1.6.2" - debug "2.6.9" - mkdirp "0.5.1" - yauzl "2.4.1" + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= dependencies: pend "~1.2.0" @@ -1046,9 +990,9 @@ file-uri-to-path@1.0.0: integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== filelist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" - integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== dependencies: minimatch "^3.0.4" @@ -1059,13 +1003,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-yarn-workspace-root@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" @@ -1073,11 +1010,29 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" +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== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fs-constants@^1.0.0: version "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@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.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" @@ -1096,17 +1051,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - -fs-extra@^9.1.0: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -1128,11 +1073,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1147,7 +1087,7 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +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" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -1160,9 +1100,9 @@ get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -1171,10 +1111,10 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -glob@^7.0.5: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.0.5, glob@^7.1.3, glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1183,30 +1123,17 @@ glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3, glob@^7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +global-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-agent@^2.0.2: - version "2.1.8" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.8.tgz#99d153662b2c04cbc1199ffbc081a3aa656ac50f" - integrity sha512-VpBe/rhY6Rw2VDOTszAMNambg+4Qv8j0yiTNDYEXXXxkUNGWLHp8A3ztK4YDBbFNcWF4rgsec6/5gPyryya/+A== - dependencies: - boolean "^3.0.0" - core-js "^3.6.4" + boolean "^3.0.1" es6-error "^4.1.1" - matcher "^2.1.0" - roarr "^2.15.2" - semver "^7.1.2" - serialize-error "^5.0.0" + matcher "^3.0.0" + roarr "^2.15.3" + semver "^7.3.2" + serialize-error "^7.0.1" global-dirs@^3.0.0: version "3.0.0" @@ -1226,9 +1153,9 @@ global-tunnel-ng@^2.7.1: tunnel "^0.0.6" globalthis@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9" - integrity sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" + integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ== dependencies: define-properties "^1.1.3" @@ -1249,15 +1176,10 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== "graceful-readlink@>= 1.0.0": version "1.0.1" @@ -1284,21 +1206,7 @@ has-yarn@^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" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hosted-git-info@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^4.0.1: +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== @@ -1310,18 +1218,18 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -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== +iconv-corefoundation@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" + integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== dependencies: - cli-truncate "^1.1.0" + cli-truncate "^2.1.0" node-addon-api "^1.6.3" iconv-lite@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" - integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + 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" @@ -1370,12 +1278,12 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -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" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== +is-ci@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: - has "^1.0.3" + ci-info "^3.2.0" is-docker@^2.0.0: version "2.2.1" @@ -1389,11 +1297,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -1454,20 +1357,23 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isbinaryfile@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + 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" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -istextorbinary@^5.12.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-5.12.0.tgz#2f84777838668fdf524c305a2363d6057aaeec84" - integrity sha512-wLDRWD7qpNTYubk04+q3en1+XZGS4vYWK0+SxNSXJLaITMMEK+J3o/TlOMyULeH1qozVZ9uUkKcyMA8odyxz8w== - dependencies: - binaryextensions "^4.15.0" - editions "^6.1.0" - textextensions "^5.11.0" - jake@^10.6.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" @@ -1478,23 +1384,7 @@ jake@^10.6.1: filelist "^1.0.1" minimatch "^3.0.4" -js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -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== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.0.0: +js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -1511,20 +1401,15 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-typed@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" - integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== - json-stringify-safe@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== +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== dependencies: minimist "^1.2.5" @@ -1536,11 +1421,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -1565,25 +1450,22 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" -lazy-val@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz#882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65" - integrity sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q== +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== -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= -lodash@^4.17.10: +lodash@^4.17.10, lodash@^4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -1606,18 +1488,18 @@ lru-cache@^6.0.0: yallist "^4.0.0" make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + 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== dependencies: semver "^6.0.0" -matcher@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-2.1.0.tgz#64e1041c15b993e23b786f93320a7474bf833c28" - integrity sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ== +matcher@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== dependencies: - escape-string-regexp "^2.0.0" + escape-string-regexp "^4.0.0" micromatch@^4.0.2: version "4.0.4" @@ -1627,15 +1509,22 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.2.3" -mime@^2.5.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mime-types@^2.1.12: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" @@ -1647,6 +1536,11 @@ mimic-response@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== +mimic-response@^3.1.0: + version "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== + 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" @@ -1654,20 +1548,15 @@ minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 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== + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== dependencies: yallist "^4.0.0" @@ -1684,14 +1573,14 @@ 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.5.1, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +mkdirp@^0.5.4: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: - minimist "0.0.8" + minimist "^1.2.5" -mkdirp@^1.0.3: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -1701,23 +1590,23 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -msnodesqlv8@^2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/msnodesqlv8/-/msnodesqlv8-2.0.10.tgz#47d05157c2d30e5f48fa0aa550a0353ab56a027c" - integrity sha512-oA46Y8ZQxYEW9M8U+Wg4bI5g8nI2pueIkyameEpxanHqr9d5w4a0Pgk2WvugHiY1UYmN1bPziUdqBgwkBSGrnA== +msnodesqlv8@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/msnodesqlv8/-/msnodesqlv8-2.4.4.tgz#1e4e10246480c486b074199d6efddf5dab8af9b9" + integrity sha512-VJpurwVyq6c2mgkEFFe1S0BD1+vZSLy0vv5qbkdnJoIaeC5XBcfLSKYsjeP1V5QEc1fv4CD3oau84kcGXNk/cQ== dependencies: - nan "^2.14.2" - prebuild-install "^6.0.0" + nan "^2.15.0" + prebuild-install "^6.1.4" -nan@^2.14.2: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== +nan@^2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== napi-build-utils@^1.0.1: version "1.0.2" @@ -1730,18 +1619,18 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-abi@^2.21.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.26.0.tgz#355d5d4bc603e856f74197adbf3f5117a396ba40" - integrity sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ== + version "2.30.1" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" + integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== dependencies: semver "^5.4.1" -node-abi@^2.7.0: - version "2.19.3" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.3.tgz#252f5dcab12dad1b5503b2d27eddd4733930282d" - integrity sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg== +node-abi@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.5.0.tgz#26e8b7b251c3260a5ac5ba5aef3b4345a0229248" + integrity sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw== dependencies: - semver "^5.4.1" + semver "^7.3.5" node-addon-api@^1.6.3: version "1.7.2" @@ -1756,25 +1645,10 @@ noms@0.0.0: inherits "^2.0.1" readable-stream "~1.0.31" -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= - -normalize-package-data@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" - integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== - dependencies: - hosted-git-info "^4.0.1" - resolve "^1.20.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== npm-conf@^1.1.3: version "1.1.3" @@ -1816,13 +1690,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -1841,25 +1708,6 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-limit@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - package-json@^6.3.0: version "6.5.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" @@ -1889,11 +1737,6 @@ patch-package@^6.4.7: slash "^2.0.0" tmp "^0.0.33" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -1909,11 +1752,6 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -1929,47 +1767,18 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pkg-up@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -plist@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.2.tgz#74bbf011124b90421c22d15779cee60060ba95bc" - integrity sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ== +plist@^3.0.1, plist@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.4.tgz#a62df837e3aed2bb3b735899d510c4f186019cbe" + integrity sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg== dependencies: base64-js "^1.5.1" xmlbuilder "^9.0.7" - xmldom "^0.5.0" -prebuild-install@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.0.tgz#669022bcde57c710a869e39c5ca6bf9cd207f316" - integrity sha512-h2ZJ1PXHKWZpp1caLw0oX9sagVpL2YTk+ZwInQbQ3QqNd4J03O6MpFNmMTJlkfgPENWqe5kP0WjQLqz5OjLfsw== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - -prebuild-install@^6.0.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.2.tgz#6ce5fc5978feba5d3cbffedca0682b136a0b5bff" - integrity sha512-PzYWIKZeP+967WuKYXlTOhYBgGOvTRSfaKI89XnfJ0ansRAH7hDU45X+K+FZeI1Wb/7p/NnuctPH3g0IqKUuSQ== +prebuild-install@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f" + integrity sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ== dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" @@ -1978,7 +1787,6 @@ prebuild-install@^6.0.1: mkdirp-classic "^0.5.3" napi-build-utils "^1.0.1" node-abi "^2.21.0" - noop-logger "^0.1.1" npmlog "^4.0.1" pump "^3.0.0" rc "^1.2.7" @@ -1986,6 +1794,25 @@ prebuild-install@^6.0.1: tar-fs "^2.0.0" tunnel-agent "^0.6.0" +prebuild-install@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.0.tgz#3c5ce3902f1cb9d6de5ae94ca53575e4af0c1574" + integrity sha512-IvSenf33K7JcgddNz2D5w521EgO+4aMMjFt73Uk9FRzQ7P+QZPKrp7qPsDydsSwjGt3T5xRNnM1bj1zMTD5fTA== + dependencies: + detect-libc "^1.0.3" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + npmlog "^4.0.1" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -2036,15 +1863,15 @@ rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-config-file@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.0.0.tgz#224b5dca6a5bdc1fb19e63f89f342680efdb9299" - integrity sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA== +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 "^8.2.0" + dotenv "^9.0.2" dotenv-expand "^5.1.0" - js-yaml "^3.13.1" - json5 "^2.1.2" + js-yaml "^4.1.0" + json5 "^2.2.0" lazy-val "^1.0.4" readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: @@ -2080,9 +1907,9 @@ readable-stream@~1.0.31: string_decoder "~0.10.x" registry-auth-token@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" - integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: rc "^1.2.8" @@ -2098,19 +1925,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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -2125,12 +1939,19 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" -roarr@^2.15.2: - version "2.15.2" - resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.2.tgz#34f6229ae3c8c12167c4ae60f58fe75e79a1e394" - integrity sha512-jmaDhK9CO4YbQAV8zzCnq9vjAqeO489MS5ehZ+rXmFiPFFE6B+S9KYO6prjmLJ5A0zY3QxVlQdrIya7E/azz/Q== +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - boolean "^3.0.0" + glob "^7.1.3" + +roarr@^2.15.3: + version "2.15.4" + resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== + dependencies: + boolean "^3.0.1" detect-node "^2.0.4" globalthis "^1.0.1" json-stringify-safe "^5.0.1" @@ -2152,7 +1973,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sanitize-filename@^1.6.2, sanitize-filename@^1.6.3: +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== @@ -2186,33 +2007,21 @@ semver@^6.0.0, 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.2: - version "7.1.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" - integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== - -semver@^7.3.2: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.4: +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== dependencies: lru-cache "^6.0.0" -serialize-error@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-5.0.0.tgz#a7ebbcdb03a5d71a6ed8461ffe0fc1a1afed62ac" - integrity sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA== +serialize-error@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== dependencies: - type-fest "^0.8.0" + type-fest "^0.13.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -2241,15 +2050,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.6" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== simple-concat@^1.0.0: version "1.0.1" @@ -2265,27 +2069,38 @@ simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" +simple-get@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" + integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + slash@^2.0.0: version "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== +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" smart-buffer@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== source-map-support@^0.5.19: - 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== + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -2295,42 +2110,11 @@ source-map@^0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - sprintf-js@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - stat-mode@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" @@ -2345,31 +2129,14 @@ 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: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + 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.0" + strip-ansi "^6.0.1" string_decoder@^1.1.1: version "1.3.0" @@ -2397,26 +2164,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +strip-ansi@^6.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 "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" + ansi-regex "^5.0.1" strip-json-comments@~2.0.1: version "2.0.1" @@ -2438,9 +2191,9 @@ supports-color@^5.3.0: has-flag "^3.0.0" supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + 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" @@ -2465,10 +2218,10 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" - integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== +tar@^6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -2477,18 +2230,13 @@ tar@^6.1.0: mkdirp "^1.0.3" yallist "^4.0.0" -temp-file@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.7.tgz#686885d635f872748e384e871855958470aeb18a" - integrity sha512-9tBJKt7GZAQt/Rg0QzVWA8Am8c1EFl+CAv04/aBVqlx5oyfQ508sFIABshQ0xbZu6mBrFLWIUXO/bbLYghW70g== +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== dependencies: async-exit-hook "^2.0.1" - fs-extra "^8.1.0" - -textextensions@^5.11.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-5.12.0.tgz#b908120b5c1bd4bb9eba41423d75b176011ab68a" - integrity sha512-IYogUDaP65IXboCiPPC0jTLLBzYlhhw2Y4b0a2trPgbHNGGGEfuHE6tds+yDcCf4mpNDaGISFzwSSezcXt+d6w== + fs-extra "^10.0.0" through2@^2.0.1: version "2.0.5" @@ -2498,6 +2246,13 @@ through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" +tmp-promise@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -2505,6 +2260,13 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmp@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + to-readable-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" @@ -2536,21 +2298,16 @@ tunnel@^0.0.6: resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== +type-fest@^0.13.1: + version "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.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -type-fest@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -2575,16 +2332,16 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + update-notifier@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" @@ -2606,9 +2363,9 @@ update-notifier@^5.1.0: xdg-basedir "^4.0.0" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -2629,45 +2386,15 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.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= + version "1.10.1" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" -version-compare@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/version-compare/-/version-compare-1.1.0.tgz#7b3e67e7e6cec5c72d9c9e586f8854e419ade17c" - integrity sha512-zVKtPOJTC9x23lzS4+4D7J+drq80BXVYAmObnr5zqxxFVH7OffJ1lJlAS7LYsQNV56jx/wtbw0UV7XHLrvd6kQ== - -version-range@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/version-range/-/version-range-1.1.0.tgz#1c233064202ee742afc9d56e21da3b2e15260acf" - integrity sha512-R1Ggfg2EXamrnrV3TkZ6yBNgITDbclB3viwSjbZ3+eK0VVNK4ajkYJTnDz5N0bIMYDtK9MUBvXJUnKO5RWWJ6w== - dependencies: - version-compare "^1.0.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -2683,11 +2410,11 @@ which@^2.0.1: isexe "^2.0.0" wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" widest-line@^3.1.0: version "3.1.0" @@ -2696,15 +2423,6 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -2744,61 +2462,32 @@ xmlbuilder@^9.0.7: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= -xmldom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.5.0.tgz#193cb96b84aa3486127ea6272c4596354cb4962e" - integrity sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA== - xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^13.2.4: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" +yargs-parser@^21.0.0: + version "21.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" + integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA== -yargs@^16.2.0: +yargs@^16.1.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -2811,9 +2500,23 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= +yargs@^17.0.1: + version "17.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.0.tgz#295c4ffd0eef148ef3e48f7a2e0f58d0e4f26b1c" + integrity sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew== dependencies: - fd-slicer "~1.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" diff --git a/docker/Dockerfile b/docker/Dockerfile index 33f00c678..59344f14b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM node:12-alpine +FROM node:14-alpine WORKDIR /home/dbgate-docker diff --git a/fillNativeModules.js b/fillNativeModules.js index d51157258..61dea66eb 100644 --- a/fillNativeModules.js +++ b/fillNativeModules.js @@ -5,7 +5,7 @@ let fillContent = ''; if (process.platform == 'win32') { fillContent += `content.msnodesqlv8 = () => require('msnodesqlv8');`; } -fillContent += `content['better-sqlite3-with-prebuilds'] = () => require('better-sqlite3-with-prebuilds');`; +fillContent += `content['better-sqlite3'] = () => require('better-sqlite3');`; const getContent = (empty) => ` // this file is generated automatically by script fillNativeModules.js, do not edit it manually diff --git a/package.json b/package.json index a8660c07c..cfddcdb52 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "4.4.5-beta.2", + "version": "4.4.5-beta.24", "name": "dbgate-all", "workspaces": [ "packages/*", @@ -9,6 +9,7 @@ ], "scripts": { "start:api": "yarn workspace dbgate-api start", + "start:app": "cd app && yarn start", "start:api:portal": "yarn workspace dbgate-api start:portal", "start:api:covid": "yarn workspace dbgate-api start:covid", "start:web": "yarn workspace dbgate-web dev", diff --git a/packages/api/.env-portal b/packages/api/.env-portal index 824ef8b29..fff5cd187 100644 --- a/packages/api/.env-portal +++ b/packages/api/.env-portal @@ -1,6 +1,6 @@ DEVMODE=1 -CONNECTIONS=mysql,postgres +CONNECTIONS=mysql,postgres,mongo,mongo2 LABEL_mysql=MySql localhost SERVER_mysql=localhost @@ -15,3 +15,13 @@ USER_postgres=postgres PASSWORD_postgres=test PORT_postgres=5433 ENGINE_postgres=postgres@dbgate-plugin-postgres + +LABEL_mongo=Mongo URL +URL_mongo=mongodb://localhost:27017 +ENGINE_mongo=mongo@dbgate-plugin-mongo + +LABEL_mongo2=Mongo Server +SERVER_mongo2=localhost +ENGINE_mongo2=mongo@dbgate-plugin-mongo + +# docker run -p 3000:3000 -e CONNECTIONS=mongo -e URL_mongo=mongodb://localhost:27017 -e ENGINE_mongo=mongo@dbgate-plugin-mongo -e LABEL_mongo=mongo dbgate/dbgate:beta diff --git a/packages/api/package.json b/packages/api/package.json index 156c04ce7..0cb342670 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -19,7 +19,6 @@ "dependencies": { "async-lock": "^1.2.4", "axios": "^0.21.1", - "better-sqlite3-with-prebuilds": "^7.1.8", "body-parser": "^1.19.0", "bufferutil": "^4.0.1", "byline": "^5.0.0", @@ -39,6 +38,7 @@ "fs-reverse": "^0.0.3", "get-port": "^5.1.1", "http": "^0.0.0", + "is-electron": "^2.2.1", "js-yaml": "^4.1.0", "json-stable-stringify": "^1.0.1", "line-reader": "^0.4.0", @@ -49,7 +49,6 @@ "node-ssh-forward": "^0.7.2", "portfinder": "^1.0.28", "simple-encryptor": "^4.0.0", - "socket.io": "^2.3.0", "tar": "^6.0.5", "uuid": "^3.4.0" }, @@ -74,6 +73,7 @@ "webpack-cli": "^3.3.11" }, "optionalDependencies": { - "msnodesqlv8": "^2.4.0" + "better-sqlite3": "7.4.5", + "msnodesqlv8": "^2.4.4" } } diff --git a/packages/api/src/controllers/archive.js b/packages/api/src/controllers/archive.js index 371f1bd61..052987e19 100644 --- a/packages/api/src/controllers/archive.js +++ b/packages/api/src/controllers/archive.js @@ -10,7 +10,7 @@ const { saveFreeTableData } = require('../utility/freeTableStorage'); const loadFilesRecursive = require('../utility/loadFilesRecursive'); module.exports = { - folders_meta: 'get', + folders_meta: true, async folders() { const folders = await fs.readdir(archivedir()); return [ @@ -27,14 +27,14 @@ module.exports = { ]; }, - createFolder_meta: 'post', + createFolder_meta: true, async createFolder({ folder }) { await fs.mkdir(path.join(archivedir(), folder)); socket.emitChanged('archive-folders-changed'); return true; }, - createLink_meta: 'post', + createLink_meta: true, async createLink({ linkedFolder }) { const folder = await this.getNewArchiveFolder({ database: path.parse(linkedFolder).name + '.link' }); fs.writeFile(path.join(archivedir(), folder), linkedFolder); @@ -43,7 +43,7 @@ module.exports = { return folder; }, - files_meta: 'get', + files_meta: true, async files({ folder }) { const dir = resolveArchiveFolder(folder); if (!(await fs.exists(dir))) return []; @@ -70,23 +70,23 @@ module.exports = { ]; }, - refreshFiles_meta: 'post', + refreshFiles_meta: true, async refreshFiles({ folder }) { socket.emitChanged(`archive-files-changed-${folder}`); }, - refreshFolders_meta: 'post', + refreshFolders_meta: true, async refreshFolders() { socket.emitChanged(`archive-folders-changed`); }, - deleteFile_meta: 'post', + deleteFile_meta: true, async deleteFile({ folder, file, fileType }) { await fs.unlink(path.join(resolveArchiveFolder(folder), `${file}.${fileType}`)); socket.emitChanged(`archive-files-changed-${folder}`); }, - renameFile_meta: 'post', + renameFile_meta: true, async renameFile({ folder, file, newFile, fileType }) { await fs.rename( path.join(resolveArchiveFolder(folder), `${file}.${fileType}`), @@ -95,14 +95,14 @@ module.exports = { socket.emitChanged(`archive-files-changed-${folder}`); }, - renameFolder_meta: 'post', + renameFolder_meta: true, async renameFolder({ folder, newFolder }) { const uniqueName = await this.getNewArchiveFolder({ database: newFolder }); await fs.rename(path.join(archivedir(), folder), path.join(archivedir(), uniqueName)); socket.emitChanged(`archive-folders-changed`); }, - deleteFolder_meta: 'post', + deleteFolder_meta: true, async deleteFolder({ folder }) { if (!folder) throw new Error('Missing folder parameter'); if (folder.endsWith('.link')) { @@ -113,14 +113,14 @@ module.exports = { socket.emitChanged(`archive-folders-changed`); }, - saveFreeTable_meta: 'post', + saveFreeTable_meta: true, async saveFreeTable({ folder, file, data }) { await saveFreeTableData(path.join(resolveArchiveFolder(folder), `${file}.jsonl`), data); socket.emitChanged(`archive-files-changed-${folder}`); return true; }, - loadFreeTable_meta: 'post', + loadFreeTable_meta: true, async loadFreeTable({ folder, file }) { return new Promise((resolve, reject) => { const fileStream = fs.createReadStream(path.join(resolveArchiveFolder(folder), `${file}.jsonl`)); diff --git a/packages/api/src/controllers/config.js b/packages/api/src/controllers/config.js index b86f67461..d4221e215 100644 --- a/packages/api/src/controllers/config.js +++ b/packages/api/src/controllers/config.js @@ -21,7 +21,7 @@ module.exports = { } }, - get_meta: 'get', + get_meta: true, async get() { const permissions = process.env.PERMISSIONS ? process.env.PERMISSIONS.split(',') : null; @@ -33,17 +33,17 @@ module.exports = { }; }, - platformInfo_meta: 'get', + platformInfo_meta: true, async platformInfo() { return platformInfo; }, - getSettings_meta: 'get', + getSettings_meta: true, async getSettings() { return this.settingsValue; }, - updateSettings_meta: 'post', + updateSettings_meta: true, async updateSettings(values) { if (!hasPermission(`settings/change`)) return false; try { @@ -60,7 +60,7 @@ module.exports = { } }, - changelog_meta: 'get', + changelog_meta: true, async changelog() { const resp = await axios.default.get('https://raw.githubusercontent.com/dbgate/dbgate/master/CHANGELOG.md'); return resp.data; diff --git a/packages/api/src/controllers/connections.js b/packages/api/src/controllers/connections.js index 5321807ce..5ec9873d2 100644 --- a/packages/api/src/controllers/connections.js +++ b/packages/api/src/controllers/connections.js @@ -8,6 +8,9 @@ const { datadir, filesdir } = require('../utility/directories'); const socket = require('../utility/socket'); const { encryptConnection } = require('../utility/crypting'); const { handleProcessCommunication } = require('../utility/processComm'); +const { pickSafeConnectionInfo } = require('../utility/crypting'); + +const processArgs = require('../utility/processArgs'); function getNamedArgs() { const res = {}; @@ -37,7 +40,7 @@ function getDatabaseFileLabel(databaseFile) { function getPortalCollections() { if (process.env.CONNECTIONS) { - return _.compact(process.env.CONNECTIONS.split(',')).map(id => ({ + const connections = _.compact(process.env.CONNECTIONS.split(',')).map(id => ({ _id: id, engine: process.env[`ENGINE_${id}`], server: process.env[`SERVER_${id}`], @@ -45,11 +48,22 @@ function getPortalCollections() { password: process.env[`PASSWORD_${id}`], port: process.env[`PORT_${id}`], databaseUrl: process.env[`URL_${id}`], + useDatabaseUrl: !!process.env[`URL_${id}`], databaseFile: process.env[`FILE_${id}`], defaultDatabase: process.env[`DATABASE_${id}`], singleDatabase: !!process.env[`DATABASE_${id}`], displayName: process.env[`LABEL_${id}`], })); + console.log('Using connections from ENV variables:'); + console.log(JSON.stringify(connections.map(pickSafeConnectionInfo), undefined, 2)); + const noengine = connections.filter(x => !x.engine); + if (noengine.length > 0) { + console.log( + 'Warning: Invalid CONNECTIONS configutation, missing ENGINE for connection ID:', + noengine.map(x => x._id) + ); + } + return connections; } const args = getNamedArgs(); @@ -126,29 +140,34 @@ module.exports = { } }, - list_meta: 'get', + list_meta: true, async list() { return portalConnections || this.datastore.find(); }, - test_meta: { - method: 'post', - raw: true, - }, - test(req, res) { - const subprocess = fork(process.argv[1], ['--start-process', 'connectProcess', ...process.argv.slice(3)]); - subprocess.on('message', resp => { - if (handleProcessCommunication(resp, subprocess)) return; - // @ts-ignore - const { msgtype } = resp; - if (msgtype == 'connected' || msgtype == 'error') { - res.json(resp); - } + test_meta: true, + test(connection) { + const subprocess = fork(global['API_PACKAGE'] || process.argv[1], [ + '--is-forked-api', + '--start-process', + 'connectProcess', + ...processArgs.getPassArgs(), + // ...process.argv.slice(3), + ]); + subprocess.send(connection); + return new Promise(resolve => { + subprocess.on('message', resp => { + if (handleProcessCommunication(resp, subprocess)) return; + // @ts-ignore + const { msgtype } = resp; + if (msgtype == 'connected' || msgtype == 'error') { + resolve(resp); + } + }); }); - subprocess.send(req.body); }, - save_meta: 'post', + save_meta: true, async save(connection) { if (portalConnections) return; let res; @@ -162,7 +181,7 @@ module.exports = { return res; }, - update_meta: 'post', + update_meta: true, async update({ _id, values }) { if (portalConnections) return; const res = await this.datastore.update({ _id }, { $set: values }); @@ -170,7 +189,7 @@ module.exports = { return res; }, - updateDatabase_meta: 'post', + updateDatabase_meta: true, async updateDatabase({ conid, database, values }) { if (portalConnections) return; const conn = await this.datastore.find({ _id: conid }); @@ -185,7 +204,7 @@ module.exports = { return res; }, - delete_meta: 'post', + delete_meta: true, async delete(connection) { if (portalConnections) return; const res = await this.datastore.remove(_.pick(connection, '_id')); @@ -193,14 +212,14 @@ module.exports = { return res; }, - get_meta: 'get', + get_meta: true, async get({ conid }) { - if (portalConnections) return portalConnections.find(x => x._id == conid); + if (portalConnections) return portalConnections.find(x => x._id == conid) || null; const res = await this.datastore.find({ _id: conid }); - return res[0]; + return res[0] || null; }, - newSqliteDatabase_meta: 'post', + newSqliteDatabase_meta: true, async newSqliteDatabase({ file }) { const sqliteDir = path.join(filesdir(), 'sqlite'); if (!(await fs.exists(sqliteDir))) { diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index 1cefe04cc..d0911adc9 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -25,6 +25,7 @@ const requireEngineDriver = require('../utility/requireEngineDriver'); const generateDeploySql = require('../shell/generateDeploySql'); const { createTwoFilesPatch } = require('diff'); const diff2htmlPage = require('../utility/diff2htmlPage'); +const processArgs = require('../utility/processArgs'); module.exports = { /** @type {import('dbgate-types').OpenedDatabaseConnection[]} */ @@ -74,10 +75,12 @@ module.exports = { const existing = this.opened.find(x => x.conid == conid && x.database == database); if (existing) return existing; const connection = await connections.get({ conid }); - const subprocess = fork(process.argv[1], [ + const subprocess = fork(global['API_PACKAGE'] || process.argv[1], [ + '--is-forked-api', '--start-process', 'databaseConnectionProcess', - ...process.argv.slice(3), + ...processArgs.getPassArgs(), + // ...process.argv.slice(3), ]); const lastClosed = this.closed[`${conid}/${database}`]; const newOpened = { @@ -121,7 +124,7 @@ module.exports = { return promise; }, - queryData_meta: 'post', + queryData_meta: true, async queryData({ conid, database, sql }) { console.log(`Processing query, conid=${conid}, database=${database}, sql=${sql}`); const opened = await this.ensureOpened(conid, database); @@ -132,7 +135,7 @@ module.exports = { return res; }, - runScript_meta: 'post', + runScript_meta: true, async runScript({ conid, database, sql }) { console.log(`Processing script, conid=${conid}, database=${database}, sql=${sql}`); const opened = await this.ensureOpened(conid, database); @@ -140,21 +143,21 @@ module.exports = { return res; }, - collectionData_meta: 'post', + collectionData_meta: true, async collectionData({ conid, database, options }) { const opened = await this.ensureOpened(conid, database); const res = await this.sendRequest(opened, { msgtype: 'collectionData', options }); return res.result; }, - updateCollection_meta: 'post', + updateCollection_meta: true, async updateCollection({ conid, database, changeSet }) { const opened = await this.ensureOpened(conid, database); const res = await this.sendRequest(opened, { msgtype: 'updateCollection', changeSet }); return res.result; }, - status_meta: 'get', + status_meta: true, async status({ conid, database }) { const existing = this.opened.find(x => x.conid == conid && x.database == database); if (existing) { @@ -176,7 +179,7 @@ module.exports = { }; }, - ping_meta: 'post', + ping_meta: true, async ping({ conid, database }) { let existing = this.opened.find(x => x.conid == conid && x.database == database); @@ -192,7 +195,7 @@ module.exports = { }; }, - refresh_meta: 'post', + refresh_meta: true, async refresh({ conid, database, keepOpen }) { if (!keepOpen) this.close(conid, database); @@ -200,7 +203,7 @@ module.exports = { return { status: 'ok' }; }, - syncModel_meta: 'post', + syncModel_meta: true, async syncModel({ conid, database }) { const conn = await this.ensureOpened(conid, database); conn.subprocess.send({ msgtype: 'syncModel' }); @@ -224,13 +227,13 @@ module.exports = { } }, - disconnect_meta: 'post', + disconnect_meta: true, async disconnect({ conid, database }) { await this.close(conid, database, true); return { status: 'ok' }; }, - structure_meta: 'get', + structure_meta: true, async structure({ conid, database }) { if (conid == '__model') { const model = await importDbModel(database); @@ -247,13 +250,14 @@ module.exports = { // }; }, - serverVersion_meta: 'get', + serverVersion_meta: true, async serverVersion({ conid, database }) { + if (!conid) return null; const opened = await this.ensureOpened(conid, database); - return opened.serverVersion; + return opened.serverVersion || null; }, - sqlPreview_meta: 'post', + sqlPreview_meta: true, async sqlPreview({ conid, database, objects, options }) { // wait for structure await this.structure({ conid, database }); @@ -263,7 +267,7 @@ module.exports = { return res; }, - exportModel_meta: 'post', + exportModel_meta: true, async exportModel({ conid, database }) { const archiveFolder = await archive.getNewArchiveFolder({ database }); await fs.mkdir(path.join(archivedir(), archiveFolder)); @@ -273,10 +277,13 @@ module.exports = { return { archiveFolder }; }, - generateDeploySql_meta: 'post', + generateDeploySql_meta: true, async generateDeploySql({ conid, database, archiveFolder }) { const opened = await this.ensureOpened(conid, database); - const res = await this.sendRequest(opened, { msgtype: 'generateDeploySql', modelFolder: resolveArchiveFolder(archiveFolder) }); + const res = await this.sendRequest(opened, { + msgtype: 'generateDeploySql', + modelFolder: resolveArchiveFolder(archiveFolder), + }); return res; // const connection = await connections.get({ conid }); @@ -285,7 +292,7 @@ module.exports = { // analysedStructure: await this.structure({ conid, database }), // modelFolder: resolveArchiveFolder(archiveFolder), // }); - + // const deployedModel = generateDbPairingId(await importDbModel(path.join(archivedir(), archiveFolder))); // const currentModel = generateDbPairingId(await this.structure({ conid, database })); // const currentModelPaired = matchPairedObjects(deployedModel, currentModel); @@ -300,7 +307,7 @@ module.exports = { // }; // return sql; }, - // runCommand_meta: 'post', + // runCommand_meta: true, // async runCommand({ conid, database, sql }) { // console.log(`Running SQL command , conid=${conid}, database=${database}, sql=${sql}`); // const opened = await this.ensureOpened(conid, database); @@ -343,7 +350,7 @@ module.exports = { return res; }, - generateDbDiffReport_meta: 'post', + generateDbDiffReport_meta: true, async generateDbDiffReport({ filePath, sourceConid, sourceDatabase, targetConid, targetDatabase }) { const unifiedDiff = await this.getUnifiedDiff({ sourceConid, sourceDatabase, targetConid, targetDatabase }); diff --git a/packages/api/src/controllers/files.js b/packages/api/src/controllers/files.js index 1b14e58aa..225005bad 100644 --- a/packages/api/src/controllers/files.js +++ b/packages/api/src/controllers/files.js @@ -20,7 +20,7 @@ function deserialize(format, text) { } module.exports = { - list_meta: 'get', + list_meta: true, async list({ folder }) { if (!hasPermission(`files/${folder}/read`)) return []; const dir = path.join(filesdir(), folder); @@ -29,7 +29,7 @@ module.exports = { return files; }, - listAll_meta: 'get', + listAll_meta: true, async listAll() { const folders = await fs.readdir(filesdir()); const res = []; @@ -42,7 +42,7 @@ module.exports = { return res; }, - delete_meta: 'post', + delete_meta: true, async delete({ folder, file }) { if (!hasPermission(`files/${folder}/write`)) return; await fs.unlink(path.join(filesdir(), folder, file)); @@ -50,7 +50,7 @@ module.exports = { socket.emitChanged(`all-files-changed`); }, - rename_meta: 'post', + rename_meta: true, async rename({ folder, file, newFile }) { if (!hasPermission(`files/${folder}/write`)) return; await fs.rename(path.join(filesdir(), folder, file), path.join(filesdir(), folder, newFile)); @@ -58,7 +58,7 @@ module.exports = { socket.emitChanged(`all-files-changed`); }, - copy_meta: 'post', + copy_meta: true, async copy({ folder, file, newFile }) { if (!hasPermission(`files/${folder}/write`)) return; await fs.copyFile(path.join(filesdir(), folder, file), path.join(filesdir(), folder, newFile)); @@ -66,7 +66,7 @@ module.exports = { socket.emitChanged(`all-files-changed`); }, - load_meta: 'post', + load_meta: true, async load({ folder, file, format }) { if (folder.startsWith('archive:')) { const text = await fs.readFile(path.join(resolveArchiveFolder(folder.substring('archive:'.length)), file), { @@ -80,7 +80,7 @@ module.exports = { } }, - save_meta: 'post', + save_meta: true, async save({ folder, file, data, format }) { if (folder.startsWith('archive:')) { const dir = resolveArchiveFolder(folder.substring('archive:'.length)); @@ -101,12 +101,12 @@ module.exports = { } }, - saveAs_meta: 'post', + saveAs_meta: true, async saveAs({ filePath, data, format }) { await fs.writeFile(filePath, serialize(format, data)); }, - favorites_meta: 'get', + favorites_meta: true, async favorites() { if (!hasPermission(`files/favorites/read`)) return []; const dir = path.join(filesdir(), 'favorites'); @@ -125,7 +125,7 @@ module.exports = { return res; }, - generateUploadsFile_meta: 'get', + generateUploadsFile_meta: true, async generateUploadsFile() { const fileName = `${uuidv1()}.html`; return { @@ -134,7 +134,7 @@ module.exports = { }; }, - exportChart_meta: 'post', + exportChart_meta: true, async exportChart({ filePath, title, config, image }) { const fileName = path.parse(filePath).base; const imageFile = fileName.replace('.html', '-preview.png'); diff --git a/packages/api/src/controllers/jsldata.js b/packages/api/src/controllers/jsldata.js index 84ce60e5f..3a0480bea 100644 --- a/packages/api/src/controllers/jsldata.js +++ b/packages/api/src/controllers/jsldata.js @@ -104,7 +104,7 @@ module.exports = { return datastore; }, - getInfo_meta: 'get', + getInfo_meta: true, async getInfo({ jslid }) { const file = getJslFileName(jslid); const firstLine = await readFirstLine(file); @@ -112,13 +112,13 @@ module.exports = { return null; }, - getRows_meta: 'post', + getRows_meta: true, async getRows({ jslid, offset, limit, filters }) { const datastore = await this.ensureDatastore(jslid); return datastore.getRows(offset, limit, _.isEmpty(filters) ? null : filters); }, - getStats_meta: 'get', + getStats_meta: true, getStats({ jslid }) { const file = `${getJslFileName(jslid)}.stats`; if (fs.existsSync(file)) { @@ -146,7 +146,7 @@ module.exports = { // } }, - saveFreeTable_meta: 'post', + saveFreeTable_meta: true, async saveFreeTable({ jslid, data }) { saveFreeTableData(getJslFileName(jslid), data); return true; diff --git a/packages/api/src/controllers/metadata.js b/packages/api/src/controllers/metadata.js index 961d749cb..74e0a528a 100644 --- a/packages/api/src/controllers/metadata.js +++ b/packages/api/src/controllers/metadata.js @@ -7,14 +7,14 @@ function pickObjectNames(array) { } module.exports = { - // tableData_meta: 'get', + // tableData_meta: true, // async tableData({ conid, database, schemaName, pureName }) { // const opened = await databaseConnections.ensureOpened(conid, database); // const res = await databaseConnections.sendRequest(opened, { msgtype: 'tableData', schemaName, pureName }); // return res; // }, - listObjects_meta: 'get', + listObjects_meta: true, async listObjects({ conid, database }) { const opened = await databaseConnections.ensureOpened(conid, database); const types = ['tables', 'collections', 'views', 'procedures', 'functions', 'triggers']; @@ -27,7 +27,7 @@ module.exports = { ); }, - tableInfo_meta: 'get', + tableInfo_meta: true, async tableInfo({ conid, database, schemaName, pureName }) { const opened = await databaseConnections.ensureOpened(conid, database); const table = opened.structure.tables.find(x => x.pureName == pureName && x.schemaName == schemaName); @@ -38,7 +38,7 @@ module.exports = { }; }, - sqlObjectInfo_meta: 'get', + sqlObjectInfo_meta: true, async sqlObjectInfo({ objectTypeField, conid, database, schemaName, pureName }) { const opened = await databaseConnections.ensureOpened(conid, database); const res = opened.structure[objectTypeField].find(x => x.pureName == pureName && x.schemaName == schemaName); diff --git a/packages/api/src/controllers/plugins.js b/packages/api/src/controllers/plugins.js index c45545285..2e225f5f1 100644 --- a/packages/api/src/controllers/plugins.js +++ b/packages/api/src/controllers/plugins.js @@ -12,7 +12,7 @@ const _ = require('lodash'); const packagedPluginsContent = require('../packagedPluginsContent'); module.exports = { - script_meta: 'get', + script_meta: true, async script({ packageName }) { const packagedContent = packagedPluginsContent(); @@ -30,7 +30,7 @@ module.exports = { return data; }, - search_meta: 'get', + search_meta: true, async search({ filter }) { // DOCS: https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-v1search const resp = await axios.default.get( @@ -40,7 +40,7 @@ module.exports = { return (objects || []).map(x => x.package); }, - info_meta: 'get', + info_meta: true, async info({ packageName }) { try { const infoResp = await axios.default.get(`https://registry.npmjs.org/${packageName}`); @@ -63,7 +63,7 @@ module.exports = { } }, - installed_meta: 'get', + installed_meta: true, async installed() { const packagedContent = packagedPluginsContent(); @@ -107,7 +107,7 @@ module.exports = { // await fs.writeFile(path.join(datadir(), 'removed-plugins'), this.removedPlugins.join('\n')); // }, - install_meta: 'post', + install_meta: true, async install({ packageName }) { if (!hasPermission(`plugins/install`)) return; const dir = path.join(pluginsdir(), packageName); @@ -120,7 +120,7 @@ module.exports = { // await this.saveRemovePlugins(); }, - uninstall_meta: 'post', + uninstall_meta: true, async uninstall({ packageName }) { if (!hasPermission(`plugins/install`)) return; const dir = path.join(pluginsdir(), packageName); @@ -130,7 +130,7 @@ module.exports = { await this.saveRemovePlugins(); }, - upgrade_meta: 'post', + upgrade_meta: true, async upgrade({ packageName }) { if (!hasPermission(`plugins/install`)) return; const dir = path.join(pluginsdir(), packageName); @@ -143,13 +143,13 @@ module.exports = { socket.emitChanged(`installed-plugins-changed`); }, - command_meta: 'post', + command_meta: true, async command({ packageName, command, args }) { const content = requirePlugin(packageName); return content.commands[command](args); }, - authTypes_meta: 'get', + authTypes_meta: true, async authTypes({ engine }) { const packageName = extractPackageName(engine); const content = requirePlugin(packageName); diff --git a/packages/api/src/controllers/queryHistory.js b/packages/api/src/controllers/queryHistory.js index 0cbb75e88..9d4c3eb09 100644 --- a/packages/api/src/controllers/queryHistory.js +++ b/packages/api/src/controllers/queryHistory.js @@ -34,7 +34,7 @@ function readCore(reader, skip, limit, filter) { } module.exports = { - read_meta: 'get', + read_meta: true, async read({ skip, limit, filter }) { const fileName = path.join(datadir(), 'query-history.jsonl'); // @ts-ignore @@ -44,7 +44,7 @@ module.exports = { return res; }, - write_meta: 'post', + write_meta: true, async write({ data }) { const fileName = path.join(datadir(), 'query-history.jsonl'); await fs.appendFile(fileName, JSON.stringify(data) + '\n'); diff --git a/packages/api/src/controllers/runners.js b/packages/api/src/controllers/runners.js index 627981d82..a14bf9f39 100644 --- a/packages/api/src/controllers/runners.js +++ b/packages/api/src/controllers/runners.js @@ -8,6 +8,7 @@ const { fork } = require('child_process'); const { rundir, uploadsdir, pluginsdir, getPluginBackendPath, packagedPluginList } = require('../utility/directories'); const { extractShellApiPlugins, extractShellApiFunctionName } = require('dbgate-tools'); const { handleProcessCommunication } = require('../utility/processComm'); +const processArgs = require('../utility/processArgs'); function extractPlugins(script) { const requireRegex = /\s*\/\/\s*@require\s+([^\s]+)\s*\n/g; @@ -98,15 +99,22 @@ module.exports = { const pluginNames = _.union(fs.readdirSync(pluginsdir()), packagedPluginList); console.log(`RUNNING SCRIPT ${scriptFile}`); // const subprocess = fork(scriptFile, ['--checkParent', '--max-old-space-size=8192'], { - const subprocess = fork(scriptFile, ['--checkParent', ...process.argv.slice(3)], { - cwd: directory, - stdio: ['ignore', 'pipe', 'pipe', 'ipc'], - env: { - ...process.env, - DBGATE_API: global['dbgateApiModulePath'] || process.argv[1], - ..._.fromPairs(pluginNames.map(name => [`PLUGIN_${_.camelCase(name)}`, getPluginBackendPath(name)])), - }, - }); + const subprocess = fork( + scriptFile, + [ + '--checkParent', // ...process.argv.slice(3) + ...processArgs.getPassArgs(), + ], + { + cwd: directory, + stdio: ['ignore', 'pipe', 'pipe', 'ipc'], + env: { + ...process.env, + DBGATE_API: global['API_PACKAGE'] || global['dbgateApiModulePath'] || process.argv[1], + ..._.fromPairs(pluginNames.map(name => [`PLUGIN_${_.camelCase(name)}`, getPluginBackendPath(name)])), + }, + } + ); const pipeDispatcher = severity => data => this.dispatchMessage(runid, { severity, message: data.toString().trim() }); @@ -136,21 +144,21 @@ module.exports = { if (handleProcessCommunication(message, subprocess)) return; this[`handle_${msgtype}`](runid, message); }); - return newOpened; + return _.pick(newOpened, ['runid']); }, - start_meta: 'post', + start_meta: true, async start({ script }) { const runid = uuidv1(); return this.startCore(runid, scriptTemplate(script, false)); }, - getNodeScript_meta: 'post', + getNodeScript_meta: true, async getNodeScript({ script }) { return scriptTemplate(script, true); }, - cancel_meta: 'post', + cancel_meta: true, async cancel({ runid }) { const runner = this.opened.find(x => x.runid == runid); if (!runner) { @@ -160,7 +168,7 @@ module.exports = { return { state: 'ok' }; }, - files_meta: 'get', + files_meta: true, async files({ runid }) { const directory = path.join(rundir(), runid); const files = await fs.readdir(directory); @@ -176,7 +184,7 @@ module.exports = { return res; }, - loadReader_meta: 'post', + loadReader_meta: true, async loadReader({ functionName, props }) { const promise = new Promise((resolve, reject) => { const runid = uuidv1(); diff --git a/packages/api/src/controllers/serverConnections.js b/packages/api/src/controllers/serverConnections.js index 5ae4aa816..47f7de291 100644 --- a/packages/api/src/controllers/serverConnections.js +++ b/packages/api/src/controllers/serverConnections.js @@ -6,6 +6,7 @@ const AsyncLock = require('async-lock'); const { handleProcessCommunication } = require('../utility/processComm'); const lock = new AsyncLock(); const config = require('./config'); +const processArgs = require('../utility/processArgs'); module.exports = { opened: [], @@ -37,10 +38,12 @@ module.exports = { const existing = this.opened.find(x => x.conid == conid); if (existing) return existing; const connection = await connections.get({ conid }); - const subprocess = fork(process.argv[1], [ + const subprocess = fork(global['API_PACKAGE'] || process.argv[1], [ + '--is-forked-api', '--start-process', 'serverConnectionProcess', - ...process.argv.slice(3), + ...processArgs.getPassArgs(), + // ...process.argv.slice(3), ]); const newOpened = { conid, @@ -86,25 +89,25 @@ module.exports = { } }, - disconnect_meta: 'post', + disconnect_meta: true, async disconnect({ conid }) { await this.close(conid, true); return { status: 'ok' }; }, - listDatabases_meta: 'get', + listDatabases_meta: true, async listDatabases({ conid }) { const opened = await this.ensureOpened(conid); return opened.databases; }, - version_meta: 'get', + version_meta: true, async version({ conid }) { const opened = await this.ensureOpened(conid); return opened.version; }, - serverStatus_meta: 'get', + serverStatus_meta: true, async serverStatus() { return { ...this.closed, @@ -112,7 +115,7 @@ module.exports = { }; }, - ping_meta: 'post', + ping_meta: true, async ping({ connections }) { await Promise.all( _.uniq(connections).map(async conid => { @@ -128,7 +131,7 @@ module.exports = { return { status: 'ok' }; }, - refresh_meta: 'post', + refresh_meta: true, async refresh({ conid, keepOpen }) { if (!keepOpen) this.close(conid); @@ -136,7 +139,7 @@ module.exports = { return { status: 'ok' }; }, - createDatabase_meta: 'post', + createDatabase_meta: true, async createDatabase({ conid, name }) { const opened = await this.ensureOpened(conid); opened.subprocess.send({ msgtype: 'createDatabase', name }); diff --git a/packages/api/src/controllers/sessions.js b/packages/api/src/controllers/sessions.js index cf066e5b2..b651c37c9 100644 --- a/packages/api/src/controllers/sessions.js +++ b/packages/api/src/controllers/sessions.js @@ -5,6 +5,7 @@ const socket = require('../utility/socket'); const { fork } = require('child_process'); const jsldata = require('./jsldata'); const { handleProcessCommunication } = require('../utility/processComm'); +const processArgs = require('../utility/processArgs'); module.exports = { /** @type {import('dbgate-types').OpenedSession[]} */ @@ -61,11 +62,17 @@ module.exports = { handle_ping() {}, - create_meta: 'post', + create_meta: true, async create({ conid, database }) { const sesid = uuidv1(); const connection = await connections.get({ conid }); - const subprocess = fork(process.argv[1], ['--start-process', 'sessionProcess', ...process.argv.slice(3)]); + const subprocess = fork(global['API_PACKAGE'] || process.argv[1], [ + '--is-forked-api', + '--start-process', + 'sessionProcess', + ...processArgs.getPassArgs(), + // ...process.argv.slice(3), + ]); const newOpened = { conid, database, @@ -81,10 +88,10 @@ module.exports = { this[`handle_${msgtype}`](sesid, message); }); subprocess.send({ msgtype: 'connect', ...connection, database }); - return newOpened; + return _.pick(newOpened, ['conid', 'database', 'sesid']); }, - executeQuery_meta: 'post', + executeQuery_meta: true, async executeQuery({ sesid, sql }) { const session = this.opened.find(x => x.sesid == sesid); if (!session) { @@ -98,7 +105,7 @@ module.exports = { return { state: 'ok' }; }, - // cancel_meta: 'post', + // cancel_meta: true, // async cancel({ sesid }) { // const session = this.opened.find((x) => x.sesid == sesid); // if (!session) { @@ -108,7 +115,7 @@ module.exports = { // return { state: 'ok' }; // }, - kill_meta: 'post', + kill_meta: true, async kill({ sesid }) { const session = this.opened.find(x => x.sesid == sesid); if (!session) { @@ -119,7 +126,7 @@ module.exports = { return { state: 'ok' }; }, - // runCommand_meta: 'post', + // runCommand_meta: true, // async runCommand({ conid, database, sql }) { // console.log(`Running SQL command , conid=${conid}, database=${database}, sql=${sql}`); // const opened = await this.ensureOpened(conid, database); diff --git a/packages/api/src/index.js b/packages/api/src/index.js index 9da36f975..21ce5f68d 100644 --- a/packages/api/src/index.js +++ b/packages/api/src/index.js @@ -8,7 +8,7 @@ if (processArgs.startProcess) { const proc = require('./proc'); const module = proc[processArgs.startProcess]; module.start(); -} else if (!module['parent'] && !processArgs.checkParent) { +} else if (!processArgs.checkParent && !global['API_PACKAGE'] && !global['dbgateApiModulePath']) { const main = require('./main'); main.start(); diff --git a/packages/api/src/main.js b/packages/api/src/main.js index 29159fca9..5cb5ec46e 100644 --- a/packages/api/src/main.js +++ b/packages/api/src/main.js @@ -4,12 +4,8 @@ const bodyParser = require('body-parser'); const fileUpload = require('express-fileupload'); const http = require('http'); const cors = require('cors'); -const io = require('socket.io'); -const fs = require('fs'); const getPort = require('get-port'); -const childProcessChecker = require('./utility/childProcessChecker'); const path = require('path'); -const crypto = require('crypto'); const useController = require('./utility/useController'); const socket = require('./utility/socket'); @@ -31,10 +27,7 @@ const queryHistory = require('./controllers/queryHistory'); const { rundir } = require('./utility/directories'); const platformInfo = require('./utility/platformInfo'); -const processArgs = require('./utility/processArgs'); -const timingSafeCheckToken = require('./utility/timingSafeCheckToken'); -let authorization = null; let checkLocalhostOrigin = null; function start() { @@ -43,7 +36,6 @@ function start() { const app = express(); const server = http.createServer(app); - socket.set(io(server)); if (process.env.LOGIN && process.env.PASSWORD) { app.use( @@ -58,9 +50,6 @@ function start() { } app.use(function (req, res, next) { - if (authorization && !timingSafeCheckToken(req.headers.authorization, authorization)) { - return res.status(403).json({ error: 'Not authorized!' }); - } if (checkLocalhostOrigin) { if ( req.headers.origin && @@ -81,6 +70,20 @@ function start() { }); app.use(cors()); + + app.get('/stream', async function (req, res) { + res.set({ + 'Cache-Control': 'no-cache', + 'Content-Type': 'text/event-stream', + Connection: 'keep-alive', + }); + res.flushHeaders(); + + // Tell the client to retry every 10 seconds if connectivity is lost + res.write('retry: 10000\n\n'); + socket.setSseResponse(res); + }); + app.use(bodyParser.json({ limit: '50mb' })); app.use( @@ -90,20 +93,7 @@ function start() { }) ); - useController(app, '/connections', connections); - useController(app, '/server-connections', serverConnections); - useController(app, '/database-connections', databaseConnections); - useController(app, '/metadata', metadata); - useController(app, '/sessions', sessions); - useController(app, '/runners', runners); - useController(app, '/jsldata', jsldata); - useController(app, '/config', config); - useController(app, '/archive', archive); - useController(app, '/uploads', uploads); - useController(app, '/plugins', plugins); - useController(app, '/files', files); - useController(app, '/scheduler', scheduler); - useController(app, '/query-history', queryHistory); + useAllControllers(app, null); // if (process.env.PAGES_DIRECTORY) { // app.use('/pages', express.static(process.env.PAGES_DIRECTORY)); @@ -122,19 +112,7 @@ function start() { } } - if (processArgs.dynport) { - childProcessChecker(); - - authorization = crypto.randomBytes(32).toString('hex'); - - getPort().then(port => { - checkLocalhostOrigin = `localhost:${port}`; - server.listen(port, () => { - console.log(`DbGate API listening on port ${port}`); - process.send({ msgtype: 'listening', port, authorization }); - }); - }); - } else if (platformInfo.isNpmDist) { + if (platformInfo.isNpmDist) { app.use(express.static(path.join(__dirname, '../../dbgate-web/public'))); getPort({ port: 5000 }).then(port => { server.listen(port, () => { @@ -142,8 +120,47 @@ function start() { }); }); } else { - server.listen(3000); + const port = process.env.PORT || 3000; + console.log('DbGate API listening on port', port); + server.listen(port); } + + function shutdown() { + console.log('\nShutting down DbGate API server'); + server.close(() => { + console.log('Server shut down, terminating'); + process.exit(0); + }); + setTimeout(() => { + console.log('Server close timeout, terminating'); + process.exit(0); + }, 1000); + } + + process.on('SIGINT', shutdown); + process.on('SIGTERM', shutdown); + process.on('SIGBREAK', shutdown); } -module.exports = { start }; +function useAllControllers(app, electron) { + useController(app, electron, '/connections', connections); + useController(app, electron, '/server-connections', serverConnections); + useController(app, electron, '/database-connections', databaseConnections); + useController(app, electron, '/metadata', metadata); + useController(app, electron, '/sessions', sessions); + useController(app, electron, '/runners', runners); + useController(app, electron, '/jsldata', jsldata); + useController(app, electron, '/config', config); + useController(app, electron, '/archive', archive); + useController(app, electron, '/uploads', uploads); + useController(app, electron, '/plugins', plugins); + useController(app, electron, '/files', files); + useController(app, electron, '/scheduler', scheduler); + useController(app, electron, '/query-history', queryHistory); +} + +function initializeElectronSender(electronSender) { + socket.setElectronSender(electronSender); +} + +module.exports = { start, useAllControllers, initializeElectronSender }; diff --git a/packages/api/src/nativeModules.js b/packages/api/src/nativeModules.js index 649079303..954acbaa0 100644 --- a/packages/api/src/nativeModules.js +++ b/packages/api/src/nativeModules.js @@ -1,5 +1,13 @@ const argIndex = process.argv.indexOf('--native-modules'); -const redirectFile = argIndex > 0 ? process.argv[argIndex + 1] : null; +const redirectFile = global['NATIVE_MODULES'] || (argIndex > 0 ? process.argv[argIndex + 1] : null); -// @ts-ignore -module.exports = redirectFile ? __non_webpack_require__(redirectFile) : require('./nativeModulesContent'); +function requireDynamic(file) { + try { + // @ts-ignore + return __non_webpack_require__(redirectFile); + } catch (err) { + return require(redirectFile); + } +} + +module.exports = redirectFile ? requireDynamic(redirectFile) : require('./nativeModulesContent'); diff --git a/packages/api/src/proc/connectProcess.js b/packages/api/src/proc/connectProcess.js index 5e6041441..be08ab51a 100644 --- a/packages/api/src/proc/connectProcess.js +++ b/packages/api/src/proc/connectProcess.js @@ -2,17 +2,9 @@ const childProcessChecker = require('../utility/childProcessChecker'); const requireEngineDriver = require('../utility/requireEngineDriver'); const connectUtility = require('../utility/connectUtility'); const { handleProcessCommunication } = require('../utility/processComm'); +const { pickSafeConnectionInfo } = require('../utility/crypting'); const _ = require('lodash'); -function pickSafeConnectionInfo(connection) { - return _.mapValues(connection, (v, k) => { - if (k == 'engine' || k == 'port' || k == 'authType' || k == 'sshMode' || k == 'passwordMode') return v; - if (v === null || v === true || v === false) return v; - if (v) return '***'; - return undefined; - }); -} - const formatErrorDetail = (e, connection) => `${e.stack} Error JSON: ${JSON.stringify(e, undefined, 2)} diff --git a/packages/api/src/proc/databaseConnectionProcess.js b/packages/api/src/proc/databaseConnectionProcess.js index 0f7477c9c..a9f1422a8 100644 --- a/packages/api/src/proc/databaseConnectionProcess.js +++ b/packages/api/src/proc/databaseConnectionProcess.js @@ -270,6 +270,7 @@ function start() { try { await handleMessage(message); } catch (e) { + console.error('Error in DB connection', e); process.send({ msgtype: 'error', error: e.message }); } }); diff --git a/packages/api/src/utility/DatastoreProxy.js b/packages/api/src/utility/DatastoreProxy.js index e7e23fe7f..0da243170 100644 --- a/packages/api/src/utility/DatastoreProxy.js +++ b/packages/api/src/utility/DatastoreProxy.js @@ -1,6 +1,7 @@ const { fork } = require('child_process'); const uuidv1 = require('uuid/v1'); const { handleProcessCommunication } = require('./processComm'); +const processArgs = require('../utility/processArgs'); class DatastoreProxy { constructor(file) { @@ -29,7 +30,13 @@ class DatastoreProxy { async ensureSubprocess() { if (!this.subprocess) { - this.subprocess = fork(process.argv[1], ['--start-process', 'jslDatastoreProcess', ...process.argv.slice(3)]); + this.subprocess = fork(global['API_PACKAGE'] || process.argv[1], [ + '--is-forked-api', + '--start-process', + 'jslDatastoreProcess', + ...processArgs.getPassArgs(), + // ...process.argv.slice(3), + ]); this.subprocess.on('message', message => { // @ts-ignore diff --git a/packages/api/src/utility/crypting.js b/packages/api/src/utility/crypting.js index d7428df77..64ab3debb 100644 --- a/packages/api/src/utility/crypting.js +++ b/packages/api/src/utility/crypting.js @@ -2,6 +2,7 @@ const crypto = require('crypto'); const simpleEncryptor = require('simple-encryptor'); const fs = require('fs'); const path = require('path'); +const _ = require('lodash'); const { datadir } = require('./directories'); @@ -81,8 +82,18 @@ function decryptConnection(connection) { return connection; } +function pickSafeConnectionInfo(connection) { + return _.mapValues(connection, (v, k) => { + if (k == 'engine' || k == 'port' || k == 'authType' || k == 'sshMode' || k == 'passwordMode') return v; + if (v === null || v === true || v === false) return v; + if (v) return '***'; + return undefined; + }); +} + module.exports = { loadEncryptionKey, encryptConnection, decryptConnection, + pickSafeConnectionInfo, }; diff --git a/packages/api/src/utility/directories.js b/packages/api/src/utility/directories.js index 0dd2948a1..9af898e1e 100644 --- a/packages/api/src/utility/directories.js +++ b/packages/api/src/utility/directories.js @@ -41,6 +41,10 @@ const archivedir = dirFunc('archive'); const filesdir = dirFunc('files'); function packagedPluginsDir() { + // console.log('CALL DIR FROM', new Error('xxx').stack); + // console.log('__dirname', __dirname); + // console.log('platformInfo.isElectronBundle', platformInfo.isElectronBundle); + // console.log('platformInfo.isForkedApi', platformInfo.isForkedApi); if (platformInfo.isDevMode) { return path.resolve(__dirname, '../../../../plugins'); } @@ -53,6 +57,12 @@ function packagedPluginsDir() { } if (platformInfo.isElectronBundle) { return path.resolve(__dirname, '../../plugins'); + + // if (platformInfo.isForkedApi) { + // return path.resolve(__dirname, '../plugins'); + // } else { + // return path.resolve(__dirname, '../../plugins'); + // } } return null; } diff --git a/packages/api/src/utility/platformInfo.js b/packages/api/src/utility/platformInfo.js index 2025dc72b..237584f28 100644 --- a/packages/api/src/utility/platformInfo.js +++ b/packages/api/src/utility/platformInfo.js @@ -2,6 +2,7 @@ const fs = require('fs'); const os = require('os'); const path = require('path'); const processArgs = require('./processArgs'); +const isElectron = require('is-electron'); const platform = process.env.OS_OVERRIDE ? process.env.OS_OVERRIDE : process.platform; const isWindows = platform === 'win32'; @@ -10,6 +11,7 @@ const isLinux = platform === 'linux'; const isDocker = fs.existsSync('/home/dbgate-docker/public'); const isDevMode = process.env.DEVMODE == '1'; const isNpmDist = !!global['dbgateApiModulePath']; +const isForkedApi = processArgs.isForkedApi; // function moduleAvailable(name) { // try { @@ -20,14 +22,14 @@ const isNpmDist = !!global['dbgateApiModulePath']; // } // } -const isElectronBundle = processArgs.isElectronBundle; - const platformInfo = { isWindows, isMac, isLinux, isDocker, - isElectronBundle, + isElectronBundle: isElectron() && !isDevMode, + isForkedApi, + isElectron: isElectron(), isDevMode, isNpmDist, isSnap: process.env.ELECTRON_SNAP == 'true', diff --git a/packages/api/src/utility/processArgs.js b/packages/api/src/utility/processArgs.js index e93fb0b4e..a98992f90 100644 --- a/packages/api/src/utility/processArgs.js +++ b/packages/api/src/utility/processArgs.js @@ -7,15 +7,17 @@ function getNamedArg(name) { } const checkParent = process.argv.includes('--checkParent'); -const dynport = process.argv.includes('--dynport'); -const nativeModules = getNamedArg('--native-modules'); const startProcess = getNamedArg('--start-process'); -const isElectronBundle = process.argv.includes('--is-electron-bundle'); +const isForkedApi = process.argv.includes('--is-forked-api'); + +function getPassArgs() { + if (global['NATIVE_MODULES']) return ['--native-modules', global['NATIVE_MODULES']]; + return []; +} module.exports = { checkParent, - nativeModules, startProcess, - dynport, - isElectronBundle, + isForkedApi, + getPassArgs, }; diff --git a/packages/api/src/utility/requireEngineDriver.js b/packages/api/src/utility/requireEngineDriver.js index dabdf2be0..2b42ed1bc 100644 --- a/packages/api/src/utility/requireEngineDriver.js +++ b/packages/api/src/utility/requireEngineDriver.js @@ -1,5 +1,6 @@ const _ = require('lodash'); const requirePlugin = require('../shell/requirePlugin'); +const { pickSafeConnectionInfo } = require('./crypting'); /** @returns {import('dbgate-types').EngineDriver} */ function requireEngineDriver(connection) { @@ -10,14 +11,14 @@ function requireEngineDriver(connection) { engine = connection.engine; } if (!engine) { - throw new Error('Could not get driver from connection'); + throw new Error(`Could not get driver from connection ${JSON.stringify(pickSafeConnectionInfo(connection))}`); } if (engine.includes('@')) { const [shortName, packageName] = engine.split('@'); const plugin = requirePlugin(packageName); return plugin.drivers.find(x => x.engine == engine); } - throw new Error(`Could not found engine driver ${engine}`); + throw new Error(`Could not find engine driver ${engine}`); } module.exports = requireEngineDriver; diff --git a/packages/api/src/utility/socket.js b/packages/api/src/utility/socket.js index aefed81fb..928e24c53 100644 --- a/packages/api/src/utility/socket.js +++ b/packages/api/src/utility/socket.js @@ -1,19 +1,29 @@ -let socket = null; +let sseResponse = null; +let electronSender = null; +let init = ''; module.exports = { - set(value) { - socket = value; + setSseResponse(value) { + sseResponse = value; }, - get() { - return socket; + setElectronSender(value) { + electronSender = value; }, emit(message, data) { - // console.log('EMIT:', message, data); - socket.emit(message, data); + if (electronSender) { + electronSender.send(message, data == null ? null : data); + } else if (sseResponse) { + if (init) { + sseResponse.write(init); + init = ''; + } + sseResponse.write(`event: ${message}\ndata: ${JSON.stringify(data == null ? null : data)}\n\n`); + } else { + init += sseResponse; + } }, emitChanged(key) { - // console.log('EMIT_CHANGED:', key); - socket.emit('clean-cache', key); - socket.emit(key); + this.emit('clean-cache', key); + this.emit(key); }, }; diff --git a/packages/api/src/utility/useController.js b/packages/api/src/utility/useController.js index 67e4cb41c..877b8a334 100644 --- a/packages/api/src/utility/useController.js +++ b/packages/api/src/utility/useController.js @@ -4,7 +4,7 @@ const express = require('express'); /** * @param {string} route */ -module.exports = function useController(app, route, controller) { +module.exports = function useController(app, electron, route, controller) { const router = express.Router(); if (controller._init) { @@ -23,24 +23,39 @@ module.exports = function useController(app, route, controller) { const meta = controller[`${key}_meta`]; if (!meta) continue; - let method = 'get'; + const routeAction = `/${_.kebabCase(key)}`; + + if (electron) { + if (meta === true) { + const handler = `${route.substring(1)}-${_.kebabCase(key)}`; + // console.log('REGISTERING HANDLER', handler); + electron.ipcMain.handle(handler, async (event, args) => { + const data = await controller[key](args); + // console.log('HANDLED API', handler, data); + return data; + }); + } + + continue; + } + + let method = 'post'; let raw = false; let rawParams = false; - if (_.isString(meta)) { - method = meta; - } + // if (_.isString(meta)) { + // method = meta; + // } if (_.isPlainObject(meta)) { method = meta.method; raw = meta.raw; rawParams = meta.rawParams; } - const route = `/${_.kebabCase(key)}`; if (raw) { - router[method](route, controller[key]); + router[method](routeAction, controller[key]); } else { - router[method](route, async (req, res) => { + router[method](routeAction, async (req, res) => { // if (controller._init && !controller._init_called) { // await controller._init(); // controller._init_called = true; @@ -58,5 +73,7 @@ module.exports = function useController(app, route, controller) { } } - app.use(route, router); + if (app) { + app.use(route, router); + } }; diff --git a/packages/web/package.json b/packages/web/package.json index 3187a2c13..0ee67d4ea 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -43,9 +43,7 @@ "rollup-plugin-livereload": "^2.0.0", "rollup-plugin-svelte": "^7.0.0", "rollup-plugin-terser": "^7.0.0", - "rollup-plugin-web-worker-loader": "^1.6.1", "sirv-cli": "^1.0.0", - "socket.io-client": "^2.3.0", "sql-formatter": "^2.3.3", "svelte": "^3.43.0", "svelte-check": "^1.0.0", diff --git a/packages/web/rollup.config.js b/packages/web/rollup.config.js index 8d5f8db4c..f12e6b6d9 100644 --- a/packages/web/rollup.config.js +++ b/packages/web/rollup.config.js @@ -7,10 +7,8 @@ import { terser } from 'rollup-plugin-terser'; import sveltePreprocess from 'svelte-preprocess'; import typescript from '@rollup/plugin-typescript'; import replace from '@rollup/plugin-replace'; -import webWorkerLoader from 'rollup-plugin-web-worker-loader'; import css from 'rollup-plugin-css-only'; - const production = !process.env.ROLLUP_WATCH; function serve() { @@ -34,77 +32,96 @@ function serve() { }; } -export default { - input: 'src/main.ts', - output: { - sourcemap: true, - format: 'iife', - name: 'app', - file: 'public/build/bundle.js', +export default [ + { + input: 'src/query/QueryParserWorker.js', + output: { + sourcemap: true, + format: 'iife', + file: 'public/build/query-parser-worker.js', + }, + plugins: [ + commonjs(), + resolve({ + browser: true, + }), + + // If we're building for production (npm run build + // instead of npm run dev), minify + production && terser(), + ], }, - plugins: [ - copy({ - targets: [ - { - src: '../../node_modules/@mdi/font/css/materialdesignicons.css', - dest: 'public/build/fonts/', + + { + input: 'src/main.ts', + output: { + sourcemap: true, + format: 'iife', + name: 'app', + file: 'public/build/bundle.js', + }, + plugins: [ + copy({ + targets: [ + { + src: '../../node_modules/@mdi/font/css/materialdesignicons.css', + dest: 'public/build/fonts/', + }, + { + src: '../../node_modules/@mdi/font/fonts/*', + dest: 'public/build/fonts/', + }, + { + src: '../../node_modules/diff2html/bundles/css/diff2html.min.css', + dest: 'public/build/', + }, + ], + }), + + replace({ + 'process.env.API_URL': JSON.stringify(process.env.API_URL), + }), + + svelte({ + preprocess: sveltePreprocess({ sourceMap: !production }), + compilerOptions: { + // enable run-time checks when not in production + dev: !production, }, - { - src: '../../node_modules/@mdi/font/fonts/*', - dest: 'public/build/fonts/', - }, - { - src: '../../node_modules/diff2html/bundles/css/diff2html.min.css', - dest: 'public/build/', - }, - ], - }), + }), + // we'll extract any component CSS out into + // a separate file - better for performance + css({ output: 'bundle.css' }), - replace({ - 'process.env.API_URL': JSON.stringify(process.env.API_URL), - }), + // If you have external dependencies installed from + // npm, you'll most likely need these plugins. In + // some cases you'll need additional configuration - + // consult the documentation for details: + // https://github.com/rollup/plugins/tree/master/packages/commonjs + resolve({ + browser: true, + dedupe: ['svelte'], + }), + commonjs(), + typescript({ + sourceMap: !production, + inlineSources: !production, + }), - svelte({ - preprocess: sveltePreprocess({ sourceMap: !production }), - compilerOptions: { - // enable run-time checks when not in production - dev: !production, - }, - }), - // we'll extract any component CSS out into - // a separate file - better for performance - css({ output: 'bundle.css' }), + // In dev mode, call `npm run start` once + // the bundle has been generated + !production && serve(), - // If you have external dependencies installed from - // npm, you'll most likely need these plugins. In - // some cases you'll need additional configuration - - // consult the documentation for details: - // https://github.com/rollup/plugins/tree/master/packages/commonjs - resolve({ - browser: true, - dedupe: ['svelte'], - }), - commonjs(), - typescript({ - sourceMap: !production, - inlineSources: !production, - }), + // Watch the `public` directory and refresh the + // browser on changes when not in production + !production && livereload('public'), - // In dev mode, call `npm run start` once - // the bundle has been generated - !production && serve(), - - // Watch the `public` directory and refresh the - // browser on changes when not in production - !production && livereload('public'), - - // If we're building for production (npm run build - // instead of npm run dev), minify - production && terser(), - - webWorkerLoader(), - ], - watch: { - clearScreen: false, + // If we're building for production (npm run build + // instead of npm run dev), minify + production && terser(), + ], + watch: { + clearScreen: true, + }, }, -}; +]; diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 5b5442323..b77d962c6 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -7,20 +7,37 @@ import PluginsProvider from './plugins/PluginsProvider.svelte'; import Screen from './Screen.svelte'; - import { loadingPluginStore } from './stores'; + import { loadingPluginStore, subscribeApiDependendStores } from './stores'; import { setAppLoaded } from './utility/appLoadManager'; - import axiosInstance from './utility/axiosInstance'; import ErrorHandler from './utility/ErrorHandler.svelte'; import OpenTabsOnStartup from './utility/OpenTabsOnStartup.svelte'; + // import { shouldWaitForElectronInitialize } from './utility/getElectron'; + import { subscribeConnectionPingers } from './utility/connectionsPinger'; + import { subscribePermissionCompiler } from './utility/hasPermission'; + import { apiCall } from './utility/api'; let loadedApi = false; async function loadApi() { + // if (shouldWaitForElectronInitialize()) { + // setTimeout(loadApi, 100); + // return; + // } + try { - const settings = await axiosInstance.get('config/get-settings'); - const connections = await axiosInstance.get('connections/list'); - const config = await axiosInstance.get('config/get'); - loadedApi = settings?.data && connections?.data && config?.data; + // console.log('************** LOADING API'); + + const settings = await apiCall('config/get-settings'); + const connections = await apiCall('connections/list'); + const config = await apiCall('config/get'); + loadedApi = settings && connections && config; + + if (loadedApi) { + subscribeApiDependendStores(); + subscribeConnectionPingers(); + subscribePermissionCompiler(); + } + if (!loadedApi) { console.log('API not initialized correctly, trying again in 1s'); setTimeout(loadApi, 1000); @@ -43,14 +60,13 @@ setAppLoaded(); } } - - - {#if loadedApi} + + {#if $loadingPluginStore?.loaded} diff --git a/packages/web/src/appobj/ArchiveFileAppObject.svelte b/packages/web/src/appobj/ArchiveFileAppObject.svelte index 3704accb3..83e24c4a1 100644 --- a/packages/web/src/appobj/ArchiveFileAppObject.svelte +++ b/packages/web/src/appobj/ArchiveFileAppObject.svelte @@ -16,7 +16,7 @@ const connProps: any = {}; let tooltip = undefined; - const resp = await axiosInstance.post('files/load', { + const resp = await apiCall('files/load', { folder: 'archive:' + folderName, file: fileName + '.' + fileType, format: 'text', @@ -36,7 +36,7 @@ ...connProps, }, }, - { editor: resp.data } + { editor: resp } ); } @@ -69,7 +69,6 @@ import { archiveFilesAsDataSheets, currentArchive, extensions, getCurrentDatabase } from '../stores'; - import axiosInstance from '../utility/axiosInstance'; import createQuickExportMenu from '../utility/createQuickExportMenu'; import { exportElectronFile } from '../utility/exportElectronFile'; import openNewTab from '../utility/openNewTab'; @@ -82,6 +81,7 @@ markArchiveFileAsDataSheet, markArchiveFileAsReadonly, } from '../utility/archiveTools'; +import { apiCall } from '../utility/api'; export let data; @@ -91,7 +91,7 @@ label: 'New file name', header: 'Rename file', onConfirm: newFile => { - axiosInstance.post('archive/rename-file', { + apiCall('archive/rename-file', { file: data.fileName, folder: data.folderName, fileType: data.fileType, @@ -105,7 +105,7 @@ showModal(ConfirmModal, { message: `Really delete file ${data.fileName}?`, onConfirm: () => { - axiosInstance.post('archive/delete-file', { + apiCall('archive/delete-file', { file: data.fileName, folder: data.folderName, fileType: data.fileType, diff --git a/packages/web/src/appobj/ArchiveFolderAppObject.svelte b/packages/web/src/appobj/ArchiveFolderAppObject.svelte index 6bd006c9b..1843efbdd 100644 --- a/packages/web/src/appobj/ArchiveFolderAppObject.svelte +++ b/packages/web/src/appobj/ArchiveFolderAppObject.svelte @@ -9,7 +9,6 @@ import { currentArchive, currentDatabase } from '../stores'; - import axiosInstance from '../utility/axiosInstance'; import openNewTab from '../utility/openNewTab'; import AppObjectCore from './AppObjectCore.svelte'; import newQuery from '../query/newQuery'; @@ -17,6 +16,7 @@ import ConfirmModal from '../modals/ConfirmModal.svelte'; import InputTextModal from '../modals/InputTextModal.svelte'; import ErrorMessageModal from '../modals/ErrorMessageModal.svelte'; + import { apiCall } from '../utility/api'; export let data; @@ -26,7 +26,7 @@ ? `Really delete link to folder ${data.name}? Folder content remains untouched.` : `Really delete folder ${data.name}?`, onConfirm: () => { - axiosInstance.post('archive/delete-folder', { folder: data.name }); + apiCall('archive/delete-folder', { folder: data.name }); }, }); }; @@ -41,7 +41,7 @@ label: 'New folder name', header: 'Rename folder', onConfirm: async newFolder => { - await axiosInstance.post('archive/rename-folder', { + await apiCall('archive/rename-folder', { folder: data.name, newFolder: newFolder + suffix, }); @@ -78,16 +78,16 @@ await dbgateApi.deployDb(${JSON.stringify( }; const handleGenerateDeploySql = async () => { - const resp = await axiosInstance.post('database-connections/generate-deploy-sql', { + const resp = await apiCall('database-connections/generate-deploy-sql', { conid: $currentDatabase.connection._id, database: $currentDatabase.name, archiveFolder: data.name, }); - if (resp.data.errorMessage) { - showModal(ErrorMessageModal, { message: resp.data.errorMessage }); + if (resp.errorMessage) { + showModal(ErrorMessageModal, { message: resp.errorMessage }); } else { - newQuery({ initialData: resp.data.sql }); + newQuery({ initialData: resp.sql }); } }; diff --git a/packages/web/src/appobj/ConnectionAppObject.svelte b/packages/web/src/appobj/ConnectionAppObject.svelte index 62c07f06e..afc8e0abb 100644 --- a/packages/web/src/appobj/ConnectionAppObject.svelte +++ b/packages/web/src/appobj/ConnectionAppObject.svelte @@ -17,7 +17,6 @@ import _ from 'lodash'; import AppObjectCore from './AppObjectCore.svelte'; import { currentDatabase, extensions, getCurrentConfig, getOpenedConnections, openedConnections } from '../stores'; - import axiosInstance from '../utility/axiosInstance'; import { filterName } from 'dbgate-tools'; import { showModal } from '../modals/modalTools'; import ConnectionModal from '../modals/ConnectionModal.svelte'; @@ -29,6 +28,7 @@ import getConnectionLabel from '../utility/getConnectionLabel'; import { getDatabaseList } from '../utility/metadataLoaders'; import { getLocalStorage } from '../utility/storageCache'; + import { apiCall } from '../utility/api'; export let data; export let passProps; @@ -44,14 +44,14 @@ const handleConnect = () => { if (data.singleDatabase) { $currentDatabase = { connection: data, name: data.defaultDatabase }; - axiosInstance.post('database-connections/refresh', { + apiCall('database-connections/refresh', { conid: data._id, database: data.defaultDatabase, keepOpen: true, }); } else { $openedConnections = _.uniq([...$openedConnections, data._id]); - axiosInstance.post('server-connections/refresh', { + apiCall('server-connections/refresh', { conid: data._id, keepOpen: true, }); @@ -61,16 +61,16 @@ const getContextMenu = () => { const config = getCurrentConfig(); const handleRefresh = () => { - axiosInstance.post('server-connections/refresh', { conid: data._id }); + apiCall('server-connections/refresh', { conid: data._id }); }; const handleDisconnect = () => { openedConnections.update(list => list.filter(x => x != data._id)); if (electron) { - axiosInstance.post('server-connections/disconnect', { conid: data._id }); + apiCall('server-connections/disconnect', { conid: data._id }); } if (_.get($currentDatabase, 'connection._id') == data._id) { if (electron) { - axiosInstance.post('database-connections/disconnect', { conid: data._id, database: $currentDatabase.name }); + apiCall('database-connections/disconnect', { conid: data._id, database: $currentDatabase.name }); } currentDatabase.set(null); } @@ -81,11 +81,11 @@ const handleDelete = () => { showModal(ConfirmModal, { message: `Really delete connection ${getConnectionLabel(data)}?`, - onConfirm: () => axiosInstance.post('connections/delete', data), + onConfirm: () => apiCall('connections/delete', data), }); }; const handleDuplicate = () => { - axiosInstance.post('connections/save', { + apiCall('connections/save', { ...data, _id: undefined, displayName: `${getConnectionLabel(data)} - copy`, @@ -97,7 +97,7 @@ value: 'newdb', label: 'Database name', onConfirm: name => - axiosInstance.post('server-connections/create-database', { + apiCall('server-connections/create-database', { conid: data._id, name, }), diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index 39f74dfa0..74eb1ca4d 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -1,6 +1,5 @@ diff --git a/packages/web/src/charts/ChartCore.svelte b/packages/web/src/charts/ChartCore.svelte index b3f09ee25..a67db962c 100644 --- a/packages/web/src/charts/ChartCore.svelte +++ b/packages/web/src/charts/ChartCore.svelte @@ -20,7 +20,7 @@ @@ -127,8 +115,8 @@ import ImportExportModal from '../modals/ImportExportModal.svelte'; import { showModal } from '../modals/modalTools'; import { extensions } from '../stores'; + import { apiCall } from '../utility/api'; - import axiosInstance from '../utility/axiosInstance'; import { registerMenu } from '../utility/contextMenu'; import createActivator, { getActiveComponent } from '../utility/createActivator'; import createQuickExportMenu from '../utility/createQuickExportMenu'; diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 28d6fae4e..e9c806d94 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -262,7 +262,6 @@ import createReducer from '../utility/createReducer'; import keycodes from '../utility/keycodes'; import { copyRowsFormat, selectedCellsCallback } from '../stores'; - import axiosInstance from '../utility/axiosInstance'; import { copyRowsFormatDefs, copyRowsToClipboard, @@ -285,6 +284,7 @@ import { findCommand } from '../commands/runCommand'; import { openJsonDocument } from '../tabs/JsonTab.svelte'; import EditJsonModal from '../modals/EditJsonModal.svelte'; +import { apiCall } from '../utility/api'; export let onLoadNextData = undefined; export let grider = undefined; @@ -404,7 +404,7 @@ } export async function reconnect() { - await axiosInstance.post('database-connections/refresh', { conid, database }); + await apiCall('database-connections/refresh', { conid, database }); display.reload(); } diff --git a/packages/web/src/datagrid/JslDataGrid.svelte b/packages/web/src/datagrid/JslDataGrid.svelte index 355caad66..a6134f746 100644 --- a/packages/web/src/datagrid/JslDataGrid.svelte +++ b/packages/web/src/datagrid/JslDataGrid.svelte @@ -1,10 +1,8 @@ @@ -77,8 +69,8 @@ import ImportExportModal from '../modals/ImportExportModal.svelte'; import { showModal } from '../modals/modalTools'; import { extensions } from '../stores'; + import { apiCall } from '../utility/api'; - import axiosInstance from '../utility/axiosInstance'; import { registerMenu } from '../utility/contextMenu'; import createActivator, { getActiveComponent } from '../utility/createActivator'; import createQuickExportMenu from '../utility/createQuickExportMenu'; diff --git a/packages/web/src/forms/FormArchiveFolderSelect.svelte b/packages/web/src/forms/FormArchiveFolderSelect.svelte index 313c63103..1ee8d958a 100644 --- a/packages/web/src/forms/FormArchiveFolderSelect.svelte +++ b/packages/web/src/forms/FormArchiveFolderSelect.svelte @@ -2,7 +2,7 @@ import InputTextModal from '../modals/InputTextModal.svelte'; import { showModal } from '../modals/modalTools'; - import axiosInstance from '../utility/axiosInstance'; + import { apiCall } from '../utility/api'; import { useArchiveFolders } from '../utility/metadataLoaders'; import { getFormContext } from './FormProviderCore.svelte'; @@ -34,7 +34,7 @@ ]; const createOption = folder => { - axiosInstance.post('archive/create-folder', { folder }); + apiCall('archive/create-folder', { folder }); setFieldValue(name, folder); }; diff --git a/packages/web/src/forms/FormElectronFileSelectorRaw.svelte b/packages/web/src/forms/FormElectronFileSelectorRaw.svelte index 91f42b98a..df69ec845 100644 --- a/packages/web/src/forms/FormElectronFileSelectorRaw.svelte +++ b/packages/web/src/forms/FormElectronFileSelectorRaw.svelte @@ -11,10 +11,10 @@ const { values, setFieldValue } = getFormContext(); - function handleBrowse() { + async function handleBrowse() { const electron = getElectron(); if (!electron) return; - const filePaths = electron.remote.dialog.showOpenDialogSync(electron.remote.getCurrentWindow(), { + const filePaths = await electron.showOpenDialog({ defaultPath: values[name], properties: ['showHiddenFiles'], filters: [{ name: 'All Files', extensions: ['*'] }], diff --git a/packages/web/src/formview/FormView.svelte b/packages/web/src/formview/FormView.svelte index ed6875d33..58f0608e1 100644 --- a/packages/web/src/formview/FormView.svelte +++ b/packages/web/src/formview/FormView.svelte @@ -174,8 +174,8 @@ import FontIcon from '../icons/FontIcon.svelte'; import DictionaryLookupModal from '../modals/DictionaryLookupModal.svelte'; import { showModal } from '../modals/modalTools'; + import { apiCall } from '../utility/api'; - import axiosInstance from '../utility/axiosInstance'; import { copyTextToClipboard, extractRowCopiedValue } from '../utility/clipboard'; import contextMenu, { getContextMenu, registerMenu } from '../utility/contextMenu'; import createActivator, { getActiveComponent } from '../utility/createActivator'; @@ -260,7 +260,7 @@ } export async function reconnect() { - await axiosInstance.post('database-connections/refresh', { conid, database }); + await apiCall('database-connections/refresh', { conid, database }); formDisplay.reload(); } diff --git a/packages/web/src/formview/SqlFormView.svelte b/packages/web/src/formview/SqlFormView.svelte index 9df60108c..5b9a3eade 100644 --- a/packages/web/src/formview/SqlFormView.svelte +++ b/packages/web/src/formview/SqlFormView.svelte @@ -4,25 +4,21 @@ if (!sql) return null; - const response = await axiosInstance.request({ - url: 'database-connections/query-data', - method: 'post', - params: { - conid, - database, - }, - data: { sql }, + const response = await apiCall('database-connections/query-data', { + conid, + database, + sql, }); - if (response.data.errorMessage) return response.data; - return response.data.rows[0]; + if (response.errorMessage) return response; + return response.rows[0]; } - + diff --git a/packages/web/src/freetable/FreeTableGridCore.svelte b/packages/web/src/freetable/FreeTableGridCore.svelte index 4d9dbabca..9d92645f6 100644 --- a/packages/web/src/freetable/FreeTableGridCore.svelte +++ b/packages/web/src/freetable/FreeTableGridCore.svelte @@ -20,7 +20,7 @@ import DataGridCore from '../datagrid/DataGridCore.svelte'; import ImportExportModal from '../modals/ImportExportModal.svelte'; import { showModal } from '../modals/modalTools'; - import axiosInstance from '../utility/axiosInstance'; + import { apiCall } from '../utility/api'; import { registerMenu } from '../utility/contextMenu'; import createActivator, { getActiveComponent } from '../utility/createActivator'; import FreeTableGrider from './FreeTableGrider'; @@ -45,7 +45,7 @@ export async function exportGrid() { const jslid = uuidv1(); - await axiosInstance.post('jsldata/save-free-table', { jslid, data: modelState.value }); + await apiCall('jsldata/save-free-table', { jslid, data: modelState.value }); const initialValues: any = {}; initialValues.sourceStorageType = 'jsldata'; initialValues.sourceJslId = jslid; diff --git a/packages/web/src/impexp/ElectronFilesInput.svelte b/packages/web/src/impexp/ElectronFilesInput.svelte index 03465b304..761f221d5 100644 --- a/packages/web/src/impexp/ElectronFilesInput.svelte +++ b/packages/web/src/impexp/ElectronFilesInput.svelte @@ -19,11 +19,11 @@ let isLoading = false; - const electron = getElectron(); const { values } = getFormContext(); const handleClick = async () => { - const files = electron.remote.dialog.showOpenDialogSync(electron.remote.getCurrentWindow(), { + const electron = getElectron(); + const files = await electron.showOpenDialog({ properties: ['openFile', 'multiSelections'], filters: getFileFilters($extensions, $values.sourceStorageType), }); diff --git a/packages/web/src/impexp/PreviewDataGrid.svelte b/packages/web/src/impexp/PreviewDataGrid.svelte index da916dcd4..fca9e4c13 100644 --- a/packages/web/src/impexp/PreviewDataGrid.svelte +++ b/packages/web/src/impexp/PreviewDataGrid.svelte @@ -6,7 +6,7 @@ import RowsArrayGrider from '../datagrid/RowsArrayGrider'; import ErrorInfo from '../elements/ErrorInfo.svelte'; import LoadingInfo from '../elements/LoadingInfo.svelte'; - import axiosInstance from '../utility/axiosInstance'; + import { apiCall } from '../utility/api'; export let reader; @@ -27,14 +27,16 @@ } errorMessage = null; isLoading = true; - const resp = await axiosInstance.post('runners/load-reader', sourceReader); + const resp = await apiCall('runners/load-reader', sourceReader); // @ts-ignore - model = resp.data; - grider = new RowsArrayGrider(resp.data.rows); + model = resp; + grider = new RowsArrayGrider(resp.rows); isLoading = false; } catch (err) { isLoading = false; - errorMessage = (err && err.response && err.response.data && err.response.data.error) || 'Loading failed'; + // errorMessage = (err && err.response && err.response.data && err.response.data.error) || 'Loading failed'; + // TODO API + errorMessage = 'Loading failed'; console.error(err.response); } }; diff --git a/packages/web/src/modals/ChooseConnectionColorModal.svelte b/packages/web/src/modals/ChooseConnectionColorModal.svelte index c6ad32068..03cdb24c3 100644 --- a/packages/web/src/modals/ChooseConnectionColorModal.svelte +++ b/packages/web/src/modals/ChooseConnectionColorModal.svelte @@ -1,6 +1,6 @@ @@ -156,5 +155,4 @@ .error-result { white-space: normal; } - diff --git a/packages/web/src/modals/DictionaryLookupModal.svelte b/packages/web/src/modals/DictionaryLookupModal.svelte index 19fdfbf97..e684968f4 100644 --- a/packages/web/src/modals/DictionaryLookupModal.svelte +++ b/packages/web/src/modals/DictionaryLookupModal.svelte @@ -6,7 +6,6 @@ import { closeCurrentModal, showModal } from './modalTools'; import DefineDictionaryDescriptionModal from './DefineDictionaryDescriptionModal.svelte'; import ScrollableTableControl from '../elements/ScrollableTableControl.svelte'; - import axiosInstance from '../utility/axiosInstance'; import { getTableInfo } from '../utility/metadataLoaders'; import { getDictionaryDescription } from '../utility/dictionaryDescriptionTools'; import { onMount } from 'svelte'; @@ -15,6 +14,7 @@ import SearchInput from '../elements/SearchInput.svelte'; import FormTextField from '../forms/FormTextField.svelte'; import _ from 'lodash'; + import { apiCall } from '../utility/api'; export let onConfirm; export let conid; @@ -100,17 +100,13 @@ dumpSqlSelect(dmp, select); isLoading = true; - const response = await axiosInstance.request({ - url: 'database-connections/query-data', - method: 'post', - params: { - conid, - database, - }, - data: { sql: dmp.s }, + const response = await apiCall('database-connections/query-data', { + conid, + database, + sql: dmp.s, }); - rows = response.data.rows; + rows = response.rows; isLoading = false; } diff --git a/packages/web/src/modals/FavoriteModal.svelte b/packages/web/src/modals/FavoriteModal.svelte index 98503ab43..9b7777949 100644 --- a/packages/web/src/modals/FavoriteModal.svelte +++ b/packages/web/src/modals/FavoriteModal.svelte @@ -5,7 +5,6 @@ import hasPermission from '../utility/hasPermission'; import localforage from 'localforage'; import ModalBase from './ModalBase.svelte'; - import axiosInstance from '../utility/axiosInstance'; import uuidv1 from 'uuid/v1'; import { closeCurrentModal } from './modalTools'; import { copyTextToClipboard } from '../utility/clipboard'; @@ -14,8 +13,9 @@ import FormCheckboxField from '../forms/FormCheckboxField.svelte'; import FormValues from '../forms/FormValues.svelte'; import FormSelectField from '../forms/FormSelectField.svelte'; -import FormSubmit from '../forms/FormSubmit.svelte'; -import FormButton from '../forms/FormButton.svelte'; + import FormSubmit from '../forms/FormSubmit.svelte'; + import FormButton from '../forms/FormButton.svelte'; +import { apiCall } from '../utility/api'; export let editingData; export let savingTab; @@ -69,7 +69,7 @@ import FormButton from '../forms/FormButton.svelte'; const saveTab = async values => { const data = await getTabSaveData(values); - axiosInstance.post('files/save', { + apiCall('files/save', { folder: 'favorites', file: uuidv1(), format: 'json', @@ -78,18 +78,18 @@ import FormButton from '../forms/FormButton.svelte'; }; const saveFile = async values => { - const oldDataResp = await axiosInstance.post('files/load', { + const oldDataResp = await apiCall('files/load', { folder: 'favorites', file: editingData.file, format: 'json', }); - axiosInstance.post('files/save', { + apiCall('files/save', { folder: 'favorites', file: editingData.file, format: 'json', data: { - ...oldDataResp.data, + ...oldDataResp, ...values, }, }); diff --git a/packages/web/src/modals/ImportExportModal.svelte b/packages/web/src/modals/ImportExportModal.svelte index bf154a035..caefd0d8e 100644 --- a/packages/web/src/modals/ImportExportModal.svelte +++ b/packages/web/src/modals/ImportExportModal.svelte @@ -16,10 +16,9 @@ import RunnerOutputFiles from '../query/RunnerOutputFiles.svelte'; import SocketMessageView from '../query/SocketMessageView.svelte'; import { currentArchive, currentDatabase, extensions, selectedWidget } from '../stores'; - import axiosInstance from '../utility/axiosInstance'; + import { apiCall, apiOff, apiOn } from '../utility/api'; import createRef from '../utility/createRef'; import openNewTab from '../utility/openNewTab'; - import socket from '../utility/socket'; import useEffect from '../utility/useEffect'; import WidgetColumnBar from '../widgets/WidgetColumnBar.svelte'; import WidgetColumnBarItem from '../widgets/WidgetColumnBarItem.svelte'; @@ -67,9 +66,9 @@ function registerRunnerDone(rid) { if (rid) { - socket.on(`runner-done-${rid}`, handleRunnerDone); + apiOn(`runner-done-${rid}`, handleRunnerDone); return () => { - socket.off(`runner-done-${rid}`, handleRunnerDone); + apiOff(`runner-done-${rid}`, handleRunnerDone); }; } else { return () => {}; @@ -81,8 +80,8 @@ const handleRunnerDone = () => { busy = false; if (refreshArchiveFolderRef.get()) { - axiosInstance.post('archive/refresh-folders', {}); - axiosInstance.post('archive/refresh-files', { folder: refreshArchiveFolderRef.get() }); + apiCall('archive/refresh-folders', {}); + apiCall('archive/refresh-files', { folder: refreshArchiveFolderRef.get() }); $currentArchive = refreshArchiveFolderRef.get(); $selectedWidget = 'archive'; } @@ -108,8 +107,8 @@ const script = await createImpExpScript($extensions, values); executeNumber += 1; let runid = runnerId; - const resp = await axiosInstance.post('runners/start', { script }); - runid = resp.data.runid; + const resp = await apiCall('runners/start', { script }); + runid = resp.runid; runnerId = runid; if (values.targetStorageType == 'archive') { @@ -120,7 +119,7 @@ }; const handleCancel = () => { - axiosInstance.post('runners/cancel', { + apiCall('runners/cancel', { runid: runnerId, }); }; diff --git a/packages/web/src/modals/SaveFileModal.svelte b/packages/web/src/modals/SaveFileModal.svelte index 064235e71..161c58560 100644 --- a/packages/web/src/modals/SaveFileModal.svelte +++ b/packages/web/src/modals/SaveFileModal.svelte @@ -4,8 +4,8 @@ import FormProvider from '../forms/FormProvider.svelte'; import FormSubmit from '../forms/FormSubmit.svelte'; import FormTextField from '../forms/FormTextField.svelte'; + import { apiCall } from '../utility/api'; - import axiosInstance from '../utility/axiosInstance'; import getElectron from '../utility/getElectron'; import ModalBase from './ModalBase.svelte'; import { closeCurrentModal } from './modalTools'; @@ -22,7 +22,7 @@ const handleSubmit = async e => { const { name } = e.detail; - await axiosInstance.post('files/save', { folder, file: name, data, format }); + await apiCall('files/save', { folder, file: name, data, format }); closeCurrentModal(); if (onSave) { onSave(name, { @@ -38,7 +38,7 @@ const parsed = path.parse(filePath); // if (!parsed.ext) filePath += `.${fileExtension}`; - await axiosInstance.post('files/save-as', { filePath, data, format }); + await apiCall('files/save-as', { filePath, data, format }); closeCurrentModal(); if (onSave) { @@ -61,8 +61,8 @@ { - const file = electron.remote.dialog.showSaveDialogSync(electron.remote.getCurrentWindow(), { + on:click={async () => { + const file = await electron.showSaveDialog({ filters: [ { name: `${fileExtension.toUpperCase()} files`, extensions: [fileExtension] }, { name: `All files`, extensions: ['*'] }, diff --git a/packages/web/src/modals/SqlGeneratorModal.svelte b/packages/web/src/modals/SqlGeneratorModal.svelte index 5d500fc07..79753ea10 100644 --- a/packages/web/src/modals/SqlGeneratorModal.svelte +++ b/packages/web/src/modals/SqlGeneratorModal.svelte @@ -18,7 +18,6 @@ import FontIcon from '../icons/FontIcon.svelte'; import SqlEditor from '../query/SqlEditor.svelte'; - import axiosInstance from '../utility/axiosInstance'; import createRef from '../utility/createRef'; import { useDatabaseInfo } from '../utility/metadataLoaders'; import WidgetColumnBar from '../widgets/WidgetColumnBar.svelte'; @@ -32,6 +31,7 @@ import ErrorInfo from '../elements/ErrorInfo.svelte'; import LoadingInfo from '../elements/LoadingInfo.svelte'; import { getObjectTypeFieldLabel } from '../utility/common'; + import { apiCall } from '../utility/api'; export let conid; export let database; @@ -86,7 +86,7 @@ const loadid = uuidv1(); loadRef.set(loadid); busy = true; - const response = await axiosInstance.post('database-connections/sql-preview', { + const response = await apiCall('database-connections/sql-preview', { conid, database, objects, @@ -96,7 +96,7 @@ // newer load exists return; } - const { sql, isTruncated, isError, errorMessage } = response.data || {}; + const { sql, isTruncated, isError, errorMessage } = response || {}; truncated = isTruncated; if (isError) { @@ -127,7 +127,6 @@ ); closeCurrentModal(); } - @@ -257,5 +256,4 @@ .dbname { color: var(--theme-font-3); } - diff --git a/packages/web/src/modals/ValueLookupModal.svelte b/packages/web/src/modals/ValueLookupModal.svelte index a5bc5b63d..55431c6a3 100644 --- a/packages/web/src/modals/ValueLookupModal.svelte +++ b/packages/web/src/modals/ValueLookupModal.svelte @@ -6,7 +6,6 @@ import { closeCurrentModal, showModal } from './modalTools'; import DefineDictionaryDescriptionModal from './DefineDictionaryDescriptionModal.svelte'; import ScrollableTableControl from '../elements/ScrollableTableControl.svelte'; - import axiosInstance from '../utility/axiosInstance'; import { getDictionaryDescription } from '../utility/dictionaryDescriptionTools'; import { onMount } from 'svelte'; import { dumpSqlSelect } from 'dbgate-sqltree'; @@ -14,6 +13,7 @@ import SearchInput from '../elements/SearchInput.svelte'; import FormTextField from '../forms/FormTextField.svelte'; import _ from 'lodash'; + import { apiCall } from '../utility/api'; export let onConfirm; export let conid; @@ -34,7 +34,7 @@ let checkedKeys = []; async function reload() { - const dmp = driver.createDumper(); + const dmp = driver.createDumper(); const select = { commandType: 'select', distinct: true, @@ -85,17 +85,13 @@ dumpSqlSelect(dmp, select); isLoading = true; - const response = await axiosInstance.request({ - url: 'database-connections/query-data', - method: 'post', - params: { - conid, - database, - }, - data: { sql: dmp.s }, + const response = await apiCall('database-connections/query-data', { + conid, + database, + sql: dmp.s, }); - rows = response.data.rows; + rows = response.rows; isLoading = false; } diff --git a/packages/web/src/plugins/AvailablePluginsList.svelte b/packages/web/src/plugins/AvailablePluginsList.svelte index a0940c73f..ffe78f717 100644 --- a/packages/web/src/plugins/AvailablePluginsList.svelte +++ b/packages/web/src/plugins/AvailablePluginsList.svelte @@ -3,20 +3,14 @@ import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte'; import SearchInput from '../elements/SearchInput.svelte'; - import useFetch from '../utility/useFetch'; + import { useApiCall } from '../utility/api'; import WidgetsInnerContainer from '../widgets/WidgetsInnerContainer.svelte'; import PluginsList from './PluginsList.svelte'; let filter = ''; let search = ''; - $: plugins = useFetch({ - url: 'plugins/search', - params: { - filter: search, - }, - defaultValue: [], - }); + $: plugins = useApiCall('plugins/search', { filter: search }, []); const setDebouncedFilter = _.debounce(value => (search = value), 500); diff --git a/packages/web/src/plugins/PluginsProvider.svelte b/packages/web/src/plugins/PluginsProvider.svelte index c6d30dd61..a5b2de25c 100644 --- a/packages/web/src/plugins/PluginsProvider.svelte +++ b/packages/web/src/plugins/PluginsProvider.svelte @@ -1,6 +1,6 @@ diff --git a/packages/web/src/query/AceEditor.svelte b/packages/web/src/query/AceEditor.svelte index 06a9df43e..4296806d7 100644 --- a/packages/web/src/query/AceEditor.svelte +++ b/packages/web/src/query/AceEditor.svelte @@ -25,8 +25,6 @@ import _ from 'lodash'; import { handleCommandKeyDown } from '../commands/CommandListener.svelte'; import resizeObserver from '../utility/resizeObserver'; - // @ts-ignore - import QueryParserWorker from 'web-worker:./QueryParserWorker'; import queryParserWorkerFallback from './queryParserWorkerFallback'; const EDITOR_ID = `svelte-ace-editor-div:${Math.floor(Math.random() * 10000000000)}`; @@ -138,11 +136,14 @@ if (enabled) { if (!queryParserWorker) { try { - queryParserWorker = new QueryParserWorker(); + queryParserWorker = new Worker('build/query-parser-worker.js'); + // console.log('WORKER', queryParserWorker); queryParserWorker.onmessage = e => { processParserResult(e.data); }; } catch (err) { + // console.error('WORKER ERROR', err); + console.log('WORKER ERROR, using fallback worker', err.message); queryParserWorker = 'fallback'; } } diff --git a/packages/web/src/query/ResultTabs.svelte b/packages/web/src/query/ResultTabs.svelte index 14c6e2ae2..d18274623 100644 --- a/packages/web/src/query/ResultTabs.svelte +++ b/packages/web/src/query/ResultTabs.svelte @@ -6,7 +6,7 @@ import JslDataGrid from '../datagrid/JslDataGrid.svelte'; import TabControl from '../elements/TabControl.svelte'; import { allResultsInOneTabDefault } from '../stores'; - import socket from '../utility/socket'; + import { apiOff, apiOn } from '../utility/api'; import useEffect from '../utility/useEffect'; import AllResultsTab from './AllResultsTab.svelte'; @@ -66,9 +66,9 @@ }); function onSession(sid) { if (sid) { - socket.on(`session-recordset-${sid}`, handleResultSet); + apiOn(`session-recordset-${sid}`, handleResultSet); return () => { - socket.off(`session-recordset-${sid}`, handleResultSet); + apiOff(`session-recordset-${sid}`, handleResultSet); }; } return () => {}; diff --git a/packages/web/src/query/RunnerOutputFiles.svelte b/packages/web/src/query/RunnerOutputFiles.svelte index cec5a83dc..aae7301dd 100644 --- a/packages/web/src/query/RunnerOutputFiles.svelte +++ b/packages/web/src/query/RunnerOutputFiles.svelte @@ -1,12 +1,11 @@ @@ -78,8 +77,8 @@ slot="1" let:row href="#" - on:click={() => { - const file = electron.remote.dialog.showSaveDialogSync(electron.remote.getCurrentWindow(), {}); + on:click={async () => { + const file = await electron.showSaveDialog({}); if (file) { const fs = window.require('fs'); fs.copyFile(row.path, file, () => {}); @@ -94,7 +93,7 @@ let:row href="#" on:click={() => { - electron.remote.shell.showItemInFolder(row.path); + electron.showItemInFolder(row.path); }} > show diff --git a/packages/web/src/query/SocketMessageView.svelte b/packages/web/src/query/SocketMessageView.svelte index 05dd4c117..cc48ffcfa 100644 --- a/packages/web/src/query/SocketMessageView.svelte +++ b/packages/web/src/query/SocketMessageView.svelte @@ -1,10 +1,9 @@ diff --git a/packages/web/src/widgets/ConnectionList.svelte b/packages/web/src/widgets/ConnectionList.svelte index ee21e9c8b..973545be0 100644 --- a/packages/web/src/widgets/ConnectionList.svelte +++ b/packages/web/src/widgets/ConnectionList.svelte @@ -9,13 +9,13 @@ import * as connectionAppObject from '../appobj/ConnectionAppObject.svelte'; import SubDatabaseList from '../appobj/SubDatabaseList.svelte'; import { commands, commandsCustomized, openedConnections } from '../stores'; - import axiosInstance from '../utility/axiosInstance'; import ToolbarButton from './ToolbarButton.svelte'; import runCommand from '../commands/runCommand'; import getConnectionLabel from '../utility/getConnectionLabel'; import { useConnectionColorFactory } from '../utility/useConnectionColor'; import FontIcon from '../icons/FontIcon.svelte'; import CloseSearchButton from '../elements/CloseSearchButton.svelte'; + import { apiCall } from '../utility/api'; const connections = useConnectionList(); const serverStatus = useServerStatus(); @@ -29,7 +29,7 @@ const handleRefreshConnections = () => { for (const conid of $openedConnections) { - axiosInstance.post('server-connections/refresh', { conid }); + apiCall('server-connections/refresh', { conid }); } }; diff --git a/packages/web/src/widgets/QueryHistoryList.svelte b/packages/web/src/widgets/QueryHistoryList.svelte index b419661e9..e9cc00105 100644 --- a/packages/web/src/widgets/QueryHistoryList.svelte +++ b/packages/web/src/widgets/QueryHistoryList.svelte @@ -3,14 +3,12 @@ import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte'; import SearchInput from '../elements/SearchInput.svelte'; - import useFetch from '../utility/useFetch'; import WidgetsInnerContainer from '../widgets/WidgetsInnerContainer.svelte'; import FontIcon from '../icons/FontIcon.svelte'; import { onMount } from 'svelte'; - import socket from '../utility/socket'; - import axiosInstance from '../utility/axiosInstance'; import openNewTab from '../utility/openNewTab'; import CloseSearchButton from '../elements/CloseSearchButton.svelte'; + import { apiCall, apiOff, apiOn } from '../utility/api'; let filter = ''; let search = ''; @@ -18,15 +16,8 @@ let historyItems = []; async function reloadItems() { - const resp = await axiosInstance.request({ - method: 'get', - url: 'query-history/read', - params: { - filter: search, - limit: 100, - }, - }); - historyItems = resp.data; + const resp = await apiCall('query-history/read', { filter: search, limit: 100 }); + historyItems = resp; } $: { @@ -39,9 +30,9 @@ $: setDebouncedFilter(filter); onMount(() => { - socket.on('query-history-changed', reloadItems); + apiOn('query-history-changed', reloadItems); return () => { - socket.off('query-history-changed', reloadItems); + apiOff('query-history-changed', reloadItems); }; }); diff --git a/packages/web/src/widgets/SqlObjectList.svelte b/packages/web/src/widgets/SqlObjectList.svelte index c490fe078..df83c95dc 100644 --- a/packages/web/src/widgets/SqlObjectList.svelte +++ b/packages/web/src/widgets/SqlObjectList.svelte @@ -24,7 +24,6 @@ import SubColumnParamList from '../appobj/SubColumnParamList.svelte'; import { chevronExpandIcon } from '../icons/expandIcons'; import ErrorInfo from '../elements/ErrorInfo.svelte'; - import axiosInstance from '../utility/axiosInstance'; import LoadingInfo from '../elements/LoadingInfo.svelte'; import { getObjectTypeFieldLabel } from '../utility/common'; import DropDownButton from '../elements/DropDownButton.svelte'; @@ -34,6 +33,7 @@ import { extensions } from '../stores'; import newQuery from '../query/newQuery'; import runCommand from '../commands/runCommand'; + import { apiCall } from '../utility/api'; export let conid; export let database; @@ -62,7 +62,7 @@ // $: objectList = generateObjectList(generateIndex); const handleRefreshDatabase = () => { - axiosInstance.post('database-connections/refresh', { conid, database }); + apiCall('database-connections/refresh', { conid, database }); }; function createAddMenu() { diff --git a/packages/web/src/widgets/StatusBar.svelte b/packages/web/src/widgets/StatusBar.svelte index bfd8b357d..70e35042a 100644 --- a/packages/web/src/widgets/StatusBar.svelte +++ b/packages/web/src/widgets/StatusBar.svelte @@ -39,9 +39,9 @@ import { activeTabId, currentDatabase, currentThemeDefinition, visibleCommandPalette } from '../stores'; import getConnectionLabel from '../utility/getConnectionLabel'; import { useConnectionList, useDatabaseServerVersion, useDatabaseStatus } from '../utility/metadataLoaders'; - import axiosInstance from '../utility/axiosInstance'; import { findCommand } from '../commands/runCommand'; import { useConnectionColor } from '../utility/useConnectionColor'; + import { apiCall } from '../utility/api'; $: databaseName = $currentDatabase && $currentDatabase.name; $: connection = $currentDatabase && $currentDatabase.connection; @@ -64,7 +64,7 @@ async function handleSyncModel() { if (connection && databaseName) { - await axiosInstance.post('database-connections/sync-model', { conid: connection._id, database: databaseName }); + await apiCall('database-connections/sync-model', { conid: connection._id, database: databaseName }); } } diff --git a/packages/web/src/widgets/TabsPanel.svelte b/packages/web/src/widgets/TabsPanel.svelte index 1e9af1911..ee2053527 100644 --- a/packages/web/src/widgets/TabsPanel.svelte +++ b/packages/web/src/widgets/TabsPanel.svelte @@ -1,6 +1,4 @@