diff --git a/package.json b/package.json index a83dd9993..5e368abfc 100644 --- a/package.json +++ b/package.json @@ -261,7 +261,7 @@ "css-loader": "3.2.0", "debug": "4.3.3", "electron": "17.1.0", - "electron-builder": "22.14.5", + "electron-builder": "23.0.1", "electron-mocha": "11.0.2", "electron-notarize": "0.1.1", "esbuild": "0.14.3", @@ -325,6 +325,8 @@ "url": "https://updates.signal.org/desktop" } ], + "mergeASARs": true, + "singleArchFiles": "node_modules/{@signalapp/signal-client/prebuilds/**,ringrtc/build/**,sharp/**}", "target": [ { "target": "zip", diff --git a/patches/app-builder-lib+22.14.5.patch b/patches/app-builder-lib+22.14.5.patch deleted file mode 100644 index 2e9021f1b..000000000 --- a/patches/app-builder-lib+22.14.5.patch +++ /dev/null @@ -1,322 +0,0 @@ -diff --git a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js -index ed6b8d3..98495fd 100644 ---- a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js -+++ b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js -@@ -85,7 +85,7 @@ class LinuxTargetHelper { - exec += " "; - exec += executableArgs.join(" "); - } -- exec += " %U"; -+ exec += " --no-sandbox %U"; - } - const desktopMeta = { - Name: appInfo.productName, -diff --git a/node_modules/app-builder-lib/templates/linux/after-install.tpl b/node_modules/app-builder-lib/templates/linux/after-install.tpl -index 1536059..555f8f5 100644 ---- a/node_modules/app-builder-lib/templates/linux/after-install.tpl -+++ b/node_modules/app-builder-lib/templates/linux/after-install.tpl -@@ -3,8 +3,5 @@ - # Link to the binary - ln -sf '/opt/${sanitizedProductName}/${executable}' '/usr/bin/${executable}' - --# SUID chrome-sandbox for Electron 5+ --chmod 4755 '/opt/${sanitizedProductName}/chrome-sandbox' || true -- - update-mime-database /usr/share/mime || true - update-desktop-database /usr/share/applications || true -diff --git a/node_modules/app-builder-lib/templates/nsis/include/extractAppPackage.nsh b/node_modules/app-builder-lib/templates/nsis/include/extractAppPackage.nsh -index 367aaae..d96a655 100644 ---- a/node_modules/app-builder-lib/templates/nsis/include/extractAppPackage.nsh -+++ b/node_modules/app-builder-lib/templates/nsis/include/extractAppPackage.nsh -@@ -90,5 +90,41 @@ - !macroend - - !macro extractUsing7za FILE -+ Push $OUTDIR -+ CreateDirectory "$PLUGINSDIR\7z-out" -+ ClearErrors -+ SetOutPath "$PLUGINSDIR\7z-out" -+ Nsis7z::Extract "${FILE}" -+ Pop $R0 -+ SetOutPath $R0 -+ -+ # Retry counter -+ StrCpy $R1 0 -+ -+ LoopExtract7za: -+ IntOp $R1 $R1 + 1 -+ -+ # Attempt to copy files in atomic way -+ CopyFiles /SILENT "$PLUGINSDIR\7z-out\*" $OUTDIR -+ IfErrors 0 DoneExtract7za -+ -+ DetailPrint `Can't modify "${PRODUCT_NAME}"'s files.` -+ ${if} $R1 < 5 -+ # Try copying a few times before asking for a user action. -+ Goto RetryExtract7za -+ ${else} -+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeClosed)" /SD IDCANCEL IDRETRY RetryExtract7za -+ ${endIf} -+ -+ # As an absolutely last resort after a few automatic attempts and user -+ # intervention - we will just overwrite everything with `Nsis7z::Extract` -+ # even though it is not atomic and will ignore errors. - Nsis7z::Extract "${FILE}" -+ Quit -+ -+ RetryExtract7za: -+ Sleep 1000 -+ Goto LoopExtract7za -+ -+ DoneExtract7za: - !macroend -diff --git a/node_modules/app-builder-lib/templates/nsis/include/installUtil.nsh b/node_modules/app-builder-lib/templates/nsis/include/installUtil.nsh -index 0d6f293..4736774 100644 ---- a/node_modules/app-builder-lib/templates/nsis/include/installUtil.nsh -+++ b/node_modules/app-builder-lib/templates/nsis/include/installUtil.nsh -@@ -126,7 +126,10 @@ Function handleUninstallResult - Return - - ${if} $R0 != 0 -+ MessageBox MB_OK|MB_ICONEXCLAMATION "$(uninstallFailed): $R0" - DetailPrint `Uninstall was not successful. Uninstaller error code: $R0.` -+ SetErrorLevel 2 -+ Quit - ${endif} - FunctionEnd - -@@ -156,7 +159,7 @@ Function uninstallOldVersion - !endif - ${if} $uninstallString == "" - ClearErrors -- Goto Done -+ Return - ${endif} - ${endif} - -@@ -175,7 +178,7 @@ Function uninstallOldVersion - ${if} $installationDir == "" - ${andIf} $uninstallerFileName == "" - ClearErrors -- Goto Done -+ Return - ${endif} - - ${if} $installMode == "CurrentUser" -@@ -206,12 +209,37 @@ Function uninstallOldVersion - StrCpy $uninstallerFileNameTemp "$PLUGINSDIR\old-uninstaller.exe" - !insertmacro copyFile "$uninstallerFileName" "$uninstallerFileNameTemp" - -- ExecWait '"$uninstallerFileNameTemp" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0 -- ifErrors 0 Done -- # the execution failed - might have been caused by some group policy restrictions -- # we try to execute the uninstaller in place -- ExecWait '"$uninstallerFileName" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0 -- Done: -+ # Retry counter -+ StrCpy $R5 0 -+ -+ UninstallLoop: -+ IntOp $R5 $R5 + 1 -+ -+ ${if} $R5 > 5 -+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeClosed)" /SD IDCANCEL IDRETRY OneMoreAttempt -+ Return -+ ${endIf} -+ -+ OneMoreAttempt: -+ ExecWait '"$uninstallerFileNameTemp" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0 -+ ifErrors TryInPlace CheckResult -+ -+ TryInPlace: -+ # the execution failed - might have been caused by some group policy restrictions -+ # we try to execute the uninstaller in place -+ ExecWait '"$uninstallerFileName" /S /KEEP_APP_DATA $0 _?=$installationDir' $R0 -+ ifErrors DoesNotExist -+ -+ CheckResult: -+ ${if} $R0 == 0 -+ Return -+ ${endIf} -+ -+ Sleep 1000 -+ Goto UninstallLoop -+ -+ DoesNotExist: -+ SetErrors - FunctionEnd - - !macro uninstallOldVersion ROOT_KEY -diff --git a/node_modules/app-builder-lib/templates/nsis/messages.yml b/node_modules/app-builder-lib/templates/nsis/messages.yml -index ce95e3f..6527c99 100644 ---- a/node_modules/app-builder-lib/templates/nsis/messages.yml -+++ b/node_modules/app-builder-lib/templates/nsis/messages.yml -@@ -144,3 +144,5 @@ areYouSureToUninstall: - da: Er du sikker på, at du vil afinstallere ${PRODUCT_NAME}? - decompressionFailed: - en: Failed to decompress files. Please try running the installer again. -+uninstallFailed: -+ en: Failed to uninstall old application files. Please try running the installer again. -diff --git a/node_modules/app-builder-lib/templates/nsis/uninstaller.nsh b/node_modules/app-builder-lib/templates/nsis/uninstaller.nsh -index 8db1f9a..d400ec4 100644 ---- a/node_modules/app-builder-lib/templates/nsis/uninstaller.nsh -+++ b/node_modules/app-builder-lib/templates/nsis/uninstaller.nsh -@@ -28,6 +28,109 @@ Function un.onInit - !endif - FunctionEnd - -+Function un.atomicRMDir -+ Exch $R0 -+ Push $R1 -+ Push $R2 -+ Push $R3 -+ -+ StrCpy $R3 "$INSTDIR$R0\*.*" -+ FindFirst $R1 $R2 $R3 -+ -+ loop: -+ StrCmp $R2 "" break -+ -+ StrCmp $R2 "." continue -+ StrCmp $R2 ".." continue -+ -+ IfFileExists "$INSTDIR$R0\$R2\*.*" isDir isNotDir -+ -+ isDir: -+ CreateDirectory "$PLUGINSDIR\old-install$R0\$R2" -+ -+ Push "$R0\$R2" -+ Call un.atomicRMDir -+ Pop $R3 -+ -+ ${if} $R3 != 0 -+ Goto done -+ ${endIf} -+ -+ Goto continue -+ -+ isNotDir: -+ ClearErrors -+ Rename "$INSTDIR$R0\$R2" "$PLUGINSDIR\old-install$R0\$R2" -+ -+ # Ignore errors when renaming ourselves. -+ StrCmp "$R0\$R2" "${UNINSTALL_FILENAME}" 0 +2 -+ ClearErrors -+ -+ IfErrors 0 +3 -+ StrCpy $R3 "$INSTDIR$R0\$R2" -+ Goto done -+ -+ continue: -+ FindNext $R1 $R2 -+ Goto loop -+ -+ break: -+ StrCpy $R3 0 -+ -+ done: -+ FindClose $R1 -+ -+ StrCpy $R0 $R3 -+ -+ Pop $R3 -+ Pop $R2 -+ Pop $R1 -+ Exch $R0 -+FunctionEnd -+ -+Function un.restoreFiles -+ Exch $R0 -+ Push $R1 -+ Push $R2 -+ Push $R3 -+ -+ StrCpy $R3 "$PLUGINSDIR\old-install$R0\*.*" -+ FindFirst $R1 $R2 $R3 -+ -+ loop: -+ StrCmp $R2 "" break -+ -+ StrCmp $R2 "." continue -+ StrCmp $R2 ".." continue -+ -+ IfFileExists "$INSTDIR$R0\$R2\*.*" isDir isNotDir -+ -+ isDir: -+ CreateDirectory "$INSTDIR$R0\$R2" -+ -+ Push "$R0\$R2" -+ Call un.restoreFiles -+ Pop $R3 -+ -+ Goto continue -+ -+ isNotDir: -+ Rename $PLUGINSDIR\old-install$R0\$R2" "$INSTDIR$R0\$R2" -+ -+ continue: -+ FindNext $R1 $R2 -+ Goto loop -+ -+ break: -+ StrCpy $R0 0 -+ FindClose $R1 -+ -+ Pop $R3 -+ Pop $R2 -+ Pop $R1 -+ Exch $R0 -+FunctionEnd -+ - Section "un.install" - # for assisted installer we check it here to show progress - !ifndef ONE_CLICK -@@ -38,6 +141,34 @@ Section "un.install" - - !insertmacro setLinkVars - -+ # delete the installed files -+ !ifmacrodef customRemoveFiles -+ !insertmacro customRemoveFiles -+ !else -+ ${if} ${isUpdated} -+ CreateDirectory "$PLUGINSDIR\old-install" -+ -+ Push "" -+ Call un.atomicRMDir -+ Pop $R0 -+ -+ ${if} $R0 != 0 -+ DetailPrint "File is busy, aborting: $R0" -+ -+ # Attempt to restore previous directory -+ Push "" -+ Call un.restoreFiles -+ Pop $R0 -+ -+ Abort `Can't rename "$INSTDIR" to "$PLUGINSDIR\old-install".` -+ ${endif} -+ -+ ${endif} -+ -+ # Remove all files (or remaining shallow directories from the block above) -+ RMDir /r $INSTDIR -+ !endif -+ - ${ifNot} ${isKeepShortcuts} - WinShell::UninstAppUserModelId "${APP_ID}" - -@@ -64,13 +195,6 @@ Section "un.install" - !insertmacro unregisterFileAssociations - !endif - -- # delete the installed files -- !ifmacrodef customRemoveFiles -- !insertmacro customRemoveFiles -- !else -- RMDir /r $INSTDIR -- !endif -- - Var /GLOBAL isDeleteAppData - StrCpy $isDeleteAppData "0" - diff --git a/patches/app-builder-lib+23.0.1.patch b/patches/app-builder-lib+23.0.1.patch new file mode 100644 index 000000000..d2253df7d --- /dev/null +++ b/patches/app-builder-lib+23.0.1.patch @@ -0,0 +1,54 @@ +diff --git a/node_modules/app-builder-lib/out/asar/asar.d.ts b/node_modules/app-builder-lib/out/asar/asar.d.ts +index be27052..97db603 100644 +--- a/node_modules/app-builder-lib/out/asar/asar.d.ts ++++ b/node_modules/app-builder-lib/out/asar/asar.d.ts +@@ -1,3 +1,3 @@ +-export declare function readAsarHeader(archive: string): Promise; +-export declare function readAsar(archive: string): Promise; ++export declare function readAsarHeader(archive: string): Promise; ++export declare function readAsar(archive: string): Promise; + export declare function readAsarJson(archive: string, file: string): Promise; +diff --git a/node_modules/app-builder-lib/out/asar/integrity.d.ts b/node_modules/app-builder-lib/out/asar/integrity.d.ts +index 01da9f4..094c175 100644 +--- a/node_modules/app-builder-lib/out/asar/integrity.d.ts ++++ b/node_modules/app-builder-lib/out/asar/integrity.d.ts +@@ -1,5 +1,4 @@ + /// +-import { NodeIntegrity } from "./asar"; + export interface AsarIntegrityOptions { + readonly resourcesPath: string; + readonly resourcesRelativePath: string; +@@ -12,5 +11,5 @@ export interface AsarIntegrity { + [key: string]: HeaderHash; + } + export declare function computeData({ resourcesPath, resourcesRelativePath }: AsarIntegrityOptions): Promise; +-export declare function hashFile(file: string, blockSize?: number): Promise; +-export declare function hashFileContents(contents: Buffer | string, blockSize?: number): NodeIntegrity; ++export declare function hashFile(file: string, blockSize?: number): Promise; ++export declare function hashFileContents(contents: Buffer | string, blockSize?: number): unknown; +diff --git a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js +index ffcc8bd..4215569 100644 +--- a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js ++++ b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js +@@ -88,7 +88,7 @@ class LinuxTargetHelper { + // https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables + const execCodes = ["%f", "%u", "%F", "%U"]; + if (executableArgs == null || executableArgs.findIndex(arg => execCodes.includes(arg)) === -1) { +- exec += " %U"; ++ exec += " --no-sandbox %U"; + } + } + const desktopMeta = { +diff --git a/node_modules/app-builder-lib/templates/linux/after-install.tpl b/node_modules/app-builder-lib/templates/linux/after-install.tpl +index 1536059..555f8f5 100644 +--- a/node_modules/app-builder-lib/templates/linux/after-install.tpl ++++ b/node_modules/app-builder-lib/templates/linux/after-install.tpl +@@ -3,8 +3,5 @@ + # Link to the binary + ln -sf '/opt/${sanitizedProductName}/${executable}' '/usr/bin/${executable}' + +-# SUID chrome-sandbox for Electron 5+ +-chmod 4755 '/opt/${sanitizedProductName}/chrome-sandbox' || true +- + update-mime-database /usr/share/mime || true + update-desktop-database /usr/share/applications || true diff --git a/ts/scripts/after-pack.ts b/ts/scripts/after-pack.ts index 48cf92812..f3f6b185a 100644 --- a/ts/scripts/after-pack.ts +++ b/ts/scripts/after-pack.ts @@ -3,13 +3,11 @@ import type { AfterPackContext } from 'electron-builder'; import { afterPack as fuseElectron } from './fuse-electron'; -import { afterPack as mergeASARs } from './merge-macos-asars'; import { afterPack as copyPacks } from './copy-language-packs'; import { afterPack as pruneMacOSRelease } from './prune-macos-release'; export async function afterPack(context: AfterPackContext): Promise { await pruneMacOSRelease(context); - await mergeASARs(context); await fuseElectron(context); await copyPacks(context); } diff --git a/ts/scripts/fuse-electron.ts b/ts/scripts/fuse-electron.ts index 6f4c34ce7..12b51f2fe 100644 --- a/ts/scripts/fuse-electron.ts +++ b/ts/scripts/fuse-electron.ts @@ -44,9 +44,7 @@ export async function afterPack({ // Disables the --inspect and --inspect-brk family of CLI options [FuseV1Options.EnableNodeCliInspectArguments]: enableInspectArguments, // Enables validation of the app.asar archive on macOS - // See https://github.com/electron-userland/electron-builder/issues/6507 - // See https://github.com/electron-userland/electron-builder/issues/6506 - [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: false, + [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, // Enforces that Electron will only load your app from "app.asar" instead of // it's normall search paths [FuseV1Options.OnlyLoadAppFromAsar]: true, diff --git a/ts/scripts/merge-macos-asars.ts b/ts/scripts/merge-macos-asars.ts deleted file mode 100644 index 2129cf333..000000000 --- a/ts/scripts/merge-macos-asars.ts +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2021 Signal Messenger, LLC -// SPDX-License-Identifier: AGPL-3.0-only - -import { existsSync } from 'fs'; -import fs from 'fs/promises'; -import os from 'os'; -import path from 'path'; -import { execFileSync } from 'child_process'; -import type { AfterPackContext } from 'electron-builder'; -import asar from 'asar'; - -// See: https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary -const LIPO = process.env.LIPO || 'lipo'; - -// See: https://github.com/apple-opensource-mirror/llvmCore/blob/0c60489d96c87140db9a6a14c6e82b15f5e5d252/include/llvm/Object/MachOFormat.h#L108-L112 -// If binary file starts with one of the following magic numbers - it is most -// likely a a Mach-O file or simply a macOS object file. We use this check to -// detect binding files below. -const MACHO_MAGIC = new Set([ - // 32-bit Mach-O - 0xfeedface, 0xcefaedfe, - - // 64-bit Mach-O - 0xfeedfacf, 0xcffaedfe, - - // Universal - 0xcafebabe, 0xbebafeca, -]); - -function toRelativePath(file: string): string { - return file.replace(/^\//, ''); -} - -function isDirectory(a: string, file: string): boolean { - return Boolean('files' in asar.statFile(a, file)); -} - -export async function afterPack(context: AfterPackContext): Promise { - const { appOutDir, packager, electronPlatformName } = context; - if (electronPlatformName !== 'darwin') { - return; - } - - if (!appOutDir.includes('mac-universal')) { - return; - } - - const { productFilename } = packager.appInfo; - const arm64 = appOutDir.replace(/--[^-]*$/, '--arm64'); - const x64 = appOutDir.replace(/--[^-]*$/, '--x64'); - - const commonPath = path.join('Contents', 'Resources', 'app.asar'); - const archive = path.join(arm64, `${productFilename}.app`, commonPath); - const otherArchive = path.join(x64, `${productFilename}.app`, commonPath); - - if (!existsSync(archive)) { - console.info(`${archive} does not exist yet`); - return; - } - if (!existsSync(otherArchive)) { - console.info(`${otherArchive} does not exist yet`); - return; - } - - console.log(`Merging ${archive} and ${otherArchive}`); - - const files = new Set(asar.listPackage(archive).map(toRelativePath)); - const otherFiles = new Set( - asar.listPackage(otherArchive).map(toRelativePath) - ); - - // - // Build set of unpacked directories and files - // - - const unpackedFiles = new Set(); - - function buildUnpacked(a: string, fileList: Set): void { - for (const file of fileList) { - const stat = asar.statFile(a, file); - - if (!('unpacked' in stat) || !stat.unpacked) { - continue; - } - - if ('files' in stat) { - continue; - } - unpackedFiles.add(file); - } - } - - buildUnpacked(archive, files); - buildUnpacked(otherArchive, otherFiles); - - // - // Build list of files/directories unique to each asar - // - - const unique = []; - for (const file of otherFiles) { - if (!files.has(file)) { - unique.push(file); - } - } - - // - // Find files with different content - // - - const bindings = []; - for (const file of files) { - if (!otherFiles.has(file)) { - continue; - } - - // Skip directories - if (isDirectory(archive, file)) { - continue; - } - - const content = asar.extractFile(archive, file); - const otherContent = asar.extractFile(otherArchive, file); - - if (content.compare(otherContent) === 0) { - continue; - } - - if (!MACHO_MAGIC.has(content.readUInt32LE(0))) { - throw new Error(`Can't reconcile two non-macho files ${file}`); - } - - bindings.push(file); - } - - // - // Extract both asars and copy unique directories/files from `otherArchive` - // to extracted `archive`. Then run `lipo` on every shared binding and - // overwrite original ASARs with the new merged ASAR. - // - // The point is - we want electron-builder to find identical ASARs and thus - // include only a single ASAR in the final build. - // - // Once (If) https://github.com/electron/universal/pull/34 lands - we can - // remove this script and start using optimized version of the process - // with a single output ASAR instead of two. - // - - const dir = await fs.mkdtemp(path.join(os.tmpdir(), 'archive-')); - const otherDir = await fs.mkdtemp(path.join(os.tmpdir(), 'other-archive-')); - - try { - console.log(`Extracting ${archive} to ${dir}`); - asar.extractAll(archive, dir); - - console.log(`Extracting ${otherArchive} to ${otherDir}`); - asar.extractAll(otherArchive, otherDir); - - for (const file of unique) { - const source = path.resolve(otherDir, file); - const destination = path.resolve(dir, file); - - if (isDirectory(otherArchive, file)) { - console.log(`Creating unique directory: ${file}`); - // eslint-disable-next-line no-await-in-loop - await fs.mkdir(destination, { recursive: true }); - continue; - } - - console.log(`Copying unique file: ${file}`); - // eslint-disable-next-line no-await-in-loop - await fs.mkdir(path.dirname(destination), { recursive: true }); - // eslint-disable-next-line no-await-in-loop - await fs.copyFile(source, destination); - } - - for (const binding of bindings) { - // eslint-disable-next-line no-await-in-loop - const source = await fs.realpath(path.resolve(otherDir, binding)); - // eslint-disable-next-line no-await-in-loop - const destination = await fs.realpath(path.resolve(dir, binding)); - - console.log(`Merging binding: ${binding}`); - execFileSync(LIPO, [ - source, - destination, - '-create', - '-output', - destination, - ]); - } - - for (const dest of [archive, otherArchive]) { - console.log(`Removing ${dest}`); - - // eslint-disable-next-line no-await-in-loop - await Promise.all([ - fs.rm(dest, { recursive: true }), - fs.rm(`${dest}.unpacked`, { recursive: true }), - ]); - - const resolvedUnpack = Array.from(unpackedFiles).map(file => - path.join(dir, file) - ); - - console.log(`Overwriting ${dest}`); - - // eslint-disable-next-line no-await-in-loop - await asar.createPackageWithOptions(dir, dest, { - unpack: `{${resolvedUnpack.join(',')}}`, - }); - } - - console.log('Success'); - } finally { - await Promise.all([ - fs.rm(dir, { recursive: true }), - fs.rm(otherDir, { recursive: true }), - ]); - } -} diff --git a/yarn.lock b/yarn.lock index 0d748ca9f..a92992e01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1023,16 +1023,18 @@ global-agent "^3.0.0" global-tunnel-ng "^2.7.1" -"@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== +"@electron/universal@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.2.0.tgz#518cac72bccd79c00bf41345119e6fdbabdb871d" + integrity sha512-eu20BwNsrMPKoe2bZ3/l9c78LclDvxg3PlVXrQf3L50NaUuW5M59gbPytI+V4z7/QMrohUHetQaU0ou+p1UG9Q== dependencies: "@malept/cross-spawn-promise" "^1.1.0" - asar "^3.0.3" + asar "^3.1.0" debug "^4.3.1" dir-compare "^2.4.0" fs-extra "^9.0.1" + minimatch "^3.0.4" + plist "^3.0.4" "@emotion/babel-utils@^0.6.4": version "0.6.10" @@ -1876,6 +1878,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -2261,14 +2268,6 @@ "@types/pino-std-serializers" "*" "@types/sonic-boom" "*" -"@types/plist@^3.0.1": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.2.tgz#61b3727bba0f5c462fe333542534a0c3e19ccb01" - integrity sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw== - dependencies: - "@types/node" "*" - xmlbuilder ">=11.0.1" - "@types/prop-types@*": version "15.5.9" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.9.tgz#f2d14df87b0739041bc53a7d75e3d77d726a3ec0" @@ -2491,11 +2490,6 @@ dependencies: "@types/node" "*" -"@types/verror@^1.10.3": - version "1.10.5" - resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1" - integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw== - "@types/webpack-dev-server@3.11.3": version "3.11.3" resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz#237e26d87651cf95490dcd356f568c8c84016177" @@ -3207,29 +3201,29 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -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-bin@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.1.0.tgz#db4108c005ca5ea53b00d1eb4cd6f6c265fafdc9" + integrity sha512-rbdMe0sIVE95cpYqMQh4IFqhTDdB8LkKlTRcbO/Y3QleRYoIePejIbX774IYomYYzZbJfJuX7pLRiGvSdIxIYA== -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== +app-builder-lib@23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-23.0.1.tgz#a916f525f65875c6e05aa288413f1aa7c08a19b6" + integrity sha512-XO+xQ7oVmGjGyBttXfaE2WawgPYQjBhLu8ZZhvGUiKL8WiLFrRUunoaoF+WzwLda4pMIvEEd7MGQ1VRopWO4tQ== dependencies: "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.0.5" + "@electron/universal" "1.2.0" "@malept/flatpak-bundler" "^0.4.0" async-exit-hook "^2.0.1" bluebird-lst "^1.0.9" - builder-util "22.14.5" - builder-util-runtime "8.9.1" + builder-util "23.0.0" + builder-util-runtime "9.0.0" chromium-pickle-js "^0.2.0" debug "^4.3.2" ejs "^3.1.6" - electron-osx-sign "^0.5.0" - electron-publish "22.14.5" + electron-osx-sign "^0.6.0" + electron-publish "23.0.0" form-data "^4.0.0" fs-extra "^10.0.0" hosted-git-info "^4.0.2" @@ -3412,7 +3406,7 @@ asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" -asar@3.1.0, asar@^3.0.3: +asar@3.1.0, asar@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473" integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ== @@ -4317,7 +4311,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.1.0, buffer@^5.5.0: +buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -4325,29 +4319,31 @@ buffer@^5.1.0, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -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== +builder-util-runtime@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz#3a40ba7382712ccdb24471567f91d7c167e00830" + integrity sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA== dependencies: debug "^4.3.2" sax "^1.2.4" -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== +builder-util@23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-23.0.0.tgz#63a6d0d585f49b2c502d64bb074098827e2a9df3" + integrity sha512-OkRo/W19it+9ulWoqVKIWmfTS1i6J6vaWIB4j33u5+vNbhyRP7PkBMzB878gBDGyuBwjT/Oq4bh8DzrrB374IA== dependencies: "7zip-bin" "~5.1.1" "@types/debug" "^4.1.6" "@types/fs-extra" "^9.0.11" - app-builder-bin "3.7.1" + app-builder-bin "4.1.0" bluebird-lst "^1.0.9" - builder-util-runtime "8.9.1" + builder-util-runtime "9.0.0" chalk "^4.1.1" cross-spawn "^7.0.3" debug "^4.3.2" fs-extra "^10.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" is-ci "^3.0.0" js-yaml "^4.1.0" source-map-support "^0.5.19" @@ -4518,7 +4514,7 @@ caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000984, caniuse-lite@^1.0.300011 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz#364d47d35a3007e528f69adb6fecb07c2bb2cc50" integrity sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw== -canvas@^2.6.1, "canvas@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz", jsdom@^15.2.1, "jsdom@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz": +canvas@^2.6.1, "canvas@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz", dmg-license@^1.0.9, "dmg-license@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz", jsdom@^15.2.1, "jsdom@https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz": version "1.0.0" resolved "https://registry.yarnpkg.com/nop/-/nop-1.0.0.tgz#cb46cf7e01574aa6390858149f66897afe53c9ca" @@ -4760,14 +4756,6 @@ cli-table3@0.5.1: optionalDependencies: colors "^1.1.2" -cli-truncate@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" - integrity sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA== - dependencies: - slice-ansi "^1.0.0" - string-width "^2.0.0" - cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -5169,7 +5157,7 @@ core-js@^3.0.1, core-js@^3.0.4: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -5192,13 +5180,6 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" -crc@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -5751,35 +5732,20 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -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== +dmg-builder@23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-23.0.1.tgz#fc5d3e6939b4ca7769d83224d48c2e8da453e84d" + integrity sha512-pyqUXprUD5bWeCfW/heG80iJdf6/pF0v8WjP2VDk0fATMYJiYqZpmkWy00BxAEAnFRIqv3iXYRtGlgwFjhr+3g== dependencies: - app-builder-lib "22.14.5" - builder-util "22.14.5" - builder-util-runtime "8.9.1" + app-builder-lib "23.0.1" + builder-util "23.0.0" + builder-util-runtime "9.0.0" fs-extra "^10.0.0" iconv-lite "^0.6.2" js-yaml "^4.1.0" optionalDependencies: dmg-license "^1.0.9" -dmg-license@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.9.tgz#a2fb8d692af0e30b0730b5afc91ed9edc2d9cb4f" - integrity sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q== - dependencies: - "@types/plist" "^3.0.1" - "@types/verror" "^1.10.3" - ajv "^6.10.0" - cli-truncate "^1.1.0" - crc "^3.8.0" - iconv-corefoundation "^1.1.6" - plist "^3.0.1" - smart-buffer "^4.0.2" - verror "^1.10.0" - dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -5972,17 +5938,17 @@ ejs@^3.1.6: dependencies: jake "^10.6.1" -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== +electron-builder@23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-23.0.1.tgz#2e5481ff66fe4e4d171e393a8ac2189338d054a6" + integrity sha512-0ISmpdJlIjcKxuLu0JOygA4c90y1aOiNTAqML2ln2BQJ+UsfizWyBeVOEJdZnEurmCAt1ICeiQ9DeQcMgCLnnQ== dependencies: "@types/yargs" "^17.0.1" - app-builder-lib "22.14.5" - builder-util "22.14.5" - builder-util-runtime "8.9.1" + app-builder-lib "23.0.1" + builder-util "23.0.0" + builder-util-runtime "9.0.0" chalk "^4.1.1" - dmg-builder "22.14.5" + dmg-builder "23.0.1" fs-extra "^10.0.0" is-ci "^3.0.0" lazy-val "^1.0.5" @@ -6015,10 +5981,10 @@ electron-notarize@0.1.1: debug "^4.1.1" fs-extra "^8.0.1" -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== +electron-osx-sign@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz#9b69c191d471d9458ef5b1e4fdd52baa059f1bb8" + integrity sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg== dependencies: bluebird "^3.5.0" compare-version "^0.1.2" @@ -6027,14 +5993,14 @@ electron-osx-sign@^0.5.0: minimist "^1.2.0" plist "^3.0.1" -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== +electron-publish@23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-23.0.0.tgz#d17c7e407a8bd2c6fc359be2e36d1f88d69cca74" + integrity sha512-T4UuPjwaGrm+5DYkmSLlY3ae8EQ8LvkDdO/ZHiyIa7o43myjKXDLkYVISA4mH4FtGVBk1SSQF0CNH96TimZK6g== dependencies: "@types/fs-extra" "^9.0.11" - builder-util "22.14.5" - builder-util-runtime "8.9.1" + builder-util "23.0.0" + builder-util-runtime "9.0.0" chalk "^4.1.1" fs-extra "^10.0.0" lazy-val "^1.0.5" @@ -7000,11 +6966,6 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fabric@4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/fabric/-/fabric-4.6.0.tgz#bd11c2baf165db2c97e4d05740d931586cb26bbb" @@ -8354,6 +8315,15 @@ http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -8423,14 +8393,6 @@ humanize-duration@3.27.1: resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.27.1.tgz#2cd4ea4b03bd92184aee6d90d77a8f3d7628df69" integrity sha512-jCVkMl+EaM80rrMrAPl96SGG4NRac53UyI1o/yAzebDntEY6K6/Fj2HOjdPg8omTqIe5Y0wPBai2q5xXrIbarA== -iconv-corefoundation@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz#27c135470237f6f8d13462fa1f5eaf250523c29a" - integrity sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw== - dependencies: - cli-truncate "^1.1.0" - node-addon-api "^1.6.3" - iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -10445,11 +10407,6 @@ node-abi@^3.3.0: dependencies: semver "^7.3.5" -node-addon-api@^1.6.3: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - node-addon-api@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.2.0.tgz#117cbb5a959dff0992e1c586ae0393573e4d2a87" @@ -11465,6 +11422,14 @@ plist@^3.0.1: xmlbuilder "^9.0.7" xmldom "^0.5.0" +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" + pngjs@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" @@ -13601,13 +13566,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== - dependencies: - is-fullwidth-code-point "^2.0.0" - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -13621,7 +13579,7 @@ slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" -smart-buffer@^4.0.2, smart-buffer@^4.1.0: +smart-buffer@^4.1.0: 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== @@ -15000,15 +14958,6 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -verror@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - vm-browserify@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" @@ -15437,11 +15386,6 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -xmlbuilder@>=11.0.1: - version "15.1.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" - integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== - xmlbuilder@^9.0.7: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"