app-builder-lib 27.0.0-alpha.3 → 27.0.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codeSign/mac/macCodeSign.d.ts.map +1 -1
- package/dist/codeSign/mac/macCodeSign.js +3 -6
- package/dist/codeSign/mac/macCodeSign.js.map +1 -1
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts.map +1 -1
- package/dist/codeSign/win/signtoolBaseSignManager.js +11 -3
- package/dist/codeSign/win/signtoolBaseSignManager.js.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.d.ts.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.js +31 -21
- package/dist/codeSign/win/windowsSignAzureManager.js.map +1 -1
- package/dist/configuration.d.ts +37 -44
- package/dist/configuration.d.ts.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/electron/ElectronFramework.js +2 -2
- package/dist/electron/ElectronFramework.js.map +1 -1
- package/dist/electron/electronVersion.d.ts.map +1 -1
- package/dist/electron/electronVersion.js +1 -11
- package/dist/electron/electronVersion.js.map +1 -1
- package/dist/fileMatcher.d.ts +27 -2
- package/dist/fileMatcher.d.ts.map +1 -1
- package/dist/fileMatcher.js +204 -16
- package/dist/fileMatcher.js.map +1 -1
- package/dist/indexInternal.d.ts +6 -5
- package/dist/indexInternal.d.ts.map +1 -1
- package/dist/indexInternal.js +6 -5
- package/dist/indexInternal.js.map +1 -1
- package/dist/macPackager.d.ts +5 -0
- package/dist/macPackager.d.ts.map +1 -1
- package/dist/macPackager.js +35 -0
- package/dist/macPackager.js.map +1 -1
- package/dist/node-module-collector/moduleManager.d.ts +3 -1
- package/dist/node-module-collector/moduleManager.d.ts.map +1 -1
- package/dist/node-module-collector/moduleManager.js +9 -1
- package/dist/node-module-collector/moduleManager.js.map +1 -1
- package/dist/node-module-collector/nodeModulesCollector.d.ts +13 -23
- package/dist/node-module-collector/nodeModulesCollector.d.ts.map +1 -1
- package/dist/node-module-collector/nodeModulesCollector.js +52 -122
- package/dist/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/dist/node-module-collector/pnpmNodeModulesCollector.js +5 -5
- package/dist/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
- package/dist/node-module-collector/types.d.ts +2 -0
- package/dist/node-module-collector/types.d.ts.map +1 -1
- package/dist/node-module-collector/types.js.map +1 -1
- package/dist/options/PlatformSpecificBuildOptions.d.ts +0 -6
- package/dist/options/PlatformSpecificBuildOptions.d.ts.map +1 -1
- package/dist/options/PlatformSpecificBuildOptions.js.map +1 -1
- package/dist/options/SnapOptions.d.ts +15 -13
- package/dist/options/SnapOptions.d.ts.map +1 -1
- package/dist/options/SnapOptions.js.map +1 -1
- package/dist/options/linuxOptions.d.ts +0 -10
- package/dist/options/linuxOptions.d.ts.map +1 -1
- package/dist/options/linuxOptions.js.map +1 -1
- package/dist/options/winOptions.d.ts +164 -34
- package/dist/options/winOptions.d.ts.map +1 -1
- package/dist/options/winOptions.js.map +1 -1
- package/dist/packager.d.ts +2 -0
- package/dist/packager.d.ts.map +1 -1
- package/dist/packager.js +20 -22
- package/dist/packager.js.map +1 -1
- package/dist/platformPackager.d.ts +3 -0
- package/dist/platformPackager.d.ts.map +1 -1
- package/dist/platformPackager.js +11 -6
- package/dist/platformPackager.js.map +1 -1
- package/dist/publish/PublishManager.d.ts +1 -0
- package/dist/publish/PublishManager.d.ts.map +1 -1
- package/dist/publish/PublishManager.js +7 -2
- package/dist/publish/PublishManager.js.map +1 -1
- package/dist/targets/linux/FlatpakTarget.d.ts.map +1 -1
- package/dist/targets/linux/FlatpakTarget.js +4 -1
- package/dist/targets/linux/FlatpakTarget.js.map +1 -1
- package/dist/targets/linux/FpmTarget.d.ts +6 -0
- package/dist/targets/linux/FpmTarget.d.ts.map +1 -1
- package/dist/targets/linux/FpmTarget.js +28 -6
- package/dist/targets/linux/FpmTarget.js.map +1 -1
- package/dist/targets/linux/LinuxTargetHelper.d.ts +14 -0
- package/dist/targets/linux/LinuxTargetHelper.d.ts.map +1 -1
- package/dist/targets/linux/LinuxTargetHelper.js +38 -59
- package/dist/targets/linux/LinuxTargetHelper.js.map +1 -1
- package/dist/targets/linux/appimage/AppImageTarget.d.ts +1 -0
- package/dist/targets/linux/appimage/AppImageTarget.d.ts.map +1 -1
- package/dist/targets/linux/appimage/AppImageTarget.js +12 -14
- package/dist/targets/linux/appimage/AppImageTarget.js.map +1 -1
- package/dist/targets/linux/appimage/appImageUtil.d.ts +4 -0
- package/dist/targets/linux/appimage/appImageUtil.d.ts.map +1 -1
- package/dist/targets/linux/appimage/appImageUtil.js +11 -4
- package/dist/targets/linux/appimage/appImageUtil.js.map +1 -1
- package/dist/targets/linux/appimage/appLauncher.d.ts.map +1 -1
- package/dist/targets/linux/appimage/appLauncher.js +5 -11
- package/dist/targets/linux/appimage/appLauncher.js.map +1 -1
- package/dist/targets/linux/launcherScript.d.ts +32 -0
- package/dist/targets/linux/launcherScript.d.ts.map +1 -0
- package/dist/targets/linux/launcherScript.js +24 -0
- package/dist/targets/linux/launcherScript.js.map +1 -0
- package/dist/targets/linux/snap/SnapTarget.d.ts +1 -1
- package/dist/targets/linux/snap/SnapTarget.d.ts.map +1 -1
- package/dist/targets/linux/snap/SnapTarget.js +23 -1
- package/dist/targets/linux/snap/SnapTarget.js.map +1 -1
- package/dist/targets/linux/snap/core24.d.ts +1 -1
- package/dist/targets/linux/snap/core24.d.ts.map +1 -1
- package/dist/targets/linux/snap/core24.js +3 -2
- package/dist/targets/linux/snap/core24.js.map +1 -1
- package/dist/targets/linux/snap/coreCustom.d.ts +1 -1
- package/dist/targets/linux/snap/coreCustom.d.ts.map +1 -1
- package/dist/targets/linux/snap/coreCustom.js +2 -2
- package/dist/targets/linux/snap/coreCustom.js.map +1 -1
- package/dist/targets/linux/snap/coreLegacy.d.ts +1 -1
- package/dist/targets/linux/snap/coreLegacy.d.ts.map +1 -1
- package/dist/targets/linux/snap/coreLegacy.js +8 -7
- package/dist/targets/linux/snap/coreLegacy.js.map +1 -1
- package/dist/targets/linux/snap/snapCommand.d.ts +2 -2
- package/dist/targets/linux/snap/snapCommand.d.ts.map +1 -1
- package/dist/targets/linux/snap/snapCommand.js +4 -10
- package/dist/targets/linux/snap/snapCommand.js.map +1 -1
- package/dist/targets/linux/snap/snapcraftBuilder.d.ts +7 -1
- package/dist/targets/linux/snap/snapcraftBuilder.d.ts.map +1 -1
- package/dist/targets/linux/snap/snapcraftBuilder.js +57 -20
- package/dist/targets/linux/snap/snapcraftBuilder.js.map +1 -1
- package/dist/targets/targetFactory.d.ts +7 -0
- package/dist/targets/targetFactory.d.ts.map +1 -1
- package/dist/targets/targetFactory.js +28 -0
- package/dist/targets/targetFactory.js.map +1 -1
- package/dist/targets/win/AppxTarget.d.ts.map +1 -1
- package/dist/targets/win/AppxTarget.js +17 -9
- package/dist/targets/win/AppxTarget.js.map +1 -1
- package/dist/targets/win/MsiTarget.d.ts.map +1 -1
- package/dist/targets/win/MsiTarget.js +8 -11
- package/dist/targets/win/MsiTarget.js.map +1 -1
- package/dist/targets/win/nsis/NsisTarget.d.ts +3 -2
- package/dist/targets/win/nsis/NsisTarget.d.ts.map +1 -1
- package/dist/targets/win/nsis/NsisTarget.js +26 -49
- package/dist/targets/win/nsis/NsisTarget.js.map +1 -1
- package/dist/targets/win/nsis/nsisScriptGenerator.d.ts.map +1 -1
- package/dist/targets/win/nsis/nsisScriptGenerator.js +3 -2
- package/dist/targets/win/nsis/nsisScriptGenerator.js.map +1 -1
- package/dist/targets/win/nsis/nsisUtil.d.ts +5 -2
- package/dist/targets/win/nsis/nsisUtil.d.ts.map +1 -1
- package/dist/targets/win/nsis/nsisUtil.js +46 -22
- package/dist/targets/win/nsis/nsisUtil.js.map +1 -1
- package/dist/targets/win/nsis/progId.d.ts +21 -0
- package/dist/targets/win/nsis/progId.d.ts.map +1 -0
- package/dist/targets/win/nsis/progId.js +60 -0
- package/dist/targets/win/nsis/progId.js.map +1 -0
- package/dist/toolsets/7zip.d.ts.map +1 -1
- package/dist/toolsets/7zip.js +3 -1
- package/dist/toolsets/7zip.js.map +1 -1
- package/dist/toolsets/appimage.d.ts +3 -3
- package/dist/toolsets/appimage.d.ts.map +1 -1
- package/dist/toolsets/appimage.js +9 -6
- package/dist/toolsets/appimage.js.map +1 -1
- package/dist/toolsets/custom.d.ts +1 -3
- package/dist/toolsets/custom.d.ts.map +1 -1
- package/dist/toolsets/custom.js +4 -133
- package/dist/toolsets/custom.js.map +1 -1
- package/dist/toolsets/fpm.d.ts.map +1 -1
- package/dist/toolsets/fpm.js +11 -5
- package/dist/toolsets/fpm.js.map +1 -1
- package/dist/toolsets/icons.d.ts.map +1 -1
- package/dist/toolsets/icons.js +13 -2
- package/dist/toolsets/icons.js.map +1 -1
- package/dist/toolsets/linuxToolsMac.d.ts.map +1 -1
- package/dist/toolsets/linuxToolsMac.js +4 -1
- package/dist/toolsets/linuxToolsMac.js.map +1 -1
- package/dist/toolsets/nsis.d.ts.map +1 -1
- package/dist/toolsets/nsis.js +6 -3
- package/dist/toolsets/nsis.js.map +1 -1
- package/dist/toolsets/version.d.ts +12 -0
- package/dist/toolsets/version.d.ts.map +1 -0
- package/dist/toolsets/version.js +13 -0
- package/dist/toolsets/version.js.map +1 -0
- package/dist/toolsets/winCodeSign.d.ts +11 -3
- package/dist/toolsets/winCodeSign.d.ts.map +1 -1
- package/dist/toolsets/winCodeSign.js +45 -27
- package/dist/toolsets/winCodeSign.js.map +1 -1
- package/dist/toolsets/wine.d.ts +2 -1
- package/dist/toolsets/wine.d.ts.map +1 -1
- package/dist/toolsets/wine.js +15 -13
- package/dist/toolsets/wine.js.map +1 -1
- package/dist/util/NodeModuleCopyHelper.js +3 -3
- package/dist/util/NodeModuleCopyHelper.js.map +1 -1
- package/dist/util/appFileCopier.d.ts +39 -0
- package/dist/util/appFileCopier.d.ts.map +1 -1
- package/dist/util/appFileCopier.js +71 -20
- package/dist/util/appFileCopier.js.map +1 -1
- package/dist/util/archCompatibility.d.ts +42 -0
- package/dist/util/archCompatibility.d.ts.map +1 -0
- package/dist/util/archCompatibility.js +202 -0
- package/dist/util/archCompatibility.js.map +1 -0
- package/dist/util/config/config.d.ts +1 -0
- package/dist/util/config/config.d.ts.map +1 -1
- package/dist/util/config/config.js +4 -1
- package/dist/util/config/config.js.map +1 -1
- package/dist/util/config/load.d.ts +2 -2
- package/dist/util/config/load.d.ts.map +1 -1
- package/dist/util/config/load.js +3 -12
- package/dist/util/config/load.js.map +1 -1
- package/dist/util/config/schemaValidator.js +1 -1
- package/dist/util/config/schemaValidator.js.map +1 -1
- package/dist/util/electronGet.d.ts +6 -3
- package/dist/util/electronGet.d.ts.map +1 -1
- package/dist/util/electronGet.js +23 -9
- package/dist/util/electronGet.js.map +1 -1
- package/dist/util/flags.d.ts +0 -1
- package/dist/util/flags.d.ts.map +1 -1
- package/dist/util/flags.js +0 -3
- package/dist/util/flags.js.map +1 -1
- package/dist/util/hash.d.ts +1 -1
- package/dist/util/hash.d.ts.map +1 -1
- package/dist/util/hash.js +1 -15
- package/dist/util/hash.js.map +1 -1
- package/dist/util/installOrRebuild.d.ts +38 -0
- package/dist/util/installOrRebuild.d.ts.map +1 -0
- package/dist/util/{yarn.js → installOrRebuild.js} +65 -14
- package/dist/util/installOrRebuild.js.map +1 -0
- package/dist/util/langs.d.ts.map +1 -1
- package/dist/util/langs.js +1 -0
- package/dist/util/langs.js.map +1 -1
- package/dist/util/mac/macosIconComposer.d.ts +2 -1
- package/dist/util/mac/macosIconComposer.d.ts.map +1 -1
- package/dist/util/mac/macosIconComposer.js +40 -58
- package/dist/util/mac/macosIconComposer.js.map +1 -1
- package/dist/util/streamSpawnToFile.d.ts +47 -0
- package/dist/util/streamSpawnToFile.d.ts.map +1 -0
- package/dist/util/streamSpawnToFile.js +110 -0
- package/dist/util/streamSpawnToFile.js.map +1 -0
- package/dist/util/toolsetLock.d.ts +2 -0
- package/dist/util/toolsetLock.d.ts.map +1 -1
- package/dist/util/toolsetLock.js +31 -5
- package/dist/util/toolsetLock.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +8 -8
- package/scheme.json +94 -130
- package/templates/appx/appxmanifest.xml +1 -2
- package/templates/nsis/assistedMessages.yml +17 -0
- package/templates/nsis/messages.yml +5 -0
- package/dist/util/yarn.d.ts +0 -23
- package/dist/util/yarn.d.ts.map +0 -1
- package/dist/util/yarn.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"winCodeSign.js","sourceRoot":"","sources":["../../src/toolsets/winCodeSign.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, sanitizeDirPath } from \"builder-util\"\nimport { Nullish } from \"builder-util-runtime\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { ToolsetConfig } from \"../configuration.js\"\nimport { ToolInfo, computeToolEnv } from \"../util/bundledTool.js\"\nimport { downloadBuilderToolset } from \"../util/electronGet.js\"\nimport { getCustomToolsetPath } from \"./custom.js\"\n\nfunction getLegacyWinCodeSignBin(): Promise<string> {\n return downloadBuilderToolset({\n releaseName: \"winCodeSign-2.6.0\",\n filenameWithExt: \"winCodeSign-2.6.0.7z\",\n checksums: { [\"winCodeSign-2.6.0.7z\"]: \"cdaec7154dda7cc31f88d886e2489379a0625a737d610b5ae7f62a12f16743a4\" },\n })\n}\n\nexport const wincodesignChecksums = {\n \"0.0.0\": {\n // legacy — downloads winCodeSign-2.6.0 via getLegacyWinCodeSignBin()\n },\n \"1.0.0\": {\n \"rcedit-windows-2_0_0.zip\": \"589709935902545a8335190b08644cf61b46a9042e34c0c3ef0660a5aeddeaae\",\n \"win-codesign-darwin-arm64.zip\": \"7eb41c3e6e48a75ced6b3384de22185da4bb458960fa410970eedd4e838c5c14\",\n \"win-codesign-darwin-x86_64.zip\": \"3986c97429f002df63490193d7f787281836f055934e3cdd9e69c70a8acb695e\",\n \"win-codesign-linux-amd64.zip\": \"d362a1a981053841554867e3e9dff51fe420fd577b44653df89bd7d3c916b156\",\n \"win-codesign-linux-arm64.zip\": \"fb848d498281f081c937be48dd6ddaf49b0201f32210dfc816ad061c47ecd37b\",\n \"win-codesign-linux-i386.zip\": \"11f8d9ffbf5b01e3bf6321c6d93b9b5e43d0c2d2a9fde1bca07698f2eb967cdf\",\n \"win-codesign-windows-x64.zip\": \"1bd27f9fa553cb14bec8df530cb3caffcfb095f9dd187dab6eaf5e9b7d6e7bff\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"1a12c81024c3499c212fdc5fac34a918e6d199271a39dfc524f6d8da484329bd\",\n },\n \"1.1.0\": {\n \"rcedit-windows-2_0_0.zip\": \"c66591ebe0919c60231f0bf79ff223e6504bfa69bc13edc1fa8bfc6177b73402\",\n \"win-codesign-darwin-arm64.zip\": \"3f263b0e53cdc5410f6165471b2e808aee3148dc792efa23a7c303e7a01e67b7\",\n \"win-codesign-darwin-x86_64.zip\": \"143fbdfcbc53bc273fa181356be8416829778452621484d39eadbe1ce49979ba\",\n \"win-codesign-linux-amd64.zip\": \"65477fe8e40709b0f998928afb8336f82413b123310bf5adaa8efb7ed6ed0eeb\",\n \"win-codesign-linux-arm64.zip\": \"575b01a966f2b775bbea119de263957378e2bd28cbd064d35f9e981827e37b59\",\n \"win-codesign-linux-i386.zip\": \"aa3ce90e9aaa3449a228a3fa30633cdeb6b2791913786677a85c59db1d985598\",\n \"win-codesign-windows-x64.zip\": \"6e5dcc5d7af7c00a7387e2101d1ad986aef80e963a3526da07bd0e65de484c30\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"284f18a2fde66e6ecfbefc3065926c9bfdf641761a9e6cd2bd26e18d1e328bf7\",\n },\n \"1.1.1\": {\n \"rcedit-windows-2_0_0.zip\": \"a4133c265a53a8a6d5063c6d92603dc2dcd47546e50bfd79c93bc56692d6fcb3\",\n \"win-codesign-darwin-arm64.zip\": \"8c655fe77edb326fb6b7051a6f74b0f09843f7d3de7887c1d217088cff47ece6\",\n \"win-codesign-darwin-x86_64.zip\": \"b5882783c910e10b18792ea8c319fa8d6ce9dbbdd0d6a283a504787b3e9e96c6\",\n \"win-codesign-linux-amd64.zip\": \"8e0c05c33b3fb24d41ac41d37b0c70ad9f8c1c82bb667ed60c2a6a8d141b7c62\",\n \"win-codesign-linux-arm64.zip\": \"535f318b8aac1c9487e0f8b58df0a4182103e303ccaca1c9d0ef20b1020e03ca\",\n \"win-codesign-linux-i386.zip\": \"e432f2819f557f9d1175e26f374eec8a368eb23b519c12c690a969ce369966c5\",\n \"win-codesign-windows-x64.zip\": \"47d78ed7e229e891866b0d0e10dde6df9617c32a89fc76a9e280ffabfc80e1fe\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"f7e67213ce690386b2f0a58e3af986dbf223bc1b45ef4a75e77ff85f66b78c94\",\n },\n \"1.2.1\": {\n \"rcedit-windows-2_0_0.zip\": \"1c2b68b9ae41229566c008ce98c4f6cd2b642ace85284e753d1d3509377f9e67\",\n \"win-codesign-darwin-arm64.zip\": \"ac7c1d9279490fc88e9e744ed965ad7e1d377e0219142dab0ab49cfba3ede764\",\n \"win-codesign-darwin-x86_64.zip\": \"7c4188bb301621cde22f918bb2d1a86ef9892ad401a40b7838b80efc9165547d\",\n \"win-codesign-linux-amd64.zip\": \"69b94f71f9189ded6b962718df102e0ffe0a81d506351fecd3df3d73c7166e31\",\n \"win-codesign-linux-arm64.zip\": \"c959031605a5ab994bfd9b84d37bc5bcaba8f39d54a6d69bd2541b2a91ecf723\",\n \"win-codesign-linux-i386.zip\": \"fc937f40655b9839b67ed35cc7b571795b3f7b7b15db10c3026599db43f1c2b1\",\n \"win-codesign-windows-arm64.zip\": \"96390eb3130e63ea9d3641ef076c941c6f51463125498cf53b2503e52c38082d\",\n \"win-codesign-windows-x64.zip\": \"40b1d88ea074de58ddc7595a2b6d30ca23f81bcce33f110102304337538fcbeb\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"9b198db76ae75b124169aef3369fb96c17b39dbf16f16f1264dbd9fd001d976f\",\n },\n \"1.3.0\": {\n \"ats-bundle-1_0_95.zip\": \"93e1441cd8c60f7b7a57a3e0e20a2109994e33a7f42bd04c998204a1928f9f2f\", // new\n \"dotnet-runtime-win-x64-8_0_28.zip\": \"71b9aa960ebaae196a62ec0bb1a4d224e1b48e18b6dc5eed89a37b28b72965ee\", // new\n \"rcedit-windows-2_0_0.zip\": \"84ea279c5d94977fecffbe0f21b073318575dc631a3dae46fadb14309f2eef11\",\n \"win-codesign-darwin-arm64.zip\": \"c5c1e1e106a5feff27d320c57856e362d8f605c09c7c02fc42d9309b72c56372\",\n \"win-codesign-darwin-x86_64.zip\": \"4fd5af2c4c655257685fad1769457419e086ec0862ee36f893b3659e1788c8ca\",\n \"win-codesign-linux-amd64.zip\": \"58c708762b3088a2c6c98494c4813e2a1d030a314a7958c77a2806d58e5efe95\",\n \"win-codesign-linux-arm64.zip\": \"1e9dd1ae149a4e0c988b5529fb983d7a8265cd71e7f3fb5af4cce501005a670c\",\n \"win-codesign-linux-i386.zip\": \"b5c3249fb565bb956a48aaff01bc1bbbd9acaf3c981960f2b754210f9df95cd9\",\n \"win-codesign-windows-arm64.zip\": \"c707709440a07e400b4053d9bab77c9f335505c1701035c2aa8285d880360989\",\n \"win-codesign-windows-x64.zip\": \"40d621aad7593e6298ce1d24798760dcefb053f358be891d74c95386ac2ac50b\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"2eeb955e580103e1bbecf9666dca87b141c3bb73ad99ead64bb8821755694ecd\",\n },\n} as const\n\ntype CodeSignVersionKey = keyof typeof wincodesignChecksums\n\nfunction _getWindowsToolsBin<V extends CodeSignVersionKey>(winCodeSign: V, file: keyof (typeof wincodesignChecksums)[V]): Promise<string> {\n const filenameWithExt = file as string\n return downloadBuilderToolset({\n releaseName: `win-codesign@${winCodeSign}`,\n filenameWithExt,\n checksums: { [filenameWithExt]: wincodesignChecksums[winCodeSign][file] as string },\n })\n}\n\nexport async function getSignToolPath(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, isWin: boolean, resourcesDir: string): Promise<ToolInfo> {\n if (isWin) {\n // windows kits are always the target arch; signtool can be used by either arch.\n const signtoolArch: Arch = process.arch === \"x64\" ? Arch.x64 : process.arch === \"arm64\" ? Arch.arm64 : Arch.ia32\n return { path: await getWindowsSignToolExe({ winCodeSign, arch: signtoolArch, resourcesDir }) }\n } else {\n const vendor = await getOsslSigncodeBundle(winCodeSign, resourcesDir)\n return { path: vendor.path, env: vendor.env }\n }\n}\n\nexport async function getWindowsKitsBundle({ winCodeSign, arch, resourcesDir = \"\" }: { winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish; arch: Arch; resourcesDir?: string }) {\n if (typeof winCodeSign === \"object\" && winCodeSign != null) {\n const vendorPath = sanitizeDirPath(await getCustomToolsetPath(winCodeSign, resourcesDir), resourcesDir || undefined)\n return { kit: path.join(vendorPath, arch === Arch.ia32 ? \"x86\" : Arch[arch]), appxAssets: vendorPath }\n }\n\n const useLegacy = winCodeSign == null || winCodeSign === \"0.0.0\"\n if (useLegacy) {\n const vendorPath = sanitizeDirPath(await getLegacyWinCodeSignBin())\n return { kit: path.join(vendorPath, \"windows-10\", arch === Arch.arm64 ? \"x64\" : Arch[arch]), appxAssets: vendorPath }\n }\n const file = \"windows-kits-bundle-10_0_26100_0.zip\"\n const vendorPath = sanitizeDirPath(await _getWindowsToolsBin(winCodeSign, file))\n return { kit: path.join(vendorPath, arch === Arch.ia32 ? \"x86\" : Arch[arch]), appxAssets: vendorPath }\n}\n\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nasync function getWindowsSignToolExe({ winCodeSign, arch, resourcesDir = \"\" }: { winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish; arch: Arch; resourcesDir?: string }) {\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n const vendorPath = sanitizeDirPath(await getLegacyWinCodeSignBin())\n if (isOldWin6()) {\n return path.join(vendorPath, \"windows-6\", \"signtool.exe\")\n } else {\n return path.join(vendorPath, \"windows-10\", process.arch === \"ia32\" ? \"ia32\" : \"x64\", \"signtool.exe\")\n }\n }\n // kit is already sanitized by getWindowsKitsBundle\n const { kit } = await getWindowsKitsBundle({ winCodeSign, arch, resourcesDir })\n return path.join(kit, \"signtool.exe\")\n}\n\nasync function getOsslSigncodeBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, resourcesDir = \"\") {\n if (process.platform === \"win32\") {\n return { path: \"osslsigncode\" }\n }\n\n if (typeof winCodeSign === \"object\" && winCodeSign != null) {\n const vendorPath = sanitizeDirPath(await getCustomToolsetPath(winCodeSign, resourcesDir), resourcesDir || undefined)\n return { path: path.join(vendorPath, \"osslsigncode\") }\n }\n\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n const legacyBase = sanitizeDirPath(await getLegacyWinCodeSignBin())\n const vendorBase = path.join(legacyBase, process.platform)\n const vendorPath = process.platform === \"darwin\" ? path.join(vendorBase, \"10.12\") : vendorBase\n return { path: path.join(vendorPath, \"osslsigncode\"), env: process.platform === \"darwin\" ? computeToolEnv([path.join(vendorPath, \"lib\")]) : undefined }\n }\n\n const file = (() => {\n if (process.platform === \"linux\") {\n if (process.arch == \"x64\") {\n return \"win-codesign-linux-amd64.zip\"\n } else if (process.arch === \"arm64\") {\n return \"win-codesign-linux-arm64.zip\"\n }\n return \"win-codesign-linux-i386.zip\"\n }\n // darwin arm64\n if (process.arch === \"arm64\") {\n return \"win-codesign-darwin-arm64.zip\"\n }\n return \"win-codesign-darwin-x86_64.zip\"\n })()\n const vendorPath = sanitizeDirPath(await _getWindowsToolsBin(winCodeSign, file))\n return { path: path.join(vendorPath, \"osslsigncode\") }\n}\n\nexport async function getAtsBundleDir(winCodeSign: string): Promise<string> {\n const checksum = (wincodesignChecksums as Record<string, Record<string, string>>)[winCodeSign]?.[\"ats-bundle-1_0_95.zip\"]\n if (!checksum) {\n throw new Error(`winCodeSign version \"${winCodeSign}\" does not include an ATS bundle (requires >= 1.3.0)`)\n }\n return downloadBuilderToolset({\n releaseName: `win-codesign@${winCodeSign}`,\n filenameWithExt: \"ats-bundle-1_0_95.zip\",\n checksums: { \"ats-bundle-1_0_95.zip\": checksum },\n })\n}\n\nexport async function getDotnetRuntimeDir(winCodeSign: string): Promise<string> {\n const checksum = (wincodesignChecksums as Record<string, Record<string, string>>)[winCodeSign]?.[\"dotnet-runtime-win-x64-8_0_28.zip\"]\n if (!checksum) {\n throw new Error(`winCodeSign version \"${winCodeSign}\" does not include a .NET runtime bundle (requires >= 1.3.0)`)\n }\n return downloadBuilderToolset({\n releaseName: `win-codesign@${winCodeSign}`,\n filenameWithExt: \"dotnet-runtime-win-x64-8_0_28.zip\",\n checksums: { \"dotnet-runtime-win-x64-8_0_28.zip\": checksum },\n })\n}\n\nexport async function getRceditBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, resourcesDir = \"\") {\n const ia32 = \"rcedit-ia32.exe\"\n const x86 = \"rcedit-x86.exe\"\n const x64 = \"rcedit-x64.exe\"\n if (typeof winCodeSign === \"object\" && winCodeSign != null) {\n const vendorPath = sanitizeDirPath(await getCustomToolsetPath(winCodeSign, resourcesDir), resourcesDir || undefined)\n return { x86: path.join(vendorPath, x86), x64: path.join(vendorPath, x64) }\n }\n if (winCodeSign === \"0.0.0\" || winCodeSign == null) {\n const vendorPath = sanitizeDirPath(await getLegacyWinCodeSignBin())\n return { x86: path.join(vendorPath, ia32), x64: path.join(vendorPath, x64) }\n }\n const file = \"rcedit-windows-2_0_0.zip\"\n const vendorPath = sanitizeDirPath(await _getWindowsToolsBin(winCodeSign, file))\n return { x86: path.join(vendorPath, x86), x64: path.join(vendorPath, x64) }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"winCodeSign.js","sourceRoot":"","sources":["../../src/toolsets/winCodeSign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEzE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAY,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAA;AAE1C,SAAS,uBAAuB;IAC9B,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,mBAAmB;QAChC,eAAe,EAAE,sBAAsB;QACvC,SAAS,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,kEAAkE,EAAE;KAC5G,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE;IACP,qEAAqE;KACtE;IACD,OAAO,EAAE;QACP,0BAA0B,EAAE,kEAAkE;QAC9F,+BAA+B,EAAE,kEAAkE;QACnG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,8BAA8B,EAAE,kEAAkE;QAClG,6BAA6B,EAAE,kEAAkE;QACjG,8BAA8B,EAAE,kEAAkE;QAClG,sCAAsC,EAAE,kEAAkE;KAC3G;IACD,OAAO,EAAE;QACP,0BAA0B,EAAE,kEAAkE;QAC9F,+BAA+B,EAAE,kEAAkE;QACnG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,8BAA8B,EAAE,kEAAkE;QAClG,6BAA6B,EAAE,kEAAkE;QACjG,8BAA8B,EAAE,kEAAkE;QAClG,sCAAsC,EAAE,kEAAkE;KAC3G;IACD,OAAO,EAAE;QACP,0BAA0B,EAAE,kEAAkE;QAC9F,+BAA+B,EAAE,kEAAkE;QACnG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,8BAA8B,EAAE,kEAAkE;QAClG,6BAA6B,EAAE,kEAAkE;QACjG,8BAA8B,EAAE,kEAAkE;QAClG,sCAAsC,EAAE,kEAAkE;KAC3G;IACD,OAAO,EAAE;QACP,0BAA0B,EAAE,kEAAkE;QAC9F,+BAA+B,EAAE,kEAAkE;QACnG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,8BAA8B,EAAE,kEAAkE;QAClG,6BAA6B,EAAE,kEAAkE;QACjG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,sCAAsC,EAAE,kEAAkE;KAC3G;IACD,OAAO,EAAE;QACP,uBAAuB,EAAE,kEAAkE,EAAE,MAAM;QACnG,mCAAmC,EAAE,kEAAkE,EAAE,MAAM;QAC/G,0BAA0B,EAAE,kEAAkE;QAC9F,+BAA+B,EAAE,kEAAkE;QACnG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,8BAA8B,EAAE,kEAAkE;QAClG,6BAA6B,EAAE,kEAAkE;QACjG,gCAAgC,EAAE,kEAAkE;QACpG,8BAA8B,EAAE,kEAAkE;QAClG,sCAAsC,EAAE,kEAAkE;KAC3G;CACO,CAAA;AAIV,SAAS,mBAAmB,CAA+B,WAAc,EAAE,IAA4C;IACrH,MAAM,eAAe,GAAG,IAAc,CAAA;IACtC,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,gBAAgB,WAAW,EAAE;QAC1C,eAAe;QACf,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAW,EAAE;KACpF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmD,EAAE,KAAc,EAAE,YAAoB;IAC7H,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;IAC7E,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACrE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAA;IAC/C,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAkF;IACtJ,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IACvD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,YAAY,IAAI,SAAS,CAAC,CAAA;QACpH,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;IACxE,CAAC;IAED,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAA;IACvE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAA;QACnE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,sCAAsC,CAAA;IACnD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5E,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAC/B,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACrE,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,EAAkF;IACrJ,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,qBAAqB,CAAC,WAAW,EAAE,mBAAmB,CAAC,KAAK,OAAO,EAAE,CAAC;QAC3G,wEAAwE;QACxE,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAA;QACnE,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAA;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;QACtG,CAAC;IACH,CAAC;IACD,mDAAmD;IACnD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,oBAAoB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAA;IACzE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;AACvC,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,WAAmD,EAAE,YAAY,GAAG,EAAE;IACzG,mHAAmH;IACnH,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,YAAY,IAAI,SAAS,CAAC,CAAA;QACpH,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAA;IACxD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,6GAA6G;QAC7G,2GAA2G;QAC3G,MAAM,IAAI,yBAAyB,CACjC,0KAA0K,CAC3K,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAA;IACvE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QAC9F,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IACzJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,OAAO,8BAA8B,CAAA;YACvC,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACpC,OAAO,8BAA8B,CAAA;YACvC,CAAC;YACD,OAAO,6BAA6B,CAAA;QACtC,CAAC;QACD,eAAe;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,+BAA+B,CAAA;QACxC,CAAC;QACD,OAAO,gCAAgC,CAAA;IACzC,CAAC,CAAC,EAAE,CAAA;IACJ,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5E,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAA;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,MAAM,OAAO,GAAG,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAA;IAC5E,MAAM,QAAQ,GAAI,oBAA+D,CAAC,OAAO,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAA;IACrH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,sDAAsD,CAAC,CAAA;IACxG,CAAC;IACD,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,gBAAgB,OAAO,EAAE;QACtC,eAAe,EAAE,uBAAuB;QACxC,SAAS,EAAE,EAAE,uBAAuB,EAAE,QAAQ,EAAE;KACjD,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,MAAM,OAAO,GAAG,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAA;IAC5E,MAAM,QAAQ,GAAI,oBAA+D,CAAC,OAAO,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAA;IACjI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,8DAA8D,CAAC,CAAA;IAChH,CAAC;IACD,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,gBAAgB,OAAO,EAAE;QACtC,eAAe,EAAE,mCAAmC;QACpD,SAAS,EAAE,EAAE,mCAAmC,EAAE,QAAQ,EAAE;KAC7D,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmD,EAAE,YAAY,GAAG,EAAE;IAC1G,MAAM,IAAI,GAAG,iBAAiB,CAAA;IAC9B,MAAM,GAAG,GAAG,gBAAgB,CAAA;IAC5B,MAAM,GAAG,GAAG,gBAAgB,CAAA;IAC5B,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,YAAY,IAAI,SAAS,CAAC,CAAA;QACpH,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAA;IACvE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAA;QACnE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;IAC9E,CAAC;IACD,MAAM,IAAI,GAAG,0BAA0B,CAAA;IACvC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5E,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAA;AAC7E,CAAC","sourcesContent":["import { InvalidConfigurationError, sanitizeDirPath } from \"builder-util\"\nimport { Nullish } from \"builder-util-runtime\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { ToolsetConfig } from \"../configuration.js\"\nimport { ToolInfo, computeToolEnv } from \"../util/bundledTool.js\"\nimport { downloadBuilderToolset } from \"../util/electronGet.js\"\nimport { getCustomToolsetPath } from \"./custom.js\"\nimport { resolveToolsetVersion } from \"./version.js\"\n\n// Newest win-codesign bundle — selected when the config is unset / null / \"latest\".\nexport const WIN_CODESIGN_LATEST = \"1.3.0\"\n\nfunction getLegacyWinCodeSignBin(): Promise<string> {\n return downloadBuilderToolset({\n releaseName: \"winCodeSign-2.6.0\",\n filenameWithExt: \"winCodeSign-2.6.0.7z\",\n checksums: { [\"winCodeSign-2.6.0.7z\"]: \"cdaec7154dda7cc31f88d886e2489379a0625a737d610b5ae7f62a12f16743a4\" },\n })\n}\n\nexport const wincodesignChecksums = {\n \"0.0.0\": {\n // legacy — downloads winCodeSign-2.6.0 via getLegacyWinCodeSignBin()\n },\n \"1.0.0\": {\n \"rcedit-windows-2_0_0.zip\": \"589709935902545a8335190b08644cf61b46a9042e34c0c3ef0660a5aeddeaae\",\n \"win-codesign-darwin-arm64.zip\": \"7eb41c3e6e48a75ced6b3384de22185da4bb458960fa410970eedd4e838c5c14\",\n \"win-codesign-darwin-x86_64.zip\": \"3986c97429f002df63490193d7f787281836f055934e3cdd9e69c70a8acb695e\",\n \"win-codesign-linux-amd64.zip\": \"d362a1a981053841554867e3e9dff51fe420fd577b44653df89bd7d3c916b156\",\n \"win-codesign-linux-arm64.zip\": \"fb848d498281f081c937be48dd6ddaf49b0201f32210dfc816ad061c47ecd37b\",\n \"win-codesign-linux-i386.zip\": \"11f8d9ffbf5b01e3bf6321c6d93b9b5e43d0c2d2a9fde1bca07698f2eb967cdf\",\n \"win-codesign-windows-x64.zip\": \"1bd27f9fa553cb14bec8df530cb3caffcfb095f9dd187dab6eaf5e9b7d6e7bff\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"1a12c81024c3499c212fdc5fac34a918e6d199271a39dfc524f6d8da484329bd\",\n },\n \"1.1.0\": {\n \"rcedit-windows-2_0_0.zip\": \"c66591ebe0919c60231f0bf79ff223e6504bfa69bc13edc1fa8bfc6177b73402\",\n \"win-codesign-darwin-arm64.zip\": \"3f263b0e53cdc5410f6165471b2e808aee3148dc792efa23a7c303e7a01e67b7\",\n \"win-codesign-darwin-x86_64.zip\": \"143fbdfcbc53bc273fa181356be8416829778452621484d39eadbe1ce49979ba\",\n \"win-codesign-linux-amd64.zip\": \"65477fe8e40709b0f998928afb8336f82413b123310bf5adaa8efb7ed6ed0eeb\",\n \"win-codesign-linux-arm64.zip\": \"575b01a966f2b775bbea119de263957378e2bd28cbd064d35f9e981827e37b59\",\n \"win-codesign-linux-i386.zip\": \"aa3ce90e9aaa3449a228a3fa30633cdeb6b2791913786677a85c59db1d985598\",\n \"win-codesign-windows-x64.zip\": \"6e5dcc5d7af7c00a7387e2101d1ad986aef80e963a3526da07bd0e65de484c30\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"284f18a2fde66e6ecfbefc3065926c9bfdf641761a9e6cd2bd26e18d1e328bf7\",\n },\n \"1.1.1\": {\n \"rcedit-windows-2_0_0.zip\": \"a4133c265a53a8a6d5063c6d92603dc2dcd47546e50bfd79c93bc56692d6fcb3\",\n \"win-codesign-darwin-arm64.zip\": \"8c655fe77edb326fb6b7051a6f74b0f09843f7d3de7887c1d217088cff47ece6\",\n \"win-codesign-darwin-x86_64.zip\": \"b5882783c910e10b18792ea8c319fa8d6ce9dbbdd0d6a283a504787b3e9e96c6\",\n \"win-codesign-linux-amd64.zip\": \"8e0c05c33b3fb24d41ac41d37b0c70ad9f8c1c82bb667ed60c2a6a8d141b7c62\",\n \"win-codesign-linux-arm64.zip\": \"535f318b8aac1c9487e0f8b58df0a4182103e303ccaca1c9d0ef20b1020e03ca\",\n \"win-codesign-linux-i386.zip\": \"e432f2819f557f9d1175e26f374eec8a368eb23b519c12c690a969ce369966c5\",\n \"win-codesign-windows-x64.zip\": \"47d78ed7e229e891866b0d0e10dde6df9617c32a89fc76a9e280ffabfc80e1fe\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"f7e67213ce690386b2f0a58e3af986dbf223bc1b45ef4a75e77ff85f66b78c94\",\n },\n \"1.2.1\": {\n \"rcedit-windows-2_0_0.zip\": \"1c2b68b9ae41229566c008ce98c4f6cd2b642ace85284e753d1d3509377f9e67\",\n \"win-codesign-darwin-arm64.zip\": \"ac7c1d9279490fc88e9e744ed965ad7e1d377e0219142dab0ab49cfba3ede764\",\n \"win-codesign-darwin-x86_64.zip\": \"7c4188bb301621cde22f918bb2d1a86ef9892ad401a40b7838b80efc9165547d\",\n \"win-codesign-linux-amd64.zip\": \"69b94f71f9189ded6b962718df102e0ffe0a81d506351fecd3df3d73c7166e31\",\n \"win-codesign-linux-arm64.zip\": \"c959031605a5ab994bfd9b84d37bc5bcaba8f39d54a6d69bd2541b2a91ecf723\",\n \"win-codesign-linux-i386.zip\": \"fc937f40655b9839b67ed35cc7b571795b3f7b7b15db10c3026599db43f1c2b1\",\n \"win-codesign-windows-arm64.zip\": \"96390eb3130e63ea9d3641ef076c941c6f51463125498cf53b2503e52c38082d\",\n \"win-codesign-windows-x64.zip\": \"40b1d88ea074de58ddc7595a2b6d30ca23f81bcce33f110102304337538fcbeb\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"9b198db76ae75b124169aef3369fb96c17b39dbf16f16f1264dbd9fd001d976f\",\n },\n \"1.3.0\": {\n \"ats-bundle-1_0_95.zip\": \"93e1441cd8c60f7b7a57a3e0e20a2109994e33a7f42bd04c998204a1928f9f2f\", // new\n \"dotnet-runtime-win-x64-8_0_28.zip\": \"71b9aa960ebaae196a62ec0bb1a4d224e1b48e18b6dc5eed89a37b28b72965ee\", // new\n \"rcedit-windows-2_0_0.zip\": \"84ea279c5d94977fecffbe0f21b073318575dc631a3dae46fadb14309f2eef11\",\n \"win-codesign-darwin-arm64.zip\": \"c5c1e1e106a5feff27d320c57856e362d8f605c09c7c02fc42d9309b72c56372\",\n \"win-codesign-darwin-x86_64.zip\": \"4fd5af2c4c655257685fad1769457419e086ec0862ee36f893b3659e1788c8ca\",\n \"win-codesign-linux-amd64.zip\": \"58c708762b3088a2c6c98494c4813e2a1d030a314a7958c77a2806d58e5efe95\",\n \"win-codesign-linux-arm64.zip\": \"1e9dd1ae149a4e0c988b5529fb983d7a8265cd71e7f3fb5af4cce501005a670c\",\n \"win-codesign-linux-i386.zip\": \"b5c3249fb565bb956a48aaff01bc1bbbd9acaf3c981960f2b754210f9df95cd9\",\n \"win-codesign-windows-arm64.zip\": \"c707709440a07e400b4053d9bab77c9f335505c1701035c2aa8285d880360989\",\n \"win-codesign-windows-x64.zip\": \"40d621aad7593e6298ce1d24798760dcefb053f358be891d74c95386ac2ac50b\",\n \"windows-kits-bundle-10_0_26100_0.zip\": \"2eeb955e580103e1bbecf9666dca87b141c3bb73ad99ead64bb8821755694ecd\",\n },\n} as const\n\ntype CodeSignVersionKey = keyof typeof wincodesignChecksums\n\nfunction _getWindowsToolsBin<V extends CodeSignVersionKey>(winCodeSign: V, file: keyof (typeof wincodesignChecksums)[V]): Promise<string> {\n const filenameWithExt = file as string\n return downloadBuilderToolset({\n releaseName: `win-codesign@${winCodeSign}`,\n filenameWithExt,\n checksums: { [filenameWithExt]: wincodesignChecksums[winCodeSign][file] as string },\n })\n}\n\nexport async function getSignToolPath(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, isWin: boolean, resourcesDir: string): Promise<ToolInfo> {\n if (isWin) {\n return { path: await getWindowsSignToolExe({ winCodeSign, resourcesDir }) }\n } else {\n const vendor = await getOsslSigncodeBundle(winCodeSign, resourcesDir)\n return { path: vendor.path, env: vendor.env }\n }\n}\n\n/**\n * Resolve the Windows Kits bundle paths.\n *\n * The `kit` subdirectory holds HOST executables (`signtool.exe` / `makeappx.exe` / `makepri.exe`), so\n * it is always the x64 kit (x86 on 32-bit hosts) — never arm64. x64 binaries run on x64 hosts natively\n * and on arm64 Windows via emulation, whereas an arm64 binary cannot run on an x64 host and fails with\n * `spawn UNKNOWN`. The artifact's target arch is irrelevant here.\n * `appxAssets` is arch-independent (the bundle root).\n */\nexport async function getWindowsKitsBundle({ winCodeSign, resourcesDir }: { winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish; resourcesDir?: string }) {\n const kitArch = process.arch === \"ia32\" ? \"x86\" : \"x64\"\n if (typeof winCodeSign === \"object\" && winCodeSign != null) {\n const vendorPath = sanitizeDirPath(await getCustomToolsetPath(winCodeSign, resourcesDir), resourcesDir || undefined)\n return { kit: path.join(vendorPath, kitArch), appxAssets: vendorPath }\n }\n\n const version = resolveToolsetVersion(winCodeSign, WIN_CODESIGN_LATEST)\n if (version === \"0.0.0\") {\n const vendorPath = sanitizeDirPath(await getLegacyWinCodeSignBin())\n return { kit: path.join(vendorPath, \"windows-10\", kitArch), appxAssets: vendorPath }\n }\n const file = \"windows-kits-bundle-10_0_26100_0.zip\"\n const vendorPath = sanitizeDirPath(await _getWindowsToolsBin(version, file))\n return { kit: path.join(vendorPath, kitArch), appxAssets: vendorPath }\n}\n\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nasync function getWindowsSignToolExe({ winCodeSign, resourcesDir = \"\" }: { winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish; resourcesDir?: string }) {\n if (typeof winCodeSign !== \"object\" && resolveToolsetVersion(winCodeSign, WIN_CODESIGN_LATEST) === \"0.0.0\") {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n const vendorPath = sanitizeDirPath(await getLegacyWinCodeSignBin())\n if (isOldWin6()) {\n return path.join(vendorPath, \"windows-6\", \"signtool.exe\")\n } else {\n return path.join(vendorPath, \"windows-10\", process.arch === \"ia32\" ? \"ia32\" : \"x64\", \"signtool.exe\")\n }\n }\n // kit is already sanitized by getWindowsKitsBundle\n const { kit } = await getWindowsKitsBundle({ winCodeSign, resourcesDir })\n return path.join(kit, \"signtool.exe\")\n}\n\nasync function getOsslSigncodeBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, resourcesDir = \"\") {\n // A custom toolset is an explicit user override — honored on every platform, before any platform default/fallback.\n if (typeof winCodeSign === \"object\" && winCodeSign != null) {\n const vendorPath = sanitizeDirPath(await getCustomToolsetPath(winCodeSign, resourcesDir), resourcesDir || undefined)\n return { path: path.join(vendorPath, \"osslsigncode\") }\n }\n\n if (process.platform === \"win32\") {\n // Unreachable in normal flow: osslsigncode is only requested when the host is not Windows (Windows signs via\n // signtool). Kept as defense-in-depth — fail loudly instead of resolving a bare `osslsigncode` from $PATH.\n throw new InvalidConfigurationError(\n `osslsigncode is not used on Windows (signing uses signtool). To override, configure a custom toolset: toolsets: { winCodeSign: { url: \"file:///absolute/path/to/dir\" } }`\n )\n }\n\n const version = resolveToolsetVersion(winCodeSign, WIN_CODESIGN_LATEST)\n if (version === \"0.0.0\") {\n const legacyBase = sanitizeDirPath(await getLegacyWinCodeSignBin())\n const vendorBase = path.join(legacyBase, process.platform)\n const vendorPath = process.platform === \"darwin\" ? path.join(vendorBase, \"10.12\") : vendorBase\n return { path: path.join(vendorPath, \"osslsigncode\"), env: process.platform === \"darwin\" ? computeToolEnv([path.join(vendorPath, \"lib\")]) : undefined }\n }\n\n const file = (() => {\n if (process.platform === \"linux\") {\n if (process.arch == \"x64\") {\n return \"win-codesign-linux-amd64.zip\"\n } else if (process.arch === \"arm64\") {\n return \"win-codesign-linux-arm64.zip\"\n }\n return \"win-codesign-linux-i386.zip\"\n }\n // darwin arm64\n if (process.arch === \"arm64\") {\n return \"win-codesign-darwin-arm64.zip\"\n }\n return \"win-codesign-darwin-x86_64.zip\"\n })()\n const vendorPath = sanitizeDirPath(await _getWindowsToolsBin(version, file))\n return { path: path.join(vendorPath, \"osslsigncode\") }\n}\n\nexport async function getAtsBundleDir(winCodeSign: string): Promise<string> {\n const version = winCodeSign === \"latest\" ? WIN_CODESIGN_LATEST : winCodeSign\n const checksum = (wincodesignChecksums as Record<string, Record<string, string>>)[version]?.[\"ats-bundle-1_0_95.zip\"]\n if (!checksum) {\n throw new Error(`winCodeSign version \"${version}\" does not include an ATS bundle (requires >= 1.3.0)`)\n }\n return downloadBuilderToolset({\n releaseName: `win-codesign@${version}`,\n filenameWithExt: \"ats-bundle-1_0_95.zip\",\n checksums: { \"ats-bundle-1_0_95.zip\": checksum },\n })\n}\n\nexport async function getDotnetRuntimeDir(winCodeSign: string): Promise<string> {\n const version = winCodeSign === \"latest\" ? WIN_CODESIGN_LATEST : winCodeSign\n const checksum = (wincodesignChecksums as Record<string, Record<string, string>>)[version]?.[\"dotnet-runtime-win-x64-8_0_28.zip\"]\n if (!checksum) {\n throw new Error(`winCodeSign version \"${version}\" does not include a .NET runtime bundle (requires >= 1.3.0)`)\n }\n return downloadBuilderToolset({\n releaseName: `win-codesign@${version}`,\n filenameWithExt: \"dotnet-runtime-win-x64-8_0_28.zip\",\n checksums: { \"dotnet-runtime-win-x64-8_0_28.zip\": checksum },\n })\n}\n\nexport async function getRceditBundle(winCodeSign: ToolsetConfig[\"winCodeSign\"] | Nullish, resourcesDir = \"\") {\n const ia32 = \"rcedit-ia32.exe\"\n const x86 = \"rcedit-x86.exe\"\n const x64 = \"rcedit-x64.exe\"\n if (typeof winCodeSign === \"object\" && winCodeSign != null) {\n const vendorPath = sanitizeDirPath(await getCustomToolsetPath(winCodeSign, resourcesDir), resourcesDir || undefined)\n return { x86: path.join(vendorPath, x86), x64: path.join(vendorPath, x64) }\n }\n const version = resolveToolsetVersion(winCodeSign, WIN_CODESIGN_LATEST)\n if (version === \"0.0.0\") {\n const vendorPath = sanitizeDirPath(await getLegacyWinCodeSignBin())\n return { x86: path.join(vendorPath, ia32), x64: path.join(vendorPath, x64) }\n }\n const file = \"rcedit-windows-2_0_0.zip\"\n const vendorPath = sanitizeDirPath(await _getWindowsToolsBin(version, file))\n return { x86: path.join(vendorPath, x86), x64: path.join(vendorPath, x64) }\n}\n"]}
|
package/dist/toolsets/wine.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { Nullish } from "builder-util-runtime";
|
|
1
2
|
import { ToolsetConfig } from "../configuration.js";
|
|
2
|
-
export declare function getWineToolset(wine: ToolsetConfig["wine"], resourcesDir: string): Promise<{
|
|
3
|
+
export declare function getWineToolset(wine: ToolsetConfig["wine"] | Nullish, resourcesDir: string): Promise<{
|
|
3
4
|
execPath: string;
|
|
4
5
|
env: Record<string, string>;
|
|
5
6
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wine.d.ts","sourceRoot":"","sources":["../../src/toolsets/wine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wine.d.ts","sourceRoot":"","sources":["../../src/toolsets/wine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAmBnD,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAiD5J"}
|
package/dist/toolsets/wine.js
CHANGED
|
@@ -3,6 +3,8 @@ import * as path from "path";
|
|
|
3
3
|
import { downloadBuilderToolset } from "../util/electronGet.js";
|
|
4
4
|
import { getCustomToolsetPath } from "./custom.js";
|
|
5
5
|
const githubOrgRepo = "electron-userland/electron-builder-binaries";
|
|
6
|
+
// Newest wine bundle — selected when the config is unset / null / "latest".
|
|
7
|
+
const WINE_LATEST = "1.0.1";
|
|
6
8
|
const wineToolsChecksums = {
|
|
7
9
|
"0.0.0": {
|
|
8
10
|
"wine-4.0.1-mac.7z": "1baac808a67975b68b9226beea7b64ad0acc3e598a4b45c25bb5d2ae8cac655e",
|
|
@@ -28,27 +30,27 @@ export async function getWineToolset(wine, resourcesDir) {
|
|
|
28
30
|
// Linux ships no portable bundle for string/null configs → fall back to the host wine binary.
|
|
29
31
|
return { execPath: "wine", env: defaultEnv };
|
|
30
32
|
}
|
|
31
|
-
else if (wine === "
|
|
32
|
-
// Explicit opt-in to the
|
|
33
|
-
// Not the default yet — request it explicitly via `toolsets.wine = "1.0.1"`.
|
|
34
|
-
const file = process.platform === "darwin" ? "wine-11.0-darwin-x86_64.tar.xz" : "wine-11.0-linux-x86_64.tar.xz";
|
|
33
|
+
else if (wine === "0.0.0") {
|
|
34
|
+
// Explicit opt-in to the legacy wine-4.0.1-mac bundle (pre-v27).
|
|
35
35
|
toolsetPath = await downloadBuilderToolset({
|
|
36
|
-
releaseName: "wine
|
|
37
|
-
filenameWithExt:
|
|
38
|
-
checksums: wineToolsChecksums["
|
|
36
|
+
releaseName: "wine-4.0.1-mac",
|
|
37
|
+
filenameWithExt: "wine-4.0.1-mac.7z",
|
|
38
|
+
checksums: wineToolsChecksums["0.0.0"],
|
|
39
39
|
githubOrgRepo,
|
|
40
40
|
});
|
|
41
|
-
execSubPath =
|
|
41
|
+
execSubPath = path.join("bin", "wine64");
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
// Default (null / undefined) and "
|
|
44
|
+
// Default (null / undefined / "latest") and explicit "1.0.1" → bundled wine@1.0.1
|
|
45
|
+
// (wine 11; arm64 macOS via Rosetta).
|
|
46
|
+
const file = process.platform === "darwin" ? "wine-11.0-darwin-x86_64.tar.xz" : "wine-11.0-linux-x86_64.tar.xz";
|
|
45
47
|
toolsetPath = await downloadBuilderToolset({
|
|
46
|
-
releaseName:
|
|
47
|
-
filenameWithExt:
|
|
48
|
-
checksums: wineToolsChecksums[
|
|
48
|
+
releaseName: `wine@${WINE_LATEST}`,
|
|
49
|
+
filenameWithExt: file,
|
|
50
|
+
checksums: wineToolsChecksums[WINE_LATEST],
|
|
49
51
|
githubOrgRepo,
|
|
50
52
|
});
|
|
51
|
-
execSubPath = path.join("bin", "wine64"
|
|
53
|
+
execSubPath = (await exists(path.join(toolsetPath, "bin", "wine"))) ? "bin/wine" : "bin/wine64";
|
|
52
54
|
}
|
|
53
55
|
const { execPath, winePrefix, wineLibPath } = await createWineEnvironment(toolsetPath, execSubPath);
|
|
54
56
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wine.js","sourceRoot":"","sources":["../../src/toolsets/wine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"wine.js","sourceRoot":"","sources":["../../src/toolsets/wine.ts"],"names":[],"mappings":"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","sourcesContent":["import { exists, InvalidConfigurationError, sanitizeDirPath } from \"builder-util\"\nimport { Nullish } from \"builder-util-runtime\"\nimport * as path from \"path\"\nimport { ToolsetConfig } from \"../configuration.js\"\nimport { downloadBuilderToolset } from \"../util/electronGet.js\"\nimport { getCustomToolsetPath } from \"./custom.js\"\n\nconst githubOrgRepo = \"electron-userland/electron-builder-binaries\"\n\n// Newest wine bundle — selected when the config is unset / null / \"latest\".\nconst WINE_LATEST = \"1.0.1\"\n\nconst wineToolsChecksums: Record<string, Record<string, string>> = {\n \"0.0.0\": {\n \"wine-4.0.1-mac.7z\": \"1baac808a67975b68b9226beea7b64ad0acc3e598a4b45c25bb5d2ae8cac655e\",\n },\n \"1.0.1\": {\n \"wine-11.0-darwin-x86_64.tar.xz\": \"0a4a43867ef225c70ed8d4198aaba24a55cb0e52e5d67b0ac99563e6351a3c61\",\n \"wine-11.0-linux-x86_64.tar.xz\": \"d8cf95442957b75c07166540142c96d8f7be6a68a572cc656194e7b42e8a0f13\",\n },\n}\n\nexport async function getWineToolset(wine: ToolsetConfig[\"wine\"] | Nullish, resourcesDir: string): Promise<{ execPath: string; env: Record<string, string> }> {\n if (process.platform === \"win32\") {\n throw new InvalidConfigurationError(`Wine toolset is not supported on Windows, but got: ${wine}`)\n }\n\n const defaultEnv = { WINEDEBUG: \"-all,err+all\", WINEDLLOVERRIDES: \"winemenubuilder.exe=d\" }\n\n let toolsetPath: string\n let execSubPath: string\n\n if (typeof wine === \"object\" && wine != null) {\n // Custom toolset — honored on every platform (never overridden by the Linux host-wine fallback below).\n toolsetPath = await getCustomToolsetPath(wine, resourcesDir)\n execSubPath = (await exists(path.join(toolsetPath, \"bin\", \"wine\"))) ? \"bin/wine\" : \"bin/wine64\"\n } else if (process.platform === \"linux\") {\n // Linux ships no portable bundle for string/null configs → fall back to the host wine binary.\n return { execPath: \"wine\", env: defaultEnv }\n } else if (wine === \"0.0.0\") {\n // Explicit opt-in to the legacy wine-4.0.1-mac bundle (pre-v27).\n toolsetPath = await downloadBuilderToolset({\n releaseName: \"wine-4.0.1-mac\",\n filenameWithExt: \"wine-4.0.1-mac.7z\",\n checksums: wineToolsChecksums[\"0.0.0\"],\n githubOrgRepo,\n })\n execSubPath = path.join(\"bin\", \"wine64\")\n } else {\n // Default (null / undefined / \"latest\") and explicit \"1.0.1\" → bundled wine@1.0.1\n // (wine 11; arm64 macOS via Rosetta).\n const file = process.platform === \"darwin\" ? \"wine-11.0-darwin-x86_64.tar.xz\" : \"wine-11.0-linux-x86_64.tar.xz\"\n toolsetPath = await downloadBuilderToolset({\n releaseName: `wine@${WINE_LATEST}`,\n filenameWithExt: file,\n checksums: wineToolsChecksums[WINE_LATEST],\n githubOrgRepo,\n })\n execSubPath = (await exists(path.join(toolsetPath, \"bin\", \"wine\"))) ? \"bin/wine\" : \"bin/wine64\"\n }\n\n const { execPath, winePrefix, wineLibPath } = await createWineEnvironment(toolsetPath, execSubPath)\n return {\n execPath,\n env: {\n ...defaultEnv,\n WINEPREFIX: winePrefix,\n DYLD_FALLBACK_LIBRARY_PATH: [wineLibPath, process.env.DYLD_FALLBACK_LIBRARY_PATH].filter(Boolean).join(path.delimiter),\n LD_LIBRARY_PATH: [wineLibPath, process.env.LD_LIBRARY_PATH].filter(Boolean).join(path.delimiter),\n },\n }\n}\n\nasync function createWineEnvironment(toolsetPath: string, execSubPath: string) {\n const sanitizedWinePath = sanitizeDirPath(toolsetPath)\n\n const execPath = path.resolve(sanitizedWinePath, execSubPath)\n const winePrefix = path.resolve(sanitizedWinePath, \"wine-home\")\n\n for (const p of [execPath, winePrefix]) {\n if (!(await exists(p))) {\n throw new InvalidConfigurationError(`Wine toolset at \"${toolsetPath}\" is missing expected path: ${p}`)\n }\n }\n\n // Modern bundles ship a `lib` dir; the legacy wine-4.0.1-mac bundle ships `lib64` instead.\n let wineLibPath: string | null = null\n for (const libDir of [\"lib\", \"lib64\"]) {\n const candidate = path.resolve(sanitizedWinePath, libDir)\n if (await exists(candidate)) {\n wineLibPath = candidate\n break\n }\n }\n if (wineLibPath == null) {\n throw new InvalidConfigurationError(`Wine toolset at \"${toolsetPath}\" is missing expected library directory (lib or lib64)`)\n }\n\n return { execPath, winePrefix, wineLibPath }\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { realpathSync } from "fs";
|
|
|
3
3
|
import fsExtra from "fs-extra";
|
|
4
4
|
import * as path from "path";
|
|
5
5
|
import asyncPool from "tiny-async-pool";
|
|
6
|
-
import {
|
|
6
|
+
import { DEFAULT_EXCLUDED_NAMES } from "../fileMatcher.js";
|
|
7
7
|
import { FileCopyHelper } from "./AppFileWalker.js";
|
|
8
8
|
import { resolveFunction } from "./resolve.js";
|
|
9
9
|
const excludedFiles = new Set([
|
|
@@ -17,7 +17,7 @@ const excludedFiles = new Set([
|
|
|
17
17
|
"binding.gyp",
|
|
18
18
|
".npmignore",
|
|
19
19
|
"node_gyp_bins",
|
|
20
|
-
].concat(
|
|
20
|
+
].concat(DEFAULT_EXCLUDED_NAMES));
|
|
21
21
|
const topLevelExcludedFiles = new Set([
|
|
22
22
|
"karma.conf.js",
|
|
23
23
|
".coveralls.yml",
|
|
@@ -70,7 +70,7 @@ export class NodeModuleCopyHelper extends FileCopyHelper {
|
|
|
70
70
|
}
|
|
71
71
|
// check if filematcher matches the files array as more important than the default excluded files.
|
|
72
72
|
const fileMatched = filter != null && filter(dirPath, fsExtra.lstatSync(dirPath));
|
|
73
|
-
if (!fileMatched || !forceIncluded
|
|
73
|
+
if (!fileMatched || !forceIncluded) {
|
|
74
74
|
for (const ext of nodeModuleExcludedExts) {
|
|
75
75
|
if (name.endsWith(ext)) {
|
|
76
76
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeModuleCopyHelper.js","sourceRoot":"","sources":["../../src/util/NodeModuleCopyHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { FilterStats, MAX_FILE_REQUESTS } from \"builder-util\"\nimport { realpathSync } from \"fs\"\nimport fsExtra from \"fs-extra\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { excludedNames, FileMatcher } from \"../fileMatcher.js\"\nimport { PlatformPackager } from \"../platformPackager.js\"\nimport { FileCopyHelper } from \"./AppFileWalker.js\"\nimport { NodeModuleInfo } from \"../node-module-collector/types.js\"\nimport { resolveFunction } from \"./resolve.js\"\n\nconst excludedFiles = new Set(\n [\n \".DS_Store\",\n \"node_modules\" /* already in the queue */,\n \"CHANGELOG.md\",\n \"ChangeLog\",\n \"changelog.md\",\n \"Changelog.md\",\n \"Changelog\",\n \"binding.gyp\",\n \".npmignore\",\n \"node_gyp_bins\",\n ].concat(excludedNames.split(\",\"))\n)\n\nconst topLevelExcludedFiles = new Set([\n \"karma.conf.js\",\n \".coveralls.yml\",\n \"README.md\",\n \"readme.markdown\",\n \"README\",\n \"readme.md\",\n \"Readme.md\",\n \"Readme\",\n \"readme\",\n \"test\",\n \"tests\",\n \"__tests__\",\n \"powered-test\",\n \"example\",\n \"examples\",\n \".bin\",\n])\n\n/** @internal */\nexport class NodeModuleCopyHelper extends FileCopyHelper {\n constructor(matcher: FileMatcher, packager: PlatformPackager<any>) {\n super(matcher, matcher.isEmpty() ? null : matcher.createFilter(), packager)\n }\n\n async collectNodeModules(moduleInfo: NodeModuleInfo, nodeModuleExcludedExts: Array<string>, destination: string): Promise<Array<string>> {\n const filter = this.filter\n const metadata = this.metadata\n\n const onNodeModuleFile = await resolveFunction(this.packager.appInfo.type, this.packager.config.onNodeModuleFile, \"onNodeModuleFile\", await this.packager.getWorkspaceRoot())\n\n const result: Array<string | undefined> = []\n const queue: Array<string> = []\n const emptyDirs: Set<string> = new Set()\n const symlinkFiles: Map<string, number> = new Map()\n const tmpPath = moduleInfo.dir\n const moduleName = moduleInfo.name\n queue.length = 1\n // The path should be corrected in Windows that when the moduleName is Scoped packages named.\n const depPath = path.normalize(tmpPath)\n queue[0] = depPath\n\n while (queue.length > 0) {\n const dirPath = queue.pop()!\n\n const childNames = await fsExtra.readdir(dirPath)\n childNames.sort()\n\n const isTopLevel = dirPath === depPath\n const dirs: Array<string> = []\n // our handler is async, but we should add sorted files, so, we add file to result not in the mapper, but after map\n const sortedFilePaths = await asyncPool(MAX_FILE_REQUESTS, childNames, async name => {\n const filePath = path.join(dirPath, name)\n\n const forceIncluded = onNodeModuleFile != null && !!onNodeModuleFile(filePath)\n\n if (excludedFiles.has(name) || name.startsWith(\"._\")) {\n return null\n }\n\n // check if filematcher matches the files array as more important than the default excluded files.\n const fileMatched = filter != null && filter(dirPath, fsExtra.lstatSync(dirPath))\n if (!fileMatched || !forceIncluded || !!this.packager.config.disableDefaultIgnoredFiles) {\n for (const ext of nodeModuleExcludedExts) {\n if (name.endsWith(ext)) {\n return null\n }\n }\n\n // noinspection SpellCheckingInspection\n if (isTopLevel && (topLevelExcludedFiles.has(name) || (moduleName === \"libui-node\" && (name === \"build\" || name === \"docs\" || name === \"src\")))) {\n return null\n }\n\n if (dirPath.endsWith(\"build\")) {\n if (name === \"gyp-mac-tool\" || name === \"Makefile\" || name.endsWith(\".mk\") || name.endsWith(\".gypi\") || name.endsWith(\".Makefile\")) {\n return null\n }\n } else if (dirPath.endsWith(\"Release\") && (name === \".deps\" || name === \"obj.target\")) {\n return null\n } else if (name === \"src\" && (dirPath.endsWith(\"keytar\") || dirPath.endsWith(\"keytar-prebuild\"))) {\n return null\n } else if (dirPath.endsWith(\"lzma-native\") && (name === \"build\" || name === \"deps\")) {\n return null\n }\n }\n\n return fsExtra.lstat(filePath).then((stat: FilterStats) => {\n stat.moduleName = moduleName\n stat.moduleRootPath = destination\n stat.moduleFullFilePath = path.join(destination, path.relative(depPath, filePath))\n if (filter != null && !filter(filePath, stat)) {\n return null\n }\n\n if (!stat.isDirectory()) {\n metadata.set(filePath, stat)\n }\n const consumerResult = this.handleFile(filePath, dirPath, stat)\n if (consumerResult == null) {\n if (stat.isDirectory()) {\n dirs.push(name)\n return null\n } else {\n return filePath\n }\n } else {\n return consumerResult.then(it => {\n // asarUtil can return modified stat (symlink handling)\n if ((it == null ? stat : it).isDirectory()) {\n dirs.push(name)\n return null\n } else {\n return filePath\n }\n })\n }\n })\n })\n\n let isEmpty = true\n for (const child of sortedFilePaths) {\n if (child != null) {\n result.push(child)\n if (this.metadata.get(child)?.isSymbolicLink()) {\n symlinkFiles.set(child, result.length - 1)\n }\n isEmpty = false\n }\n }\n\n if (isEmpty) {\n emptyDirs.add(dirPath)\n }\n\n dirs.sort()\n for (const child of dirs) {\n queue.push(dirPath + path.sep + child)\n }\n }\n\n for (const [file, index] of symlinkFiles) {\n const resolvedPath = realpathSync(file)\n if (emptyDirs.has(resolvedPath)) {\n // delete symlink file if target is a empty dir\n result[index] = undefined\n }\n }\n return result.filter((it): it is string => it !== undefined)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"NodeModuleCopyHelper.js","sourceRoot":"","sources":["../../src/util/NodeModuleCopyHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { FilterStats, MAX_FILE_REQUESTS } from \"builder-util\"\nimport { realpathSync } from \"fs\"\nimport fsExtra from \"fs-extra\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { DEFAULT_EXCLUDED_NAMES, FileMatcher } from \"../fileMatcher.js\"\nimport { PlatformPackager } from \"../platformPackager.js\"\nimport { FileCopyHelper } from \"./AppFileWalker.js\"\nimport { NodeModuleInfo } from \"../node-module-collector/types.js\"\nimport { resolveFunction } from \"./resolve.js\"\n\nconst excludedFiles = new Set(\n [\n \".DS_Store\",\n \"node_modules\" /* already in the queue */,\n \"CHANGELOG.md\",\n \"ChangeLog\",\n \"changelog.md\",\n \"Changelog.md\",\n \"Changelog\",\n \"binding.gyp\",\n \".npmignore\",\n \"node_gyp_bins\",\n ].concat(DEFAULT_EXCLUDED_NAMES)\n)\n\nconst topLevelExcludedFiles = new Set([\n \"karma.conf.js\",\n \".coveralls.yml\",\n \"README.md\",\n \"readme.markdown\",\n \"README\",\n \"readme.md\",\n \"Readme.md\",\n \"Readme\",\n \"readme\",\n \"test\",\n \"tests\",\n \"__tests__\",\n \"powered-test\",\n \"example\",\n \"examples\",\n \".bin\",\n])\n\n/** @internal */\nexport class NodeModuleCopyHelper extends FileCopyHelper {\n constructor(matcher: FileMatcher, packager: PlatformPackager<any>) {\n super(matcher, matcher.isEmpty() ? null : matcher.createFilter(), packager)\n }\n\n async collectNodeModules(moduleInfo: NodeModuleInfo, nodeModuleExcludedExts: Array<string>, destination: string): Promise<Array<string>> {\n const filter = this.filter\n const metadata = this.metadata\n\n const onNodeModuleFile = await resolveFunction(this.packager.appInfo.type, this.packager.config.onNodeModuleFile, \"onNodeModuleFile\", await this.packager.getWorkspaceRoot())\n\n const result: Array<string | undefined> = []\n const queue: Array<string> = []\n const emptyDirs: Set<string> = new Set()\n const symlinkFiles: Map<string, number> = new Map()\n const tmpPath = moduleInfo.dir\n const moduleName = moduleInfo.name\n queue.length = 1\n // The path should be corrected in Windows that when the moduleName is Scoped packages named.\n const depPath = path.normalize(tmpPath)\n queue[0] = depPath\n\n while (queue.length > 0) {\n const dirPath = queue.pop()!\n\n const childNames = await fsExtra.readdir(dirPath)\n childNames.sort()\n\n const isTopLevel = dirPath === depPath\n const dirs: Array<string> = []\n // our handler is async, but we should add sorted files, so, we add file to result not in the mapper, but after map\n const sortedFilePaths = await asyncPool(MAX_FILE_REQUESTS, childNames, async name => {\n const filePath = path.join(dirPath, name)\n\n const forceIncluded = onNodeModuleFile != null && !!onNodeModuleFile(filePath)\n\n if (excludedFiles.has(name) || name.startsWith(\"._\")) {\n return null\n }\n\n // check if filematcher matches the files array as more important than the default excluded files.\n const fileMatched = filter != null && filter(dirPath, fsExtra.lstatSync(dirPath))\n if (!fileMatched || !forceIncluded) {\n for (const ext of nodeModuleExcludedExts) {\n if (name.endsWith(ext)) {\n return null\n }\n }\n\n // noinspection SpellCheckingInspection\n if (isTopLevel && (topLevelExcludedFiles.has(name) || (moduleName === \"libui-node\" && (name === \"build\" || name === \"docs\" || name === \"src\")))) {\n return null\n }\n\n if (dirPath.endsWith(\"build\")) {\n if (name === \"gyp-mac-tool\" || name === \"Makefile\" || name.endsWith(\".mk\") || name.endsWith(\".gypi\") || name.endsWith(\".Makefile\")) {\n return null\n }\n } else if (dirPath.endsWith(\"Release\") && (name === \".deps\" || name === \"obj.target\")) {\n return null\n } else if (name === \"src\" && (dirPath.endsWith(\"keytar\") || dirPath.endsWith(\"keytar-prebuild\"))) {\n return null\n } else if (dirPath.endsWith(\"lzma-native\") && (name === \"build\" || name === \"deps\")) {\n return null\n }\n }\n\n return fsExtra.lstat(filePath).then((stat: FilterStats) => {\n stat.moduleName = moduleName\n stat.moduleRootPath = destination\n stat.moduleFullFilePath = path.join(destination, path.relative(depPath, filePath))\n if (filter != null && !filter(filePath, stat)) {\n return null\n }\n\n if (!stat.isDirectory()) {\n metadata.set(filePath, stat)\n }\n const consumerResult = this.handleFile(filePath, dirPath, stat)\n if (consumerResult == null) {\n if (stat.isDirectory()) {\n dirs.push(name)\n return null\n } else {\n return filePath\n }\n } else {\n return consumerResult.then(it => {\n // asarUtil can return modified stat (symlink handling)\n if ((it == null ? stat : it).isDirectory()) {\n dirs.push(name)\n return null\n } else {\n return filePath\n }\n })\n }\n })\n })\n\n let isEmpty = true\n for (const child of sortedFilePaths) {\n if (child != null) {\n result.push(child)\n if (this.metadata.get(child)?.isSymbolicLink()) {\n symlinkFiles.set(child, result.length - 1)\n }\n isEmpty = false\n }\n }\n\n if (isEmpty) {\n emptyDirs.add(dirPath)\n }\n\n dirs.sort()\n for (const child of dirs) {\n queue.push(dirPath + path.sep + child)\n }\n }\n\n for (const [file, index] of symlinkFiles) {\n const resolvedPath = realpathSync(file)\n if (emptyDirs.has(resolvedPath)) {\n // delete symlink file if target is a empty dir\n result[index] = undefined\n }\n }\n return result.filter((it): it is string => it !== undefined)\n }\n}\n"]}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { FileTransformer } from "builder-util";
|
|
2
2
|
import { Stats } from "fs";
|
|
3
3
|
import { FileMatcher } from "../fileMatcher.js";
|
|
4
|
+
import { PM } from "../node-module-collector/index.js";
|
|
5
|
+
import { ModuleManager } from "../node-module-collector/moduleManager.js";
|
|
4
6
|
import { Packager } from "../packager.js";
|
|
5
7
|
import { PlatformPackager } from "../platformPackager.js";
|
|
8
|
+
import { NodeModuleInfo } from "../node-module-collector/types.js";
|
|
6
9
|
export declare function getDestinationPath(file: string, fileSet: ResolvedFileSet): string;
|
|
7
10
|
export declare function copyAppFiles(fileSet: ResolvedFileSet, packager: Packager, transformer: FileTransformer): Promise<void>;
|
|
8
11
|
export interface ResolvedFileSet {
|
|
@@ -14,4 +17,40 @@ export interface ResolvedFileSet {
|
|
|
14
17
|
}
|
|
15
18
|
export declare function transformFiles(transformer: FileTransformer, fileSet: ResolvedFileSet): Promise<void>;
|
|
16
19
|
export declare function computeFileSets(matchers: Array<FileMatcher>, transformer: FileTransformer | null, platformPackager: PlatformPackager<any>): Promise<Array<ResolvedFileSet>>;
|
|
20
|
+
type CollectedNodeModules = {
|
|
21
|
+
nodeModules: NodeModuleInfo[];
|
|
22
|
+
logSummary: ModuleManager["logSummary"];
|
|
23
|
+
};
|
|
24
|
+
/** Runs a single package-manager collector against a single directory. */
|
|
25
|
+
type CollectorRunner = (pm: PM, dir: string) => Promise<CollectedNodeModules>;
|
|
26
|
+
/**
|
|
27
|
+
* Determines whether a collected module tree actually describes the package being built.
|
|
28
|
+
*
|
|
29
|
+
* A package-manager `list` invocation can resolve to the wrong project root — most notably when
|
|
30
|
+
* electron-builder is run from a workspace sub-package whose dependencies are hoisted to the
|
|
31
|
+
* workspace root. In that case the collector returns a non-empty but unrelated tree. Accepting it
|
|
32
|
+
* would suppress the manual-traversal fallback that resolves the correct modules, so we need to
|
|
33
|
+
* tell a matching collection from a mismatched one.
|
|
34
|
+
*
|
|
35
|
+
* A collection matches when at least one of the package's declared external (registry-installed,
|
|
36
|
+
* non-`workspace:`/`file:`/`link:`/`portal:`) production dependencies is present at the top level —
|
|
37
|
+
* those direct dependencies are always hoisted to the top level of a correct collection. When the
|
|
38
|
+
* package declares no external production dependencies there is nothing to validate against, so any
|
|
39
|
+
* non-empty collection is accepted.
|
|
40
|
+
*/
|
|
41
|
+
export declare function collectionMatchesAppDependencies(nodeModules: NodeModuleInfo[], dependencies: Record<string, string> | undefined): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Walks the candidate (package-manager, directory) combinations and returns the first collection
|
|
44
|
+
* that both contains modules and matches the package being built (see
|
|
45
|
+
* {@link collectionMatchesAppDependencies}). A non-empty collection that does NOT match — e.g. a
|
|
46
|
+
* workspace-root tree returned for a sub-package — is retained only as a last-resort fallback so a
|
|
47
|
+
* later approach (notably {@link PM.TRAVERSAL}) can supply the correct modules.
|
|
48
|
+
*/
|
|
49
|
+
export declare function resolveFirstMatchingCollection(options: {
|
|
50
|
+
pmApproaches: PM[];
|
|
51
|
+
searchDirectories: string[];
|
|
52
|
+
dependencies: Record<string, string> | undefined;
|
|
53
|
+
run: CollectorRunner;
|
|
54
|
+
}): Promise<CollectedNodeModules | undefined>;
|
|
55
|
+
export {};
|
|
17
56
|
//# sourceMappingURL=appFileCopier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appFileCopier.d.ts","sourceRoot":"","sources":["../../src/util/appFileCopier.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"appFileCopier.d.ts","sourceRoot":"","sources":["../../src/util/appFileCopier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,eAAe,EAAmE,MAAM,cAAc,CAAA;AACnJ,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAA;AAO1B,OAAO,EAA+B,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAgC,EAAE,EAAE,MAAM,mCAAmC,CAAA;AACpF,OAAO,EAAyC,aAAa,EAAE,MAAM,2CAA2C,CAAA;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGzD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAGlE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,UAYxE;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,iBAyC5G;AAGD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IAEnB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAA;CACvD;AAGD,wBAAsB,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC1G;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,eAAe,GAAG,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAkBjL;AA6DD,KAAK,oBAAoB,GAAG;IAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CAAE,CAAA;AAEtG,0EAA0E;AAC1E,KAAK,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAO7E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,OAAO,CASzI;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,YAAY,EAAE,EAAE,EAAE,CAAA;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IAChD,GAAG,EAAE,eAAe,CAAA;CACrB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAqB5C"}
|
|
@@ -5,11 +5,12 @@ import * as path from "path";
|
|
|
5
5
|
import asyncPool from "tiny-async-pool";
|
|
6
6
|
import { isLibOrExe } from "../asar/unpackDetector.js";
|
|
7
7
|
import { Platform } from "../core.js";
|
|
8
|
-
import {
|
|
8
|
+
import { DEFAULT_EXCLUDED_EXTENSIONS, FileMatcher } from "../fileMatcher.js";
|
|
9
9
|
import { getCollectorByPackageManager, PM } from "../node-module-collector/index.js";
|
|
10
10
|
import { logMessageLevelByKey } from "../node-module-collector/moduleManager.js";
|
|
11
11
|
import { AppFileWalker } from "./AppFileWalker.js";
|
|
12
12
|
import { NodeModuleCopyHelper } from "./NodeModuleCopyHelper.js";
|
|
13
|
+
import { archToNodeCpu } from "./archCompatibility.js";
|
|
13
14
|
export function getDestinationPath(file, fileSet) {
|
|
14
15
|
if (file === fileSet.src) {
|
|
15
16
|
return fileSet.destination;
|
|
@@ -109,7 +110,7 @@ export async function computeFileSets(matchers, transformer, platformPackager) {
|
|
|
109
110
|
}
|
|
110
111
|
function getNodeModuleExcludedExts(platformPackager) {
|
|
111
112
|
// do not exclude *.h files (https://github.com/electron-userland/electron-builder/issues/2852)
|
|
112
|
-
const result =
|
|
113
|
+
const result = DEFAULT_EXCLUDED_EXTENSIONS.map(it => `.${it}`);
|
|
113
114
|
if (platformPackager.config.includePdb !== true) {
|
|
114
115
|
result.push(".pdb");
|
|
115
116
|
}
|
|
@@ -127,8 +128,8 @@ function validateFileSet(fileSet) {
|
|
|
127
128
|
return fileSet;
|
|
128
129
|
}
|
|
129
130
|
/** @internal */
|
|
130
|
-
export async function computeNodeModuleFileSets(platformPackager, mainMatcher) {
|
|
131
|
-
const deps = await collectNodeModulesWithLogging(platformPackager);
|
|
131
|
+
export async function computeNodeModuleFileSets(platformPackager, mainMatcher, arch, applyArchFilter = true) {
|
|
132
|
+
const deps = await collectNodeModulesWithLogging(platformPackager, applyArchFilter ? arch : null);
|
|
132
133
|
const nodeModuleExcludedExts = getNodeModuleExcludedExts(platformPackager);
|
|
133
134
|
// serial execution because copyNodeModules is concurrent and so, no need to increase queue/pressure
|
|
134
135
|
const result = new Array();
|
|
@@ -153,29 +154,79 @@ export async function computeNodeModuleFileSets(platformPackager, mainMatcher) {
|
|
|
153
154
|
}
|
|
154
155
|
return result;
|
|
155
156
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
// `workspace:`/`file:`/`link:`/`portal:` dependencies are symlinked into place rather than
|
|
158
|
+
// installed as standalone, hoistable packages, so they may legitimately be absent from a
|
|
159
|
+
// collected tree and cannot be used to validate it.
|
|
160
|
+
const LOCAL_DEPENDENCY_SPEC = /^(?:workspace|file|link|portal):/;
|
|
161
|
+
/**
|
|
162
|
+
* Determines whether a collected module tree actually describes the package being built.
|
|
163
|
+
*
|
|
164
|
+
* A package-manager `list` invocation can resolve to the wrong project root — most notably when
|
|
165
|
+
* electron-builder is run from a workspace sub-package whose dependencies are hoisted to the
|
|
166
|
+
* workspace root. In that case the collector returns a non-empty but unrelated tree. Accepting it
|
|
167
|
+
* would suppress the manual-traversal fallback that resolves the correct modules, so we need to
|
|
168
|
+
* tell a matching collection from a mismatched one.
|
|
169
|
+
*
|
|
170
|
+
* A collection matches when at least one of the package's declared external (registry-installed,
|
|
171
|
+
* non-`workspace:`/`file:`/`link:`/`portal:`) production dependencies is present at the top level —
|
|
172
|
+
* those direct dependencies are always hoisted to the top level of a correct collection. When the
|
|
173
|
+
* package declares no external production dependencies there is nothing to validate against, so any
|
|
174
|
+
* non-empty collection is accepted.
|
|
175
|
+
*/
|
|
176
|
+
export function collectionMatchesAppDependencies(nodeModules, dependencies) {
|
|
177
|
+
const requiredExternalDeps = Object.entries(dependencies ?? {})
|
|
178
|
+
.filter(([, spec]) => !LOCAL_DEPENDENCY_SPEC.test(spec))
|
|
179
|
+
.map(([name]) => name);
|
|
180
|
+
if (requiredExternalDeps.length === 0) {
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
const collected = new Set(nodeModules.map(it => it.name));
|
|
184
|
+
return requiredExternalDeps.some(name => collected.has(name));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Walks the candidate (package-manager, directory) combinations and returns the first collection
|
|
188
|
+
* that both contains modules and matches the package being built (see
|
|
189
|
+
* {@link collectionMatchesAppDependencies}). A non-empty collection that does NOT match — e.g. a
|
|
190
|
+
* workspace-root tree returned for a sub-package — is retained only as a last-resort fallback so a
|
|
191
|
+
* later approach (notably {@link PM.TRAVERSAL}) can supply the correct modules.
|
|
192
|
+
*/
|
|
193
|
+
export async function resolveFirstMatchingCollection(options) {
|
|
194
|
+
const { pmApproaches, searchDirectories, dependencies, run } = options;
|
|
195
|
+
let fallback;
|
|
161
196
|
for (const pm of pmApproaches) {
|
|
162
197
|
for (const dir of searchDirectories) {
|
|
163
198
|
log.info({ pm, searchDir: dir }, "searching for node modules");
|
|
164
|
-
const
|
|
165
|
-
deps
|
|
166
|
-
|
|
167
|
-
|
|
199
|
+
const deps = await run(pm, dir);
|
|
200
|
+
if (deps.nodeModules.length === 0) {
|
|
201
|
+
log.info({ pm, searchDir: dir }, "no node modules found in collection, trying next search directory");
|
|
202
|
+
continue;
|
|
168
203
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
204
|
+
if (collectionMatchesAppDependencies(deps.nodeModules, dependencies)) {
|
|
205
|
+
log.debug({ pm, searchDir: dir, depCount: deps.nodeModules.length }, "collected node modules");
|
|
206
|
+
return deps;
|
|
172
207
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
log.debug({ pm, nodeModules: deps.nodeModules }, "collected node modules");
|
|
176
|
-
break;
|
|
208
|
+
log.info({ pm, searchDir: dir }, "collected node modules do not match the target package, trying next search directory/approach");
|
|
209
|
+
fallback ??= deps;
|
|
177
210
|
}
|
|
178
211
|
}
|
|
212
|
+
return fallback;
|
|
213
|
+
}
|
|
214
|
+
async function collectNodeModulesWithLogging(platformPackager, arch) {
|
|
215
|
+
const { tempDirManager, appDir, projectDir } = platformPackager;
|
|
216
|
+
// Drop packages whose `package.json` `cpu`/`os` is incompatible with the target arch/platform while
|
|
217
|
+
// collecting (e.g. exclude `@esbuild/darwin-arm64` from the x64 slice). See NodeModulesCollector.
|
|
218
|
+
// `null` arch (universal slices) disables the filter so both slices stay symmetric for the merge.
|
|
219
|
+
const archFilter = arch == null ? undefined : { cpu: archToNodeCpu(arch), os: platformPackager.platform.nodeName };
|
|
220
|
+
const searchDirectories = Array.from(new Set([appDir, projectDir, await platformPackager.getWorkspaceRoot()])).filter((it) => isEmptyOrSpaces(it) === false);
|
|
221
|
+
const pmApproaches = [await platformPackager.getPackageManager(), PM.TRAVERSAL];
|
|
222
|
+
// Validate against the as-declared (pre-extraMetadata) production dependencies so a configured
|
|
223
|
+
// `extraMetadata.dependencies` entry that isn't installed cannot reject a correct collection.
|
|
224
|
+
const deps = await resolveFirstMatchingCollection({
|
|
225
|
+
pmApproaches,
|
|
226
|
+
searchDirectories,
|
|
227
|
+
dependencies: platformPackager.originalMetadata.dependencies,
|
|
228
|
+
run: (pm, dir) => getCollectorByPackageManager(pm, dir, tempDirManager).getNodeModules({ packageName: platformPackager.nodePackageName, archFilter }),
|
|
229
|
+
});
|
|
179
230
|
if (!deps?.nodeModules?.length) {
|
|
180
231
|
log.warn({ searchDirectories: searchDirectories.map(it => log.filePath(it)) }, "no node modules returned while searching directories");
|
|
181
232
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appFileCopier.js","sourceRoot":"","sources":["../../src/util/appFileCopier.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncTaskManager, FileCopier, FileTransformer, isEmptyOrSpaces, Link, log, MAX_FILE_REQUESTS, statOrNull, walk } from \"builder-util\"\nimport { Stats } from \"fs\"\nimport fsExtra from \"fs-extra\"\nimport { mkdir, readlink } from \"fs/promises\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { isLibOrExe } from \"../asar/unpackDetector.js\"\nimport { Platform } from \"../core.js\"\nimport { excludedExts, FileMatcher } from \"../fileMatcher.js\"\nimport { getCollectorByPackageManager, PM } from \"../node-module-collector/index.js\"\nimport { LogMessageByKey, logMessageLevelByKey, ModuleManager } from \"../node-module-collector/moduleManager.js\"\nimport { Packager } from \"../packager.js\"\nimport { PlatformPackager } from \"../platformPackager.js\"\nimport { AppFileWalker } from \"./AppFileWalker.js\"\nimport { NodeModuleCopyHelper } from \"./NodeModuleCopyHelper.js\"\nimport { NodeModuleInfo } from \"../node-module-collector/types.js\"\n\nexport function getDestinationPath(file: string, fileSet: ResolvedFileSet) {\n if (file === fileSet.src) {\n return fileSet.destination\n }\n\n const src = fileSet.src\n const dest = fileSet.destination\n // get node_modules path relative to src and then append to dest\n if (file.startsWith(src)) {\n return path.join(dest, path.relative(src, file))\n }\n return dest\n}\n\nexport async function copyAppFiles(fileSet: ResolvedFileSet, packager: Packager, transformer: FileTransformer) {\n const metadata = fileSet.metadata\n // search auto unpacked dir\n const taskManager = new AsyncTaskManager(packager.cancellationToken)\n const createdParentDirs = new Set<string>()\n\n const fileCopier = new FileCopier(file => {\n return !isLibOrExe(file)\n }, transformer)\n const links: Array<Link> = []\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const sourceFile = fileSet.files[i]\n const stat = metadata.get(sourceFile)\n if (stat == null) {\n // dir\n continue\n }\n\n const destinationFile = getDestinationPath(sourceFile, fileSet)\n if (stat.isSymbolicLink()) {\n links.push({ file: destinationFile, link: await readlink(sourceFile) })\n continue\n }\n\n const fileParent = path.dirname(destinationFile)\n if (!createdParentDirs.has(fileParent)) {\n createdParentDirs.add(fileParent)\n await mkdir(fileParent, { recursive: true })\n }\n\n taskManager.addTask(fileCopier.copy(sourceFile, destinationFile, stat))\n if (taskManager.tasks.length > MAX_FILE_REQUESTS) {\n await taskManager.awaitTasks()\n }\n }\n\n if (taskManager.tasks.length > 0) {\n await taskManager.awaitTasks()\n }\n\n await asyncPool(MAX_FILE_REQUESTS, links, it => fsExtra.ensureSymlink(it.link, it.file))\n}\n\n// os path separator is used\nexport interface ResolvedFileSet {\n src: string\n destination: string\n\n files: Array<string>\n metadata: Map<string, Stats>\n transformedFiles?: Map<number, string | Buffer> | null\n}\n\n// used only for ASAR, if no asar, file transformed on the fly\nexport async function transformFiles(transformer: FileTransformer, fileSet: ResolvedFileSet): Promise<void> {\n if (transformer == null) {\n return\n }\n\n let transformedFiles = fileSet.transformedFiles\n if (fileSet.transformedFiles == null) {\n transformedFiles = new Map()\n fileSet.transformedFiles = transformedFiles\n }\n\n const metadata = fileSet.metadata\n const filesPromise = fileSet.files.map(async (it, index) => {\n const fileStat = metadata.get(it)\n if (fileStat == null || !fileStat.isFile()) {\n return\n }\n\n const transformedValue = transformer(it)\n if (transformedValue == null) {\n return\n }\n\n if (typeof transformedValue === \"object\" && \"then\" in transformedValue) {\n return (transformedValue as Promise<any>).then(it => {\n if (it != null) {\n transformedFiles!.set(index, it)\n }\n return\n })\n }\n transformedFiles!.set(index, transformedValue as string | Buffer)\n return\n })\n // `asyncPool` doesn't provide `index` in it's handler, so we `map` first before using it\n await asyncPool(MAX_FILE_REQUESTS, filesPromise, promise => promise)\n}\n\nexport async function computeFileSets(matchers: Array<FileMatcher>, transformer: FileTransformer | null, platformPackager: PlatformPackager<any>): Promise<Array<ResolvedFileSet>> {\n const fileSets: Array<ResolvedFileSet> = []\n\n for (const matcher of matchers) {\n const fileWalker = new AppFileWalker(matcher, platformPackager)\n\n const fromStat = await statOrNull(matcher.from)\n if (fromStat == null) {\n log.debug({ directory: matcher.from, reason: \"doesn't exist\" }, `skipped copying`)\n continue\n }\n\n const files = await walk(matcher.from, fileWalker.filter, fileWalker)\n const metadata = fileWalker.metadata\n fileSets.push(validateFileSet({ src: matcher.from, files, metadata, destination: matcher.to }))\n }\n\n return fileSets\n}\n\nfunction getNodeModuleExcludedExts(platformPackager: PlatformPackager<any>) {\n // do not exclude *.h files (https://github.com/electron-userland/electron-builder/issues/2852)\n const result = [\".o\", \".obj\"].concat(excludedExts.split(\",\").map(it => `.${it}`))\n if (platformPackager.config.includePdb !== true) {\n result.push(\".pdb\")\n }\n if (platformPackager.platform !== Platform.WINDOWS) {\n // https://github.com/electron-userland/electron-builder/issues/1738\n result.push(\".dll\")\n result.push(\".exe\")\n }\n return result\n}\n\nfunction validateFileSet(fileSet: ResolvedFileSet): ResolvedFileSet {\n if (fileSet.src == null || fileSet.src.length === 0) {\n throw new Error(\"fileset src is empty\")\n }\n return fileSet\n}\n\n/** @internal */\nexport async function computeNodeModuleFileSets(platformPackager: PlatformPackager<any>, mainMatcher: FileMatcher): Promise<Array<ResolvedFileSet>> {\n const deps = await collectNodeModulesWithLogging(platformPackager)\n\n const nodeModuleExcludedExts = getNodeModuleExcludedExts(platformPackager)\n // serial execution because copyNodeModules is concurrent and so, no need to increase queue/pressure\n const result = new Array<ResolvedFileSet>()\n let index = 0\n const NODE_MODULES = \"node_modules\"\n\n const collectNodeModules = async (dep: NodeModuleInfo, destination: string) => {\n const source = dep.dir\n const matcher = new FileMatcher(source, destination, mainMatcher.macroExpander, mainMatcher.patterns)\n const copier = new NodeModuleCopyHelper(matcher, platformPackager)\n const files = await copier.collectNodeModules(dep, nodeModuleExcludedExts, path.relative(mainMatcher.to, destination))\n result[index++] = validateFileSet({ src: source, destination, files, metadata: copier.metadata })\n\n log.debug({ dep: dep.name, from: log.filePath(source), to: log.filePath(destination), filesCount: files.length }, \"identified module\")\n\n if (dep.dependencies) {\n for (const c of dep.dependencies) {\n await collectNodeModules(c, path.join(destination, NODE_MODULES, c.name))\n }\n }\n }\n\n for (const dep of deps) {\n const destination = path.join(mainMatcher.to, NODE_MODULES, dep.name)\n await collectNodeModules(dep, destination)\n }\n return result\n}\n\nasync function collectNodeModulesWithLogging(platformPackager: PlatformPackager<any>) {\n const { tempDirManager, appDir, projectDir } = platformPackager\n\n let deps: { nodeModules: NodeModuleInfo[]; logSummary: ModuleManager[\"logSummary\"] } | undefined = undefined\n\n const searchDirectories = Array.from(new Set([appDir, projectDir, await platformPackager.getWorkspaceRoot()])).filter((it): it is string => isEmptyOrSpaces(it) === false)\n const pmApproaches = [await platformPackager.getPackageManager(), PM.TRAVERSAL]\n for (const pm of pmApproaches) {\n for (const dir of searchDirectories) {\n log.info({ pm, searchDir: dir }, \"searching for node modules\")\n const collector = getCollectorByPackageManager(pm, dir, tempDirManager)\n deps = await collector.getNodeModules({ packageName: platformPackager.nodePackageName })\n if (deps.nodeModules.length > 0) {\n break\n }\n const attempt = searchDirectories.indexOf(dir)\n if (attempt < searchDirectories.length - 1) {\n log.info({ searchDir: dir, attempt }, \"no node modules found in collection, trying next search directory\")\n }\n }\n if (deps?.nodeModules?.length) {\n log.debug({ pm, nodeModules: deps.nodeModules }, \"collected node modules\")\n break\n }\n }\n if (!deps?.nodeModules?.length) {\n log.warn({ searchDirectories: searchDirectories.map(it => log.filePath(it)) }, \"no node modules returned while searching directories\")\n return []\n }\n\n const summary = Object.entries(deps.logSummary ?? {}).filter(([, dependencies]) => Array.isArray(dependencies) && dependencies.length > 0)\n for (const [errorMessage, dependencies] of summary) {\n const logLevel = logMessageLevelByKey[errorMessage as LogMessageByKey] || \"debug\"\n log[logLevel]({ dependencies }, errorMessage)\n }\n\n return deps.nodeModules\n}\n"]}
|
|
1
|
+
{"version":3,"file":"appFileCopier.js","sourceRoot":"","sources":["../../src/util/appFileCopier.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, AsyncTaskManager, FileCopier, FileTransformer, isEmptyOrSpaces, Link, log, MAX_FILE_REQUESTS, statOrNull, walk } from \"builder-util\"\nimport { Stats } from \"fs\"\nimport fsExtra from \"fs-extra\"\nimport { mkdir, readlink } from \"fs/promises\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { isLibOrExe } from \"../asar/unpackDetector.js\"\nimport { Platform } from \"../core.js\"\nimport { DEFAULT_EXCLUDED_EXTENSIONS, FileMatcher } from \"../fileMatcher.js\"\nimport { getCollectorByPackageManager, PM } from \"../node-module-collector/index.js\"\nimport { LogMessageByKey, logMessageLevelByKey, ModuleManager } from \"../node-module-collector/moduleManager.js\"\nimport { Packager } from \"../packager.js\"\nimport { PlatformPackager } from \"../platformPackager.js\"\nimport { AppFileWalker } from \"./AppFileWalker.js\"\nimport { NodeModuleCopyHelper } from \"./NodeModuleCopyHelper.js\"\nimport { NodeModuleInfo } from \"../node-module-collector/types.js\"\nimport { archToNodeCpu } from \"./archCompatibility.js\"\n\nexport function getDestinationPath(file: string, fileSet: ResolvedFileSet) {\n if (file === fileSet.src) {\n return fileSet.destination\n }\n\n const src = fileSet.src\n const dest = fileSet.destination\n // get node_modules path relative to src and then append to dest\n if (file.startsWith(src)) {\n return path.join(dest, path.relative(src, file))\n }\n return dest\n}\n\nexport async function copyAppFiles(fileSet: ResolvedFileSet, packager: Packager, transformer: FileTransformer) {\n const metadata = fileSet.metadata\n // search auto unpacked dir\n const taskManager = new AsyncTaskManager(packager.cancellationToken)\n const createdParentDirs = new Set<string>()\n\n const fileCopier = new FileCopier(file => {\n return !isLibOrExe(file)\n }, transformer)\n const links: Array<Link> = []\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const sourceFile = fileSet.files[i]\n const stat = metadata.get(sourceFile)\n if (stat == null) {\n // dir\n continue\n }\n\n const destinationFile = getDestinationPath(sourceFile, fileSet)\n if (stat.isSymbolicLink()) {\n links.push({ file: destinationFile, link: await readlink(sourceFile) })\n continue\n }\n\n const fileParent = path.dirname(destinationFile)\n if (!createdParentDirs.has(fileParent)) {\n createdParentDirs.add(fileParent)\n await mkdir(fileParent, { recursive: true })\n }\n\n taskManager.addTask(fileCopier.copy(sourceFile, destinationFile, stat))\n if (taskManager.tasks.length > MAX_FILE_REQUESTS) {\n await taskManager.awaitTasks()\n }\n }\n\n if (taskManager.tasks.length > 0) {\n await taskManager.awaitTasks()\n }\n\n await asyncPool(MAX_FILE_REQUESTS, links, it => fsExtra.ensureSymlink(it.link, it.file))\n}\n\n// os path separator is used\nexport interface ResolvedFileSet {\n src: string\n destination: string\n\n files: Array<string>\n metadata: Map<string, Stats>\n transformedFiles?: Map<number, string | Buffer> | null\n}\n\n// used only for ASAR, if no asar, file transformed on the fly\nexport async function transformFiles(transformer: FileTransformer, fileSet: ResolvedFileSet): Promise<void> {\n if (transformer == null) {\n return\n }\n\n let transformedFiles = fileSet.transformedFiles\n if (fileSet.transformedFiles == null) {\n transformedFiles = new Map()\n fileSet.transformedFiles = transformedFiles\n }\n\n const metadata = fileSet.metadata\n const filesPromise = fileSet.files.map(async (it, index) => {\n const fileStat = metadata.get(it)\n if (fileStat == null || !fileStat.isFile()) {\n return\n }\n\n const transformedValue = transformer(it)\n if (transformedValue == null) {\n return\n }\n\n if (typeof transformedValue === \"object\" && \"then\" in transformedValue) {\n return (transformedValue as Promise<any>).then(it => {\n if (it != null) {\n transformedFiles!.set(index, it)\n }\n return\n })\n }\n transformedFiles!.set(index, transformedValue as string | Buffer)\n return\n })\n // `asyncPool` doesn't provide `index` in it's handler, so we `map` first before using it\n await asyncPool(MAX_FILE_REQUESTS, filesPromise, promise => promise)\n}\n\nexport async function computeFileSets(matchers: Array<FileMatcher>, transformer: FileTransformer | null, platformPackager: PlatformPackager<any>): Promise<Array<ResolvedFileSet>> {\n const fileSets: Array<ResolvedFileSet> = []\n\n for (const matcher of matchers) {\n const fileWalker = new AppFileWalker(matcher, platformPackager)\n\n const fromStat = await statOrNull(matcher.from)\n if (fromStat == null) {\n log.debug({ directory: matcher.from, reason: \"doesn't exist\" }, `skipped copying`)\n continue\n }\n\n const files = await walk(matcher.from, fileWalker.filter, fileWalker)\n const metadata = fileWalker.metadata\n fileSets.push(validateFileSet({ src: matcher.from, files, metadata, destination: matcher.to }))\n }\n\n return fileSets\n}\n\nfunction getNodeModuleExcludedExts(platformPackager: PlatformPackager<any>) {\n // do not exclude *.h files (https://github.com/electron-userland/electron-builder/issues/2852)\n const result = DEFAULT_EXCLUDED_EXTENSIONS.map(it => `.${it}`)\n if (platformPackager.config.includePdb !== true) {\n result.push(\".pdb\")\n }\n if (platformPackager.platform !== Platform.WINDOWS) {\n // https://github.com/electron-userland/electron-builder/issues/1738\n result.push(\".dll\")\n result.push(\".exe\")\n }\n return result\n}\n\nfunction validateFileSet(fileSet: ResolvedFileSet): ResolvedFileSet {\n if (fileSet.src == null || fileSet.src.length === 0) {\n throw new Error(\"fileset src is empty\")\n }\n return fileSet\n}\n\n/** @internal */\nexport async function computeNodeModuleFileSets(\n platformPackager: PlatformPackager<any>,\n mainMatcher: FileMatcher,\n arch: Arch,\n applyArchFilter = true\n): Promise<Array<ResolvedFileSet>> {\n const deps = await collectNodeModulesWithLogging(platformPackager, applyArchFilter ? arch : null)\n\n const nodeModuleExcludedExts = getNodeModuleExcludedExts(platformPackager)\n // serial execution because copyNodeModules is concurrent and so, no need to increase queue/pressure\n const result = new Array<ResolvedFileSet>()\n let index = 0\n const NODE_MODULES = \"node_modules\"\n\n const collectNodeModules = async (dep: NodeModuleInfo, destination: string) => {\n const source = dep.dir\n const matcher = new FileMatcher(source, destination, mainMatcher.macroExpander, mainMatcher.patterns)\n const copier = new NodeModuleCopyHelper(matcher, platformPackager)\n const files = await copier.collectNodeModules(dep, nodeModuleExcludedExts, path.relative(mainMatcher.to, destination))\n result[index++] = validateFileSet({ src: source, destination, files, metadata: copier.metadata })\n\n log.debug({ dep: dep.name, from: log.filePath(source), to: log.filePath(destination), filesCount: files.length }, \"identified module\")\n\n if (dep.dependencies) {\n for (const c of dep.dependencies) {\n await collectNodeModules(c, path.join(destination, NODE_MODULES, c.name))\n }\n }\n }\n\n for (const dep of deps) {\n const destination = path.join(mainMatcher.to, NODE_MODULES, dep.name)\n await collectNodeModules(dep, destination)\n }\n return result\n}\n\ntype CollectedNodeModules = { nodeModules: NodeModuleInfo[]; logSummary: ModuleManager[\"logSummary\"] }\n\n/** Runs a single package-manager collector against a single directory. */\ntype CollectorRunner = (pm: PM, dir: string) => Promise<CollectedNodeModules>\n\n// `workspace:`/`file:`/`link:`/`portal:` dependencies are symlinked into place rather than\n// installed as standalone, hoistable packages, so they may legitimately be absent from a\n// collected tree and cannot be used to validate it.\nconst LOCAL_DEPENDENCY_SPEC = /^(?:workspace|file|link|portal):/\n\n/**\n * Determines whether a collected module tree actually describes the package being built.\n *\n * A package-manager `list` invocation can resolve to the wrong project root — most notably when\n * electron-builder is run from a workspace sub-package whose dependencies are hoisted to the\n * workspace root. In that case the collector returns a non-empty but unrelated tree. Accepting it\n * would suppress the manual-traversal fallback that resolves the correct modules, so we need to\n * tell a matching collection from a mismatched one.\n *\n * A collection matches when at least one of the package's declared external (registry-installed,\n * non-`workspace:`/`file:`/`link:`/`portal:`) production dependencies is present at the top level —\n * those direct dependencies are always hoisted to the top level of a correct collection. When the\n * package declares no external production dependencies there is nothing to validate against, so any\n * non-empty collection is accepted.\n */\nexport function collectionMatchesAppDependencies(nodeModules: NodeModuleInfo[], dependencies: Record<string, string> | undefined): boolean {\n const requiredExternalDeps = Object.entries(dependencies ?? {})\n .filter(([, spec]) => !LOCAL_DEPENDENCY_SPEC.test(spec))\n .map(([name]) => name)\n if (requiredExternalDeps.length === 0) {\n return true\n }\n const collected = new Set(nodeModules.map(it => it.name))\n return requiredExternalDeps.some(name => collected.has(name))\n}\n\n/**\n * Walks the candidate (package-manager, directory) combinations and returns the first collection\n * that both contains modules and matches the package being built (see\n * {@link collectionMatchesAppDependencies}). A non-empty collection that does NOT match — e.g. a\n * workspace-root tree returned for a sub-package — is retained only as a last-resort fallback so a\n * later approach (notably {@link PM.TRAVERSAL}) can supply the correct modules.\n */\nexport async function resolveFirstMatchingCollection(options: {\n pmApproaches: PM[]\n searchDirectories: string[]\n dependencies: Record<string, string> | undefined\n run: CollectorRunner\n}): Promise<CollectedNodeModules | undefined> {\n const { pmApproaches, searchDirectories, dependencies, run } = options\n let fallback: CollectedNodeModules | undefined\n\n for (const pm of pmApproaches) {\n for (const dir of searchDirectories) {\n log.info({ pm, searchDir: dir }, \"searching for node modules\")\n const deps = await run(pm, dir)\n if (deps.nodeModules.length === 0) {\n log.info({ pm, searchDir: dir }, \"no node modules found in collection, trying next search directory\")\n continue\n }\n if (collectionMatchesAppDependencies(deps.nodeModules, dependencies)) {\n log.debug({ pm, searchDir: dir, depCount: deps.nodeModules.length }, \"collected node modules\")\n return deps\n }\n log.info({ pm, searchDir: dir }, \"collected node modules do not match the target package, trying next search directory/approach\")\n fallback ??= deps\n }\n }\n return fallback\n}\n\nasync function collectNodeModulesWithLogging(platformPackager: PlatformPackager<any>, arch: Arch | null) {\n const { tempDirManager, appDir, projectDir } = platformPackager\n\n // Drop packages whose `package.json` `cpu`/`os` is incompatible with the target arch/platform while\n // collecting (e.g. exclude `@esbuild/darwin-arm64` from the x64 slice). See NodeModulesCollector.\n // `null` arch (universal slices) disables the filter so both slices stay symmetric for the merge.\n const archFilter = arch == null ? undefined : { cpu: archToNodeCpu(arch), os: platformPackager.platform.nodeName }\n\n const searchDirectories = Array.from(new Set([appDir, projectDir, await platformPackager.getWorkspaceRoot()])).filter((it): it is string => isEmptyOrSpaces(it) === false)\n const pmApproaches = [await platformPackager.getPackageManager(), PM.TRAVERSAL]\n\n // Validate against the as-declared (pre-extraMetadata) production dependencies so a configured\n // `extraMetadata.dependencies` entry that isn't installed cannot reject a correct collection.\n const deps = await resolveFirstMatchingCollection({\n pmApproaches,\n searchDirectories,\n dependencies: platformPackager.originalMetadata.dependencies,\n run: (pm, dir) => getCollectorByPackageManager(pm, dir, tempDirManager).getNodeModules({ packageName: platformPackager.nodePackageName, archFilter }),\n })\n\n if (!deps?.nodeModules?.length) {\n log.warn({ searchDirectories: searchDirectories.map(it => log.filePath(it)) }, \"no node modules returned while searching directories\")\n return []\n }\n\n const summary = Object.entries(deps.logSummary ?? {}).filter(([, dependencies]) => Array.isArray(dependencies) && dependencies.length > 0)\n for (const [errorMessage, dependencies] of summary) {\n const logLevel = logMessageLevelByKey[errorMessage as LogMessageByKey] || \"debug\"\n log[logLevel]({ dependencies }, errorMessage)\n }\n\n return deps.nodeModules\n}\n"]}
|