├── .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 | 5 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/jsLinters/tslint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/runConfigurations/build_snap_remote__stage_packages_.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/runConfigurations/build_snap_remote__template_.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/runConfigurations/build_snap_remote__template__production.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 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 | 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 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /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 | 840{"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 | [![npm version](https://img.shields.io/npm/v/@sentry/core.svg)](https://www.npmjs.com/package/@sentry/core) 11 | [![npm dm](https://img.shields.io/npm/dm/@sentry/core.svg)](https://www.npmjs.com/package/@sentry/core) 12 | [![npm dt](https://img.shields.io/npm/dt/@sentry/core.svg)](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 | 840{"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 | } --------------------------------------------------------------------------------