├── .changeset
├── README.md
├── config.json
└── violet-zoos-speak.md
├── .editorconfig
├── .github
├── FUNDING.yml
├── actions
│ ├── pnpm
│ │ └── action.yml
│ └── pretest
│ │ └── action.yml
├── issue_template.md
├── pr-labeler.yml
├── renovate.json5
└── workflows
│ ├── deploy-docker.yml
│ ├── deploy-netlify.yml
│ ├── docker-build.yml
│ ├── pr-labeler.yml
│ ├── pr-netlify.yml
│ ├── pr-release.yml
│ ├── pr-semantic.yml
│ ├── stale.yml
│ └── test.yaml
├── .gitignore
├── .husky
├── .gitignore
├── pre-commit
└── pre-push
├── .idea
├── bashsupport_project.xml
├── codeStyleSettings.xml
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── dictionaries
│ └── develar.xml
├── electron-builder.iml
├── inspectionProfiles
│ ├── Project_Default.xml
│ └── profiles_settings.xml
├── jsLinters
│ └── tslint.xml
├── misc.xml
├── modules.xml
├── rc-producer.yml
├── runConfigurations
│ ├── build_deb_remote.xml
│ ├── build_snap_remote__stage_packages_.xml
│ ├── build_snap_remote__template_.xml
│ ├── build_snap_remote__template__production.xml
│ └── build_some_project.xml
├── scopes
│ ├── json5.xml
│ └── src.xml
├── vcs.xml
└── watcherTasks.xml
├── .mention-bot
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .prettierrc.yaml
├── .vitest-cert
├── cert.pem
└── key.pem
├── .vscode
└── launch.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docker
├── base
│ ├── Dockerfile
│ └── test.sh
├── build.sh
├── node
│ └── Dockerfile
├── readme.md
├── wine-chrome
│ └── Dockerfile
├── wine-mono
│ └── Dockerfile
└── wine
│ └── Dockerfile
├── eslint.config.mjs
├── mkdocs-dockerfile
├── mkdocs.yml
├── netlify.toml
├── package.json
├── packages
├── app-builder-lib
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── certs
│ │ ├── create.sh
│ │ └── root_certs.keychain
│ ├── package.json
│ ├── scheme.json
│ ├── src
│ │ ├── Framework.ts
│ │ ├── ProtonFramework.ts
│ │ ├── appInfo.ts
│ │ ├── asar
│ │ │ ├── asar.ts
│ │ │ ├── asarFileChecker.ts
│ │ │ ├── asarUtil.ts
│ │ │ ├── integrity.ts
│ │ │ └── unpackDetector.ts
│ │ ├── binDownload.ts
│ │ ├── codeSign
│ │ │ ├── codesign.ts
│ │ │ ├── macCodeSign.ts
│ │ │ ├── signManager.ts
│ │ │ ├── windowsCodeSign.ts
│ │ │ ├── windowsSignAzureManager.ts
│ │ │ └── windowsSignToolManager.ts
│ │ ├── configuration.ts
│ │ ├── core.ts
│ │ ├── electron
│ │ │ ├── ElectronFramework.ts
│ │ │ ├── electronMac.ts
│ │ │ ├── electronVersion.ts
│ │ │ ├── electronWin.ts
│ │ │ └── injectFFMPEG.ts
│ │ ├── errorMessages.ts
│ │ ├── fileMatcher.ts
│ │ ├── fileTransformer.ts
│ │ ├── forge-maker.ts
│ │ ├── frameworks
│ │ │ └── LibUiFramework.ts
│ │ ├── index.ts
│ │ ├── linuxPackager.ts
│ │ ├── macPackager.ts
│ │ ├── node-module-collector
│ │ │ ├── hoist.ts
│ │ │ ├── index.ts
│ │ │ ├── nodeModulesCollector.ts
│ │ │ ├── npmNodeModulesCollector.ts
│ │ │ ├── packageManager.ts
│ │ │ ├── pnpmNodeModulesCollector.ts
│ │ │ ├── types.ts
│ │ │ └── yarnNodeModulesCollector.ts
│ │ ├── options
│ │ │ ├── AppXOptions.ts
│ │ │ ├── CommonWindowsInstallerConfiguration.ts
│ │ │ ├── FileAssociation.ts
│ │ │ ├── MsiOptions.ts
│ │ │ ├── MsiWrappedOptions.ts
│ │ │ ├── PlatformSpecificBuildOptions.ts
│ │ │ ├── SnapOptions.ts
│ │ │ ├── SquirrelWindowsOptions.ts
│ │ │ ├── linuxOptions.ts
│ │ │ ├── macOptions.ts
│ │ │ ├── metadata.ts
│ │ │ ├── pkgOptions.ts
│ │ │ └── winOptions.ts
│ │ ├── packager.ts
│ │ ├── packagerApi.ts
│ │ ├── platformPackager.ts
│ │ ├── presets
│ │ │ └── rectCra.ts
│ │ ├── publish
│ │ │ ├── PublishManager.ts
│ │ │ └── updateInfoBuilder.ts
│ │ ├── targets
│ │ │ ├── AppImageTarget.ts
│ │ │ ├── AppxTarget.ts
│ │ │ ├── ArchiveTarget.ts
│ │ │ ├── FlatpakTarget.ts
│ │ │ ├── FpmTarget.ts
│ │ │ ├── LinuxTargetHelper.ts
│ │ │ ├── MsiTarget.ts
│ │ │ ├── MsiWrappedTarget.ts
│ │ │ ├── archive.ts
│ │ │ ├── differentialUpdateInfoBuilder.ts
│ │ │ ├── nsis
│ │ │ │ ├── Commands.ts
│ │ │ │ ├── Defines.ts
│ │ │ │ ├── NsisTarget.ts
│ │ │ │ ├── WebInstallerTarget.ts
│ │ │ │ ├── nsisLang.ts
│ │ │ │ ├── nsisLicense.ts
│ │ │ │ ├── nsisOptions.ts
│ │ │ │ ├── nsisScriptGenerator.ts
│ │ │ │ └── nsisUtil.ts
│ │ │ ├── pkg.ts
│ │ │ ├── snap.ts
│ │ │ ├── targetFactory.ts
│ │ │ ├── targetUtil.ts
│ │ │ └── tools.ts
│ │ ├── util
│ │ │ ├── AppFileWalker.ts
│ │ │ ├── NodeModuleCopyHelper.ts
│ │ │ ├── appBuilder.ts
│ │ │ ├── appFileCopier.ts
│ │ │ ├── asyncEventEmitter.ts
│ │ │ ├── bundledTool.ts
│ │ │ ├── cacheManager.ts
│ │ │ ├── config
│ │ │ │ ├── config.ts
│ │ │ │ └── load.ts
│ │ │ ├── filter.ts
│ │ │ ├── flags.ts
│ │ │ ├── hash.ts
│ │ │ ├── langs.ts
│ │ │ ├── license.ts
│ │ │ ├── macosVersion.ts
│ │ │ ├── macroExpander.ts
│ │ │ ├── normalizePackageData.ts
│ │ │ ├── packageDependencies.ts
│ │ │ ├── packageMetadata.ts
│ │ │ ├── pathManager.ts
│ │ │ ├── plist.ts
│ │ │ ├── rebuild
│ │ │ │ ├── rebuild.ts
│ │ │ │ └── remote-rebuild.ts
│ │ │ ├── repositoryInfo.ts
│ │ │ ├── resolve.ts
│ │ │ ├── timer.ts
│ │ │ └── yarn.ts
│ │ ├── version.ts
│ │ ├── vm
│ │ │ ├── MonoVm.ts
│ │ │ ├── ParallelsVm.ts
│ │ │ ├── PwshVm.ts
│ │ │ ├── WineVm.ts
│ │ │ └── vm.ts
│ │ ├── winPackager.ts
│ │ └── wine.ts
│ ├── templates
│ │ ├── appx
│ │ │ ├── appxmanifest.xml
│ │ │ └── priconfig.xml
│ │ ├── entitlements.mac.plist
│ │ ├── icons
│ │ │ ├── electron-linux
│ │ │ │ ├── 128x128.png
│ │ │ │ ├── 16x16.png
│ │ │ │ ├── 256x256.png
│ │ │ │ ├── 32x32.png
│ │ │ │ ├── 48x48.png
│ │ │ │ └── 64x64.png
│ │ │ └── proton-native
│ │ │ │ ├── linux
│ │ │ │ ├── 1024x1024.png
│ │ │ │ ├── 128x128.png
│ │ │ │ ├── 16x16.png
│ │ │ │ ├── 256x256.png
│ │ │ │ ├── 32x32.png
│ │ │ │ ├── 48x48.png
│ │ │ │ ├── 512x512.png
│ │ │ │ └── 64x64.png
│ │ │ │ ├── proton-native.icns
│ │ │ │ ├── proton-native.ico
│ │ │ │ └── proton-native.svg
│ │ ├── linux
│ │ │ ├── after-install.tpl
│ │ │ ├── after-remove.tpl
│ │ │ ├── apparmor-profile.tpl
│ │ │ └── desktop.tpl
│ │ ├── msi
│ │ │ └── template.xml
│ │ ├── msiWrapped
│ │ │ └── template.xml
│ │ ├── nsis
│ │ │ ├── README.md
│ │ │ ├── assistedInstaller.nsh
│ │ │ ├── assistedMessages.yml
│ │ │ ├── common.nsh
│ │ │ ├── empty-license.txt
│ │ │ ├── include
│ │ │ │ ├── FileAssociation.nsh
│ │ │ │ ├── StdUtils.nsh
│ │ │ │ ├── StrContains.nsh
│ │ │ │ ├── UAC.nsh
│ │ │ │ ├── allowOnlyOneInstallerInstance.nsh
│ │ │ │ ├── extractAppPackage.nsh
│ │ │ │ ├── getProcessInfo.nsh
│ │ │ │ ├── installUtil.nsh
│ │ │ │ ├── installer.nsh
│ │ │ │ ├── nsProcess.nsh
│ │ │ │ └── webPackage.nsh
│ │ │ ├── installSection.nsh
│ │ │ ├── installer.nsi
│ │ │ ├── messages.yml
│ │ │ ├── multiUser.nsh
│ │ │ ├── multiUserUi.nsh
│ │ │ ├── oneClick.nsh
│ │ │ ├── portable.nsi
│ │ │ └── uninstaller.nsh
│ │ └── snap
│ │ │ └── snapcraft.yaml
│ ├── tsconfig-scheme.json
│ ├── tsconfig.json
│ └── typedoc.json
├── builder-util-runtime
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── readme.md
│ ├── src
│ │ ├── CancellationToken.ts
│ │ ├── MemoLazy.ts
│ │ ├── ProgressCallbackTransform.ts
│ │ ├── blockMapApi.ts
│ │ ├── error.ts
│ │ ├── httpExecutor.ts
│ │ ├── index.ts
│ │ ├── publishOptions.ts
│ │ ├── retry.ts
│ │ ├── rfc2253Parser.ts
│ │ ├── updateInfo.ts
│ │ ├── uuid.ts
│ │ └── xml.ts
│ ├── tsconfig.json
│ └── typedoc.json
├── builder-util
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── readme.md
│ ├── src
│ │ ├── 7za.ts
│ │ ├── DebugLogger.ts
│ │ ├── arch.ts
│ │ ├── asyncTaskManager.ts
│ │ ├── deepAssign.ts
│ │ ├── filename.ts
│ │ ├── fs.ts
│ │ ├── log.ts
│ │ ├── mapper.ts
│ │ ├── nodeHttpExecutor.ts
│ │ ├── promise.ts
│ │ └── util.ts
│ ├── tsconfig.json
│ └── typedoc.json
├── dmg-builder
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── readme.md
│ ├── src
│ │ ├── dmg.ts
│ │ ├── dmgLicense.ts
│ │ ├── dmgUtil.ts
│ │ ├── hdiuil.ts
│ │ ├── licenseButtons.ts
│ │ └── licenseDefaultButtons.ts
│ ├── templates
│ │ └── background.tiff
│ ├── tsconfig.json
│ ├── typedoc.json
│ └── vendor
│ │ ├── biplist
│ │ └── __init__.py
│ │ ├── dmgbuild
│ │ ├── badge.py
│ │ ├── colors.py
│ │ └── core.py
│ │ ├── ds_store
│ │ ├── __init__.py
│ │ ├── buddy.py
│ │ └── store.py
│ │ └── mac_alias
│ │ ├── __init__.py
│ │ ├── alias.py
│ │ ├── bookmark.py
│ │ ├── osx.py
│ │ └── utils.py
├── electron-builder-squirrel-windows
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── readme.md
│ ├── src
│ │ └── SquirrelWindowsTarget.ts
│ ├── template.nuspectemplate
│ ├── tsconfig.json
│ └── typedoc.json
├── electron-builder
│ ├── CHANGELOG.md
│ ├── cli.js
│ ├── install-app-deps.js
│ ├── package.json
│ ├── src
│ │ ├── builder.ts
│ │ ├── cli
│ │ │ ├── cli.ts
│ │ │ ├── create-self-signed-cert.ts
│ │ │ ├── install-app-deps.ts
│ │ │ └── start.ts
│ │ ├── index.ts
│ │ └── publish.ts
│ ├── tsconfig.json
│ └── typedoc.json
├── electron-forge-maker-appimage
│ ├── CHANGELOG.md
│ ├── main.js
│ ├── package.json
│ ├── readme.md
│ └── tsconfig.json
├── electron-forge-maker-nsis-web
│ ├── CHANGELOG.md
│ ├── main.js
│ ├── package.json
│ ├── readme.md
│ └── tsconfig.json
├── electron-forge-maker-nsis
│ ├── CHANGELOG.md
│ ├── main.js
│ ├── package.json
│ ├── readme.md
│ └── tsconfig.json
├── electron-forge-maker-snap
│ ├── CHANGELOG.md
│ ├── main.js
│ ├── package.json
│ ├── readme.md
│ └── tsconfig.json
├── electron-publish
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── readme.md
│ ├── src
│ │ ├── bitbucketPublisher.ts
│ │ ├── gitHubPublisher.ts
│ │ ├── httpPublisher.ts
│ │ ├── index.ts
│ │ ├── keygenPublisher.ts
│ │ ├── multiProgress.ts
│ │ ├── progress.ts
│ │ ├── publisher.ts
│ │ ├── s3
│ │ │ ├── baseS3Publisher.ts
│ │ │ ├── s3Publisher.ts
│ │ │ └── spacesPublisher.ts
│ │ └── snapStorePublisher.ts
│ ├── tsconfig.json
│ └── typedoc.json
├── electron-updater
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── AppAdapter.ts
│ │ ├── AppImageUpdater.ts
│ │ ├── AppUpdater.ts
│ │ ├── BaseUpdater.ts
│ │ ├── DebUpdater.ts
│ │ ├── DownloadedUpdateHelper.ts
│ │ ├── ElectronAppAdapter.ts
│ │ ├── LinuxUpdater.ts
│ │ ├── MacUpdater.ts
│ │ ├── NsisUpdater.ts
│ │ ├── PacmanUpdater.ts
│ │ ├── RpmUpdater.ts
│ │ ├── differentialDownloader
│ │ │ ├── DataSplitter.ts
│ │ │ ├── DifferentialDownloader.ts
│ │ │ ├── FileWithEmbeddedBlockMapDifferentialDownloader.ts
│ │ │ ├── GenericDifferentialDownloader.ts
│ │ │ ├── ProgressDifferentialDownloadCallbackTransform.ts
│ │ │ ├── downloadPlanBuilder.ts
│ │ │ └── multipleRangeDownloader.ts
│ │ ├── electronHttpExecutor.ts
│ │ ├── main.ts
│ │ ├── providerFactory.ts
│ │ ├── providers
│ │ │ ├── BitbucketProvider.ts
│ │ │ ├── GenericProvider.ts
│ │ │ ├── GitHubProvider.ts
│ │ │ ├── KeygenProvider.ts
│ │ │ ├── PrivateGitHubProvider.ts
│ │ │ └── Provider.ts
│ │ ├── types.ts
│ │ ├── util.ts
│ │ └── windowsExecutableCodeSignatureVerifier.ts
│ ├── tsconfig.json
│ └── typedoc.json
└── tsconfig-base.json
├── pages
├── _redirects
├── appimage.md
├── appx.md
├── auto-update.md
├── cli.md
├── code-signing-mac.md
├── code-signing-win.md
├── code-signing.md
├── configuration.md
├── contents.md
├── dmg.md
├── donate.md
├── encapsulated manual update via menu.js
├── extra.js
├── file-patterns.md
├── find-build-agent
├── flatpak.md
├── hooks.md
├── icons.md
├── linux.md
├── mac.md
├── mas.md
├── msi-wrapped.md
├── msi.md
├── multi-platform-build.md
├── nsis.md
├── pkg.md
├── programmatic-usage.md
├── publish.md
├── snap.md
├── sponsor-logos
│ └── Tidepool_Logo_Light.svg
├── squirrel-windows.md
├── stylesheets
│ └── autowidth.css
├── tutorials
│ ├── adding-electron-fuses.md
│ ├── code-signing-windows-apps-on-unix.md
│ ├── loading-app-dependencies-manually.md
│ ├── macos-kernel-extensions.md
│ ├── release-using-channels.md
│ ├── test-update-on-s3-locally.md
│ └── two-package-structure.md
└── win.md
├── patches
└── @changesets__cli@2.25.0.patch
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── run-tests-in-docker-custom-app-builder.sh
├── scripts
├── checkDeps.js
├── fix-schema.js
├── generate-schema.ts
├── renderer
│ ├── src
│ │ ├── customRendererPlugin.ts
│ │ └── typedoc2html.ts
│ └── tsconfig.json
├── snap-exclude-list.js
├── snap-template.sh
└── update-package-version-export.js
├── test
├── README.md
├── fixtures
│ ├── .gitignore
│ ├── appx-assets
│ │ ├── BadgeLogo.scale-100.png
│ │ ├── BadgeLogo.scale-140.png
│ │ └── BadgeLogo.scale-180.png
│ ├── build-hook.cjs
│ ├── build-hook.mjs
│ ├── headerIcon.ico
│ ├── install-spinner.gif
│ ├── installer.nsh
│ ├── installer.nsi
│ ├── installerHeader.bmp
│ ├── license.txt
│ ├── license_de.rtf
│ ├── license_en.txt
│ ├── license_fr.txt
│ ├── license_ja.txt
│ ├── license_ko.txt
│ ├── licensebuttons_en.yml
│ ├── licensebuttons_fr.json
│ ├── licensebuttons_ja.json
│ ├── licensebuttons_ko.json
│ ├── lockfiles
│ │ ├── BuildTest
│ │ │ ├── posix smart unpack.txt
│ │ │ └── win smart unpack.txt
│ │ ├── HoistedNodeModuleTest
│ │ │ ├── isInstallDepsBefore=true npm electron-clear-data.txt
│ │ │ ├── isInstallDepsBefore=true npm tar.txt
│ │ │ ├── isInstallDepsBefore=true pnpm es5-ext without hoisted config.txt
│ │ │ ├── isInstallDepsBefore=true pnpm max stack.txt
│ │ │ ├── isInstallDepsBefore=true pnpm node-linker=hoisted.txt
│ │ │ ├── isInstallDepsBefore=true pnpm optional dependencies.txt
│ │ │ ├── isInstallDepsBefore=true pnpm optional dependency not installable on linux.txt
│ │ │ ├── isInstallDepsBefore=true pnpm public-hoist-pattern=.txt
│ │ │ ├── isInstallDepsBefore=true pnpm shamefully-hoist=true.txt
│ │ │ ├── isInstallDepsBefore=true yarn electron-clear-data.txt
│ │ │ ├── isInstallDepsBefore=true yarn max stack.txt
│ │ │ ├── isInstallDepsBefore=true yarn ms.txt
│ │ │ ├── isInstallDepsBefore=true yarn parse-asn1.txt
│ │ │ ├── isInstallDepsBefore=true yarn some module add by manual instead of install.txt
│ │ │ ├── isInstallDepsBefore=true yarn workspace for scope name.txt
│ │ │ └── yarn workspace for scope name.txt
│ │ ├── globTest
│ │ │ ├── isInstallDepsBefore=true asarUnpack node_modules which has many modules.txt
│ │ │ ├── isInstallDepsBefore=true asarUnpack node_modules.txt
│ │ │ ├── isInstallDepsBefore=true exclude some modules when asarUnpack node_modules which has many modules.txt
│ │ │ ├── isInstallDepsBefore=true failed peer dep.txt
│ │ │ ├── isInstallDepsBefore=true ignore node_modules.txt
│ │ │ └── isInstallDepsBefore=true symlinks everywhere with static framework.txt
│ │ └── ignoreTest
│ │ │ ├── copied sub node_modules of the rootDirnode_modules.txt
│ │ │ └── ignore node_modules dev dep.txt
│ ├── pkg-scripts
│ │ ├── postinstall
│ │ └── preinstall
│ ├── proton
│ │ ├── .gitignore
│ │ ├── index.js
│ │ └── package.json
│ ├── test-app-build-sub
│ │ ├── build
│ │ │ └── app
│ │ │ │ ├── index.html
│ │ │ │ └── main.js
│ │ ├── electron-builder.yml
│ │ └── package.json
│ ├── test-app-hoisted
│ │ ├── index.html
│ │ ├── index.js
│ │ └── package.json
│ ├── test-app-one
│ │ ├── app
│ │ │ ├── package.json
│ │ │ │ └── readme.md
│ │ │ └── readme.md
│ │ ├── build
│ │ │ ├── custom-manifest.xml
│ │ │ ├── custom-template-manifest.xml
│ │ │ ├── entitlements.mac.inherit.plist
│ │ │ ├── entitlements.mac.login.plist
│ │ │ ├── entitlements.mac.plist
│ │ │ ├── extraAsar.asar
│ │ │ ├── icon.icns
│ │ │ ├── icon.ico
│ │ │ ├── icons
│ │ │ │ ├── 128x128.png
│ │ │ │ ├── 16x16.png
│ │ │ │ ├── 256x256.png
│ │ │ │ ├── 32x32.png
│ │ │ │ ├── 48x48.png
│ │ │ │ ├── 512x512.png
│ │ │ │ └── 64x64.png
│ │ │ └── incorrect.ico
│ │ ├── index.html
│ │ ├── index.js
│ │ └── package.json
│ ├── test-app-symlink-framework
│ │ ├── hello-world
│ │ │ ├── hello-world-framework.sh
│ │ │ ├── lib
│ │ │ │ └── Release
│ │ │ │ │ └── Hello.framework
│ │ │ │ │ ├── Headers
│ │ │ │ │ ├── Hello
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Modules
│ │ │ │ │ └── Versions
│ │ │ │ │ ├── A
│ │ │ │ │ ├── Headers
│ │ │ │ │ │ └── HelloFramework.h
│ │ │ │ │ ├── Hello
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Modules
│ │ │ │ │ │ ├── Hello.abi.json
│ │ │ │ │ │ ├── Hello.swiftdoc
│ │ │ │ │ │ ├── Hello.swiftmodule
│ │ │ │ │ │ ├── arm64.private.swiftinterface
│ │ │ │ │ │ ├── arm64.swiftinterface
│ │ │ │ │ │ ├── arm64.swiftmodule
│ │ │ │ │ │ ├── x86_64.private.swiftinterface
│ │ │ │ │ │ ├── x86_64.swiftinterface
│ │ │ │ │ │ └── x86_64.swiftmodule
│ │ │ │ │ │ ├── Hello.swiftsourceinfo
│ │ │ │ │ │ └── module.modulemap
│ │ │ │ │ └── Current
│ │ │ └── package.json
│ │ ├── index.js
│ │ └── package.json
│ ├── test-app-two-native-modules
│ │ ├── app
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── package.json
│ │ │ └── yarn.lock
│ │ ├── package.json
│ │ └── yarn.lock
│ ├── test-app-yarn-hoisted
│ │ ├── app
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── package.json
│ │ │ └── path
│ │ │ │ └── app.asar
│ │ ├── build
│ │ │ ├── icon.icns
│ │ │ └── icon.ico
│ │ └── package.json
│ ├── test-app-yarn-several-workspace
│ │ ├── node_modules
│ │ │ ├── .yarn-integrity
│ │ │ ├── electron-log
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── electron-log.d.ts
│ │ │ │ ├── index.js
│ │ │ │ ├── lib
│ │ │ │ │ ├── format.js
│ │ │ │ │ ├── log.js
│ │ │ │ │ └── transports
│ │ │ │ │ │ ├── console.js
│ │ │ │ │ │ ├── file
│ │ │ │ │ │ ├── find-log-path.js
│ │ │ │ │ │ ├── get-app-name.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── log-s.js
│ │ │ │ │ │ └── renderer-console.js
│ │ │ │ ├── main.js
│ │ │ │ ├── package.json
│ │ │ │ └── renderer.js
│ │ │ ├── foo
│ │ │ ├── ms
│ │ │ │ ├── index.js
│ │ │ │ ├── license.md
│ │ │ │ ├── package.json
│ │ │ │ └── readme.md
│ │ │ └── test-app
│ │ ├── package.json
│ │ ├── packages
│ │ │ ├── foo
│ │ │ │ └── package.json
│ │ │ └── test-app
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ ├── node_modules
│ │ │ │ └── electron-log
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── electron-log.d.ts
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── lib
│ │ │ │ │ ├── format.js
│ │ │ │ │ ├── log.js
│ │ │ │ │ └── transports
│ │ │ │ │ │ ├── console.js
│ │ │ │ │ │ ├── file
│ │ │ │ │ │ ├── find-log-path.js
│ │ │ │ │ │ ├── get-app-name.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── log-s.js
│ │ │ │ │ │ └── renderer-console.js
│ │ │ │ │ ├── main.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── renderer.js
│ │ │ │ └── package.json
│ │ └── yarn.lock
│ ├── test-app-yarn-workspace-version-conflict
│ │ ├── node_modules
│ │ │ ├── .yarn-integrity
│ │ │ ├── foo
│ │ │ ├── ms
│ │ │ │ ├── index.js
│ │ │ │ ├── license.md
│ │ │ │ ├── package.json
│ │ │ │ └── readme.md
│ │ │ └── test-app
│ │ ├── package.json
│ │ ├── packages
│ │ │ ├── foo
│ │ │ │ └── package.json
│ │ │ └── test-app
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ ├── node_modules
│ │ │ │ └── ms
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── license.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── readme.md
│ │ │ │ └── package.json
│ │ └── yarn.lock
│ ├── test-app-yarn-workspace
│ │ ├── node_modules
│ │ │ ├── .yarn-integrity
│ │ │ ├── @sentry
│ │ │ │ ├── core
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── dist
│ │ │ │ │ │ ├── base.d.ts
│ │ │ │ │ │ ├── base.js
│ │ │ │ │ │ ├── base.js.map
│ │ │ │ │ │ ├── dsn.d.ts
│ │ │ │ │ │ ├── dsn.js
│ │ │ │ │ │ ├── dsn.js.map
│ │ │ │ │ │ ├── error.d.ts
│ │ │ │ │ │ ├── error.js
│ │ │ │ │ │ ├── error.js.map
│ │ │ │ │ │ ├── index.d.ts
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── index.js.map
│ │ │ │ │ │ ├── interfaces.d.ts
│ │ │ │ │ │ ├── interfaces.js
│ │ │ │ │ │ ├── interfaces.js.map
│ │ │ │ │ │ ├── sdk.d.ts
│ │ │ │ │ │ ├── sdk.js
│ │ │ │ │ │ ├── sdk.js.map
│ │ │ │ │ │ ├── status.d.ts
│ │ │ │ │ │ ├── status.js
│ │ │ │ │ │ └── status.js.map
│ │ │ │ │ └── package.json
│ │ │ │ └── shim
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── dist
│ │ │ │ │ ├── domain.d.ts
│ │ │ │ │ ├── domain.js
│ │ │ │ │ ├── domain.js.map
│ │ │ │ │ ├── global.d.ts
│ │ │ │ │ ├── global.js
│ │ │ │ │ ├── global.js.map
│ │ │ │ │ ├── index.d.ts
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index.js.map
│ │ │ │ │ ├── interfaces.d.ts
│ │ │ │ │ ├── interfaces.js
│ │ │ │ │ ├── interfaces.js.map
│ │ │ │ │ ├── models.d.ts
│ │ │ │ │ ├── models.js
│ │ │ │ │ ├── models.js.map
│ │ │ │ │ ├── sdk.d.ts
│ │ │ │ │ ├── sdk.js
│ │ │ │ │ ├── sdk.js.map
│ │ │ │ │ ├── shim.d.ts
│ │ │ │ │ ├── shim.js
│ │ │ │ │ └── shim.js.map
│ │ │ │ │ ├── jest.config.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src
│ │ │ │ │ ├── domain.ts
│ │ │ │ │ ├── global.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── interfaces.ts
│ │ │ │ │ ├── models.ts
│ │ │ │ │ ├── sdk.ts
│ │ │ │ │ └── shim.ts
│ │ │ │ │ ├── test
│ │ │ │ │ ├── lib
│ │ │ │ │ │ └── shim.test.ts
│ │ │ │ │ ├── mocks
│ │ │ │ │ │ └── client.ts
│ │ │ │ │ └── tslint.json
│ │ │ │ │ ├── tsconfig.build.json
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── tslint.json
│ │ │ ├── electron-log
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── electron-log.d.ts
│ │ │ │ ├── index.js
│ │ │ │ ├── lib
│ │ │ │ │ ├── format.js
│ │ │ │ │ ├── log.js
│ │ │ │ │ └── transports
│ │ │ │ │ │ ├── console.js
│ │ │ │ │ │ ├── file
│ │ │ │ │ │ ├── find-log-path.js
│ │ │ │ │ │ ├── get-app-name.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── log-s.js
│ │ │ │ │ │ └── renderer-console.js
│ │ │ │ ├── main.js
│ │ │ │ ├── package.json
│ │ │ │ └── renderer.js
│ │ │ └── test-app
│ │ ├── package.json
│ │ ├── packages
│ │ │ └── test-app
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ └── yarn.lock
│ └── test-app
│ │ ├── app
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── package.json
│ │ └── path
│ │ │ └── app.asar
│ │ ├── build
│ │ ├── icon.icns
│ │ └── icon.ico
│ │ └── package.json
├── package.json
├── snapshots
│ ├── BuildTest.js.snap
│ ├── ExtraBuildResourcesTest.js.snap
│ ├── HoistedNodeModuleTest.js.snap
│ ├── PublishManagerTest.js.snap
│ ├── RepoSlugTest.js.snap
│ ├── concurrentBuildsTest.js.snap
│ ├── configurationValidationTest.js.snap
│ ├── extraMetadataTest.js.snap
│ ├── filesTest.js.snap
│ ├── globTest.js.snap
│ ├── ignoreTest.js.snap
│ ├── linux
│ │ ├── debTest.js.snap
│ │ ├── flatpakTest.js.snap
│ │ ├── fpmTest.js.snap
│ │ ├── linuxArchiveTest.js.snap
│ │ ├── linuxPackagerTest.js.snap
│ │ └── snapTest.js.snap
│ ├── mac
│ │ ├── dmgTest.js.snap
│ │ ├── macArchiveTest.js.snap
│ │ ├── macCodeSignTest.js.snap
│ │ ├── macIconTest.js.snap
│ │ ├── macPackagerTest.js.snap
│ │ └── masTest.js.snap
│ ├── mainEntryTest.js.snap
│ ├── protonTest.js.snap
│ ├── updater
│ │ ├── blackboxUpdateTest.js.snap
│ │ ├── differentialUpdateTest.js.snap
│ │ ├── linuxUpdaterTest.js.snap
│ │ └── nsisUpdaterTest.js.snap
│ └── windows
│ │ ├── appxTest.js.snap
│ │ ├── assistedInstallerTest.js.snap
│ │ ├── msiTest.js.snap
│ │ ├── msiWrappedTest.js.snap
│ │ ├── oneClickInstallerTest.js.snap
│ │ ├── portableTest.js.snap
│ │ ├── squirrelWindowsTest.js.snap
│ │ ├── webInstallerTest.js.snap
│ │ ├── winCodeSignTest.js.snap
│ │ └── winPackagerTest.js.snap
├── src
│ ├── ArtifactPublisherTest.ts
│ ├── BuildTest.ts
│ ├── ExtraBuildResourcesTest.ts
│ ├── HoistTest.ts
│ ├── HoistedNodeModuleTest.ts
│ ├── MemoLazyTest.ts
│ ├── PublishManagerTest.ts
│ ├── RepoSlugTest.ts
│ ├── binDownloadTest.ts
│ ├── concurrentBuildsTest.ts
│ ├── configurationValidationTest.ts
│ ├── extraMetadataTest.ts
│ ├── filenameUtilTest.ts
│ ├── filesTest.ts
│ ├── globTest.ts
│ ├── helpers
│ │ ├── CheckingPackager.ts
│ │ ├── TestAppAdapter.ts
│ │ ├── codeSignData.ts
│ │ ├── customWindowsSign.mjs
│ │ ├── customWindowsSign.ts
│ │ ├── downloadElectron.ts
│ │ ├── fileAssert.ts
│ │ ├── launchAppCrossPlatform.ts
│ │ ├── packTester.ts
│ │ ├── runTests.ts
│ │ ├── testConfig.ts
│ │ ├── updaterTestUtil.ts
│ │ ├── verifySmartUnpack.ts
│ │ ├── winHelper.ts
│ │ └── wine.ts
│ ├── ignoreTest.ts
│ ├── linux
│ │ ├── debTest.ts
│ │ ├── flatpakTest.ts
│ │ ├── fpmTest.ts
│ │ ├── linuxArchiveTest.ts
│ │ ├── linuxPackagerTest.ts
│ │ ├── snapHeavyTest.ts
│ │ └── snapTest.ts
│ ├── mac
│ │ ├── dmgTest.ts
│ │ ├── macArchiveTest.ts
│ │ ├── macCodeSignTest.ts
│ │ ├── macIconTest.ts
│ │ ├── macPackagerTest.ts
│ │ └── masTest.ts
│ ├── macroExpanderTest.ts
│ ├── mainEntryTest.ts
│ ├── protonTest.ts
│ ├── updater
│ │ ├── Dockerfile-appimage
│ │ ├── Dockerfile-archlinux
│ │ ├── Dockerfile-debian
│ │ ├── Dockerfile-rpm
│ │ ├── blackboxUpdateTest.ts
│ │ ├── differentialUpdateTest.ts
│ │ ├── linuxUpdaterTest.ts
│ │ ├── macUpdaterTest.ts
│ │ ├── nsisUpdaterTest.ts
│ │ └── test-specific-platforms.sh
│ ├── urlUtilTest.ts
│ └── windows
│ │ ├── appxTest.ts
│ │ ├── assistedInstallerTest.ts
│ │ ├── msiTest.ts
│ │ ├── msiWrappedTest.ts
│ │ ├── oneClickInstallerTest.ts
│ │ ├── portableTest.ts
│ │ ├── squirrelWindowsTest.ts
│ │ ├── webInstallerTest.ts
│ │ ├── winCodeSignTest.ts
│ │ └── winPackagerTest.ts
├── tsconfig.json
├── typings
│ ├── diff.d.ts
│ └── vitest.d.ts
└── vitest-setup.ts
├── tsconfig-base.json
├── tsconfig.json
├── typedoc.config.js
├── typings
├── chromium-pickle-js.d.ts
├── flatpak-bundler.d.ts
├── minimatch.d.ts
└── path-sort.d.ts
└── vite.config.ts
/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 |
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 |
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 |
--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@1.6.0/schema.json",
3 | "changelog": ["@changesets/changelog-github", { "repo": "electron-userland/electron-builder" }],
4 | "commit": false,
5 | "linked": [[
6 | "app-builder-lib",
7 | "builder-util",
8 | "dmg-builder",
9 | "electron-builder",
10 | "electron-builder-squirrel-windows",
11 | "electron-forge-maker-appimage",
12 | "electron-forge-maker-nsis",
13 | "electron-forge-maker-nsis-web",
14 | "electron-forge-maker-snap",
15 | "electron-publish"
16 | ]],
17 | "access": "public",
18 | "baseBranch": "master",
19 | "updateInternalDependencies": "patch",
20 | "ignore": ["@electron-builder/test"],
21 | "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
22 | "onlyUpdatePeerDependentsWhenOutOfRange": false
23 | }
24 | }
--------------------------------------------------------------------------------
/.changeset/violet-zoos-speak.md:
--------------------------------------------------------------------------------
1 | ---
2 | "dmg-builder": patch
3 | ---
4 |
5 | chore: stabilize hdiutil resize by using whole number byte size
6 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*]
2 | indent_style = space
3 | indent_size = 2
4 | trim_trailing_whitespace = true
5 | ij_javascript_use_double_quotes = true
6 | ij_typescript_use_double_quotes = true
7 | charset = utf-8
8 |
9 | ij_any_else_on_new_line = false
10 | ij_any_block_comment_at_first_column = false
11 | ij_any_line_comment_at_first_column = false
12 | ij_javascript_force_semicolon_style = true
13 | ij_javascript_use_semicolon_after_statement = false
14 | ij_typescript_force_semicolon_style = true
15 | ij_typescript_use_semicolon_after_statement = false
16 | ij_javascript_force_quote_style = true
17 | ij_typescript_force_quote_style = true
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [mmaietta]
2 | custom: https://www.electron.build/donate
3 |
--------------------------------------------------------------------------------
/.github/actions/pnpm/action.yml:
--------------------------------------------------------------------------------
1 | name: 'pnpm installation'
2 | description: 'Install and audit dependencies via pnpm'
3 | inputs:
4 | version: # id of input
5 | description: 'The pnpm version to use'
6 | required: false
7 | default: 9.4.0
8 |
9 | runs:
10 | using: 'composite'
11 | steps:
12 | - name: Setup pnpm
13 | uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
14 | with:
15 | version: ${{ inputs.version }}
16 |
17 | - name: Setup node
18 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
19 | with:
20 | node-version: '22'
21 | cache: 'pnpm'
22 |
23 | - name: Install dependencies
24 | run: pnpm install --frozen-lockfile
25 | shell: bash
26 |
27 | ## Usage
28 | # - name: install and audit
29 | # uses: ./.github/actions/pnpm
30 | # with:
31 | # version: ${{ env.PNPM_VERSION }}
32 |
--------------------------------------------------------------------------------
/.github/issue_template.md:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 | * **Electron-Builder Version**:
8 |
9 |
10 | * **Node Version**:
11 |
12 |
13 |
14 | * **Electron Version**:
15 | * **Electron Type (current, beta, nightly)**:
16 |
17 |
18 |
19 | * **Target**:
20 |
21 |
22 | * **Debug Logs**:
23 |
24 |
25 |
--------------------------------------------------------------------------------
/.github/pr-labeler.yml:
--------------------------------------------------------------------------------
1 | app-builder-lib:
2 | - packages/app-builder-lib/**/*
3 | builder-util:
4 | - packages/builder-util/**/*
5 | - packages/builder-util-runtime/**/*
6 | dmg-builder:
7 | - packages/dmg-builder/**/*
8 | mac:
9 | - packages/dmg-builder/**/*
10 | - '**/mac*.ts'
11 | linux:
12 | - '**/linux*.ts'
13 | windows:
14 | - '**/win*.ts'
15 | squirrel.windows:
16 | - packages/electron-builder-squirrel-windows/**/*
17 | appimage:
18 | - packages/electron-forge-maker-appimage/**/*
19 | nsis:
20 | - packages/app-builder-lib/src/targets/nsis/*
21 | - packages/electron-forge-maker-nsis/**/*
22 | - packages/electron-forge-maker-nsis-web/**/*
23 | snap:
24 | - packages/electron-forge-maker-snap/**/*
25 | electron-publish:
26 | - packages/electron-publish/**/*
27 | electron-updater:
28 | - packages/electron-updater/**/*
29 |
30 |
31 |
--------------------------------------------------------------------------------
/.github/workflows/pr-labeler.yml:
--------------------------------------------------------------------------------
1 | name: "Pull Request Labeler"
2 | on:
3 | - pull_request_target
4 |
5 | permissions:
6 | contents: read
7 |
8 | jobs:
9 | triage:
10 | permissions:
11 | contents: read # for actions/labeler to determine modified files
12 | pull-requests: write # for actions/labeler to add labels to PRs
13 | runs-on: ubuntu-latest
14 | steps:
15 | - uses: actions/labeler@ac9175f8a1f3625fd0d4fb234536d26811351594 # v4
16 | with:
17 | repo-token: "${{ secrets.GITHUB_TOKEN }}"
18 | configuration-path: ".github/pr-labeler.yml"
19 | sync-labels: false
20 |
--------------------------------------------------------------------------------
/.github/workflows/pr-semantic.yml:
--------------------------------------------------------------------------------
1 | name: "Semantic Versioning enforcer"
2 |
3 | on:
4 | pull_request_target:
5 | types:
6 | - opened
7 | - edited
8 | - synchronize
9 |
10 | permissions:
11 | contents: read
12 |
13 | jobs:
14 | main:
15 | permissions:
16 | pull-requests: read # for amannn/action-semantic-pull-request to analyze PRs
17 | statuses: write # for amannn/action-semantic-pull-request to mark status of analyzed PR
18 | runs-on: ubuntu-latest
19 | steps:
20 | # Please look up the latest version from
21 | # https://github.com/amannn/action-semantic-pull-request/releases
22 | - uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
23 | env:
24 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | name: 'Close stale issues and PR'
2 | on:
3 | schedule:
4 | - cron: '0 0 * * *'
5 |
6 | jobs:
7 | stale:
8 | runs-on: ubuntu-latest
9 | permissions:
10 | issues: write
11 | pull-requests: write
12 | steps:
13 | - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9
14 | with:
15 | stale-issue-message: 'This issue is stale because it has been open for 30 days with no activity. Remove stale label or comment, or this will be closed in 30 days.'
16 | stale-pr-message: 'This PR is stale because it has been open for 30 days with no activity. Remove stale label or comment, or this will be closed in 30 days.'
17 | close-issue-message: 'This issue was closed because it has been stalled for 30 days with no activity.'
18 | days-before-stale: 30
19 | days-before-close: 30
20 | operations-per-run: 100
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.vscode/
2 | node_modules
3 | *.log
4 |
5 | /.idea/compiler.xml
6 | /.idea/encodings.xml
7 | /.idea/workspace.xml
8 | /.idea/copyright/
9 | /.idea/deployment.xml
10 | /.idea/shelf/
11 |
12 | .DS_Store
13 |
14 | out/
15 | /test/test-report.xml
16 |
17 | /packages/dmg-builder/vendor/
18 |
19 | /scripts/jsdoc/out/
20 | /scripts/renderer/out/
21 |
22 | docs/
23 | site/
24 |
25 | electron-builder-*.d.ts
26 |
27 | tsconfig.tsbuildinfo
28 |
29 | .pnpm-store/
30 | **/node_modules
31 | coverage
32 |
--------------------------------------------------------------------------------
/.husky/.gitignore:
--------------------------------------------------------------------------------
1 | _
2 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | pnpm run lint-staged
5 |
--------------------------------------------------------------------------------
/.husky/pre-push:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | pnpm run pretest
5 |
--------------------------------------------------------------------------------
/.idea/bashsupport_project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/jsLinters/tslint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/rc-producer.yml:
--------------------------------------------------------------------------------
1 | - &defaults
2 | files: ["test/src/**/*", "!**/helpers/**/*"]
3 | script: "node_modules/jest-cli/bin/jest.js"
4 | scriptArgs: ["-i", &filePattern '--testPathPattern=[/\\]{1}${fileNameWithoutExt}\.\w+$']
5 | rcName: "${fileNameWithoutExt}"
6 | beforeRun: typescript
7 |
8 | -
9 | <<: *defaults
10 | lineRegExp: '^\s*(?:test|it|testAndIgnoreApiRate)(?:\.[\w.]+)?\("([^"'']+)'
11 | scriptArgs: ["-i", "-t", "${0regExp}", *filePattern]
12 | rcName: "${fileNameWithoutExt}.${0}"
13 | env:
14 | TEST_APP_TMP_DIR: /tmp/electron-builder-test
15 | DEBUG: electron-builder
--------------------------------------------------------------------------------
/.idea/runConfigurations/build_deb_remote.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/build_snap_remote__stage_packages_.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/build_snap_remote__template_.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/build_snap_remote__template__production.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/build_some_project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/scopes/json5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/scopes/src.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/watcherTasks.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.mention-bot:
--------------------------------------------------------------------------------
1 | {
2 | "userBlacklist": ["develar"]
3 | }
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | package-import-method=copy
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 22.14.0
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | *.d.ts
2 | out
--------------------------------------------------------------------------------
/.prettierrc.yaml:
--------------------------------------------------------------------------------
1 | singleQuote: false
2 | semi: false
3 | arrowParens: avoid
4 | trailingComma: es5
5 | printWidth: 180
6 | quoteProps: as-needed
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "type": "node",
6 | "request": "launch",
7 | "name": "Vitest TEST_FILES",
8 | "runtimeExecutable": "pnpm",
9 | "program": "ci:test",
10 | "console": "integratedTerminal",
11 | "internalConsoleOptions": "openOnFirstSessionStart",
12 | "env": {
13 | "TEST_FILES": "macPackagerTest",
14 | "UPDATE_SNAPSHOT": "false"
15 | }
16 | }
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Loopline Systems
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/docker/base/test.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -ex
3 |
4 | pnpm i
5 | pnpm compile
6 | pnpm ci:test
--------------------------------------------------------------------------------
/docker/node/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG IMAGE_VERSION=base
2 | FROM --platform=linux/x86_64 electronuserland/builder:$IMAGE_VERSION
3 |
4 | ARG NODE_VERSION
5 |
6 | # this package is used for snapcraft and we should not clear apt list - to avoid apt-get update during snap build
7 | RUN curl -L https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz | tar xz -C /usr/local --strip-components=1 && \
8 | unlink /usr/local/CHANGELOG.md && unlink /usr/local/LICENSE && unlink /usr/local/README.md && \
9 | # https://github.com/npm/npm/issues/4531
10 | echo "unsafe-perm true" > .npmrc
11 | RUN npm i -g pnpm@9.4.0
12 |
--------------------------------------------------------------------------------
/docker/readme.md:
--------------------------------------------------------------------------------
1 | It is developer documentation. See [user documentation](https://www.electron.build/multi-platform-build#docker).
2 |
3 | # Build
4 |
5 | `pnpm docker-images`
6 |
7 | # Notes
8 |
9 | * We use [named data volume](https://madcoda.com/2016/03/docker-named-volume-explained/) instead of mounted host directory to store `node_modules` because NPM is unreliable and NPM team [doesn't want to fix it](https://github.com/npm/npm/issues/3565).
10 |
11 | `${PWD##*/}-node-modules` is used as name of data volume — it is your current directory name (e. g. `foo`) and suffix `-node-modules`.
12 |
13 | As downside, you have to manually clear outdated data volumes, use `docker volume rm your-name`.
--------------------------------------------------------------------------------
/docker/wine-chrome/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG IMAGE_VERSION=wine
2 | FROM --platform=linux/x86_64 electronuserland/builder:$IMAGE_VERSION
3 |
4 | RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
5 | echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \
6 | apt-get -qq update -y && \
7 | apt-get -qq install -y --no-install-recommends xvfb google-chrome-stable libgconf-2-4 && \
8 | # clean
9 | apt-get clean && rm -rf /var/lib/apt/lists/*
--------------------------------------------------------------------------------
/docker/wine-mono/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG IMAGE_VERSION=wine
2 | FROM --platform=linux/x86_64 electronuserland/builder:$IMAGE_VERSION
3 |
4 | # since mono is required only for deprecated target Squirrel.Windows, extracted to separate docker image to reduce size
5 |
6 | RUN apt-get -qq update -y && \
7 | apt-get -qq install -y --no-install-recommends mono-devel ca-certificates-mono && \
8 | apt-get clean && rm -rf /var/lib/apt/lists/*
9 |
--------------------------------------------------------------------------------
/mkdocs-dockerfile:
--------------------------------------------------------------------------------
1 | FROM squidfunk/mkdocs-material:9.5
2 | RUN pip install mkdocs-include-markdown-plugin pymdown-extensions pygments markdown-include
3 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [Settings]
2 | ID = "e6f8cb2b-77d6-4681-bf16-7f120ea5c4e2"
3 |
4 | [Build]
5 | Publish = ""
6 | Functions = ""
7 |
8 | [build.environment]
9 | NPM_FLAGS = "--version"
10 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/README.md:
--------------------------------------------------------------------------------
1 | # app-builder-lib
2 |
3 | Various utilities. Used by [electron-builder](https://github.com/electron-userland/electron-builder).
4 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/certs/create.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | rm -rf $PWD/root_certs.keychain
4 | security create-keychain -p pass $PWD/root_certs.keychain
5 | security set-keychain-settings $PWD/root_certs.keychain
6 |
7 | curl https://developer.apple.com/certificationauthority/AppleWWDRCA.cer > /tmp/AppleWWDRCA.cer
8 | security import /tmp/AppleWWDRCA.cer -k $PWD/root_certs.keychain -T /usr/bin/codesign -T /usr/bin/productbuild
--------------------------------------------------------------------------------
/packages/app-builder-lib/certs/root_certs.keychain:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/certs/root_certs.keychain
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/asar/asarFileChecker.ts:
--------------------------------------------------------------------------------
1 | import * as asar from "@electron/asar"
2 | import { FilesystemEntry, FilesystemFileEntry } from "@electron/asar/lib/filesystem"
3 |
4 | export function checkFileInArchive(asarFile: string, relativeFile: string, messagePrefix: string) {
5 | function error(text: string) {
6 | return new Error(`${messagePrefix} "${relativeFile}" in the "${asarFile}" ${text}`)
7 | }
8 | let stat: FilesystemEntry
9 | try {
10 | stat = asar.statFile(asarFile, relativeFile, false)
11 | } catch (e: any) {
12 | if (e.message.includes("Cannot read properties of undefined (reading 'link')")) {
13 | throw error("does not exist. Seems like a wrong configuration.")
14 | }
15 | throw error(`is corrupted: ${e}`)
16 | }
17 | if ((stat as FilesystemFileEntry).size === 0) {
18 | throw error(`is corrupted: size 0`)
19 | }
20 | return stat
21 | }
22 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/codeSign/signManager.ts:
--------------------------------------------------------------------------------
1 | import { MemoLazy, Nullish } from "builder-util-runtime"
2 | import { Lazy } from "lazy-val"
3 | import { Target } from "../core"
4 | import { WindowsConfiguration } from "../options/winOptions"
5 | import { WindowsSignOptions } from "./windowsCodeSign"
6 | import { CertificateFromStoreInfo, FileCodeSigningInfo } from "./windowsSignToolManager"
7 |
8 | export interface SignManager {
9 | readonly computedPublisherName: Lazy | null>
10 | readonly cscInfo: MemoLazy
11 | computePublisherName(target: Target, publisherName: string | Nullish): Promise
12 | initialize(): Promise
13 | signFile(options: WindowsSignOptions): Promise
14 | }
15 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/errorMessages.ts:
--------------------------------------------------------------------------------
1 | export const authorEmailIsMissed = `Please specify author 'email' in the application package.json
2 |
3 | See https://docs.npmjs.com/files/package.json#people-fields-author-contributors
4 |
5 | It is required to set Linux .deb package maintainer. Or you can set maintainer in the custom linux options.
6 | (see https://www.electron.build/linux).
7 | `
8 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/forge-maker.ts:
--------------------------------------------------------------------------------
1 | import * as path from "path"
2 | import { build } from "./index"
3 | import { PackagerOptions } from "./packagerApi"
4 |
5 | export interface ForgeOptions {
6 | readonly dir: string
7 | }
8 |
9 | export function buildForge(forgeOptions: ForgeOptions, options: PackagerOptions) {
10 | const appDir = forgeOptions.dir
11 | return build({
12 | prepackaged: appDir,
13 | config: {
14 | directories: {
15 | // https://github.com/electron-userland/electron-forge/blob/master/src/makers/generic/zip.js
16 | output: path.resolve(appDir, "..", "make"),
17 | },
18 | },
19 | ...options,
20 | })
21 | }
22 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/node-module-collector/yarnNodeModulesCollector.ts:
--------------------------------------------------------------------------------
1 | import { NpmNodeModulesCollector } from "./npmNodeModulesCollector"
2 |
3 | export class YarnNodeModulesCollector extends NpmNodeModulesCollector {
4 | constructor(rootDir: string) {
5 | super(rootDir)
6 | }
7 |
8 | public readonly installOptions = Promise.resolve({
9 | cmd: process.platform === "win32" ? "yarn.cmd" : "yarn",
10 | args: ["install", "--frozen-lockfile"],
11 | lockfile: "yarn.lock",
12 | })
13 | }
14 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/presets/rectCra.ts:
--------------------------------------------------------------------------------
1 | import { log, statOrNull } from "builder-util"
2 | import * as path from "path"
3 | import { Configuration } from "../configuration"
4 |
5 | /** @internal */
6 | export async function reactCra(projectDir: string): Promise {
7 | if ((await statOrNull(path.join(projectDir, "public", "electron.js"))) == null) {
8 | // noinspection SpellCheckingInspection
9 | log.warn("public/electron.js not found. Please see https://medium.com/@kitze/%EF%B8%8F-from-react-to-an-electron-app-ready-for-production-a0468ecb1da3")
10 | }
11 |
12 | return {
13 | directories: {
14 | buildResources: "assets",
15 | },
16 | files: ["build/**/*"],
17 | extraMetadata: {
18 | main: "build/electron.js",
19 | },
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/targets/nsis/Commands.ts:
--------------------------------------------------------------------------------
1 | export type Commands = {
2 | OutFile: string
3 | VIProductVersion?: string
4 | VIAddVersionKey: Array
5 | Unicode: boolean
6 | Icon?: string
7 | SetCompress?: "off"
8 | SetCompressor?: "zlib"
9 | }
10 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/bundledTool.ts:
--------------------------------------------------------------------------------
1 | import { Nullish } from "builder-util-runtime"
2 |
3 | export interface ToolInfo {
4 | path: string
5 | env?: any
6 | }
7 |
8 | export function computeEnv(oldValue: string | Nullish, newValues: Array): string {
9 | const parsedOldValue = oldValue ? oldValue.split(":") : []
10 | return newValues
11 | .concat(parsedOldValue)
12 | .filter(it => it.length > 0)
13 | .join(":")
14 | }
15 |
16 | export function computeToolEnv(libPath: Array): any {
17 | // noinspection SpellCheckingInspection
18 | return {
19 | ...process.env,
20 | DYLD_LIBRARY_PATH: computeEnv(process.env.DYLD_LIBRARY_PATH, libPath),
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/flags.ts:
--------------------------------------------------------------------------------
1 | import { isEnvTrue } from "builder-util"
2 |
3 | export function isUseSystemSigncode() {
4 | return isEnvTrue(process.env.USE_SYSTEM_SIGNCODE)
5 | }
6 |
7 | export function isBuildCacheEnabled() {
8 | return !isEnvTrue(process.env.ELECTRON_BUILDER_DISABLE_BUILD_CACHE)
9 | }
10 |
11 | export function isAutoDiscoveryCodeSignIdentity() {
12 | return process.env.CSC_IDENTITY_AUTO_DISCOVERY !== "false"
13 | }
14 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/hash.ts:
--------------------------------------------------------------------------------
1 | import { createHash } from "crypto"
2 | import { createReadStream } from "fs"
3 |
4 | export function hashFile(file: string, algorithm = "sha512", encoding: "base64" | "hex" = "base64", options?: any) {
5 | return new Promise((resolve, reject) => {
6 | const hash = createHash(algorithm)
7 | hash.on("error", reject).setEncoding(encoding)
8 |
9 | createReadStream(file, { ...options, highWaterMark: 1024 * 1024 /* better to use more memory but hash faster */ })
10 | .on("error", reject)
11 | .on("end", () => {
12 | hash.end()
13 | resolve(hash.read() as string)
14 | })
15 | .pipe(hash, { end: false })
16 | })
17 | }
18 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/packageDependencies.ts:
--------------------------------------------------------------------------------
1 | import { Lazy } from "lazy-val"
2 | import { executeAppBuilderAsJson } from "./appBuilder"
3 |
4 | export function createLazyProductionDeps(projectDir: string, excludedDependencies: Array | null, flatten: T) {
5 | return new Lazy(async () => {
6 | const args = ["node-dep-tree", "--dir", projectDir]
7 | if (flatten) args.push("--flatten")
8 | if (excludedDependencies != null) {
9 | for (const name of excludedDependencies) {
10 | args.push("--exclude-dep", name)
11 | }
12 | }
13 | return executeAppBuilderAsJson>(args)
14 | })
15 | }
16 |
17 | export interface NodeModuleDirInfo {
18 | readonly dir: string
19 | readonly deps: Array
20 | }
21 |
22 | export interface NodeModuleInfo {
23 | readonly name: string
24 | readonly version: string
25 | readonly dir: string
26 | readonly dependencies?: Array
27 | }
28 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/pathManager.ts:
--------------------------------------------------------------------------------
1 | import * as path from "path"
2 |
3 | const root = path.join(__dirname, "..", "..")
4 |
5 | export function getTemplatePath(file: string) {
6 | return path.join(root, "templates", file)
7 | }
8 |
9 | export function getVendorPath(file?: string) {
10 | return file == null ? path.join(root, "vendor") : path.join(root, "vendor", file)
11 | }
12 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/plist.ts:
--------------------------------------------------------------------------------
1 | import { build, parse } from "plist"
2 | import * as fs from "fs/promises"
3 |
4 | type PlistValue = string | number | boolean | Date | PlistObject | PlistValue[]
5 |
6 | interface PlistObject {
7 | [key: string]: PlistValue
8 | }
9 |
10 | function sortObjectKeys(obj: PlistValue): PlistValue {
11 | if (obj === null || typeof obj !== "object") {
12 | return obj
13 | }
14 |
15 | if (Array.isArray(obj)) {
16 | return obj.map(sortObjectKeys)
17 | }
18 |
19 | const result: PlistObject = {}
20 | Object.keys(obj)
21 | .sort()
22 | .forEach(key => {
23 | result[key] = sortObjectKeys((obj as PlistObject)[key])
24 | })
25 | return result
26 | }
27 |
28 | export async function savePlistFile(path: string, data: PlistValue): Promise {
29 | const sortedData = sortObjectKeys(data)
30 | const plist = build(sortedData)
31 | await fs.writeFile(path, plist)
32 | }
33 |
34 | export async function parsePlistFile(file: string): Promise {
35 | const data = await fs.readFile(file, "utf8")
36 | return parse(data) as T
37 | }
38 |
39 | export type { PlistValue, PlistObject }
40 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/rebuild/remote-rebuild.ts:
--------------------------------------------------------------------------------
1 | import { rebuild, RebuildOptions } from "@electron/rebuild"
2 |
3 | if (!process.send) {
4 | console.error("The remote rebuilder expects to be spawned with an IPC channel")
5 | process.exit(1)
6 | }
7 |
8 | const options: RebuildOptions = JSON.parse(process.argv[2])
9 |
10 | const rebuilder = rebuild(options)
11 |
12 | rebuilder.lifecycle.on("module-found", (moduleName: string) => process.send?.({ msg: "module-found", moduleName }))
13 | rebuilder.lifecycle.on("module-done", (moduleName: string) => process.send?.({ msg: "module-done", moduleName }))
14 | rebuilder.lifecycle.on("module-skip", (moduleName: string) => process.send?.({ msg: "module-skip", moduleName }))
15 |
16 | rebuilder
17 | .then(() => {
18 | process.send?.({ msg: "rebuild-done" })
19 | return process.exit(0)
20 | })
21 | .catch(err => {
22 | process.send?.({
23 | msg: "rebuild-error",
24 | err: {
25 | message: err.message,
26 | stack: err.stack,
27 | },
28 | })
29 | process.exit(0)
30 | })
31 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/util/timer.ts:
--------------------------------------------------------------------------------
1 | import { debug } from "builder-util"
2 |
3 | export interface Timer {
4 | end(): void
5 | }
6 |
7 | export class DevTimer implements Timer {
8 | private start = process.hrtime()
9 |
10 | constructor(private readonly label: string) {}
11 |
12 | endAndGet(): string {
13 | const end = process.hrtime(this.start)
14 | return `${end[0]}s ${Math.round(end[1] / 1000000)}ms`
15 | }
16 |
17 | end(): void {
18 | console.info(`${this.label}: ${this.endAndGet()}`)
19 | }
20 | }
21 |
22 | class ProductionTimer implements Timer {
23 | end(): void {
24 | // ignore
25 | }
26 | }
27 |
28 | export function time(label: string): Timer {
29 | return debug.enabled ? new DevTimer(label) : new ProductionTimer()
30 | }
31 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/version.ts:
--------------------------------------------------------------------------------
1 | export const PACKAGE_VERSION = "26.0.16"
2 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/vm/MonoVm.ts:
--------------------------------------------------------------------------------
1 | import { exec, ExtraSpawnOptions, spawn } from "builder-util"
2 | import { ExecFileOptions, SpawnOptions } from "child_process"
3 | import { VmManager } from "./vm"
4 |
5 | export class MonoVmManager extends VmManager {
6 | constructor() {
7 | super()
8 | }
9 |
10 | exec(file: string, args: Array, options?: ExecFileOptions, isLogOutIfDebug = true): Promise {
11 | return exec(
12 | "mono",
13 | [file].concat(args),
14 | {
15 | ...options,
16 | },
17 | isLogOutIfDebug
18 | )
19 | }
20 |
21 | spawn(file: string, args: Array, options?: SpawnOptions, extraOptions?: ExtraSpawnOptions): Promise {
22 | return spawn("mono", [file].concat(args), options, extraOptions)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/vm/PwshVm.ts:
--------------------------------------------------------------------------------
1 | import { log } from "builder-util"
2 | import { Lazy } from "lazy-val"
3 | import { isPwshAvailable, VmManager } from "./vm"
4 |
5 | export class PwshVmManager extends VmManager {
6 | constructor() {
7 | super()
8 | }
9 |
10 | readonly powershellCommand = new Lazy(async () => {
11 | log.info(null, "checking for `pwsh` for powershell")
12 | if (await isPwshAvailable.value) {
13 | return "pwsh"
14 | }
15 | const errorMessage = `unable to find \`pwsh\`, please install per instructions linked in logs`
16 | log.error(
17 | {
18 | mac: "https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos",
19 | linux: "https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux",
20 | },
21 | errorMessage
22 | )
23 | throw new Error(errorMessage)
24 | })
25 | }
26 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/vm/WineVm.ts:
--------------------------------------------------------------------------------
1 | import { ExtraSpawnOptions } from "builder-util"
2 | import { ExecFileOptions, SpawnOptions } from "child_process"
3 | import * as path from "path"
4 | import { execWine } from "../wine"
5 | import { VmManager } from "./vm"
6 |
7 | export class WineVmManager extends VmManager {
8 | constructor() {
9 | super()
10 | }
11 |
12 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
13 | exec(file: string, args: Array, options?: ExecFileOptions, isLogOutIfDebug = true): Promise {
14 | return execWine(file, null, args, options)
15 | }
16 |
17 | // eslint-disable-next-line @typescript-eslint/no-unused-vars
18 | spawn(file: string, args: Array, options?: SpawnOptions, extraOptions?: ExtraSpawnOptions): Promise {
19 | throw new Error("Unsupported")
20 | }
21 |
22 | toVmFile(file: string): string {
23 | return path.win32.join("Z:", file)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/src/wine.ts:
--------------------------------------------------------------------------------
1 | import { exec, executeAppBuilder } from "builder-util"
2 | import { ExecFileOptions } from "child_process"
3 |
4 | /** @private */
5 | export function execWine(file: string, file64: string | null = null, appArgs: Array = [], options: ExecFileOptions = {}): Promise {
6 | if (process.platform === "win32") {
7 | if (options.timeout == null) {
8 | // 2 minutes
9 | options.timeout = 120 * 1000
10 | }
11 | return exec(file, appArgs, options)
12 | }
13 |
14 | const commandArgs = ["wine", "--ia32", file]
15 | if (file64 != null) {
16 | commandArgs.push("--x64", file64)
17 | }
18 | if (appArgs.length > 0) {
19 | commandArgs.push("--args", JSON.stringify(appArgs))
20 | }
21 | return executeAppBuilder(commandArgs, undefined, options)
22 | }
23 |
24 | /** @private */
25 | export function prepareWindowsExecutableArgs(args: Array, exePath: string) {
26 | if (process.platform !== "win32") {
27 | args.unshift(exePath)
28 | }
29 | return args
30 | }
31 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/entitlements.mac.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | com.apple.security.cs.allow-jit
7 |
8 | com.apple.security.cs.allow-unsigned-executable-memory
9 |
10 |
11 | com.apple.security.cs.disable-library-validation
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/electron-linux/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/electron-linux/128x128.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/electron-linux/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/electron-linux/16x16.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/electron-linux/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/electron-linux/256x256.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/electron-linux/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/electron-linux/32x32.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/electron-linux/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/electron-linux/48x48.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/electron-linux/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/electron-linux/64x64.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/1024x1024.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/128x128.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/16x16.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/256x256.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/32x32.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/48x48.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/512x512.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/linux/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/linux/64x64.png
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/proton-native.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/proton-native.icns
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/proton-native.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/app-builder-lib/templates/icons/proton-native/proton-native.ico
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/icons/proton-native/proton-native.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/linux/after-remove.tpl:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Delete the link to the binary
4 | if type update-alternatives >/dev/null 2>&1; then
5 | update-alternatives --remove '${executable}' '/usr/bin/${executable}'
6 | else
7 | rm -f '/usr/bin/${executable}'
8 | fi
9 |
10 | APPARMOR_PROFILE_DEST='/etc/apparmor.d/${executable}'
11 |
12 | # Remove apparmor profile.
13 | if [ -f "$APPARMOR_PROFILE_DEST" ]; then
14 | rm -f "$APPARMOR_PROFILE_DEST"
15 | fi
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/linux/apparmor-profile.tpl:
--------------------------------------------------------------------------------
1 | abi ,
2 | include
3 |
4 | profile ${executable} "/opt/${sanitizedProductName}/${executable}" flags=(unconfined) {
5 | userns,
6 |
7 | # Site-specific additions and overrides. See local/README for details.
8 | include if exists
9 | }
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/linux/desktop.tpl:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Name=<%= title %>
3 | Comment=<%= comment %>
4 | Exec=<%= executable %>
5 | Terminal=false
6 | Type=Application
7 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/nsis/empty-license.txt:
--------------------------------------------------------------------------------
1 | Loading...
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/nsis/include/nsProcess.nsh:
--------------------------------------------------------------------------------
1 | !define nsProcess::FindProcess `!insertmacro nsProcess::FindProcess`
2 |
3 | !macro nsProcess::FindProcess _FILE _ERR
4 | nsProcess::_FindProcess /NOUNLOAD `${_FILE}`
5 | Pop ${_ERR}
6 | !macroend
7 |
8 |
9 | !define nsProcess::KillProcess `!insertmacro nsProcess::KillProcess`
10 |
11 | !macro nsProcess::KillProcess _FILE _ERR
12 | nsProcess::_KillProcess /NOUNLOAD `${_FILE}`
13 | Pop ${_ERR}
14 | !macroend
15 |
16 | !define nsProcess::CloseProcess `!insertmacro nsProcess::CloseProcess`
17 |
18 | !macro nsProcess::CloseProcess _FILE _ERR
19 | nsProcess::_CloseProcess /NOUNLOAD `${_FILE}`
20 | Pop ${_ERR}
21 | !macroend
22 |
23 |
24 | !define nsProcess::Unload `!insertmacro nsProcess::Unload`
25 |
26 | !macro nsProcess::Unload
27 | nsProcess::_Unload
28 | !macroend
29 |
--------------------------------------------------------------------------------
/packages/app-builder-lib/templates/nsis/oneClick.nsh:
--------------------------------------------------------------------------------
1 | !ifndef BUILD_UNINSTALLER
2 | !ifmacrodef licensePage
3 | !insertmacro skipPageIfUpdated
4 | !insertmacro licensePage
5 | !endif
6 | !endif
7 |
8 | !insertmacro MUI_PAGE_INSTFILES
9 | !ifdef BUILD_UNINSTALLER
10 | !insertmacro MUI_UNPAGE_INSTFILES
11 | !endif
12 |
13 | !macro initMultiUser
14 | !ifdef INSTALL_MODE_PER_ALL_USERS
15 | !insertmacro setInstallModePerAllUsers
16 | !else
17 | !insertmacro setInstallModePerUser
18 | !endif
19 | !macroend
--------------------------------------------------------------------------------
/packages/app-builder-lib/tsconfig-scheme.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "rootDir": "src",
6 | },
7 | "include": [
8 | "src/**/*.ts",
9 | "../../typings/*.d.ts"
10 | ],
11 | "exclude": [
12 | ]
13 | }
--------------------------------------------------------------------------------
/packages/app-builder-lib/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig-scheme.json",
3 | "jsdoc": {
4 | "out": "../../scripts/jsdoc/out/builder-lib",
5 | "examples": "../../scripts/jsdoc/examples",
6 | "access": "public"
7 | },
8 | "compilerOptions": {
9 | "outDir": "out",
10 | "rootDir": "src",
11 | },
12 | "include": [
13 | "src/**/*.ts",
14 | "../../typings/*.d.ts"
15 | ],
16 | "exclude": [
17 | ],
18 | "references": [
19 | {
20 | "path": "../builder-util"
21 | },
22 | {
23 | "path": "../builder-util-runtime"
24 | },
25 | {
26 | "path": "../electron-publish"
27 | }
28 | ]
29 | }
--------------------------------------------------------------------------------
/packages/app-builder-lib/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/index.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/builder-util-runtime/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "builder-util-runtime",
3 | "version": "9.3.2",
4 | "main": "out/index.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/builder-util-runtime"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "out"
16 | ],
17 | "engines": {
18 | "node": ">=12.0.0"
19 | },
20 | "dependencies": {
21 | "debug": "^4.3.4",
22 | "sax": "^1.2.4"
23 | },
24 | "devDependencies": {
25 | "@types/debug": "4.1.7",
26 | "@types/sax": "1.2.3"
27 | },
28 | "types": "./out/index.d.ts"
29 | }
30 |
--------------------------------------------------------------------------------
/packages/builder-util-runtime/readme.md:
--------------------------------------------------------------------------------
1 | # builder-util-runtime
2 |
3 | HTTP utilities. Used by [electron-builder](https://github.com/electron-userland/electron-builder).
--------------------------------------------------------------------------------
/packages/builder-util-runtime/src/blockMapApi.ts:
--------------------------------------------------------------------------------
1 | export interface FileChunks {
2 | checksums: Array
3 | sizes: Array
4 | }
5 |
6 | export interface BlockMap {
7 | version: "1" | "2"
8 | files: Array
9 | }
10 |
11 | export interface BlockMapFile extends FileChunks {
12 | name: string
13 | offset: number
14 | }
15 |
--------------------------------------------------------------------------------
/packages/builder-util-runtime/src/error.ts:
--------------------------------------------------------------------------------
1 | export function newError(message: string, code: string) {
2 | const error = new Error(message)
3 | ;(error as NodeJS.ErrnoException).code = code
4 | return error
5 | }
6 |
--------------------------------------------------------------------------------
/packages/builder-util-runtime/src/retry.ts:
--------------------------------------------------------------------------------
1 | import { CancellationToken } from "./CancellationToken"
2 |
3 | export async function retry(task: () => Promise, retryCount: number, interval: number, backoff = 0, attempt = 0, shouldRetry?: (e: any) => boolean): Promise {
4 | const cancellationToken = new CancellationToken()
5 | try {
6 | return await task()
7 | } catch (error: any) {
8 | if ((shouldRetry?.(error) ?? true) && retryCount > 0 && !cancellationToken.cancelled) {
9 | await new Promise(resolve => setTimeout(resolve, interval + backoff * attempt))
10 | return await retry(task, retryCount - 1, interval, backoff, attempt + 1, shouldRetry)
11 | } else {
12 | throw error
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/builder-util-runtime/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "composite": true,
5 | "outDir": "out",
6 | "rootDir": "src"
7 | },
8 | "jsdoc": {
9 | "out": "../../scripts/jsdoc/out/builder-util-runtime",
10 | "examples": "../../scripts/jsdoc/examples",
11 | "access": "public"
12 | },
13 | "include": [
14 | "src/**/*.ts"
15 | ]
16 | }
--------------------------------------------------------------------------------
/packages/builder-util-runtime/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/index.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/builder-util/readme.md:
--------------------------------------------------------------------------------
1 | # builder-util
2 |
3 | Various utilities. Used by [electron-builder](https://github.com/electron-userland/electron-builder).
--------------------------------------------------------------------------------
/packages/builder-util/src/7za.ts:
--------------------------------------------------------------------------------
1 | import { path7x, path7za } from "7zip-bin"
2 | import * as fs from "fs"
3 | import { chmod } from "fs-extra"
4 |
5 | export async function getPath7za(): Promise {
6 | if (fs.existsSync(path7za)) {
7 | await chmod(path7za, 0o755)
8 | }
9 | return path7za
10 | }
11 |
12 | export async function getPath7x(): Promise {
13 | await chmod(path7x, 0o755)
14 | return path7x
15 | }
16 |
--------------------------------------------------------------------------------
/packages/builder-util/src/mapper.ts:
--------------------------------------------------------------------------------
1 | type RecursiveMap = Map
2 |
3 | export function mapToObject(map: RecursiveMap) {
4 | const obj: any = {}
5 | for (const [key, value] of map) {
6 | if (!isValidKey(key)) {
7 | continue
8 | }
9 | if (value instanceof Map) {
10 | obj[key] = mapToObject(value)
11 | } else {
12 | obj[key] = value
13 | }
14 | }
15 | return obj
16 | }
17 |
18 | export function isValidKey(key: any) {
19 | const protectedProperties = ["__proto__", "prototype", "constructor"]
20 | if (protectedProperties.includes(key)) {
21 | return false
22 | }
23 | return ["string", "number", "symbol", "boolean"].includes(typeof key) || key === null
24 | }
25 |
--------------------------------------------------------------------------------
/packages/builder-util/src/nodeHttpExecutor.ts:
--------------------------------------------------------------------------------
1 | import { HttpExecutor } from "builder-util-runtime"
2 | import { ClientRequest, request as httpRequest } from "http"
3 | import { HttpProxyAgent } from "http-proxy-agent"
4 | import * as https from "https"
5 | import { HttpsProxyAgent } from "https-proxy-agent"
6 |
7 | export class NodeHttpExecutor extends HttpExecutor {
8 | // noinspection JSMethodCanBeStatic
9 | // noinspection JSUnusedGlobalSymbols
10 | createRequest(options: any, callback: (response: any) => void): ClientRequest {
11 | if (process.env["https_proxy"] !== undefined && options.protocol === "https:") {
12 | options.agent = new HttpsProxyAgent(process.env["https_proxy"])
13 | } else if (process.env["http_proxy"] !== undefined && options.protocol === "http:") {
14 | options.agent = new HttpProxyAgent(process.env["http_proxy"])
15 | }
16 | return (options.protocol === "http:" ? httpRequest : https.request)(options, callback)
17 | }
18 | }
19 |
20 | export const httpExecutor = new NodeHttpExecutor()
21 |
--------------------------------------------------------------------------------
/packages/builder-util/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "rootDir": "src"
6 | },
7 | "include": [
8 | "src/**/*.ts"
9 | ],
10 | "references": [
11 | {
12 | "path": "../builder-util-runtime"
13 | }
14 | ],
15 | "jsdoc": {
16 | "out": "../../scripts/jsdoc/out/util",
17 | "access": "public"
18 | }
19 | }
--------------------------------------------------------------------------------
/packages/builder-util/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/util.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/dmg-builder/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dmg-builder",
3 | "version": "26.0.16",
4 | "main": "out/dmgUtil.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/dmg-builder"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "out",
16 | "templates",
17 | "vendor"
18 | ],
19 | "dependencies": {
20 | "app-builder-lib": "workspace:*",
21 | "builder-util": "workspace:*",
22 | "builder-util-runtime": "workspace:*",
23 | "fs-extra": "^10.1.0",
24 | "iconv-lite": "^0.6.2",
25 | "js-yaml": "^4.1.0"
26 | },
27 | "optionalDependencies": {
28 | "dmg-license": "^1.0.11"
29 | },
30 | "devDependencies": {
31 | "@types/fs-extra": "9.0.13",
32 | "@types/js-yaml": "4.0.3",
33 | "temp-file": "3.4.0"
34 | },
35 | "typings": "./out/dmg.d.ts"
36 | }
37 |
--------------------------------------------------------------------------------
/packages/dmg-builder/readme.md:
--------------------------------------------------------------------------------
1 | # dmg-builder
2 |
3 | Utilities to build DMG. Used by [electron-builder](https://github.com/electron-userland/electron-builder).
--------------------------------------------------------------------------------
/packages/dmg-builder/templates/background.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/packages/dmg-builder/templates/background.tiff
--------------------------------------------------------------------------------
/packages/dmg-builder/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "rootDir": "src"
6 | },
7 | "jsdoc": {
8 | "out": "../../scripts/jsdoc/out/dmg-builder",
9 | "examples": "../../scripts/jsdoc/examples",
10 | "access": "public"
11 | },
12 | "references": [
13 | {
14 | "path": "../app-builder-lib"
15 | },
16 | {
17 | "path": "../builder-util"
18 | },
19 | {
20 | "path": "../builder-util-runtime"
21 | }
22 | ],
23 | "include": [
24 | "src/**/*.ts"
25 | ]
26 | }
--------------------------------------------------------------------------------
/packages/dmg-builder/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/dmgUtil.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/dmg-builder/vendor/ds_store/__init__.py:
--------------------------------------------------------------------------------
1 | from .store import DSStore, DSStoreEntry
2 |
3 | __all__ = ['DSStore', 'DSStoreEntry']
4 |
--------------------------------------------------------------------------------
/packages/dmg-builder/vendor/mac_alias/utils.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from __future__ import unicode_literals
3 |
4 | import datetime
5 |
6 | ZERO = datetime.timedelta(0)
7 | class UTC (datetime.tzinfo):
8 | def utcoffset(self, dt):
9 | return ZERO
10 | def dst(self, dt):
11 | return ZERO
12 | def tzname(self, dt):
13 | return 'UTC'
14 |
15 | utc = UTC()
16 | mac_epoch = datetime.datetime(1904,1,1,0,0,0,0,utc)
17 | unix_epoch = datetime.datetime(1970,1,1,0,0,0,0,utc)
18 | osx_epoch = datetime.datetime(2001,1,1,0,0,0,0,utc)
19 |
--------------------------------------------------------------------------------
/packages/electron-builder-squirrel-windows/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-builder-squirrel-windows",
3 | "version": "26.0.16",
4 | "main": "out/SquirrelWindowsTarget.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/electron-builder-squirrel-windows"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "out",
16 | "template.nuspectemplate"
17 | ],
18 | "dependencies": {
19 | "app-builder-lib": "workspace:*",
20 | "builder-util": "workspace:*",
21 | "electron-winstaller": "5.4.0"
22 | },
23 | "devDependencies": {
24 | "@types/archiver": "5.3.1",
25 | "@types/fs-extra": "9.0.13"
26 | },
27 | "types": "./out/SquirrelWindowsTarget.d.ts"
28 | }
29 |
--------------------------------------------------------------------------------
/packages/electron-builder-squirrel-windows/readme.md:
--------------------------------------------------------------------------------
1 | # electron-builder-squirrel-windows
2 |
3 | Plugin for [electron-builder](https://github.com/electron-userland/electron-builder) to build Squirrel.Windows installer.
--------------------------------------------------------------------------------
/packages/electron-builder-squirrel-windows/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "jsdoc": {
4 | "out": "../../scripts/jsdoc/out/builder-lib",
5 | "examples": "../../scripts/jsdoc/examples",
6 | "access": "public"
7 | },
8 | "compilerOptions": {
9 | "outDir": "out",
10 | "rootDir": "src"
11 | },
12 | "include": [
13 | "src/**/*.ts"
14 | ]
15 | }
--------------------------------------------------------------------------------
/packages/electron-builder-squirrel-windows/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/SquirrelWindowsTarget.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/electron-builder/cli.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | // https://github.com/pnpm/pnpm/issues/1801
4 | require("./out/cli/cli")
5 |
--------------------------------------------------------------------------------
/packages/electron-builder/install-app-deps.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | // https://github.com/pnpm/pnpm/issues/1801
4 | require("./out/cli/install-app-deps")
5 |
--------------------------------------------------------------------------------
/packages/electron-builder/src/cli/start.ts:
--------------------------------------------------------------------------------
1 | /** @internal */
2 | export function start() {
3 | require("electron-webpack/dev-runner")
4 | return Promise.resolve()
5 | }
6 |
--------------------------------------------------------------------------------
/packages/electron-builder/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "rootDir": "src"
6 | },
7 | "references": [
8 | {
9 | "path": "../builder-util"
10 | },
11 | {
12 | "path": "../builder-util-runtime"
13 | },
14 | {
15 | "path": "../app-builder-lib"
16 | },
17 | {
18 | "path": "../dmg-builder"
19 | }
20 | ],
21 | "jsdoc": {
22 | "out": "../../scripts/jsdoc/out/builder",
23 | "examples": "../../scripts/jsdoc/examples",
24 | "access": "public"
25 | },
26 | "include": [
27 | "src/**/*.ts",
28 | "../../typings/*.d.ts"
29 | ],
30 | "exclude": [
31 | ]
32 | }
--------------------------------------------------------------------------------
/packages/electron-builder/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/index.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/electron-forge-maker-appimage/main.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true,
5 | })
6 |
7 | const buildForge = require("app-builder-lib").buildForge
8 |
9 | exports.isSupportedOnCurrentPlatform = () => Promise.resolve(true)
10 |
11 | exports.default = function (options) {
12 | return buildForge(options, { linux: [`appimage:${options.targetArch}`] })
13 | }
14 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-appimage/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-forge-maker-appimage",
3 | "version": "26.0.16",
4 | "main": "main.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/electron-forge-maker-appimage"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "*.js"
16 | ],
17 | "dependencies": {
18 | "app-builder-lib": "workspace:*"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-appimage/readme.md:
--------------------------------------------------------------------------------
1 | # electron-installer-appimage
2 |
3 | [electron-builder](https://github.com/electron-userland/electron-builder) [appimage](http://appimage.org) target for electron-forge.
4 |
5 | Recommended to build electron-forge project using electron-builder directly.
6 | [Publishing](https://www.electron.build/publish),
7 | [Auto Update](https://electron.build/auto-update)
8 | and [Code Signing](https://electron.build/code-signing) supported only in this case
9 | (including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
--------------------------------------------------------------------------------
/packages/electron-forge-maker-appimage/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "allowJs": true
6 | },
7 | "include": [
8 | "main.js"
9 | ]
10 | }
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis-web/main.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true,
5 | })
6 |
7 | const buildForge = require("app-builder-lib").buildForge
8 |
9 | exports.isSupportedOnCurrentPlatform = () => Promise.resolve(true)
10 |
11 | exports.default = function (options) {
12 | return buildForge(options, { win: [`nsis-web:${options.targetArch}`] })
13 | }
14 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis-web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-forge-maker-nsis-web",
3 | "version": "26.0.16",
4 | "main": "main.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/electron-forge-maker-nsis-web"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "*.js"
16 | ],
17 | "dependencies": {
18 | "app-builder-lib": "workspace:*"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis-web/readme.md:
--------------------------------------------------------------------------------
1 | # electron-forge-maker-nsis-web
2 |
3 | [electron-builder](https://github.com/electron-userland/electron-builder) [nsis-web](https://electron.build/nsis) target for electron-forge.
4 |
5 | Recommended to build electron-forge project using electron-builder directly.
6 | [Publishing](https://www.electron.build/publish),
7 | [Auto Update](https://electron.build/auto-update)
8 | and [Code Signing](https://electron.build/code-signing) supported only in this case
9 | (including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis-web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "allowJs": true
6 | },
7 | "include": [
8 | "main.js"
9 | ]
10 | }
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis/main.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true,
5 | })
6 |
7 | const buildForge = require("app-builder-lib").buildForge
8 |
9 | exports.isSupportedOnCurrentPlatform = () => Promise.resolve(true)
10 |
11 | exports.default = function (options) {
12 | return buildForge(options, { win: [`nsis:${options.targetArch}`] })
13 | }
14 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-forge-maker-nsis",
3 | "version": "26.0.16",
4 | "main": "main.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/electron-forge-maker-nsis"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "*.js"
16 | ],
17 | "dependencies": {
18 | "app-builder-lib": "workspace:*"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis/readme.md:
--------------------------------------------------------------------------------
1 | # electron-forge-maker-nsis
2 |
3 | [electron-builder](https://github.com/electron-userland/electron-builder) [nsis](https://electron.build/nsis) target for electron-forge.
4 |
5 | Recommended to build electron-forge project using electron-builder directly.
6 | [Publishing](https://www.electron.build/publish),
7 | [Auto Update](https://electron.build/auto-update)
8 | and [Code Signing](https://electron.build/code-signing) supported only in this case
9 | (including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
--------------------------------------------------------------------------------
/packages/electron-forge-maker-nsis/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "allowJs": true
6 | },
7 | "include": [
8 | "main.js"
9 | ]
10 | }
--------------------------------------------------------------------------------
/packages/electron-forge-maker-snap/main.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true,
5 | })
6 |
7 | const buildForge = require("app-builder-lib").buildForge
8 |
9 | exports.isSupportedOnCurrentPlatform = () => Promise.resolve(true)
10 |
11 | exports.default = function (options) {
12 | return buildForge(options, { linux: [`snap:${options.targetArch}`] })
13 | }
14 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-snap/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-forge-maker-snap",
3 | "version": "26.0.16",
4 | "main": "main.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/electron-forge-maker-snap"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "*.js"
16 | ],
17 | "dependencies": {
18 | "app-builder-lib": "workspace:*"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/electron-forge-maker-snap/readme.md:
--------------------------------------------------------------------------------
1 | # electron-installer-snap
2 |
3 | [electron-builder](https://github.com/electron-userland/electron-builder) [snap](https://snapcraft.io) target for electron-forge.
4 |
5 | Recommended to build electron-forge project using electron-builder directly.
6 | [Publishing](https://www.electron.build/publish),
7 | [Auto Update](https://electron.build/auto-update)
8 | and [Code Signing](https://electron.build/code-signing) supported only in this case
9 | (including all other useful [packaging options](https://electron.build/configuration) like [files](https://electron.build./configuration.md#Config-files)).
--------------------------------------------------------------------------------
/packages/electron-forge-maker-snap/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "allowJs": true
6 | },
7 | "include": [
8 | "main.js"
9 | ]
10 | }
--------------------------------------------------------------------------------
/packages/electron-publish/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-publish",
3 | "version": "26.0.16",
4 | "main": "out/index.js",
5 | "author": "Vladimir Krivosheev",
6 | "license": "MIT",
7 | "repository": {
8 | "type": "git",
9 | "url": "git+https://github.com/electron-userland/electron-builder.git",
10 | "directory": "packages/electron-publish"
11 | },
12 | "bugs": "https://github.com/electron-userland/electron-builder/issues",
13 | "homepage": "https://github.com/electron-userland/electron-builder",
14 | "files": [
15 | "out"
16 | ],
17 | "dependencies": {
18 | "@types/fs-extra": "^9.0.11",
19 | "builder-util": "workspace:*",
20 | "builder-util-runtime": "workspace:*",
21 | "chalk": "^4.1.2",
22 | "form-data": "^4.0.0",
23 | "fs-extra": "^10.1.0",
24 | "lazy-val": "^1.0.5",
25 | "mime": "^2.5.2"
26 | },
27 | "typings": "./out/index.d.ts",
28 | "devDependencies": {
29 | "@types/mime": "2.0.3"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/packages/electron-publish/readme.md:
--------------------------------------------------------------------------------
1 | # electron-publish
2 |
3 | Part of [electron-builder](https://github.com/electron-userland/electron-builder).
4 |
5 | See the [Publishing Artifacts](https://www.electron.build/publish) for more information.
6 |
7 | Can be used standalone.
--------------------------------------------------------------------------------
/packages/electron-publish/src/index.ts:
--------------------------------------------------------------------------------
1 | import { Arch } from "builder-util"
2 | import { CancellationToken } from "builder-util-runtime"
3 | import { MultiProgress } from "./multiProgress"
4 |
5 | export { BitbucketPublisher } from "./bitbucketPublisher"
6 | export { GitHubPublisher } from "./gitHubPublisher"
7 | export { KeygenPublisher } from "./keygenPublisher"
8 | export { S3Publisher } from "./s3/s3Publisher"
9 | export { SpacesPublisher } from "./s3/spacesPublisher"
10 | export { SnapStorePublisher } from "./snapStorePublisher"
11 |
12 | export type PublishPolicy = "onTag" | "onTagOrDraft" | "always" | "never"
13 |
14 | export { ProgressCallback } from "./progress"
15 |
16 | export interface PublishOptions {
17 | publish?: PublishPolicy | null
18 | }
19 |
20 | export { HttpPublisher } from "./httpPublisher"
21 | export { getCiTag, Publisher } from "./publisher"
22 |
23 | export interface PublishContext {
24 | readonly cancellationToken: CancellationToken
25 | readonly progress: MultiProgress | null
26 | }
27 |
28 | export interface UploadTask {
29 | file: string
30 | fileContent?: Buffer | null
31 |
32 | arch: Arch | null
33 | safeArtifactName?: string | null
34 | timeout?: number | null
35 | }
36 |
--------------------------------------------------------------------------------
/packages/electron-publish/src/snapStorePublisher.ts:
--------------------------------------------------------------------------------
1 | import { executeAppBuilder } from "builder-util"
2 | import { SnapStoreOptions } from "builder-util-runtime/out/publishOptions"
3 | import * as path from "path"
4 | import { PublishContext, UploadTask } from "."
5 | import { Publisher } from "./publisher"
6 |
7 | export class SnapStorePublisher extends Publisher {
8 | readonly providerName = "snapStore"
9 |
10 | constructor(
11 | context: PublishContext,
12 | private options: SnapStoreOptions
13 | ) {
14 | super(context)
15 | }
16 |
17 | upload(task: UploadTask): Promise {
18 | this.createProgressBar(path.basename(task.file), -1)
19 |
20 | const args = ["publish-snap", "-f", task.file]
21 |
22 | let channels = this.options.channels
23 | if (channels == null) {
24 | channels = ["edge"]
25 | } else {
26 | if (typeof channels === "string") {
27 | channels = channels.split(",")
28 | }
29 | }
30 |
31 | for (const channel of channels) {
32 | args.push("-c", channel)
33 | }
34 |
35 | return executeAppBuilder(args)
36 | }
37 |
38 | toString(): string {
39 | return "Snap Store"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/packages/electron-publish/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "rootDir": "src"
6 | },
7 | "references": [
8 | {
9 | "path": "../builder-util"
10 | },
11 | {
12 | "path": "../builder-util-runtime"
13 | }
14 | ],
15 | "jsdoc": {
16 | "out": "../../scripts/jsdoc/out/index",
17 | "access": "public"
18 | },
19 | "include": [
20 | "src/**/*.ts",
21 | "../../typings/mime.d.ts"
22 | ]
23 | }
--------------------------------------------------------------------------------
/packages/electron-publish/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/index.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/electron-updater/README.md:
--------------------------------------------------------------------------------
1 | # electron-updater
2 |
3 | This module allows you to automatically update your application. You only need to install this module and write two lines of code!
4 | To publish your updates you just need simple file hosting, it does not require a dedicated server.
5 |
6 | See [Auto Update](https://electron.build/auto-update) for more information.
7 |
8 | Supported OS:
9 | - macOS ([Squirrel.Mac](https://github.com/Squirrel/Squirrel.Mac)).
10 | - Windows (NSIS).
11 | - Linux (AppImage, rpm, deb).
12 |
13 | ## Credits
14 |
15 | Thanks to [Evolve Labs](https://www.evolvehq.com) for donating the npm package name.
16 |
--------------------------------------------------------------------------------
/packages/electron-updater/src/differentialDownloader/GenericDifferentialDownloader.ts:
--------------------------------------------------------------------------------
1 | import { BlockMap } from "builder-util-runtime/out/blockMapApi"
2 | import { DifferentialDownloader } from "./DifferentialDownloader"
3 |
4 | export class GenericDifferentialDownloader extends DifferentialDownloader {
5 | download(oldBlockMap: BlockMap, newBlockMap: BlockMap): Promise {
6 | return this.doDownload(oldBlockMap, newBlockMap)
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/electron-updater/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "rootDir": "src"
6 | },
7 | "jsdoc": {
8 | "out": "../../scripts/jsdoc/out/updater",
9 | "examples": "../../scripts/jsdoc/examples",
10 | "access": "public"
11 | },
12 | "files": [
13 | ],
14 | "include": [
15 | "src/**/*.ts"
16 | ]
17 | }
--------------------------------------------------------------------------------
/packages/electron-updater/typedoc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://typedoc.org/schema.json",
3 | "includeVersion": true,
4 | "entryPoints": ["src/main.ts"]
5 | }
--------------------------------------------------------------------------------
/packages/tsconfig-base.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "composite": true,
5 | "baseUrl": ".",
6 | "declaration": true,
7 | "stripInternal": true,
8 | "skipLibCheck": true
9 | }
10 | }
--------------------------------------------------------------------------------
/pages/_redirects:
--------------------------------------------------------------------------------
1 | /publishing-artifacts /configuration/publish
2 | /configuration/linux-other /configuration/linux
3 | /configuration/deb /configuration/linux
4 | /docker /multi-platform-build
5 | /configuration/target /cli
--------------------------------------------------------------------------------
/pages/appimage.md:
--------------------------------------------------------------------------------
1 | The top-level [appImage](configuration.md#appImage) key contains set of options instructing electron-builder on how it should build [AppImage](https://appimage.org/).
2 |
3 | !!! info "Desktop Integration"
4 | Since electron-builder 21 desktop integration is not a part of produced AppImage file. [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher) is the recommended way to integrate AppImages.
5 |
6 | ## Configuration
7 |
8 | {!./app-builder-lib.Interface.AppImageOptions.md!}
9 |
--------------------------------------------------------------------------------
/pages/contents.md:
--------------------------------------------------------------------------------
1 | ## File Contents
2 |
3 | {!./app-builder-lib.Interface.FilesBuildOptions.md!}
4 |
5 | ## FileSet Configuration
6 |
7 | {!./app-builder-lib.Interface.FileSet.md!}
--------------------------------------------------------------------------------
/pages/dmg.md:
--------------------------------------------------------------------------------
1 | The top-level [dmg](configuration.md#dmg) key contains set of options instructing electron-builder on how it should build [DMG](https://en.wikipedia.org/wiki/Apple_Disk_Image).
2 |
3 | ## DMG License
4 |
5 | To add license to DMG, create file `license_LANG_CODE.txt` in the build resources. Multiple license files in different languages are supported — use lang postfix (e.g. `_de`, `_ru`)). For example, create files `license_de.txt` and `license_en.txt` in the build resources.
6 | If OS language is german, `license_de.txt` will be displayed. See map of [language code to name](https://github.com/meikidd/iso-639-1/blob/master/src/data.js).
7 |
8 | You can also change the default button labels of the DMG by passing a json file named `licenseButtons_LANG_CODE.json`. The german file would be named: `licenseButtons_de.json`.
9 | The contain file should have the following format:
10 | ```json
11 | {
12 | "lang": "English",
13 | "agree": "Agree",
14 | "disagree": "Disagree",
15 | "print": "Print",
16 | "save": "Save",
17 | "description": "Here is my own description"
18 | }
19 | ```
20 |
21 | ## Configuration
22 |
23 | {!./app-builder-lib.Interface.DmgOptions.md!}
--------------------------------------------------------------------------------
/pages/donate.md:
--------------------------------------------------------------------------------
1 | We do this open source work in our free time. If you'd like us to invest more time on it, please donate. Donation can be used to increase some issue priority.
2 |
3 | Donate with [Donorbox](https://donorbox.org/electron-builder), [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W6V79R2RGCCHL) or [Bitcoin](#bitcoin).
4 |
5 | ## Donorbox
6 |
7 |
8 |
9 | ## Bitcoin
10 |
11 | Bitcoin payment is anonymous — you can send comment to develar@gmail.com.
12 |
13 |
14 |
15 | 1BRTzBynSWhPNbdWfw6FH5LYreaFcrXooP
--------------------------------------------------------------------------------
/pages/extra.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | // loadNavPane()
4 |
5 | function loadNavPane() {
6 | const isMobile = window.matchMedia("only screen and (max-width: 760px)").matches
7 | if (isMobile) {
8 | return
9 | }
10 |
11 | let nav = document.getElementsByClassName("md-nav")
12 | for (let i = 0; i < nav.length; i++) {
13 | const item = nav.item(i)
14 | if (typeof item.style === "undefined") {
15 | continue;
16 | }
17 |
18 | if (item.getAttribute("data-md-level") && item.getAttribute("data-md-component")) {
19 | item.style.display = 'block'
20 | item.style.overflow = 'visible'
21 | }
22 | }
23 |
24 | nav = document.getElementsByClassName("md-nav__toggle")
25 | for (let i = 0; i < nav.length; i++) {
26 | nav.item(i).checked = true;
27 | }
28 | }
--------------------------------------------------------------------------------
/pages/find-build-agent:
--------------------------------------------------------------------------------
1 | {
2 | "endpoint": "https://45.63.115.123"
3 | }
--------------------------------------------------------------------------------
/pages/hooks.md:
--------------------------------------------------------------------------------
1 | ## Hooks
2 |
3 | !!! note "Node.js 8"
4 | All examples assumed that you use latest Node.js 8.11.x or higher.
5 |
6 | {!./app-builder-lib.Interface.Hooks.md!}
7 |
--------------------------------------------------------------------------------
/pages/linux.md:
--------------------------------------------------------------------------------
1 | The top-level [linux](configuration.md#linux) key contains set of options instructing electron-builder on how it should build Linux targets. These options applicable for any Linux target.
2 |
3 | ## Base Linux Configuration
4 |
5 | {!./app-builder-lib.Interface.LinuxConfiguration.md!}
6 |
7 | ## Debian Package Options
8 |
9 | The top-level [deb](configuration.md#deb) key contains set of options instructing electron-builder on how it should build Debian package.
10 |
11 | {!./app-builder-lib.Interface.DebOptions.md!}
12 |
13 | All [LinuxTargetSpecificOptions](linux.md#linuxtargetspecificoptions-apk-freebsd-pacman-p5p-and-rpm-options) can be also specified in the `deb` to customize Debian package.
14 |
15 | ## `LinuxTargetSpecificOptions` APK, FreeBSD, Pacman, P5P and RPM Options
16 |
17 | The top-level `apk`, `freebsd`, `pacman`, `p5p` and `rpm` keys contains set of options instructing electron-builder on how it should build corresponding Linux target.
18 |
19 | {!./app-builder-lib.Interface.LinuxTargetSpecificOptions.md!}
20 |
21 |
--------------------------------------------------------------------------------
/pages/mac.md:
--------------------------------------------------------------------------------
1 | The top-level [mac](configuration.md#mac) key contains set of options instructing electron-builder on how it should build macOS targets. These options applicable for any macOS target.
2 |
3 | ## Configuration
4 |
5 | {!./app-builder-lib.Interface.MacConfiguration.md!}
6 |
--------------------------------------------------------------------------------
/pages/mas.md:
--------------------------------------------------------------------------------
1 | The top-level [mas](configuration.md#mas) key contains set of options instructing electron-builder on how it should build MAS (Mac Application Store) target.
2 | Inherits [macOS options](mac.md).
3 |
4 | ## Configuration
5 |
6 | {!./app-builder-lib.Interface.MasConfiguration.md!}
7 |
8 |
--------------------------------------------------------------------------------
/pages/msi-wrapped.md:
--------------------------------------------------------------------------------
1 | ## Configuration
2 |
3 | {!./app-builder-lib.Interface.MsiWrappedOptions.md!}
--------------------------------------------------------------------------------
/pages/msi.md:
--------------------------------------------------------------------------------
1 | ## Configuration
2 |
3 | {!./app-builder-lib.Interface.MsiOptions.md!}
--------------------------------------------------------------------------------
/pages/pkg.md:
--------------------------------------------------------------------------------
1 | The top-level [pkg](configuration.md#pkg) key contains set of options instructing electron-builder on how it should build [PKG](https://goo.gl/yVvgF6) (macOS installer component package).
2 |
3 | ## Configuration
4 |
5 | {!./app-builder-lib.Interface.PkgOptions.md!}
--------------------------------------------------------------------------------
/pages/snap.md:
--------------------------------------------------------------------------------
1 | The top-level [snap](configuration.md#snap) key contains set of options instructing electron-builder on how it should build [Snap](http://snapcraft.io).
2 |
3 | ## Configuration
4 |
5 | {!./app-builder-lib.Interface.SnapOptions.md!}
--------------------------------------------------------------------------------
/pages/squirrel-windows.md:
--------------------------------------------------------------------------------
1 | The top-level [squirrelWindows](configuration.md#squirrelWindows) key contains set of options instructing electron-builder on how it should build Squirrel.Windows.
2 |
3 | Squirrel.Windows target is maintained, but deprecated. Please use [nsis](nsis.md) instead.
4 |
5 | To use Squirrel.Windows please install `electron-builder-squirrel-windows` dependency.
6 | To build for Squirrel.Windows on macOS, please install `mono` (`brew install mono`).
7 |
8 | Your app must be able to handle Squirrel.Windows startup events that occur during install and uninstall. See [electron-squirrel-startup](https://github.com/mongodb-js/electron-squirrel-startup).
9 |
10 | ## Configuration
11 |
12 | {!./app-builder-lib.Interface.SquirrelWindowsOptions.md!}
--------------------------------------------------------------------------------
/pages/stylesheets/autowidth.css:
--------------------------------------------------------------------------------
1 | /* Allow content to fill full width of browser window */
2 | .md-main__inner.md-grid {
3 | max-width: initial;
4 | }
5 | .md-grid {
6 | max-width: initial;
7 | }
8 |
9 | /* Hide TOC elements less than h3 */
10 | /* .md-nav--secondary .md-nav__list .md-nav__list .md-nav__list { display: none } */
--------------------------------------------------------------------------------
/pages/tutorials/macos-kernel-extensions.md:
--------------------------------------------------------------------------------
1 | Installing macOS kernel extensions with `electron-builder` can be done using scripts.
2 |
3 | First, in `package.json`, make sure you're building a package (`.pkg`) and not the default `.dmg`:
4 |
5 | ```json
6 | "mac": {
7 | "target": "pkg"
8 | }
9 | ```
10 |
11 | Place your script and the kernel extensions in `build/pkg-scripts`, or [define a custom directory](../pkg.md#PkgOptions-scripts). Note that the script **must** be called either `preinstall` or `postinstall`. Remember to use ` #!/bin/sh` as the first line in your script. Also, your script must be executable (`chmod +x `).
12 |
13 | An example script:
14 | ```sh
15 | #!/bin/sh
16 |
17 | echo "Unloading and uninstalling old extensions..."
18 | # unload old extensions
19 | sudo kextunload /Library/Extensions/myExt.kext
20 |
21 | # delete old extensions
22 | sudo rm -rf /Library/Extensions/myExtension.kext
23 |
24 | # install new extensions
25 | echo "Installing and loading new extensions..."
26 | sudo cp -R myExt.kext /Library/Extensions/myExt.kext
27 | sudo kextload /Library/Extensions/myExt.kext/
28 | ```
29 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - "packages/**"
3 | - "test"
--------------------------------------------------------------------------------
/run-tests-in-docker-custom-app-builder.sh:
--------------------------------------------------------------------------------
1 | docker run --rm -it \
2 | --env ELECTRON_CACHE="/root/.cache/electron" \
3 | --env ELECTRON_BUILDER_CACHE="/root/.cache/electron-builder" \
4 | --env USE_SYSTEM_APP_BUILDER="true" \
5 | --env CUSTOM_APP_BUILDER_PATH="/usr/bin/app-builder" \
6 | --env WINEDEBUG=+all \
7 | --env TEST_FILES="$TEST_FILES" \
8 | -v "$PWD/../app-builder/linux/x64/app-builder:/usr/bin/app-builder" \
9 | -v "$PWD/electron-cache":/root/.cache/electron \
10 | -v "$PWD/electron-builder-cache":/root/.cache/electron-builder \
11 | -v "$PWD/dist":/project/dist \
12 | -v "$PWD":/project \
13 | -v $(pwd)/docker-node-modules:/project/node_modules \
14 | electronuserland/builder:20-wine-mono /bin/bash -c "pnpm install && node ./test/out/helpers/runTests.js"
--------------------------------------------------------------------------------
/scripts/fix-schema.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs")
2 | const path = require("path")
3 |
4 | const schemaFile = path.join(__dirname, "../packages/app-builder-lib/scheme.json")
5 | const schema = JSON.parse(fs.readFileSync(schemaFile, "utf-8"))
6 |
7 | let o = schema.definitions.PlugDescriptor.additionalProperties.anyOf[0]
8 | delete o.typeof
9 | o.type = "object"
10 |
11 | schema.definitions.OutgoingHttpHeaders.additionalProperties = {
12 | "anyOf": [
13 | {
14 | "items": {
15 | "type": "string"
16 | },
17 | "type": "array"
18 | },
19 | {
20 | "type": [
21 | "string",
22 | "number"
23 | ]
24 | }
25 | ]
26 | }
27 |
28 | o = schema.definitions.SnapOptions.properties.environment.anyOf[0] = {
29 | additionalProperties: { type: "string" },
30 | type: "object",
31 | }
32 |
33 | o = schema.properties["$schema"] = {
34 | "description": "JSON Schema for this document.",
35 | "type": ["null", "string"],
36 | }
37 |
38 | fs.writeFileSync(schemaFile, JSON.stringify(schema, null, 2))
39 |
--------------------------------------------------------------------------------
/scripts/renderer/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig-base.json",
3 | "compilerOptions": {
4 | "outDir": "out",
5 | "noUnusedLocals": false,
6 | "skipLibCheck": false
7 | },
8 | "declaration": false,
9 | "include": [
10 | "src/**/*.ts"
11 | ],
12 | }
13 |
--------------------------------------------------------------------------------
/scripts/snap-exclude-list.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs")
2 |
3 | const homedir = require("os").homedir()
4 |
5 | const separator = "- "
6 | const data = fs.readFileSync(`${homedir}/f.txt`, "utf-8")
7 | .trim()
8 | .split("\n")
9 | .map(it => '"-usr/lib/*/' + it.replace(/[-.].*$/, "*") + '"')
10 |
11 | fs.writeFileSync(`${homedir}/f.yaml`, separator + Array.from(new Set(data)).join("\n" + separator))
--------------------------------------------------------------------------------
/scripts/snap-template.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | cd ~ || exit
4 | rm -rf ~/squashfs-root
5 | unsquashfs /media/psf/ramdisk/electron-builder-test/dist/__snap-x64/se-wo-template_1.1.0_amd64.snap
6 | rm -rf ~/squashfs-root/app ~/squashfs-root/snap ~/squashfs-root/meta ~/squashfs-root/command.sh
7 | # cannot be removed as part of snapcraft yaml because not clear, maybe these dirs requried for custom stage packages
8 | rm -rf ~/squashfs-root/etc ~/squashfs-root/var
9 |
10 | #rm -f /home/develar/snap-template-electron-4.0.tar.7z && cd ~/squashfs-root && tar cf - . | zstd -22 --ultra --long -o ~/snap-template-electron-4.0.tar.zstd
11 | rm -f /home/develar/snap-template-electron-4.0.tar.7z && cd ~/squashfs-root && tar cf - . | 7za a -mx=9 -mfb=64 -si ~/snap-template-electron-4.0-2.tar.7z
12 |
13 | zip -yX9 -r ~/snap-template-electron-4.0-2.zip .
14 |
15 | #rm -f /home/develar/snap-template-electron-4.0.tar.7z && cd ~/squashfs-root && tar cf - . | 7za a -mx=9 -mfb=64 -si ~/snap-template-electron-4.0-1-arm.tar.7z
16 |
17 | mv ~/snap-template-electron-4.0.tar.7z /media/psf/ramdisk/snap-template-electron-4.0.tar.7z
18 | shasum -a 512 /Volumes/ramdisk/snap-template-electron-4.0-2.tar.7z | xxd -r -p | base64
--------------------------------------------------------------------------------
/scripts/update-package-version-export.js:
--------------------------------------------------------------------------------
1 | const path = require("path")
2 | const version = require(path.join(__dirname, "../packages/app-builder-lib/package.json")).version
3 |
4 | const destFile = path.join(__dirname, '../packages/app-builder-lib/src/version.ts')
5 |
6 | const { writeFileSync } = require("fs")
7 | writeFileSync(destFile, `export const PACKAGE_VERSION = "${version}"
8 | `)
--------------------------------------------------------------------------------
/test/README.md:
--------------------------------------------------------------------------------
1 | # Inspect output if test uses temporary directory
2 | Set environment variable `TEST_APP_TMP_DIR` (e.g. `/tmp/electron-builder-test`).
3 | Specified directory will be used instead of random temporary directory and *cleared* on each run.
4 |
5 | ## Test Code Signing Ceritificates
6 | If test installer certificate is expired: http://security.stackexchange.com/questions/17909/how-to-create-an-apple-installer-package-signing-certificate
--------------------------------------------------------------------------------
/test/fixtures/.gitignore:
--------------------------------------------------------------------------------
1 | !node_modules/
--------------------------------------------------------------------------------
/test/fixtures/appx-assets/BadgeLogo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/appx-assets/BadgeLogo.scale-100.png
--------------------------------------------------------------------------------
/test/fixtures/appx-assets/BadgeLogo.scale-140.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/appx-assets/BadgeLogo.scale-140.png
--------------------------------------------------------------------------------
/test/fixtures/appx-assets/BadgeLogo.scale-180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/appx-assets/BadgeLogo.scale-180.png
--------------------------------------------------------------------------------
/test/fixtures/build-hook.cjs:
--------------------------------------------------------------------------------
1 | module.exports = (event) => {
2 | return Promise.resolve('foobar');
3 | }
--------------------------------------------------------------------------------
/test/fixtures/build-hook.mjs:
--------------------------------------------------------------------------------
1 | const func = (event) => {
2 | return
3 | }
4 |
5 | export const artifactBuildStarted = func
6 | export const artifactBuildCompleted = func
7 | export const beforePack = func
8 | export const afterExtract = func
9 | export const afterPack = func
--------------------------------------------------------------------------------
/test/fixtures/headerIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/headerIcon.ico
--------------------------------------------------------------------------------
/test/fixtures/install-spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/install-spinner.gif
--------------------------------------------------------------------------------
/test/fixtures/installer.nsh:
--------------------------------------------------------------------------------
1 | !macro customHeader
2 | !system "echo '' > ${BUILD_RESOURCES_DIR}/customHeader"
3 | !macroend
4 |
5 | !macro customInit
6 | !system "echo '' > ${BUILD_RESOURCES_DIR}/customInit"
7 | !macroend
8 |
9 | !macro customInstall
10 | !system "echo '' > ${BUILD_RESOURCES_DIR}/customInstall"
11 | !macroend
--------------------------------------------------------------------------------
/test/fixtures/installer.nsi:
--------------------------------------------------------------------------------
1 | !system "echo '' > ${BUILD_RESOURCES_DIR}/customInstallerScript"
2 |
3 | Section
4 | SectionEnd
--------------------------------------------------------------------------------
/test/fixtures/installerHeader.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/installerHeader.bmp
--------------------------------------------------------------------------------
/test/fixtures/license.txt:
--------------------------------------------------------------------------------
1 | Hi!
--------------------------------------------------------------------------------
/test/fixtures/licensebuttons_en.yml:
--------------------------------------------------------------------------------
1 | lang: en-US
2 | languageName: English
3 | agree: Agree
4 | disagree: Disagree
5 | print: Print
6 | save: Save
7 | description: Here is my own description
--------------------------------------------------------------------------------
/test/fixtures/licensebuttons_fr.json:
--------------------------------------------------------------------------------
1 | {
2 | "lang": "fr-FR",
3 | "languageName": "Français",
4 | "agree": "J'accepte",
5 | "disagree": "Je refuse",
6 | "print": "Imprimer",
7 | "save": "Sauvegarder",
8 | "description": "Voici ma propre description (éàè)"
9 | }
--------------------------------------------------------------------------------
/test/fixtures/licensebuttons_ja.json:
--------------------------------------------------------------------------------
1 | {
2 | "lang": "ja-JP",
3 | "languageName": "日本語",
4 | "agree": "同意する",
5 | "disagree": "同意しない",
6 | "print": "印刷する",
7 | "save": "セーブ",
8 | "description": "ここに私の説明があります"
9 | }
--------------------------------------------------------------------------------
/test/fixtures/licensebuttons_ko.json:
--------------------------------------------------------------------------------
1 | {
2 | "lang": "ko-KR",
3 | "languageName": "한국어",
4 | "agree": "한국어",
5 | "disagree": "동의하지 않는다",
6 | "print": "인쇄",
7 | "save": "구하다",
8 | "description": "여기에 내 설명이있다."
9 | }
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/HoistedNodeModuleTest/isInstallDepsBefore=true pnpm node-linker=hoisted.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "TestApp",
3 | "version": "1.1.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "TestApp",
9 | "version": "1.1.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "dayjs": "1.11.13"
13 | }
14 | },
15 | "node_modules/dayjs": {
16 | "version": "1.11.13",
17 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
18 | "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
19 | "license": "MIT"
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/HoistedNodeModuleTest/isInstallDepsBefore=true pnpm public-hoist-pattern=.txt:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | dayjs:
12 | specifier: 1.11.13
13 | version: 1.11.13
14 |
15 | packages:
16 |
17 | dayjs@1.11.13:
18 | resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
19 |
20 | snapshots:
21 |
22 | dayjs@1.11.13: {}
23 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/HoistedNodeModuleTest/isInstallDepsBefore=true pnpm shamefully-hoist=true.txt:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | dayjs:
12 | specifier: 1.11.13
13 | version: 1.11.13
14 |
15 | packages:
16 |
17 | dayjs@1.11.13:
18 | resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
19 |
20 | snapshots:
21 |
22 | dayjs@1.11.13: {}
23 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/HoistedNodeModuleTest/isInstallDepsBefore=true yarn electron-clear-data.txt:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | debug@3.1.0:
6 | version "3.1.0"
7 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
8 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
9 | dependencies:
10 | ms "2.0.0"
11 |
12 | electron-clear-data@^1.0.5:
13 | version "1.0.5"
14 | resolved "https://registry.yarnpkg.com/electron-clear-data/-/electron-clear-data-1.0.5.tgz#bc636f6850f57b1e8ed3fe2e57ca877e30d31bc9"
15 | integrity sha512-vynYILZ2F+S5qnc81bnTOfh8uCVlxP6j42T7h/ELaDL+vxmlT1QNgte8KNuXb+s9ed+Qx4IIRbMRUcbAJa/8rA==
16 |
17 | ms@2.0.0:
18 | version "2.0.0"
19 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
20 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
21 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/HoistedNodeModuleTest/isInstallDepsBefore=true yarn some module add by manual instead of install.txt:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | debug@3.1.0:
6 | version "3.1.0"
7 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
8 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
9 | dependencies:
10 | ms "2.0.0"
11 |
12 | ms@2.0.0:
13 | version "2.0.0"
14 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
15 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
16 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/HoistedNodeModuleTest/isInstallDepsBefore=true yarn workspace for scope name.txt:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | electron-log@2.2.9:
6 | version "2.2.9"
7 | resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf"
8 |
9 | is-number@^6.0.0:
10 | version "6.0.0"
11 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-6.0.0.tgz#e6d15ad31fc262887cccf217ae5f9316f81b1995"
12 | integrity sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==
13 |
14 | is-odd@3.0.1:
15 | version "3.0.1"
16 | resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-3.0.1.tgz#65101baf3727d728b66fa62f50cda7f2d3989601"
17 | integrity sha512-CQpnWPrDwmP1+SMHXZhtLtJv90yiyVfluGsX5iNCVkrhQtU3TQHsUWPG9wkdk9Lgd5yNpAg9jQEo90CBaXgWMA==
18 | dependencies:
19 | is-number "^6.0.0"
20 |
21 | ms@2.0.0:
22 | version "2.0.0"
23 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
24 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/HoistedNodeModuleTest/yarn workspace for scope name.txt:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | electron-log@2.2.9:
6 | version "2.2.9"
7 | resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf"
8 |
9 | is-number@^6.0.0:
10 | version "6.0.0"
11 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-6.0.0.tgz#e6d15ad31fc262887cccf217ae5f9316f81b1995"
12 | integrity sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==
13 |
14 | is-odd@^3.0.1:
15 | version "3.0.1"
16 | resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-3.0.1.tgz#65101baf3727d728b66fa62f50cda7f2d3989601"
17 | integrity sha512-CQpnWPrDwmP1+SMHXZhtLtJv90yiyVfluGsX5iNCVkrhQtU3TQHsUWPG9wkdk9Lgd5yNpAg9jQEo90CBaXgWMA==
18 | dependencies:
19 | is-number "^6.0.0"
20 |
21 | ms@2.0.0:
22 | version "2.0.0"
23 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
24 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/globTest/isInstallDepsBefore=true asarUnpack node_modules.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "TestApp",
3 | "version": "1.1.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "TestApp",
9 | "version": "1.1.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "ci-info": "2.0.0"
13 | }
14 | },
15 | "node_modules/ci-info": {
16 | "version": "2.0.0",
17 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
18 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
19 | "license": "MIT"
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/test/fixtures/lockfiles/ignoreTest/ignore node_modules dev dep.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "TestApp",
3 | "version": "1.1.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "TestApp",
9 | "version": "1.1.0",
10 | "license": "MIT",
11 | "devDependencies": {
12 | "semver": "6.3.1"
13 | }
14 | },
15 | "node_modules/semver": {
16 | "version": "6.3.1",
17 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
18 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
19 | "dev": true,
20 | "license": "ISC",
21 | "bin": {
22 | "semver": "bin/semver.js"
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/test/fixtures/pkg-scripts/postinstall:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | echo $PACKAGE_PATH > /tmp/postinstall.txt
--------------------------------------------------------------------------------
/test/fixtures/pkg-scripts/preinstall:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | echo $PACKAGE_PATH > /tmp/preinstall.txt
--------------------------------------------------------------------------------
/test/fixtures/proton/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | yarn.lock
--------------------------------------------------------------------------------
/test/fixtures/proton/index.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 |
3 | import { render, Window, App, Button } from 'proton-native';
4 |
5 | class Example extends Component {
6 | render() {
7 | return (
8 |
9 |
10 |
13 |
14 |
15 | );
16 | }
17 | }
18 |
19 | render();
--------------------------------------------------------------------------------
/test/fixtures/proton/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "notepad",
3 | "version": "1.0.0",
4 | "description": "a notepad app built using proton-native",
5 | "main": "index.js",
6 | "dependencies": {
7 | "proton-native": "~1.1.10"
8 | },
9 | "scripts": {
10 | "start": "node_modules/.bin/babel-node index.js"
11 | },
12 | "author": "",
13 | "license": "ISC"
14 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-build-sub/build/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
7 |
8 | Hello World!
9 | We are using node ,
10 | Chrome ,
11 | and Electron .
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-build-sub/build/app/main.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | const electron = require('electron')
4 | const app = electron.app
5 | const BrowserWindow = electron.BrowserWindow
6 |
7 | let mainWindow
8 |
9 | function createWindow () {
10 | mainWindow = new BrowserWindow({width: 800, height: 600})
11 | mainWindow.loadURL('file://' + __dirname + '/index.html')
12 |
13 | mainWindow.webContents.openDevTools()
14 |
15 | mainWindow.on('closed', function() {
16 | mainWindow = null
17 | });
18 | }
19 |
20 | app.on('ready', createWindow)
21 |
22 | app.on('window-all-closed', function () {
23 | if (process.platform !== 'darwin') {
24 | app.quit()
25 | }
26 | })
27 |
28 | app.on('activate', function () {
29 | if (mainWindow === null) {
30 | createWindow()
31 | }
32 | })
--------------------------------------------------------------------------------
/test/fixtures/test-app-build-sub/electron-builder.yml:
--------------------------------------------------------------------------------
1 | electronVersion: 23.3.10
2 | appId: org.electron-builder.testApp
3 | compression: store
4 | npmRebuild: false
5 | mac:
6 | category: your.app.category.type
7 | directories:
8 | output: build/dist
9 | files:
10 | - build/app/**/*.js
11 | - build/app/**/*.html
12 | asar: false
13 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-build-sub/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0.0",
3 | "main": "./build/app/main.js",
4 | "author": "true",
5 | "name": "Foo"
6 | }
7 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-hoisted/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
7 |
8 | Hello World!
9 | We are using node ,
10 | Chrome ,
11 | and Electron .
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-hoisted/index.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | const electron = require('electron')
4 | const app = electron.app
5 | const BrowserWindow = electron.BrowserWindow
6 |
7 | let mainWindow
8 |
9 | function createWindow () {
10 | mainWindow = new BrowserWindow({width: 800, height: 600})
11 | mainWindow.loadURL('file://' + __dirname + '/index.html')
12 |
13 | mainWindow.webContents.openDevTools()
14 |
15 | mainWindow.on('closed', function() {
16 | mainWindow = null
17 | });
18 | }
19 |
20 | app.on('ready', createWindow)
21 |
22 | app.on('window-all-closed', function () {
23 | if (process.platform !== 'darwin') {
24 | app.quit()
25 | }
26 | })
27 |
28 | app.on('activate', function () {
29 | if (mainWindow === null) {
30 | createWindow()
31 | }
32 | })
--------------------------------------------------------------------------------
/test/fixtures/test-app-hoisted/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "TestApp",
4 | "productName": "Test App ßW",
5 | "version": "1.1.0",
6 | "homepage": "http://foo.example.com",
7 | "description": "Test Application (test quite \" #378)",
8 | "author": "Foo Bar ",
9 | "license": "MIT",
10 | "main": "index.js",
11 | "build": {
12 | "electronVersion": "23.3.10",
13 | "appId": "org.electron-builder.testApp",
14 | "compression": "store",
15 | "npmRebuild": false,
16 | "mac": {
17 | "category": "your.app.category.type"
18 | },
19 | "linux": {
20 | "category": "Development"
21 | },
22 | "deb": {
23 | "packageCategory": "devel"
24 | },
25 | "squirrelWindows": {
26 | "iconUrl": "https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico"
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/app/package.json/readme.md:
--------------------------------------------------------------------------------
1 | Ignore `package.json` directory.
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/app/readme.md:
--------------------------------------------------------------------------------
1 | Test that we don't take in account just directory `app` without `package.json`
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/entitlements.mac.inherit.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.inherit
6 |
7 |
8 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/entitlements.mac.login.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.inherit
6 |
7 |
8 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/entitlements.mac.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | com.apple.security.cs.allow-jit
7 |
8 | com.apple.security.cs.allow-unsigned-executable-memory
9 |
10 |
11 | com.apple.security.cs.disable-library-validation
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/extraAsar.asar:
--------------------------------------------------------------------------------
1 | {"files":{"tmpfile.txt":{"size":0,"offset":"0","integrity":{"algorithm":"SHA256","hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","blockSize":4194304,"blocks":["e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"]}}}}
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icon.icns
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icon.ico
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icons/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icons/128x128.png
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icons/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icons/16x16.png
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icons/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icons/256x256.png
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icons/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icons/32x32.png
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icons/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icons/48x48.png
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icons/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icons/512x512.png
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/icons/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/icons/64x64.png
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/build/incorrect.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-one/build/incorrect.ico
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
12 |
13 |
14 | Hello World!
15 | We are using node ,
16 | Chrome ,
17 | and Electron .
18 |
19 | Args: .
20 |
21 | Env: .
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-one/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "TestApp",
4 | "productName": "Test App ßW",
5 | "version": "1.1.0",
6 | "homepage": "http://foo.example.com",
7 | "description": "Test Application (test quite \" #378)",
8 | "author": "Foo Bar ",
9 | "license": "MIT",
10 | "build": {
11 | "electronVersion": "23.3.10",
12 | "appId": "org.electron-builder.testApp",
13 | "compression": "store",
14 | "npmRebuild": false,
15 | "mac": {
16 | "category": "your.app.category.type"
17 | },
18 | "linux": {
19 | "category": "Development"
20 | },
21 | "deb": {
22 | "packageCategory": "devel"
23 | },
24 | "squirrelWindows": {
25 | "iconUrl": "https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico"
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Hello:
--------------------------------------------------------------------------------
1 | Versions/Current/Hello
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Info.plist:
--------------------------------------------------------------------------------
1 | Versions/Current/Info.plist
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Modules:
--------------------------------------------------------------------------------
1 | Versions/Current/Modules
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Headers/HelloFramework.h:
--------------------------------------------------------------------------------
1 | #import
2 | void hello(void);
3 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Hello:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Hello
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | Hello
9 | CFBundleIdentifier
10 | com.example.Hello
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | Hello
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | NSHumanReadableCopyright
22 | Copyright © 2024 Hello Company. All rights reserved.
23 |
24 |
25 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftdoc
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/arm64.private.swiftinterface:
--------------------------------------------------------------------------------
1 | // swift-interface-format-version: 1.0
2 | // swift-compiler-version: Apple Swift version 6.0.2 effective-5.10 (swiftlang-6.0.2.1.2 clang-1600.0.26.4)
3 | // swift-module-flags: -target arm64-apple-macosx10.9.0 -enable-objc-interop -enable-library-evolution -module-name Hello
4 | import Swift
5 | import _Concurrency
6 | import _StringProcessing
7 | import _SwiftConcurrencyShims
8 | public class Greeter {
9 | public init()
10 | public func hello()
11 | @objc deinit
12 | }
13 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/arm64.swiftinterface:
--------------------------------------------------------------------------------
1 | // swift-interface-format-version: 1.0
2 | // swift-compiler-version: Apple Swift version 6.0.2 effective-5.10 (swiftlang-6.0.2.1.2 clang-1600.0.26.4)
3 | // swift-module-flags: -target arm64-apple-macosx10.9.0 -enable-objc-interop -enable-library-evolution -module-name Hello
4 | import Swift
5 | import _Concurrency
6 | import _StringProcessing
7 | import _SwiftConcurrencyShims
8 | public class Greeter {
9 | public init()
10 | public func hello()
11 | @objc deinit
12 | }
13 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/arm64.swiftmodule:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/arm64.swiftmodule
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/x86_64.private.swiftinterface:
--------------------------------------------------------------------------------
1 | // swift-interface-format-version: 1.0
2 | // swift-compiler-version: Apple Swift version 6.0.2 effective-5.10 (swiftlang-6.0.2.1.2 clang-1600.0.26.4)
3 | // swift-module-flags: -target x86_64-apple-macosx10.9.0 -enable-objc-interop -enable-library-evolution -module-name Hello
4 | import Swift
5 | import _Concurrency
6 | import _StringProcessing
7 | import _SwiftConcurrencyShims
8 | public class Greeter {
9 | public init()
10 | public func hello()
11 | @objc deinit
12 | }
13 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/x86_64.swiftinterface:
--------------------------------------------------------------------------------
1 | // swift-interface-format-version: 1.0
2 | // swift-compiler-version: Apple Swift version 6.0.2 effective-5.10 (swiftlang-6.0.2.1.2 clang-1600.0.26.4)
3 | // swift-module-flags: -target x86_64-apple-macosx10.9.0 -enable-objc-interop -enable-library-evolution -module-name Hello
4 | import Swift
5 | import _Concurrency
6 | import _StringProcessing
7 | import _SwiftConcurrencyShims
8 | public class Greeter {
9 | public init()
10 | public func hello()
11 | @objc deinit
12 | }
13 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/x86_64.swiftmodule:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftmodule/x86_64.swiftmodule
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftsourceinfo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/Hello.swiftsourceinfo
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/A/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module Hello {
2 | header "HelloFramework.h"
3 | export *
4 | }
5 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/lib/Release/Hello.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/hello-world/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "stripped-native-dep",
3 | "version": "1.0.0",
4 | "description": "",
5 | "author": "",
6 | "license": "ISC"
7 | }
8 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/index.js:
--------------------------------------------------------------------------------
1 | console.log('Hello World');
--------------------------------------------------------------------------------
/test/fixtures/test-app-symlink-framework/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "TestApp",
3 | "productName": "Test App ßW",
4 | "version": "1.1.0",
5 | "homepage": "http://foo.example.com",
6 | "description": "Test Application (test quite \" #378)",
7 | "author": "Foo Bar ",
8 | "license": "MIT",
9 | "main": "index.js",
10 | "build": {
11 | "electronVersion": "23.3.10",
12 | "appId": "org.electron-builder.testApp",
13 | "compression": "store"
14 | },
15 | "dependencies": {
16 | "hello-world": "file:hello-world"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-two-native-modules/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
12 |
13 |
14 | Hello World!
15 | We are using node ,
16 | Chrome ,
17 | and Electron .
18 |
19 | Args: .
20 |
21 | Env: .
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-two-native-modules/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-app-two-native-modules",
3 | "main": "index.js",
4 | "version": "1.1.1",
5 | "dependencies": {
6 | "debug": "4.1.1",
7 | "node-pty": "1.1.0-beta14",
8 | "node-addon-api": "7.1.1"
9 | },
10 | "optionalDependencies": {
11 | "node-mac-permissions": "2.3.0"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-two-native-modules/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "TestApp2",
4 | "productName": "Test App ßW2",
5 | "version": "1.1.0",
6 | "homepage": "http://foo.example.com",
7 | "description": "Test Application (test quite \" #378)",
8 | "author": "Foo Bar ",
9 | "license": "MIT",
10 | "devDependencies": {
11 | "electron": "23.2.0"
12 | },
13 | "build": {
14 | "appId": "org.electron-builder.testApp2",
15 | "compression": "store",
16 | "npmRebuild": true,
17 | "directories": {
18 | "app": "app"
19 | },
20 | "files": [
21 | "index.html",
22 | "index.js",
23 | "package.json",
24 | "!node_modules/node-mac-permissions/bin"
25 | ],
26 | "mac": {
27 | "category": "your.app.category.type"
28 | },
29 | "linux": {
30 | "category": "Development"
31 | },
32 | "deb": {
33 | "packageCategory": "devel"
34 | },
35 | "squirrelWindows": {
36 | "iconUrl": "https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico"
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-hoisted/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
7 |
8 | Hello World!
9 | We are using node ,
10 | Chrome ,
11 | and Electron .
12 |
13 |
14 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-hoisted/app/index.js:
--------------------------------------------------------------------------------
1 | "use strict"
2 |
3 | const electron = require('electron')
4 | const app = electron.app
5 | const BrowserWindow = electron.BrowserWindow
6 |
7 | let mainWindow
8 |
9 | function createWindow () {
10 | mainWindow = new BrowserWindow({width: 800, height: 600})
11 | mainWindow.loadURL('file://' + __dirname + '/index.html')
12 |
13 | mainWindow.webContents.openDevTools()
14 |
15 | mainWindow.on('closed', function() {
16 | mainWindow = null
17 | });
18 | }
19 |
20 | app.on('ready', createWindow)
21 |
22 | app.on('window-all-closed', function () {
23 | if (process.platform !== 'darwin') {
24 | app.quit()
25 | }
26 | })
27 |
28 | app.on('activate', function () {
29 | if (mainWindow === null) {
30 | createWindow()
31 | }
32 | })
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-hoisted/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "TestApp",
4 | "version": "1.1.0",
5 | "description": "Test Application (test quite \" #378)",
6 | "author": "Foo Bar ",
7 | "license": "MIT",
8 | "homepage": "http://foo.example.com"
9 | }
10 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-hoisted/app/path/app.asar:
--------------------------------------------------------------------------------
1 | 8 4 0 {"files":{"index.js":{"size":650,"offset":"0"}}}"use strict"
2 |
3 | const electron = require('electron')
4 | const app = electron.app
5 | const BrowserWindow = electron.BrowserWindow
6 |
7 | let mainWindow
8 |
9 | function createWindow () {
10 | mainWindow = new BrowserWindow({width: 800, height: 600})
11 | mainWindow.loadURL('file://' + __dirname + '/index.html')
12 |
13 | mainWindow.webContents.openDevTools()
14 |
15 | mainWindow.on('closed', function() {
16 | mainWindow = null
17 | });
18 | }
19 |
20 | app.on('ready', createWindow)
21 |
22 | app.on('window-all-closed', function () {
23 | if (process.platform !== 'darwin') {
24 | app.quit()
25 | }
26 | })
27 |
28 | app.on('activate', function () {
29 | if (mainWindow === null) {
30 | createWindow()
31 | }
32 | })
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-hoisted/build/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-yarn-hoisted/build/icon.icns
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-hoisted/build/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app-yarn-hoisted/build/icon.ico
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-hoisted/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "build": {
4 | "electronVersion": "23.3.10",
5 | "appId": "org.electron-builder.testApp",
6 | "compression": "store",
7 | "npmRebuild": false,
8 | "mac": {
9 | "category": "your.app.category.type"
10 | },
11 | "squirrelWindows": {
12 | "iconUrl": "https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/.yarn-integrity:
--------------------------------------------------------------------------------
1 | {
2 | "modulesFolders": [
3 | "node_modules",
4 | "node_modules",
5 | "packages/test-app/node_modules"
6 | ],
7 | "flags": [],
8 | "linkedModules": [
9 | "dmd",
10 | "dmd-tf",
11 | "docdash",
12 | "electron-auto-updater",
13 | "electron-download-tf",
14 | "electron-vue-scripts",
15 | "electron-webpack",
16 | "jest-cli"
17 | ],
18 | "topLevelPatterns": [
19 | "electron-log@2.2.8",
20 | "electron-log@2.2.9",
21 | "foo@1.0.0",
22 | "ms@2.0.0",
23 | "ms@2.0.0",
24 | "test-app@1.1.0"
25 | ],
26 | "lockfileEntries": {
27 | "electron-log@2.2.8": "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.8.tgz#2296cccd8da046268a199c1a302dcb8cb16f2b72",
28 | "electron-log@2.2.9": "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf",
29 | "ms@2.0.0": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
30 | },
31 | "files": [],
32 | "artifacts": {}
33 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/electron-log/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | if (process.type === 'renderer') {
4 | module.exports = require('./renderer');
5 | } else {
6 | module.exports = require('./main');
7 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/electron-log/lib/log.js:
--------------------------------------------------------------------------------
1 | // jshint -W040
2 | 'use strict';
3 |
4 | var LEVELS = ['error', 'warn', 'info', 'verbose', 'debug', 'silly'];
5 |
6 | module.exports = log;
7 |
8 | function log(transports, level, text) {
9 | var data = Array.prototype.slice.call(arguments, 2);
10 |
11 | var msg = {
12 | data: data,
13 | date: new Date(),
14 | level: level
15 | };
16 |
17 | for (var i in transports) {
18 | // jshint -W089
19 | if (!transports.hasOwnProperty(i) || typeof transports[i] !== 'function') {
20 | continue;
21 | }
22 |
23 | var transport = transports[i];
24 |
25 | if (transport === false || !compareLevels(transport.level, level)) {
26 | continue;
27 | }
28 |
29 | if (transport.level === false) continue;
30 |
31 | transport.call(null, msg);
32 | }
33 | }
34 |
35 | function compareLevels(passLevel, checkLevel) {
36 | var pass = LEVELS.indexOf(passLevel);
37 | var check = LEVELS.indexOf(checkLevel);
38 | if (check === -1 || pass === -1) {
39 | return true;
40 | }
41 | return check <= pass;
42 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/electron-log/lib/transports/console.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var format = require('../format');
4 |
5 | transport.level = 'silly';
6 | transport.format = formatFn;
7 |
8 | module.exports = transport;
9 |
10 | function transport(msg) {
11 | var text = format.format(msg, transport.format);
12 | if (console[msg.level]) {
13 | console[msg.level](text);
14 | } else {
15 | console.log(text);
16 | }
17 | }
18 |
19 | function formatFn(msg) {
20 | var time =
21 | format.pad(msg.date.getHours()) + ':' +
22 | format.pad(msg.date.getMinutes()) + ':' +
23 | format.pad(msg.date.getSeconds()) + ':' +
24 | format.pad(msg.date.getMilliseconds(), 4);
25 |
26 | return '[' + time + '] [' + msg.level + '] ' +
27 | format.stringifyArray(msg.data);
28 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/electron-log/lib/transports/renderer-console.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var BrowserWindow;
4 | try {
5 | BrowserWindow = require('electron').BrowserWindow;
6 | } catch (e) {
7 | BrowserWindow = null;
8 | }
9 |
10 | var format = require('../format');
11 |
12 | transport.level = BrowserWindow ? 'silly' : false;
13 | transport.format = formatFn;
14 |
15 | module.exports = transport;
16 |
17 | function transport(msg) {
18 | if (!BrowserWindow) return;
19 |
20 | var text = format.format(msg, transport.format);
21 | BrowserWindow.getAllWindows().forEach(function(wnd) {
22 | wnd.webContents.send('__ELECTRON_LOG_RENDERER__', msg.level, text);
23 | });
24 | }
25 |
26 | function formatFn(msg) {
27 | var time =
28 | format.pad(msg.date.getHours()) + ':' +
29 | format.pad(msg.date.getMinutes()) + ':' +
30 | format.pad(msg.date.getSeconds()) + ':' +
31 | format.pad(msg.date.getMilliseconds(), 4);
32 |
33 | return '[' + time + '] ' + format.stringifyArray(msg.data);
34 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/foo:
--------------------------------------------------------------------------------
1 | ../packages/foo
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/ms/license.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Zeit, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/ms/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ms",
3 | "version": "2.0.0",
4 | "description": "Tiny milisecond conversion utility",
5 | "repository": "zeit/ms",
6 | "main": "./index",
7 | "files": [
8 | "index.js"
9 | ],
10 | "scripts": {
11 | "precommit": "lint-staged",
12 | "lint": "eslint lib/* bin/*",
13 | "test": "mocha tests.js"
14 | },
15 | "eslintConfig": {
16 | "extends": "eslint:recommended",
17 | "env": {
18 | "node": true,
19 | "es6": true
20 | }
21 | },
22 | "lint-staged": {
23 | "*.js": [
24 | "npm run lint",
25 | "prettier --single-quote --write",
26 | "git add"
27 | ]
28 | },
29 | "license": "MIT",
30 | "devDependencies": {
31 | "eslint": "3.19.0",
32 | "expect.js": "0.3.1",
33 | "husky": "0.13.3",
34 | "lint-staged": "3.4.1",
35 | "mocha": "3.4.1"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/node_modules/test-app:
--------------------------------------------------------------------------------
1 | ../packages/test-app
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "workspaces": [
4 | "packages/*"
5 | ]
6 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/packages/foo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "foo",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "dependencies": {
7 | "ms": "2.0.0"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/packages/test-app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
12 |
13 |
14 | Hello World!
15 | We are using node ,
16 | Chrome ,
17 | and Electron .
18 |
19 | Args: .
20 |
21 | Env: .
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/packages/test-app/node_modules/electron-log/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | if (process.type === 'renderer') {
4 | module.exports = require('./renderer');
5 | } else {
6 | module.exports = require('./main');
7 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/packages/test-app/node_modules/electron-log/lib/log.js:
--------------------------------------------------------------------------------
1 | // jshint -W040
2 | 'use strict';
3 |
4 | var LEVELS = ['error', 'warn', 'info', 'verbose', 'debug', 'silly'];
5 |
6 | module.exports = log;
7 |
8 | function log(transports, level, text) {
9 | var data = Array.prototype.slice.call(arguments, 2);
10 |
11 | var msg = {
12 | data: data,
13 | date: new Date(),
14 | level: level
15 | };
16 |
17 | for (var i in transports) {
18 | // jshint -W089
19 | if (!transports.hasOwnProperty(i) || typeof transports[i] !== 'function') {
20 | continue;
21 | }
22 |
23 | var transport = transports[i];
24 |
25 | if (transport === false || !compareLevels(transport.level, level)) {
26 | continue;
27 | }
28 |
29 | if (transport.level === false) continue;
30 |
31 | transport.call(null, msg);
32 | }
33 | }
34 |
35 | function compareLevels(passLevel, checkLevel) {
36 | var pass = LEVELS.indexOf(passLevel);
37 | var check = LEVELS.indexOf(checkLevel);
38 | if (check === -1 || pass === -1) {
39 | return true;
40 | }
41 | return check <= pass;
42 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/packages/test-app/node_modules/electron-log/lib/transports/console.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var format = require('../format');
4 |
5 | transport.level = 'silly';
6 | transport.format = '[{h}:{i}:{s}.{ms}] [{level}] {text}';
7 |
8 | module.exports = transport;
9 |
10 | function transport(msg) {
11 | var text = format.format(msg, transport.format);
12 | if (console[msg.level]) {
13 | console[msg.level](text);
14 | } else {
15 | console.log(text);
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/packages/test-app/node_modules/electron-log/lib/transports/renderer-console.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var BrowserWindow;
4 | try {
5 | BrowserWindow = require('electron').BrowserWindow;
6 | } catch (e) {
7 | BrowserWindow = null;
8 | }
9 |
10 | var format = require('../format');
11 |
12 | transport.level = BrowserWindow ? 'silly' : false;
13 | transport.format = '[{h}:{i}:{s}.{ms}] {text}';
14 |
15 | module.exports = transport;
16 |
17 | function transport(msg) {
18 | if (!BrowserWindow) return;
19 |
20 | var text = format.format(msg, transport.format);
21 | BrowserWindow.getAllWindows().forEach(function(wnd) {
22 | wnd.webContents.send('__ELECTRON_LOG_RENDERER__', msg.level, text);
23 | });
24 | }
25 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/packages/test-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-app",
3 | "productName": "Test App ßW",
4 | "version": "1.1.0",
5 | "homepage": "http://foo.example.com",
6 | "description": "Test Application (test quite \" #378)",
7 | "author": "Foo Bar ",
8 | "license": "MIT",
9 | "build": {
10 | "electronVersion": "23.3.10",
11 | "appId": "org.electron-builder.testApp",
12 | "compression": "store",
13 | "npmRebuild": false,
14 | "mac": {
15 | "category": "your.app.category.type"
16 | },
17 | "linux": {
18 | "category": "Development"
19 | }
20 | },
21 | "dependencies": {
22 | "ms": "2.0.0",
23 | "electron-log": "2.2.9",
24 | "foo": "*"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-several-workspace/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | electron-log@2.2.8:
6 | version "2.2.8"
7 | resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.8.tgz#2296cccd8da046268a199c1a302dcb8cb16f2b72"
8 |
9 | electron-log@2.2.9:
10 | version "2.2.9"
11 | resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf"
12 |
13 | ms@2.0.0:
14 | version "2.0.0"
15 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
16 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/node_modules/.yarn-integrity:
--------------------------------------------------------------------------------
1 | {
2 | "systemParams": "darwin-x64-64",
3 | "modulesFolders": [
4 | "node_modules",
5 | "node_modules",
6 | "packages/test-app/node_modules"
7 | ],
8 | "flags": [],
9 | "linkedModules": [
10 | "docdash",
11 | "electron-download-tf",
12 | "electron-webpack"
13 | ],
14 | "topLevelPatterns": [
15 | "foo@0.0.0",
16 | "foo@1.0.0",
17 | "ms@2.0.0",
18 | "ms@2.1.1",
19 | "test-app@1.1.0"
20 | ],
21 | "lockfileEntries": {
22 | "foo@0.0.0": "",
23 | "ms@2.0.0": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8",
24 | "ms@2.1.1": "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
25 | },
26 | "files": [],
27 | "artifacts": {}
28 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/node_modules/foo:
--------------------------------------------------------------------------------
1 | ../packages/foo
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/node_modules/ms/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ms",
3 | "version": "2.0.0",
4 | "description": "Tiny milisecond conversion utility",
5 | "repository": "zeit/ms",
6 | "main": "./index",
7 | "files": [
8 | "index.js"
9 | ],
10 | "scripts": {
11 | "precommit": "lint-staged",
12 | "lint": "eslint lib/* bin/*",
13 | "test": "mocha tests.js"
14 | },
15 | "eslintConfig": {
16 | "extends": "eslint:recommended",
17 | "env": {
18 | "node": true,
19 | "es6": true
20 | }
21 | },
22 | "lint-staged": {
23 | "*.js": [
24 | "npm run lint",
25 | "prettier --single-quote --write",
26 | "git add"
27 | ]
28 | },
29 | "license": "MIT",
30 | "devDependencies": {
31 | "eslint": "3.19.0",
32 | "expect.js": "0.3.1",
33 | "husky": "0.13.3",
34 | "lint-staged": "3.4.1",
35 | "mocha": "3.4.1"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/node_modules/test-app:
--------------------------------------------------------------------------------
1 | ../packages/test-app
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "workspaces": [
4 | "packages/*"
5 | ]
6 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/packages/foo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "foo",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "dependencies": {
7 | "ms": "2.0.0"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/packages/test-app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
12 |
13 |
14 | Hello World!
15 | We are using node ,
16 | Chrome ,
17 | and Electron .
18 |
19 | Args: .
20 |
21 | Env: .
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/packages/test-app/node_modules/ms/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ms",
3 | "version": "2.1.1",
4 | "description": "Tiny millisecond conversion utility",
5 | "repository": "zeit/ms",
6 | "main": "./index",
7 | "files": [
8 | "index.js"
9 | ],
10 | "scripts": {
11 | "precommit": "lint-staged",
12 | "lint": "eslint lib/* bin/*",
13 | "test": "mocha tests.js"
14 | },
15 | "eslintConfig": {
16 | "extends": "eslint:recommended",
17 | "env": {
18 | "node": true,
19 | "es6": true
20 | }
21 | },
22 | "lint-staged": {
23 | "*.js": [
24 | "npm run lint",
25 | "prettier --single-quote --write",
26 | "git add"
27 | ]
28 | },
29 | "license": "MIT",
30 | "devDependencies": {
31 | "eslint": "4.12.1",
32 | "expect.js": "0.3.1",
33 | "husky": "0.14.3",
34 | "lint-staged": "5.0.0",
35 | "mocha": "4.0.1"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/packages/test-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-app",
3 | "productName": "Test App ßW",
4 | "version": "1.1.0",
5 | "homepage": "http://foo.example.com",
6 | "description": "Test Application (test quite \" #378)",
7 | "author": "Foo Bar ",
8 | "license": "MIT",
9 | "build": {
10 | "electronVersion": "23.3.10",
11 | "appId": "org.electron-builder.testApp",
12 | "compression": "store",
13 | "npmRebuild": false,
14 | "mac": {
15 | "category": "your.app.category.type"
16 | },
17 | "linux": {
18 | "category": "Development"
19 | }
20 | },
21 | "dependencies": {
22 | "ms": "2.1.1",
23 | "foo": "1.0.0"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace-version-conflict/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | foo@0.0.0:
6 | version "1.0.0"
7 | dependencies:
8 | ms "2.0.0"
9 |
10 | ms@2.0.0:
11 | version "2.0.0"
12 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
13 |
14 | ms@2.1.1:
15 | version "2.1.1"
16 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
17 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/.yarn-integrity:
--------------------------------------------------------------------------------
1 | {
2 | "systemParams": "darwin-x64-64",
3 | "modulesFolders": [
4 | "node_modules",
5 | "node_modules"
6 | ],
7 | "flags": [],
8 | "linkedModules": [
9 | "docdash",
10 | "electron-download-tf",
11 | "electron-webpack"
12 | ],
13 | "topLevelPatterns": [
14 | "@sentry/core@0.5.4",
15 | "electron-log@2.2.9",
16 | "test-app@1.1.0"
17 | ],
18 | "lockfileEntries": {
19 | "@sentry/core@0.5.4": "https://registry.yarnpkg.com/@sentry/core/-/core-0.5.4.tgz#9b0a842b442131b3801bae70be2ca4e9c510574e",
20 | "@sentry/shim@0.5.4": "https://registry.yarnpkg.com/@sentry/shim/-/shim-0.5.4.tgz#cb826b1a34765ae5e1b21e61df2def2f8da91dc1",
21 | "electron-log@2.2.9": "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf"
22 | },
23 | "files": [],
24 | "artifacts": {}
25 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | # Sentry JavaScript SDK Core
9 |
10 | [](https://www.npmjs.com/package/@sentry/core)
11 | [](https://www.npmjs.com/package/@sentry/core)
12 | [](https://www.npmjs.com/package/@sentry/core)
13 |
14 | This package contains interface definitions, base classes and utilities for
15 | building Sentry JavaScript SDKs, like `@sentry/node` or `@sentry/browser`.
16 |
17 | ## Overview
18 |
19 | TODO
20 |
21 | ## Specializing the Frontend
22 |
23 | TODO
24 |
25 | ## Implementing the Backend
26 |
27 | TODO
28 |
29 | ## Exporting the Public Interface
30 |
31 | TODO
32 |
33 | ## General Advice
34 |
35 | * A word on overloading functions
36 | * Differences for native backends
37 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/error.d.ts:
--------------------------------------------------------------------------------
1 | /** An error emitted by Sentry SDKs and related utilities. */
2 | export declare class SentryError extends Error {
3 | message: string;
4 | /** Display name of this error instance. */
5 | name: string;
6 | constructor(message: string);
7 | }
8 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/error.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAA6D;AAC7D;IAAiC,+BAAK;IAIpC,qBAA0B,OAAe;;QAAzC,YACE,kBAAM,OAAO,CAAC,SAKf;QANyB,aAAO,GAAP,OAAO,CAAQ;QAGvC,+BAA+B;QAC/B,KAAI,CAAC,IAAI,GAAG,WAAW,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,WAAW,SAAS,CAAC,CAAC;;IACpD,CAAC;IACH,kBAAC;AAAD,CAAC,AAXD,CAAiC,KAAK,GAWrC;AAXY,kCAAW","sourcesContent":["/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n // tslint:disable:no-unsafe-any\n this.name = new.target.prototype.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n"]}
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/index.d.ts:
--------------------------------------------------------------------------------
1 | export { BackendClass, FrontendBase } from './base';
2 | export { DSN, DSNComponents, DSNLike, DSNProtocol } from './dsn';
3 | export { SentryError } from './error';
4 | export { Backend, Frontend, LogLevel, Options, Scope } from './interfaces';
5 | export { initAndBind, FrontendClass } from './sdk';
6 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/index.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | var base_1 = require("./base");
4 | exports.FrontendBase = base_1.FrontendBase;
5 | var dsn_1 = require("./dsn");
6 | exports.DSN = dsn_1.DSN;
7 | var error_1 = require("./error");
8 | exports.SentryError = error_1.SentryError;
9 | var interfaces_1 = require("./interfaces");
10 | exports.LogLevel = interfaces_1.LogLevel;
11 | var sdk_1 = require("./sdk");
12 | exports.initAndBind = sdk_1.initAndBind;
13 | //# sourceMappingURL=index.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/index.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+BAAoD;AAA7B,8BAAA,YAAY,CAAA;AACnC,6BAAiE;AAAxD,oBAAA,GAAG,CAAA;AACZ,iCAAsC;AAA7B,8BAAA,WAAW,CAAA;AACpB,2CAA2E;AAA/C,gCAAA,QAAQ,CAAA;AACpC,6BAAmD;AAA1C,4BAAA,WAAW,CAAA","sourcesContent":["export { BackendClass, FrontendBase } from './base';\nexport { DSN, DSNComponents, DSNLike, DSNProtocol } from './dsn';\nexport { SentryError } from './error';\nexport { Backend, Frontend, LogLevel, Options, Scope } from './interfaces';\nexport { initAndBind, FrontendClass } from './sdk';\n"]}
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/interfaces.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | /** Console logging verbosity for the SDK. */
4 | var LogLevel;
5 | (function (LogLevel) {
6 | /** No logs will be generated. */
7 | LogLevel[LogLevel["None"] = 0] = "None";
8 | /** Only SDK internal errors will be logged. */
9 | LogLevel[LogLevel["Error"] = 1] = "Error";
10 | /** Information useful for debugging the SDK will be logged. */
11 | LogLevel[LogLevel["Debug"] = 2] = "Debug";
12 | /** All SDK actions will be logged. */
13 | LogLevel[LogLevel["Verbose"] = 3] = "Verbose";
14 | })(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
15 | //# sourceMappingURL=interfaces.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/sdk.d.ts:
--------------------------------------------------------------------------------
1 | import { Frontend, Options } from './interfaces';
2 | export { captureException, captureMessage, clearScope, popScope, pushScope, setExtraContext, setTagsContext } from '@sentry/shim';
3 | /** A class object that can instanciate Frontend objects. */
4 | export interface FrontendClass {
5 | new (options: O): F;
6 | }
7 | /**
8 | * Internal function to create a new SDK frontend instance. The frontend is
9 | * installed and then bound to the current scope.
10 | *
11 | * @param frontendClass The frontend class to instanciate.
12 | * @param options Options to pass to the frontend.
13 | * @returns The installed and bound frontend instance.
14 | */
15 | export declare function initAndBind(frontendClass: FrontendClass, options: O): void;
16 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/sdk.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | var Shim = require("@sentry/shim");
4 | var shim_1 = require("@sentry/shim");
5 | exports.captureException = shim_1.captureException;
6 | exports.captureMessage = shim_1.captureMessage;
7 | exports.clearScope = shim_1.clearScope;
8 | exports.popScope = shim_1.popScope;
9 | exports.pushScope = shim_1.pushScope;
10 | exports.setExtraContext = shim_1.setExtraContext;
11 | exports.setTagsContext = shim_1.setTagsContext;
12 | /**
13 | * Internal function to create a new SDK frontend instance. The frontend is
14 | * installed and then bound to the current scope.
15 | *
16 | * @param frontendClass The frontend class to instanciate.
17 | * @param options Options to pass to the frontend.
18 | * @returns The installed and bound frontend instance.
19 | */
20 | function initAndBind(frontendClass, options) {
21 | if (Shim.getCurrentClient()) {
22 | return;
23 | }
24 | var frontend = new frontendClass(options);
25 | frontend.install();
26 | Shim.bindClient(frontend);
27 | }
28 | exports.initAndBind = initAndBind;
29 | //# sourceMappingURL=sdk.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/core/dist/status.d.ts:
--------------------------------------------------------------------------------
1 | /** The status of an event. */
2 | export declare enum SendStatus {
3 | /** The status could not be determined. */
4 | Unknown = "unknown",
5 | /** The event was skipped due to configuration or callbacks. */
6 | Skipped = "skipped",
7 | /** The event was sent to Sentry successfully. */
8 | Success = "success",
9 | /** The client is currently rate limited and will try again later. */
10 | RateLimit = "rate_limit",
11 | /** The event could not be processed. */
12 | Invalid = "invalid",
13 | /** A server-side error ocurred during submission. */
14 | Failed = "failed",
15 | }
16 | export declare namespace SendStatus {
17 | /**
18 | * Converts a HTTP status code into a {@link SendStatus}.
19 | *
20 | * @param code The HTTP response status code.
21 | * @returns The send status or {@link SendStatus.Unknown}.
22 | */
23 | function fromHttpCode(code: number): SendStatus;
24 | }
25 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/domain.d.ts:
--------------------------------------------------------------------------------
1 | import { ScopeLayer } from './interfaces';
2 | /** Checks for an active domain and returns its stack, if present. */
3 | export declare function getDomainStack(): ScopeLayer[] | undefined;
4 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/domain.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | /** A compatibility version for Node's "domain" module. */
4 | var domain;
5 | try {
6 | // tslint:disable-next-line:no-var-requires
7 | domain = require('domain');
8 | }
9 | catch (_a) {
10 | domain = {};
11 | }
12 | /** Checks for an active domain and returns its stack, if present. */
13 | function getDomainStack() {
14 | var active = domain.active;
15 | if (!active) {
16 | return undefined;
17 | }
18 | var registry = active.__SENTRY__;
19 | if (!registry) {
20 | active.__SENTRY__ = registry = { stack: [] };
21 | }
22 | return registry.stack;
23 | }
24 | exports.getDomainStack = getDomainStack;
25 | //# sourceMappingURL=domain.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/global.d.ts:
--------------------------------------------------------------------------------
1 | import { Registry, ScopeLayer } from './interfaces';
2 | /** Returns the global shim registry. */
3 | export declare function getGlobalRegistry(): Registry;
4 | /** Returns the global stack of scope layers. */
5 | export declare function getGlobalStack(): ScopeLayer[];
6 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/global.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | global.__SENTRY__ = global.__SENTRY__ || {
4 | shim: undefined,
5 | stack: [],
6 | };
7 | /** Returns the global shim registry. */
8 | function getGlobalRegistry() {
9 | return global.__SENTRY__;
10 | }
11 | exports.getGlobalRegistry = getGlobalRegistry;
12 | /** Returns the global stack of scope layers. */
13 | function getGlobalStack() {
14 | return global.__SENTRY__.stack;
15 | }
16 | exports.getGlobalStack = getGlobalStack;
17 | //# sourceMappingURL=global.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/global.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"global.js","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":";;AASA,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI;IACvC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,wCAAwC;AACxC;IACE,OAAO,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAFD,8CAEC;AAED,gDAAgD;AAChD;IACE,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACjC,CAAC;AAFD,wCAEC","sourcesContent":["import { Registry, ScopeLayer } from './interfaces';\n\n/** Global interface helper for type safety. */\ninterface Global {\n __SENTRY__: Registry;\n}\n\ndeclare var global: Global;\n\nglobal.__SENTRY__ = global.__SENTRY__ || {\n shim: undefined,\n stack: [],\n};\n\n/** Returns the global shim registry. */\nexport function getGlobalRegistry(): Registry {\n return global.__SENTRY__;\n}\n\n/** Returns the global stack of scope layers. */\nexport function getGlobalStack(): ScopeLayer[] {\n return global.__SENTRY__.stack;\n}\n"]}
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/index.d.ts:
--------------------------------------------------------------------------------
1 | export { Breadcrumb, Context, Request, SdkInfo, SentryEvent, SentryException, Severity, StackFrame, Stacktrace, Thread, User } from './models';
2 | export { _callOnClient, addBreadcrumb, bindClient, captureMessage, captureException, captureEvent, clearScope, getCurrentClient, popScope, pushScope, setUserContext, setTagsContext, setExtraContext, withScope } from './sdk';
3 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/index.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | var models_1 = require("./models");
4 | exports.Severity = models_1.Severity;
5 | var sdk_1 = require("./sdk");
6 | exports._callOnClient = sdk_1._callOnClient;
7 | exports.addBreadcrumb = sdk_1.addBreadcrumb;
8 | exports.bindClient = sdk_1.bindClient;
9 | exports.captureMessage = sdk_1.captureMessage;
10 | exports.captureException = sdk_1.captureException;
11 | exports.captureEvent = sdk_1.captureEvent;
12 | exports.clearScope = sdk_1.clearScope;
13 | exports.getCurrentClient = sdk_1.getCurrentClient;
14 | exports.popScope = sdk_1.popScope;
15 | exports.pushScope = sdk_1.pushScope;
16 | exports.setUserContext = sdk_1.setUserContext;
17 | exports.setTagsContext = sdk_1.setTagsContext;
18 | exports.setExtraContext = sdk_1.setExtraContext;
19 | exports.withScope = sdk_1.withScope;
20 | //# sourceMappingURL=index.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/index.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,mCAYkB;AALhB,4BAAA,QAAQ,CAAA;AAMV,6BAee;AAdb,8BAAA,aAAa,CAAA;AACb,8BAAA,aAAa,CAAA;AACb,2BAAA,UAAU,CAAA;AACV,+BAAA,cAAc,CAAA;AACd,iCAAA,gBAAgB,CAAA;AAChB,6BAAA,YAAY,CAAA;AACZ,2BAAA,UAAU,CAAA;AACV,iCAAA,gBAAgB,CAAA;AAChB,yBAAA,QAAQ,CAAA;AACR,0BAAA,SAAS,CAAA;AACT,+BAAA,cAAc,CAAA;AACd,+BAAA,cAAc,CAAA;AACd,gCAAA,eAAe,CAAA;AACf,0BAAA,SAAS,CAAA","sourcesContent":["export {\n Breadcrumb,\n Context,\n Request,\n SdkInfo,\n SentryEvent,\n SentryException,\n Severity,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n} from './models';\nexport {\n _callOnClient,\n addBreadcrumb,\n bindClient,\n captureMessage,\n captureException,\n captureEvent,\n clearScope,\n getCurrentClient,\n popScope,\n pushScope,\n setUserContext,\n setTagsContext,\n setExtraContext,\n withScope,\n} from './sdk';\n"]}
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/interfaces.d.ts:
--------------------------------------------------------------------------------
1 | /** The type of a process stack layer. */
2 | export declare type LayerType = 'process' | 'domain' | 'local';
3 | /** A layer in the process stack. */
4 | export interface ScopeLayer {
5 | client?: any;
6 | scope: any;
7 | type: LayerType;
8 | }
9 | /** An object that contains a shim and maintains a scope stack. */
10 | export interface Registry {
11 | stack: ScopeLayer[];
12 | shim?: any;
13 | }
14 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/interfaces.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | //# sourceMappingURL=interfaces.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/interfaces.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["/** The type of a process stack layer. */\nexport type LayerType = 'process' | 'domain' | 'local';\n\n/** A layer in the process stack. */\nexport interface ScopeLayer {\n client?: any;\n scope: any;\n type: LayerType;\n}\n\n/** An object that contains a shim and maintains a scope stack. */\nexport interface Registry {\n stack: ScopeLayer[];\n shim?: any;\n}\n"]}
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/dist/models.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | /** TODO */
4 | var Severity;
5 | (function (Severity) {
6 | /** TODO */
7 | Severity["Fatal"] = "fatal";
8 | /** TODO */
9 | Severity["Error"] = "error";
10 | /** TODO */
11 | Severity["Warning"] = "warning";
12 | /** TODO */
13 | Severity["Info"] = "info";
14 | /** TODO */
15 | Severity["Debug"] = "debug";
16 | /** TODO */
17 | Severity["Critical"] = "critical";
18 | })(Severity = exports.Severity || (exports.Severity = {}));
19 | //# sourceMappingURL=models.js.map
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | collectCoverage: true,
3 | transform: { '^.+\\.ts$': 'ts-jest' },
4 | moduleFileExtensions: ['js', 'ts'],
5 | testEnvironment: 'node',
6 | testMatch: ['**/*.test.ts'],
7 | globals: {
8 | 'ts-jest': {
9 | tsConfigFile: './tsconfig.json',
10 | },
11 | },
12 | };
13 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/src/domain.ts:
--------------------------------------------------------------------------------
1 | import { Registry, ScopeLayer } from './interfaces';
2 |
3 | /** A compatibility version for Node's "domain" module. */
4 | let domain: {
5 | active?: {
6 | __SENTRY__?: Registry;
7 | };
8 | };
9 |
10 | try {
11 | // tslint:disable-next-line:no-var-requires
12 | domain = require('domain');
13 | } catch {
14 | domain = {};
15 | }
16 |
17 | /** Checks for an active domain and returns its stack, if present. */
18 | export function getDomainStack(): ScopeLayer[] | undefined {
19 | const active = domain.active;
20 | if (!active) {
21 | return undefined;
22 | }
23 |
24 | let registry = active.__SENTRY__;
25 | if (!registry) {
26 | active.__SENTRY__ = registry = { stack: [] };
27 | }
28 |
29 | return registry.stack;
30 | }
31 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/src/global.ts:
--------------------------------------------------------------------------------
1 | import { Registry, ScopeLayer } from './interfaces';
2 |
3 | /** Global interface helper for type safety. */
4 | interface Global {
5 | __SENTRY__: Registry;
6 | }
7 |
8 | declare var global: Global;
9 |
10 | global.__SENTRY__ = global.__SENTRY__ || {
11 | shim: undefined,
12 | stack: [],
13 | };
14 |
15 | /** Returns the global shim registry. */
16 | export function getGlobalRegistry(): Registry {
17 | return global.__SENTRY__;
18 | }
19 |
20 | /** Returns the global stack of scope layers. */
21 | export function getGlobalStack(): ScopeLayer[] {
22 | return global.__SENTRY__.stack;
23 | }
24 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/src/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | Breadcrumb,
3 | Context,
4 | Request,
5 | SdkInfo,
6 | SentryEvent,
7 | SentryException,
8 | Severity,
9 | StackFrame,
10 | Stacktrace,
11 | Thread,
12 | User,
13 | } from './models';
14 | export {
15 | _callOnClient,
16 | addBreadcrumb,
17 | bindClient,
18 | captureMessage,
19 | captureException,
20 | captureEvent,
21 | clearScope,
22 | getCurrentClient,
23 | popScope,
24 | pushScope,
25 | setUserContext,
26 | setTagsContext,
27 | setExtraContext,
28 | withScope,
29 | } from './sdk';
30 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/src/interfaces.ts:
--------------------------------------------------------------------------------
1 | /** The type of a process stack layer. */
2 | export type LayerType = 'process' | 'domain' | 'local';
3 |
4 | /** A layer in the process stack. */
5 | export interface ScopeLayer {
6 | client?: any;
7 | scope: any;
8 | type: LayerType;
9 | }
10 |
11 | /** An object that contains a shim and maintains a scope stack. */
12 | export interface Registry {
13 | stack: ScopeLayer[];
14 | shim?: any;
15 | }
16 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/test/mocks/client.ts:
--------------------------------------------------------------------------------
1 | import { bindClient } from '../../src';
2 |
3 | export class TestClient {
4 | public static instance?: TestClient;
5 |
6 | public constructor(public options: object) {
7 | TestClient.instance = this;
8 | }
9 |
10 | public mySecretPublicMethod(str: string): string {
11 | return `secret: ${str}`;
12 | }
13 | }
14 |
15 | export class TestClient2 {}
16 |
17 | export function init(options: object): void {
18 | bindClient(new TestClient(options));
19 | }
20 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/test/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["../tslint.json"],
3 | "rules": {
4 | "completed-docs": false,
5 | "max-classes-per-file": false,
6 | "no-non-null-assertion": false,
7 | "no-implicit-dependencies": [true, "dev"],
8 | "no-unused-expression": false
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "baseUrl": ".",
5 | "outDir": "dist",
6 | "rootDir": "src"
7 | },
8 | "include": ["src/**/*.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.build.json",
3 | "include": ["src/**/*.ts", "test/**/*.ts"],
4 | "exclude": ["dist"],
5 | "compilerOptions": {
6 | "rootDir": ".",
7 | "types": ["node", "jest"],
8 | "plugins": [{ "name": "tslint-language-service" }]
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/@sentry/shim/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@sentry/typescript/tslint",
3 | "rules": {
4 | "no-unsafe-any": false
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/electron-log/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Alexey Prokhorov
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/electron-log/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | if (process.type === 'renderer') {
4 | module.exports = require('./renderer');
5 | } else {
6 | module.exports = require('./main');
7 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/electron-log/lib/log.js:
--------------------------------------------------------------------------------
1 | // jshint -W040
2 | 'use strict';
3 |
4 | var LEVELS = ['error', 'warn', 'info', 'verbose', 'debug', 'silly'];
5 |
6 | module.exports = log;
7 |
8 | function log(transports, level, text) {
9 | var data = Array.prototype.slice.call(arguments, 2);
10 |
11 | var msg = {
12 | data: data,
13 | date: new Date(),
14 | level: level
15 | };
16 |
17 | for (var i in transports) {
18 | // jshint -W089
19 | if (!transports.hasOwnProperty(i) || typeof transports[i] !== 'function') {
20 | continue;
21 | }
22 |
23 | var transport = transports[i];
24 |
25 | if (transport === false || !compareLevels(transport.level, level)) {
26 | continue;
27 | }
28 |
29 | if (transport.level === false) continue;
30 |
31 | transport.call(null, msg);
32 | }
33 | }
34 |
35 | function compareLevels(passLevel, checkLevel) {
36 | var pass = LEVELS.indexOf(passLevel);
37 | var check = LEVELS.indexOf(checkLevel);
38 | if (check === -1 || pass === -1) {
39 | return true;
40 | }
41 | return check <= pass;
42 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/electron-log/lib/transports/console.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var format = require('../format');
4 |
5 | transport.level = 'silly';
6 | transport.format = '[{h}:{i}:{s}.{ms}] [{level}] {text}';
7 |
8 | module.exports = transport;
9 |
10 | function transport(msg) {
11 | var text = format.format(msg, transport.format);
12 | if (console[msg.level]) {
13 | console[msg.level](text);
14 | } else {
15 | console.log(text);
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/electron-log/lib/transports/renderer-console.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var BrowserWindow;
4 | try {
5 | BrowserWindow = require('electron').BrowserWindow;
6 | } catch (e) {
7 | BrowserWindow = null;
8 | }
9 |
10 | var format = require('../format');
11 |
12 | transport.level = BrowserWindow ? 'silly' : false;
13 | transport.format = '[{h}:{i}:{s}.{ms}] {text}';
14 |
15 | module.exports = transport;
16 |
17 | function transport(msg) {
18 | if (!BrowserWindow) return;
19 |
20 | var text = format.format(msg, transport.format);
21 | BrowserWindow.getAllWindows().forEach(function(wnd) {
22 | wnd.webContents.send('__ELECTRON_LOG_RENDERER__', msg.level, text);
23 | });
24 | }
25 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/node_modules/test-app:
--------------------------------------------------------------------------------
1 | ../packages/test-app
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "workspaces": [
4 | "packages/*"
5 | ]
6 | }
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/packages/test-app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
12 |
13 |
14 | Hello World!
15 | We are using node ,
16 | Chrome ,
17 | and Electron .
18 |
19 | Args: .
20 |
21 | Env: .
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/packages/test-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-app",
3 | "productName": "Test App ßW",
4 | "version": "1.1.0",
5 | "homepage": "http://foo.example.com",
6 | "description": "Test Application (test quite \" #378)",
7 | "author": "Foo Bar ",
8 | "license": "MIT",
9 | "build": {
10 | "electronVersion": "23.3.10",
11 | "appId": "org.electron-builder.testApp",
12 | "compression": "store",
13 | "npmRebuild": false,
14 | "mac": {
15 | "category": "your.app.category.type"
16 | },
17 | "linux": {
18 | "category": "Development"
19 | }
20 | },
21 | "dependencies": {
22 | "electron-log": "2.2.9",
23 | "@sentry/core": "0.5.4"
24 | },
25 | "optionalDependencies": {
26 | "unresolved": "^2.0.5"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/test/fixtures/test-app-yarn-workspace/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@sentry/core@0.5.4":
6 | version "0.5.4"
7 | resolved "https://registry.yarnpkg.com/@sentry/core/-/core-0.5.4.tgz#9b0a842b442131b3801bae70be2ca4e9c510574e"
8 | dependencies:
9 | "@sentry/shim" "0.5.4"
10 |
11 | "@sentry/shim@0.5.4":
12 | version "0.5.4"
13 | resolved "https://registry.yarnpkg.com/@sentry/shim/-/shim-0.5.4.tgz#cb826b1a34765ae5e1b21e61df2def2f8da91dc1"
14 |
15 | electron-log@2.2.9:
16 | version "2.2.9"
17 | resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf"
18 |
--------------------------------------------------------------------------------
/test/fixtures/test-app/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World!
6 |
7 |
8 | Hello World!
9 | We are using node ,
10 | Chrome ,
11 | and Electron .
12 |
13 | App version: .
14 |
15 |
16 |
--------------------------------------------------------------------------------
/test/fixtures/test-app/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "TestApp",
4 | "version": "1.1.0",
5 | "description": "Test Application (test quite \" #378)",
6 | "author": "Foo Bar ",
7 | "license": "MIT",
8 | "homepage": "http://foo.example.com"
9 | }
10 |
--------------------------------------------------------------------------------
/test/fixtures/test-app/app/path/app.asar:
--------------------------------------------------------------------------------
1 | 8 4 0 {"files":{"index.js":{"size":650,"offset":"0"}}}"use strict"
2 |
3 | const electron = require('electron')
4 | const app = electron.app
5 | const BrowserWindow = electron.BrowserWindow
6 |
7 | let mainWindow
8 |
9 | function createWindow () {
10 | mainWindow = new BrowserWindow({width: 800, height: 600})
11 | mainWindow.loadURL('file://' + __dirname + '/index.html')
12 |
13 | mainWindow.webContents.openDevTools()
14 |
15 | mainWindow.on('closed', function() {
16 | mainWindow = null
17 | });
18 | }
19 |
20 | app.on('ready', createWindow)
21 |
22 | app.on('window-all-closed', function () {
23 | if (process.platform !== 'darwin') {
24 | app.quit()
25 | }
26 | })
27 |
28 | app.on('activate', function () {
29 | if (mainWindow === null) {
30 | createWindow()
31 | }
32 | })
--------------------------------------------------------------------------------
/test/fixtures/test-app/build/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app/build/icon.icns
--------------------------------------------------------------------------------
/test/fixtures/test-app/build/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/electron-userland/electron-builder/d13bfdb8e390319d64c0c43f3283d6d1e2962915/test/fixtures/test-app/build/icon.ico
--------------------------------------------------------------------------------
/test/fixtures/test-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "build": {
4 | "electronVersion": "23.3.10",
5 | "appId": "org.electron-builder.testApp",
6 | "compression": "store",
7 | "npmRebuild": false,
8 | "mac": {
9 | "category": "your.app.category.type"
10 | },
11 | "squirrelWindows": {
12 | "iconUrl": "https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/test/snapshots/RepoSlugTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`repo slug from APPVEYOR 1`] = `
4 | {
5 | "project": "travis-build",
6 | "user": "travis-ci",
7 | }
8 | `;
9 |
10 | exports[`repo slug from TRAVIS_REPO_SLUG 1`] = `
11 | {
12 | "project": "travis-build",
13 | "user": "travis-ci",
14 | }
15 | `;
16 |
--------------------------------------------------------------------------------
/test/snapshots/linux/flatpakTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`custom finishArgs 1`] = `
4 | {
5 | "linux": [
6 | {
7 | "arch": "x64",
8 | "file": "Test App ßW-1.1.0-x86_64.flatpak",
9 | "safeArtifactName": "TestApp-1.1.0-x86_64.flatpak",
10 | },
11 | ],
12 | }
13 | `;
14 |
15 | exports[`custom runtime and base app version 1`] = `
16 | {
17 | "linux": [
18 | {
19 | "arch": "x64",
20 | "file": "Test App ßW-1.1.0-x86_64.flatpak",
21 | "safeArtifactName": "TestApp-1.1.0-x86_64.flatpak",
22 | },
23 | ],
24 | }
25 | `;
26 |
27 | exports[`enable Wayland flags 1`] = `
28 | {
29 | "linux": [
30 | {
31 | "arch": "x64",
32 | "file": "Test App ßW-1.1.0-x86_64.flatpak",
33 | "safeArtifactName": "TestApp-1.1.0-x86_64.flatpak",
34 | },
35 | ],
36 | }
37 | `;
38 |
39 | exports[`flatpak 1`] = `
40 | {
41 | "linux": [
42 | {
43 | "arch": "x64",
44 | "file": "Test App ßW-1.1.0-x86_64.flatpak",
45 | "safeArtifactName": "TestApp-1.1.0-x86_64.flatpak",
46 | },
47 | ],
48 | }
49 | `;
50 |
--------------------------------------------------------------------------------
/test/snapshots/linux/fpmTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`rpm and tar.gz 1`] = `
4 | {
5 | "linux": [
6 | {
7 | "arch": "x64",
8 | "file": "TestApp-1.1.0.x86_64.rpm",
9 | },
10 | {
11 | "arch": "x64",
12 | "file": "TestApp-1.1.0.tar.gz",
13 | },
14 | ],
15 | }
16 | `;
17 |
18 | exports[`targets 1`] = `
19 | {
20 | "linux": [
21 | {
22 | "arch": "x64",
23 | "file": "TestApp-1.1.0.7z",
24 | },
25 | {
26 | "arch": "x64",
27 | "file": "TestApp-1.1.0.freebsd",
28 | },
29 | {
30 | "arch": "x64",
31 | "file": "TestApp-1.1.0.pacman",
32 | },
33 | {
34 | "arch": "x64",
35 | "file": "TestApp-1.1.0.sh",
36 | },
37 | {
38 | "arch": "x64",
39 | "file": "TestApp-1.1.0.zip",
40 | },
41 | ],
42 | }
43 | `;
44 |
--------------------------------------------------------------------------------
/test/snapshots/linux/linuxArchiveTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`tar 1`] = `
4 | {
5 | "linux": [
6 | {
7 | "arch": "x64",
8 | "file": "TestApp-1.1.0.tar.bz2",
9 | },
10 | {
11 | "arch": "x64",
12 | "file": "TestApp-1.1.0.tar.lz",
13 | },
14 | {
15 | "arch": "x64",
16 | "file": "TestApp-1.1.0.tar.xz",
17 | },
18 | ],
19 | }
20 | `;
21 |
--------------------------------------------------------------------------------
/test/snapshots/mac/macCodeSignTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`remove password from log 1`] = `"seq -P 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae (sha256 hash) -B"`;
4 |
5 | exports[`remove password from log 2`] = `"pass:2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae (sha256 hash)"`;
6 |
7 | exports[`remove password from log 3`] = `"/usr/bin/productbuild -P 56ef615b2e26c3b9a10dc2824238fb8b8a154ec7db4907ec6ee357ed7bb350b7 (sha256 hash)"`;
8 |
9 | exports[`remove password from log 4`] = `" /p 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae (sha256 hash)"`;
10 |
11 | exports[`remove password from log 5`] = `"ConvertTo-SecureString -String 4d967a30111bf29f0eba01c448b375c1629b2fed01cdfcc3aed91f1b57d5dd5e (sha256 hash)"`;
12 |
13 | exports[`remove password from log 6`] = `"(Get-PfxData "C:\\\\Users\\\\develar\\\\AppData\\\\Local\\\\Temp\\\\electron-builder-yBY8D2\\\\0-1.p12" -Password (ConvertTo-SecureString -String 4d967a30111bf29f0eba01c448b375c1629b2fed01cdfcc3aed91f1b57d5dd5e (sha256 hash) -Force -AsPlainText)).EndEntityCertificates.Subject"`;
14 |
--------------------------------------------------------------------------------
/test/snapshots/mainEntryTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`invalid main in the app package.json (custom asar) 1`] = `"Application entry file "main.js" in the "/app.asar" is corrupted: Error: "main.js" was not found in this archive"`;
4 |
5 | exports[`invalid main in the app package.json (no asar) 1`] = `"Application entry file "/main.js" does not exist. Seems like a wrong configuration."`;
6 |
7 | exports[`invalid main in the app package.json 1`] = `"Application entry file "main.js" in the "/app.asar" is corrupted: Error: "main.js" was not found in this archive"`;
8 |
9 | exports[`main in the app package.json (custom asar) 1`] = `
10 | {
11 | "linux": [],
12 | "mac": [],
13 | }
14 | `;
15 |
16 | exports[`main in the app package.json (no asar) 1`] = `
17 | {
18 | "linux": [],
19 | "mac": [],
20 | }
21 | `;
22 |
--------------------------------------------------------------------------------
/test/snapshots/windows/msiTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`msi > msi 1`] = `
4 | {
5 | "win": [
6 | {
7 | "arch": "x64",
8 | "file": "Test MSI 1.1.0.msi",
9 | "safeArtifactName": "Test-MSI-1.1.0.msi",
10 | },
11 | ],
12 | }
13 | `;
14 |
15 | exports[`msi > msi no asar 1`] = `
16 | {
17 | "win": [
18 | {
19 | "arch": "x64",
20 | "file": "Test MSI 1.1.0.msi",
21 | "safeArtifactName": "Test-MSI-1.1.0.msi",
22 | },
23 | ],
24 | }
25 | `;
26 |
27 | exports[`msi > per-user 1`] = `
28 | {
29 | "win": [
30 | {
31 | "arch": "x64",
32 | "file": "Test MSI Per User 1.1.0.msi",
33 | "safeArtifactName": "Test-MSI-Per-User-1.1.0.msi",
34 | },
35 | ],
36 | }
37 | `;
38 |
39 | exports[`msi > wix args 1`] = `
40 | {
41 | "win": [
42 | {
43 | "arch": "x64",
44 | "file": "Test WiX Args 1.1.0.msi",
45 | "safeArtifactName": "Test-WiX-Args-1.1.0.msi",
46 | },
47 | ],
48 | }
49 | `;
50 |
--------------------------------------------------------------------------------
/test/snapshots/windows/winCodeSignTest.js.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`forceCodeSigning 1`] = `"ERR_ELECTRON_BUILDER_INVALID_CONFIGURATION"`;
4 |
5 | exports[`parseDn 1`] = `
6 | Map {
7 | "CN" => "7digital Limited",
8 | "O" => "7digital Limited",
9 | "L" => "London",
10 | "C" => "GB",
11 | }
12 | `;
13 |
14 | exports[`win code sign using pwsh 1`] = `
15 | {
16 | "win": [],
17 | }
18 | `;
19 |
--------------------------------------------------------------------------------
/test/src/helpers/customWindowsSign.mjs:
--------------------------------------------------------------------------------
1 | // test custom windows sign using path to file
2 | export default async function (configuration) {
3 | const info = configuration.cscInfo
4 | expect(info.file).toEqual("secretFile")
5 | expect(info.password).toEqual("pass")
6 | }
7 |
--------------------------------------------------------------------------------
/test/src/helpers/customWindowsSign.ts:
--------------------------------------------------------------------------------
1 | // test custom windows sign using dynamic import
2 | import { CustomWindowsSignTaskConfiguration, FileCodeSigningInfo } from "electron-builder"
3 | import { ExpectStatic } from "vitest"
4 |
5 | export default function (expect: ExpectStatic, configuration: CustomWindowsSignTaskConfiguration) {
6 | const info = configuration.cscInfo! as FileCodeSigningInfo
7 | expect(info.file).toEqual("secretFile")
8 | expect(info.password).toEqual("pass")
9 | }
10 |
--------------------------------------------------------------------------------
/test/src/helpers/testConfig.ts:
--------------------------------------------------------------------------------
1 | import * as os from "os"
2 | import * as path from "path"
3 |
4 | export const ELECTRON_VERSION = "23.3.10"
5 |
6 | export function getElectronCacheDir() {
7 | if (process.platform === "win32") {
8 | return path.join(process.env.LOCALAPPDATA || path.join(os.homedir(), "AppData", "Local"), "Cache", "electron")
9 | } else if (process.platform === "darwin") {
10 | return path.join(os.homedir(), "Library", "Caches", "electron")
11 | } else {
12 | return path.join(os.homedir(), ".cache", "electron")
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/test/src/linux/linuxArchiveTest.ts:
--------------------------------------------------------------------------------
1 | import { Platform } from "electron-builder"
2 | import { app } from "../helpers/packTester"
3 |
4 | test.ifNotWindows.ifDevOrLinuxCi("tar", ({ expect }) =>
5 | app(expect, {
6 | targets: Platform.LINUX.createTarget(["tar.xz", "tar.lz", "tar.bz2"]),
7 | config: {
8 | electronFuses: {
9 | runAsNode: true,
10 | enableCookieEncryption: true,
11 | enableNodeOptionsEnvironmentVariable: true,
12 | enableNodeCliInspectArguments: true,
13 | enableEmbeddedAsarIntegrityValidation: true,
14 | onlyLoadAppFromAsar: true,
15 | loadBrowserProcessSpecificV8Snapshot: true,
16 | grantFileProtocolExtraPrivileges: undefined, // unsupported on current electron version in our tests
17 | },
18 | },
19 | })
20 | )
21 |
--------------------------------------------------------------------------------
/test/src/macroExpanderTest.ts:
--------------------------------------------------------------------------------
1 | import { expandMacro } from "app-builder-lib/out/util/macroExpander"
2 |
3 | const appInfoStub: any = {
4 | sanitizedProductName: "1",
5 | productName: "2",
6 | companyName: "3",
7 | version: "1.8.4+nightly-20210618",
8 | name: "Test",
9 | ext: "dmg",
10 | }
11 |
12 | // https://github.com/electron-userland/electron-builder/issues/5971
13 | test("${version} macro with +", ({ expect }) => {
14 | const result = expandMacro("${name}-${version}-${arch}.${ext}", "arm64", appInfoStub, {}, true)
15 | expect(result).toBe("Test-1.8.4+nightly-20210618-arm64.dmg")
16 | })
17 |
18 | test("sanitized product name", ({ expect }) => {
19 | const result = expandMacro("${productName}-${arch}.${ext}", undefined, appInfoStub, {}, true)
20 | expect(result).toBe("1.dmg")
21 | })
22 |
23 | test("product name", ({ expect }) => {
24 | const result = expandMacro("${productName}-${arch}.${ext}", "x64", appInfoStub, {}, false)
25 | expect(result).toBe("2-x64.dmg")
26 | })
27 |
--------------------------------------------------------------------------------
/test/src/updater/Dockerfile-archlinux:
--------------------------------------------------------------------------------
1 | FROM archlinux:latest
2 |
3 | RUN pacman -Syu --noconfirm && \
4 | pacman -S --noconfirm \
5 | libxcrypt-compat \
6 | base-devel \
7 | git \
8 | nodejs \
9 | npm \
10 | xorg-server-xvfb \
11 | && pacman -Scc --noconfirm
12 |
13 | RUN npm --silent install --global --depth 0 pnpm
14 |
15 | WORKDIR /project
--------------------------------------------------------------------------------
/test/src/updater/Dockerfile-debian:
--------------------------------------------------------------------------------
1 | FROM debian:bookworm-slim
2 |
3 | RUN apt-get update && apt-get install -y curl gnupg xz-utils xvfb zypper binutils libasound2
4 |
5 | RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
6 | RUN apt-get install -y nodejs
7 |
8 | RUN npm --silent install --global --depth 0 pnpm
9 |
10 | WORKDIR /project
--------------------------------------------------------------------------------
/test/src/updater/Dockerfile-rpm:
--------------------------------------------------------------------------------
1 | FROM fedora:latest
2 |
3 | RUN dnf install -y \
4 | libxcrypt-compat \
5 | nodejs \
6 | npm \
7 | rpm-build \
8 | libXScrnSaver \
9 | libX11-devel \
10 | alsa-lib \
11 | git \
12 | gcc-c++ \
13 | make \
14 | libuuid \
15 | libuuid-devel \
16 | python3 \
17 | curl \
18 | xz
19 |
20 | # Optional: for better font rendering or Chromium deps
21 | RUN dnf install -y liberation-fonts fontconfig
22 |
23 | RUN npm --silent install --global --depth 0 pnpm
24 |
25 | WORKDIR /project
--------------------------------------------------------------------------------
/test/src/updater/test-specific-platforms.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -ex
3 |
4 | CWD=$(dirname "$0")
5 |
6 | docker build --platform=linux/amd64 -f $CWD/Dockerfile-archlinux . -t archlinux-updater-test
7 | docker build --platform=linux/amd64 -f $CWD/Dockerfile-rpm . -t rpm-updater-test
8 | docker build --platform=linux/amd64 -f $CWD/Dockerfile-debian . -t debian-updater-test
9 | # appimage only installs on same-arch systems, so we need to build it on the same arch (e.g. without --platform flag)
10 | docker build -f $CWD/Dockerfile-appimage . -t appimage-updater-test
11 |
12 | export TEST_FILES="blackboxUpdateTest,linuxUpdaterTest"
13 | export DEBUG="electron-updater,electron-builder"
14 |
15 | TEST_RUNNER_IMAGE_TAG="appimage-updater-test" ADDITIONAL_DOCKER_ARGS="-e RUN_APP_IMAGE_TEST=true" pnpm test-linux
16 | TEST_RUNNER_IMAGE_TAG="rpm-updater-test" TEST_FILES="linuxUpdaterTest" pnpm test-linux
17 | TEST_RUNNER_IMAGE_TAG="debian-updater-test" pnpm test-linux
18 | TEST_RUNNER_IMAGE_TAG="archlinux-updater-test" pnpm test-linux
19 |
--------------------------------------------------------------------------------
/test/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig-base.json",
3 | "compilerOptions": {
4 | "rootDir": "src",
5 | "outDir": "out",
6 | "skipLibCheck": true,
7 | "baseUrl": "../packages"
8 | },
9 | "references": [
10 | {
11 | "path": "../packages/builder-util"
12 | },
13 | {
14 | "path": "../packages/builder-util-runtime"
15 | },
16 | {
17 | "path": "../packages/electron-builder"
18 | },
19 | {
20 | "path": "../packages/electron-publish"
21 | },
22 | {
23 | "path": "../packages/electron-updater"
24 | }
25 | ],
26 | "declaration": false,
27 | "include": [
28 | "../typings/*.d.ts",
29 | "typings/*.d.ts",
30 | "src/**/*.ts"
31 | ],
32 | "types": ["vitest/globals"],
33 | "exclude": [
34 | ]
35 | }
36 |
--------------------------------------------------------------------------------
/test/typings/vitest.d.ts:
--------------------------------------------------------------------------------
1 | import 'vitest'
2 |
3 | type Test = typeof import('vitest')['test']
4 |
5 | interface CustomTestMatcher extends Test {
6 | ifNotWindows: CustomTestMatcher
7 | ifMac: CustomTestMatcher
8 | ifNotMac: CustomTestMatcher
9 | ifWindows: CustomTestMatcher
10 | ifNotCi: CustomTestMatcher
11 | ifCi: CustomTestMatcher
12 | ifNotCiMac: CustomTestMatcher
13 | ifNotCiWin: CustomTestMatcher
14 | ifDevOrWinCi: CustomTestMatcher
15 | ifWinCi: CustomTestMatcher
16 | ifDevOrLinuxCi: CustomTestMatcher
17 | ifLinux: CustomTestMatcher
18 | ifLinuxOrDevMac: CustomTestMatcher
19 | ifAll: CustomTestMatcher
20 | ifEnv: (envVar: any) => CustomTestMatcher
21 | }
22 |
23 | declare module 'vitest' {
24 | interface TestAPI extends CustomTestMatcher {}
25 | type TestAPI = CustomTestMatcher
26 | }
27 |
28 | declare global {
29 | const it: CustomTestMatcher
30 | const test: CustomTestMatcher
31 | const describe: typeof import('vitest')['describe']
32 | }
33 |
--------------------------------------------------------------------------------
/tsconfig-base.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2019",
4 | "module": "CommonJS",
5 | "esModuleInterop": false,
6 | "forceConsistentCasingInFileNames": true,
7 | "moduleResolution": "node",
8 | "skipLibCheck": true,
9 | "strict": true,
10 | "noUnusedLocals": true,
11 | "noFallthroughCasesInSwitch": true,
12 | "noImplicitReturns": true,
13 |
14 | "inlineSources": true,
15 | "sourceMap": true,
16 |
17 | "allowSyntheticDefaultImports": true,
18 | "experimentalDecorators": true,
19 |
20 | "newLine": "lf",
21 |
22 | "noEmitOnError": true
23 | }
24 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | {
5 | "path": "./packages/electron-builder"
6 | },
7 | {
8 | "path": "./packages/electron-publish"
9 | },
10 | {
11 | "path": "./packages/electron-updater"
12 | },
13 | {
14 | "path": "./packages/electron-builder-squirrel-windows"
15 | },
16 | {
17 | "path": "./test"
18 | },
19 | {
20 | "path": "./scripts/renderer"
21 | }
22 | ]
23 | }
--------------------------------------------------------------------------------
/typings/chromium-pickle-js.d.ts:
--------------------------------------------------------------------------------
1 | declare module "chromium-pickle-js" {
2 | function createFromBuffer(buffer: Buffer): any
3 | }
--------------------------------------------------------------------------------
/typings/path-sort.d.ts:
--------------------------------------------------------------------------------
1 | declare module "path-sort" {
2 | function sort(files: Array): Array
3 |
4 | export default sort
5 | }
--------------------------------------------------------------------------------