app-builder-lib 26.15.2 → 27.0.0-alpha.0

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.
Files changed (997) hide show
  1. package/dist/Framework.d.ts +40 -0
  2. package/dist/Framework.d.ts.map +1 -0
  3. package/dist/Framework.js +4 -0
  4. package/dist/Framework.js.map +1 -0
  5. package/dist/appInfo.d.ts +32 -0
  6. package/dist/appInfo.d.ts.map +1 -0
  7. package/dist/appInfo.js +145 -0
  8. package/dist/appInfo.js.map +1 -0
  9. package/dist/asar/asar.d.ts +39 -0
  10. package/dist/asar/asar.d.ts.map +1 -0
  11. package/dist/asar/asar.js +155 -0
  12. package/dist/asar/asar.js.map +1 -0
  13. package/dist/asar/asarFileChecker.d.ts +3 -0
  14. package/dist/asar/asarFileChecker.d.ts.map +1 -0
  15. package/dist/asar/asarFileChecker.js +22 -0
  16. package/dist/asar/asarFileChecker.js.map +1 -0
  17. package/dist/asar/asarUtil.d.ts +2 -0
  18. package/dist/asar/asarUtil.d.ts.map +1 -0
  19. package/dist/asar/asarUtil.js +278 -0
  20. package/dist/asar/asarUtil.js.map +1 -0
  21. package/dist/asar/integrity.d.ts +16 -0
  22. package/dist/asar/integrity.d.ts.map +1 -0
  23. package/dist/asar/integrity.js +59 -0
  24. package/dist/asar/integrity.js.map +1 -0
  25. package/dist/asar/unpackDetector.d.ts +2 -0
  26. package/dist/asar/unpackDetector.d.ts.map +1 -0
  27. package/dist/asar/unpackDetector.js +39 -0
  28. package/dist/asar/unpackDetector.js.map +1 -0
  29. package/dist/codeSign/certInfo.d.ts +55 -0
  30. package/dist/codeSign/certInfo.d.ts.map +1 -0
  31. package/dist/codeSign/certInfo.js +459 -0
  32. package/dist/codeSign/certInfo.js.map +1 -0
  33. package/dist/codeSign/codesign.d.ts +4 -0
  34. package/dist/codeSign/codesign.d.ts.map +1 -0
  35. package/dist/codeSign/codesign.js +32 -0
  36. package/dist/codeSign/codesign.js.map +1 -0
  37. package/dist/codeSign/mac/macCodeSign.d.ts +29 -0
  38. package/dist/codeSign/mac/macCodeSign.d.ts.map +1 -0
  39. package/dist/codeSign/mac/macCodeSign.js +273 -0
  40. package/dist/codeSign/mac/macCodeSign.js.map +1 -0
  41. package/dist/codeSign/signManager.d.ts +14 -0
  42. package/dist/codeSign/signManager.d.ts.map +1 -0
  43. package/dist/codeSign/signManager.js +2 -0
  44. package/dist/codeSign/signManager.js.map +1 -0
  45. package/dist/codeSign/win/windowsCodeSign.d.ts +8 -0
  46. package/dist/codeSign/win/windowsCodeSign.d.ts.map +1 -0
  47. package/dist/codeSign/win/windowsCodeSign.js +34 -0
  48. package/dist/codeSign/win/windowsCodeSign.js.map +1 -0
  49. package/dist/codeSign/win/windowsSignAzureManager.d.ts +18 -0
  50. package/dist/codeSign/win/windowsSignAzureManager.d.ts.map +1 -0
  51. package/dist/codeSign/win/windowsSignAzureManager.js +68 -0
  52. package/dist/codeSign/win/windowsSignAzureManager.js.map +1 -0
  53. package/dist/codeSign/win/windowsSignToolManager.d.ts +59 -0
  54. package/dist/codeSign/win/windowsSignToolManager.d.ts.map +1 -0
  55. package/dist/codeSign/win/windowsSignToolManager.js +364 -0
  56. package/dist/codeSign/win/windowsSignToolManager.js.map +1 -0
  57. package/dist/configuration.d.ts +1010 -0
  58. package/dist/configuration.d.ts.map +1 -0
  59. package/dist/configuration.js +2 -0
  60. package/dist/configuration.js.map +1 -0
  61. package/dist/core.d.ts +61 -0
  62. package/dist/core.d.ts.map +1 -0
  63. package/dist/core.js +61 -0
  64. package/dist/core.js.map +1 -0
  65. package/dist/electron/ElectronFramework.d.ts +17 -0
  66. package/dist/electron/ElectronFramework.d.ts.map +1 -0
  67. package/dist/electron/ElectronFramework.js +236 -0
  68. package/dist/electron/ElectronFramework.js.map +1 -0
  69. package/dist/electron/electronVersion.d.ts +7 -0
  70. package/dist/electron/electronVersion.d.ts.map +1 -0
  71. package/dist/electron/electronVersion.js +119 -0
  72. package/dist/electron/electronVersion.js.map +1 -0
  73. package/dist/electron/injectFFMPEG.d.ts +12 -0
  74. package/dist/electron/injectFFMPEG.d.ts.map +1 -0
  75. package/dist/electron/injectFFMPEG.js +53 -0
  76. package/dist/electron/injectFFMPEG.js.map +1 -0
  77. package/dist/electron/mac/electronMac.d.ts +2 -0
  78. package/dist/electron/mac/electronMac.d.ts.map +1 -0
  79. package/dist/electron/mac/electronMac.js +254 -0
  80. package/dist/electron/mac/electronMac.js.map +1 -0
  81. package/dist/electron/search-module.d.ts +24 -0
  82. package/dist/electron/search-module.d.ts.map +1 -0
  83. package/dist/electron/search-module.js +68 -0
  84. package/dist/electron/search-module.js.map +1 -0
  85. package/dist/electron/win/electronWin.d.ts +2 -0
  86. package/dist/electron/win/electronWin.d.ts.map +1 -0
  87. package/dist/electron/win/electronWin.js +36 -0
  88. package/dist/electron/win/electronWin.js.map +1 -0
  89. package/dist/errorMessages.d.ts +2 -0
  90. package/dist/errorMessages.d.ts.map +1 -0
  91. package/dist/errorMessages.js +8 -0
  92. package/dist/errorMessages.js.map +1 -0
  93. package/dist/fileMatcher.d.ts +31 -0
  94. package/dist/fileMatcher.d.ts.map +1 -0
  95. package/dist/fileMatcher.js +277 -0
  96. package/dist/fileMatcher.js.map +1 -0
  97. package/dist/fileTransformer.d.ts +2 -0
  98. package/dist/fileTransformer.d.ts.map +1 -0
  99. package/dist/fileTransformer.js +82 -0
  100. package/dist/fileTransformer.js.map +1 -0
  101. package/dist/forge-maker.d.ts +6 -0
  102. package/dist/forge-maker.d.ts.map +1 -0
  103. package/dist/forge-maker.js +20 -0
  104. package/dist/forge-maker.js.map +1 -0
  105. package/dist/index.d.ts +40 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +77 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/indexInternal.d.ts +46 -0
  110. package/dist/indexInternal.d.ts.map +1 -0
  111. package/dist/indexInternal.js +39 -0
  112. package/dist/indexInternal.js.map +1 -0
  113. package/dist/linuxPackager.d.ts +13 -0
  114. package/dist/linuxPackager.d.ts.map +1 -0
  115. package/dist/linuxPackager.js +75 -0
  116. package/dist/linuxPackager.js.map +1 -0
  117. package/dist/macPackager.d.ts +50 -0
  118. package/dist/macPackager.d.ts.map +1 -0
  119. package/dist/macPackager.js +442 -0
  120. package/dist/macPackager.js.map +1 -0
  121. package/dist/node-module-collector/bunNodeModulesCollector.d.ts +11 -0
  122. package/dist/node-module-collector/bunNodeModulesCollector.d.ts.map +1 -0
  123. package/dist/node-module-collector/bunNodeModulesCollector.js +14 -0
  124. package/dist/node-module-collector/bunNodeModulesCollector.js.map +1 -0
  125. package/dist/node-module-collector/hoist.d.ts +124 -0
  126. package/dist/node-module-collector/hoist.d.ts.map +1 -0
  127. package/dist/node-module-collector/hoist.js +880 -0
  128. package/dist/node-module-collector/hoist.js.map +1 -0
  129. package/dist/node-module-collector/index.d.ts +21 -0
  130. package/dist/node-module-collector/index.d.ts.map +1 -0
  131. package/dist/node-module-collector/index.js +124 -0
  132. package/dist/node-module-collector/index.js.map +1 -0
  133. package/dist/node-module-collector/moduleManager.d.ts +94 -0
  134. package/dist/node-module-collector/moduleManager.d.ts.map +1 -0
  135. package/dist/node-module-collector/moduleManager.js +314 -0
  136. package/dist/node-module-collector/moduleManager.js.map +1 -0
  137. package/dist/node-module-collector/nodeModulesCollector.d.ts +138 -0
  138. package/dist/node-module-collector/nodeModulesCollector.d.ts.map +1 -0
  139. package/dist/node-module-collector/nodeModulesCollector.js +421 -0
  140. package/dist/node-module-collector/nodeModulesCollector.js.map +1 -0
  141. package/dist/node-module-collector/npmNodeModulesCollector.d.ts +15 -0
  142. package/dist/node-module-collector/npmNodeModulesCollector.d.ts.map +1 -0
  143. package/dist/node-module-collector/npmNodeModulesCollector.js +75 -0
  144. package/dist/node-module-collector/npmNodeModulesCollector.js.map +1 -0
  145. package/dist/node-module-collector/packageManager.d.ts +18 -0
  146. package/dist/node-module-collector/packageManager.d.ts.map +1 -0
  147. package/dist/node-module-collector/packageManager.js +137 -0
  148. package/dist/node-module-collector/packageManager.js.map +1 -0
  149. package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts +45 -0
  150. package/dist/node-module-collector/pnpmNodeModulesCollector.d.ts.map +1 -0
  151. package/dist/node-module-collector/pnpmNodeModulesCollector.js +184 -0
  152. package/dist/node-module-collector/pnpmNodeModulesCollector.js.map +1 -0
  153. package/dist/node-module-collector/traversalNodeModulesCollector.d.ts +19 -0
  154. package/dist/node-module-collector/traversalNodeModulesCollector.d.ts.map +1 -0
  155. package/dist/node-module-collector/traversalNodeModulesCollector.js +118 -0
  156. package/dist/node-module-collector/traversalNodeModulesCollector.js.map +1 -0
  157. package/dist/node-module-collector/types.d.ts +53 -0
  158. package/dist/node-module-collector/types.d.ts.map +1 -0
  159. package/dist/node-module-collector/types.js +2 -0
  160. package/dist/node-module-collector/yarnBerryNodeModulesCollector.d.ts +16 -0
  161. package/dist/node-module-collector/yarnBerryNodeModulesCollector.d.ts.map +1 -0
  162. package/dist/node-module-collector/yarnBerryNodeModulesCollector.js +87 -0
  163. package/dist/node-module-collector/yarnBerryNodeModulesCollector.js.map +1 -0
  164. package/dist/node-module-collector/yarnNodeModulesCollector.d.ts +11 -0
  165. package/dist/node-module-collector/yarnNodeModulesCollector.d.ts.map +1 -0
  166. package/dist/node-module-collector/yarnNodeModulesCollector.js +18 -0
  167. package/dist/node-module-collector/yarnNodeModulesCollector.js.map +1 -0
  168. package/dist/options/AppXOptions.d.ts +106 -0
  169. package/dist/options/AppXOptions.d.ts.map +1 -0
  170. package/dist/options/AppXOptions.js +2 -0
  171. package/dist/options/AppXOptions.js.map +1 -0
  172. package/dist/options/CommonWindowsInstallerConfiguration.d.ts +48 -0
  173. package/dist/options/CommonWindowsInstallerConfiguration.d.ts.map +1 -0
  174. package/dist/options/CommonWindowsInstallerConfiguration.js +47 -0
  175. package/dist/options/CommonWindowsInstallerConfiguration.js.map +1 -0
  176. package/dist/options/FileAssociation.d.ts +46 -0
  177. package/dist/options/FileAssociation.d.ts.map +1 -0
  178. package/dist/options/FileAssociation.js +2 -0
  179. package/dist/options/MsiOptions.d.ts +27 -0
  180. package/dist/options/MsiOptions.d.ts.map +1 -0
  181. package/dist/options/MsiOptions.js +2 -0
  182. package/dist/options/MsiOptions.js.map +1 -0
  183. package/dist/options/MsiWrappedOptions.d.ts +27 -0
  184. package/dist/options/MsiWrappedOptions.d.ts.map +1 -0
  185. package/dist/options/MsiWrappedOptions.js +2 -0
  186. package/dist/options/MsiWrappedOptions.js.map +1 -0
  187. package/dist/options/PlatformSpecificBuildOptions.d.ts +261 -0
  188. package/dist/options/PlatformSpecificBuildOptions.d.ts.map +1 -0
  189. package/dist/options/PlatformSpecificBuildOptions.js +2 -0
  190. package/dist/options/PlatformSpecificBuildOptions.js.map +1 -0
  191. package/dist/options/SnapOptions.d.ts +480 -0
  192. package/dist/options/SnapOptions.d.ts.map +1 -0
  193. package/dist/options/SnapOptions.js +2 -0
  194. package/dist/options/SnapOptions.js.map +1 -0
  195. package/dist/options/SquirrelWindowsOptions.d.ts +47 -0
  196. package/dist/options/SquirrelWindowsOptions.d.ts.map +1 -0
  197. package/dist/options/SquirrelWindowsOptions.js +2 -0
  198. package/dist/options/SquirrelWindowsOptions.js.map +1 -0
  199. package/dist/options/linuxOptions.d.ts +289 -0
  200. package/dist/options/linuxOptions.d.ts.map +1 -0
  201. package/dist/options/linuxOptions.js +2 -0
  202. package/dist/options/linuxOptions.js.map +1 -0
  203. package/dist/options/macOptions.d.ts +390 -0
  204. package/dist/options/macOptions.d.ts.map +1 -0
  205. package/dist/options/macOptions.js +2 -0
  206. package/dist/options/macOptions.js.map +1 -0
  207. package/dist/options/metadata.d.ts +54 -0
  208. package/dist/options/metadata.d.ts.map +1 -0
  209. package/dist/options/metadata.js +2 -0
  210. package/dist/options/metadata.js.map +1 -0
  211. package/dist/options/pkgOptions.d.ts +137 -0
  212. package/dist/options/pkgOptions.d.ts.map +1 -0
  213. package/dist/options/pkgOptions.js +2 -0
  214. package/dist/options/pkgOptions.js.map +1 -0
  215. package/dist/options/winOptions.d.ts +166 -0
  216. package/dist/options/winOptions.d.ts.map +1 -0
  217. package/dist/options/winOptions.js +2 -0
  218. package/dist/options/winOptions.js.map +1 -0
  219. package/dist/packager.d.ts +100 -0
  220. package/dist/packager.d.ts.map +1 -0
  221. package/dist/packager.js +491 -0
  222. package/dist/packager.js.map +1 -0
  223. package/dist/packagerApi.d.ts +32 -0
  224. package/dist/packagerApi.d.ts.map +1 -0
  225. package/dist/packagerApi.js +2 -0
  226. package/dist/packagerApi.js.map +1 -0
  227. package/dist/platformPackager.d.ts +132 -0
  228. package/dist/platformPackager.d.ts.map +1 -0
  229. package/dist/platformPackager.js +761 -0
  230. package/dist/platformPackager.js.map +1 -0
  231. package/dist/presets/rectCra.d.ts +2 -0
  232. package/dist/presets/rectCra.d.ts.map +1 -0
  233. package/dist/presets/rectCra.js +19 -0
  234. package/dist/presets/rectCra.js.map +1 -0
  235. package/dist/publish/PublishManager.d.ts +33 -0
  236. package/dist/publish/PublishManager.d.ts.map +1 -0
  237. package/dist/publish/PublishManager.js +470 -0
  238. package/dist/publish/PublishManager.js.map +1 -0
  239. package/dist/publish/updateInfoBuilder.d.ts +15 -0
  240. package/dist/publish/updateInfoBuilder.d.ts.map +1 -0
  241. package/dist/publish/updateInfoBuilder.js +221 -0
  242. package/dist/publish/updateInfoBuilder.js.map +1 -0
  243. package/dist/targets/ArchiveTarget.d.ts +12 -0
  244. package/dist/targets/ArchiveTarget.d.ts.map +1 -0
  245. package/dist/targets/ArchiveTarget.js +93 -0
  246. package/dist/targets/ArchiveTarget.js.map +1 -0
  247. package/dist/targets/archive.d.ts +27 -0
  248. package/dist/targets/archive.d.ts.map +1 -0
  249. package/dist/targets/archive.js +174 -0
  250. package/dist/targets/archive.js.map +1 -0
  251. package/dist/targets/blockmap/blockmap.d.ts +17 -0
  252. package/dist/targets/blockmap/blockmap.d.ts.map +1 -0
  253. package/dist/targets/blockmap/blockmap.js +150 -0
  254. package/dist/targets/blockmap/blockmap.js.map +1 -0
  255. package/dist/targets/differentialUpdateInfoBuilder.d.ts +16 -0
  256. package/dist/targets/differentialUpdateInfoBuilder.d.ts.map +1 -0
  257. package/dist/targets/differentialUpdateInfoBuilder.js +73 -0
  258. package/dist/targets/differentialUpdateInfoBuilder.js.map +1 -0
  259. package/dist/targets/linux/FlatpakTarget.d.ts +21 -0
  260. package/dist/targets/linux/FlatpakTarget.d.ts.map +1 -0
  261. package/dist/targets/linux/FlatpakTarget.js +156 -0
  262. package/dist/targets/linux/FlatpakTarget.js.map +1 -0
  263. package/dist/targets/linux/FpmTarget.d.ts +23 -0
  264. package/dist/targets/linux/FpmTarget.d.ts.map +1 -0
  265. package/dist/targets/linux/FpmTarget.js +365 -0
  266. package/dist/targets/linux/FpmTarget.js.map +1 -0
  267. package/dist/targets/linux/LinuxTargetHelper.d.ts +24 -0
  268. package/dist/targets/linux/LinuxTargetHelper.d.ts.map +1 -0
  269. package/dist/targets/linux/LinuxTargetHelper.js +332 -0
  270. package/dist/targets/linux/LinuxTargetHelper.js.map +1 -0
  271. package/dist/targets/linux/appimage/AppImageTarget.d.ts +16 -0
  272. package/dist/targets/linux/appimage/AppImageTarget.d.ts.map +1 -0
  273. package/dist/targets/linux/appimage/AppImageTarget.js +141 -0
  274. package/dist/targets/linux/appimage/AppImageTarget.js.map +1 -0
  275. package/dist/targets/linux/appimage/appImageUtil.d.ts +57 -0
  276. package/dist/targets/linux/appimage/appImageUtil.d.ts.map +1 -0
  277. package/dist/targets/linux/appimage/appImageUtil.js +317 -0
  278. package/dist/targets/linux/appimage/appImageUtil.js.map +1 -0
  279. package/dist/targets/linux/appimage/appLauncher.d.ts +4 -0
  280. package/dist/targets/linux/appimage/appLauncher.d.ts.map +1 -0
  281. package/dist/targets/linux/appimage/appLauncher.js +91 -0
  282. package/dist/targets/linux/appimage/appLauncher.js.map +1 -0
  283. package/dist/targets/linux/snap/SnapTarget.d.ts +37 -0
  284. package/dist/targets/linux/snap/SnapTarget.d.ts.map +1 -0
  285. package/dist/targets/linux/snap/SnapTarget.js +96 -0
  286. package/dist/targets/linux/snap/SnapTarget.js.map +1 -0
  287. package/dist/targets/linux/snap/core24.d.ts +53 -0
  288. package/dist/targets/linux/snap/core24.d.ts.map +1 -0
  289. package/dist/targets/linux/snap/core24.js +444 -0
  290. package/dist/targets/linux/snap/core24.js.map +1 -0
  291. package/dist/targets/linux/snap/coreCustom.d.ts +29 -0
  292. package/dist/targets/linux/snap/coreCustom.d.ts.map +1 -0
  293. package/dist/targets/linux/snap/coreCustom.js +60 -0
  294. package/dist/targets/linux/snap/coreCustom.js.map +1 -0
  295. package/dist/targets/linux/snap/coreLegacy.d.ts +46 -0
  296. package/dist/targets/linux/snap/coreLegacy.d.ts.map +1 -0
  297. package/dist/targets/linux/snap/coreLegacy.js +402 -0
  298. package/dist/targets/linux/snap/coreLegacy.js.map +1 -0
  299. package/dist/targets/linux/snap/snapcraftBuilder.d.ts +40 -0
  300. package/dist/targets/linux/snap/snapcraftBuilder.d.ts.map +1 -0
  301. package/dist/targets/linux/snap/snapcraftBuilder.js +414 -0
  302. package/dist/targets/linux/snap/snapcraftBuilder.js.map +1 -0
  303. package/dist/targets/mac/MacTargetHelper.d.ts +30 -0
  304. package/dist/targets/mac/MacTargetHelper.d.ts.map +1 -0
  305. package/dist/targets/mac/MacTargetHelper.js +267 -0
  306. package/dist/targets/mac/MacTargetHelper.js.map +1 -0
  307. package/dist/targets/mac/pkg.d.ts +31 -0
  308. package/dist/targets/mac/pkg.d.ts.map +1 -0
  309. package/dist/targets/mac/pkg.js +271 -0
  310. package/dist/targets/mac/pkg.js.map +1 -0
  311. package/dist/targets/targetFactory.d.ts +13 -0
  312. package/dist/targets/targetFactory.d.ts.map +1 -0
  313. package/dist/targets/targetFactory.js +94 -0
  314. package/dist/targets/targetFactory.js.map +1 -0
  315. package/dist/targets/targetUtil.d.ts +16 -0
  316. package/dist/targets/targetUtil.d.ts.map +1 -0
  317. package/dist/targets/targetUtil.js +40 -0
  318. package/dist/targets/targetUtil.js.map +1 -0
  319. package/dist/targets/win/AppxCapabilities.d.ts +9 -0
  320. package/dist/targets/win/AppxCapabilities.d.ts.map +1 -0
  321. package/dist/targets/win/AppxCapabilities.js +254 -0
  322. package/dist/targets/win/AppxCapabilities.js.map +1 -0
  323. package/dist/targets/win/AppxTarget.d.ts +18 -0
  324. package/dist/targets/win/AppxTarget.d.ts.map +1 -0
  325. package/dist/targets/win/AppxTarget.js +398 -0
  326. package/dist/targets/win/AppxTarget.js.map +1 -0
  327. package/dist/targets/win/MsiTarget.d.ts +29 -0
  328. package/dist/targets/win/MsiTarget.d.ts.map +1 -0
  329. package/dist/targets/win/MsiTarget.js +268 -0
  330. package/dist/targets/win/MsiTarget.js.map +1 -0
  331. package/dist/targets/win/MsiWrappedTarget.d.ts +20 -0
  332. package/dist/targets/win/MsiWrappedTarget.d.ts.map +1 -0
  333. package/dist/targets/win/MsiWrappedTarget.js +77 -0
  334. package/dist/targets/win/MsiWrappedTarget.js.map +1 -0
  335. package/dist/targets/win/nsis/Commands.d.ts +10 -0
  336. package/dist/targets/win/nsis/Commands.d.ts.map +1 -0
  337. package/dist/targets/win/nsis/Commands.js +2 -0
  338. package/dist/targets/win/nsis/Commands.js.map +1 -0
  339. package/dist/targets/win/nsis/Defines.d.ts +81 -0
  340. package/dist/targets/win/nsis/Defines.d.ts.map +1 -0
  341. package/dist/targets/win/nsis/Defines.js +2 -0
  342. package/dist/targets/win/nsis/Defines.js.map +1 -0
  343. package/dist/targets/win/nsis/NsisTarget.d.ts +43 -0
  344. package/dist/targets/win/nsis/NsisTarget.d.ts.map +1 -0
  345. package/dist/targets/win/nsis/NsisTarget.js +726 -0
  346. package/dist/targets/win/nsis/NsisTarget.js.map +1 -0
  347. package/dist/targets/win/nsis/WebInstallerTarget.d.ts +14 -0
  348. package/dist/targets/win/nsis/WebInstallerTarget.d.ts.map +1 -0
  349. package/dist/targets/win/nsis/WebInstallerTarget.js +43 -0
  350. package/dist/targets/win/nsis/WebInstallerTarget.js.map +1 -0
  351. package/dist/targets/win/nsis/nsisLang.d.ts +11 -0
  352. package/dist/targets/win/nsis/nsisLang.d.ts.map +1 -0
  353. package/dist/targets/win/nsis/nsisLang.js +94 -0
  354. package/dist/targets/win/nsis/nsisLang.js.map +1 -0
  355. package/dist/targets/win/nsis/nsisLicense.d.ts +5 -0
  356. package/dist/targets/win/nsis/nsisLicense.d.ts.map +1 -0
  357. package/dist/targets/win/nsis/nsisLicense.js +73 -0
  358. package/dist/targets/win/nsis/nsisLicense.js.map +1 -0
  359. package/dist/targets/win/nsis/nsisOptions.d.ts +275 -0
  360. package/dist/targets/win/nsis/nsisOptions.d.ts.map +1 -0
  361. package/dist/targets/win/nsis/nsisOptions.js +2 -0
  362. package/dist/targets/win/nsis/nsisOptions.js.map +1 -0
  363. package/dist/targets/win/nsis/nsisScriptGenerator.d.ts +13 -0
  364. package/dist/targets/win/nsis/nsisScriptGenerator.d.ts.map +1 -0
  365. package/dist/targets/win/nsis/nsisScriptGenerator.js +59 -0
  366. package/dist/targets/win/nsis/nsisScriptGenerator.js.map +1 -0
  367. package/dist/targets/win/nsis/nsisUtil.d.ts +26 -0
  368. package/dist/targets/win/nsis/nsisUtil.d.ts.map +1 -0
  369. package/dist/targets/win/nsis/nsisUtil.js +218 -0
  370. package/dist/targets/win/nsis/nsisUtil.js.map +1 -0
  371. package/dist/targets/win/nsis/nsisValidation.d.ts +19 -0
  372. package/dist/targets/win/nsis/nsisValidation.d.ts.map +1 -0
  373. package/dist/targets/win/nsis/nsisValidation.js +49 -0
  374. package/dist/targets/win/nsis/nsisValidation.js.map +1 -0
  375. package/dist/toolsets/7zip.d.ts +9 -0
  376. package/dist/toolsets/7zip.d.ts.map +1 -0
  377. package/dist/toolsets/7zip.js +80 -0
  378. package/dist/toolsets/7zip.js.map +1 -0
  379. package/dist/toolsets/appimage.d.ts +20 -0
  380. package/dist/toolsets/appimage.d.ts.map +1 -0
  381. package/dist/toolsets/appimage.js +67 -0
  382. package/dist/toolsets/appimage.js.map +1 -0
  383. package/dist/toolsets/custom.d.ts +5 -0
  384. package/dist/toolsets/custom.d.ts.map +1 -0
  385. package/dist/toolsets/custom.js +200 -0
  386. package/dist/toolsets/custom.js.map +1 -0
  387. package/dist/toolsets/fpm.d.ts +3 -0
  388. package/dist/toolsets/fpm.d.ts.map +1 -0
  389. package/dist/toolsets/fpm.js +49 -0
  390. package/dist/toolsets/fpm.js.map +1 -0
  391. package/dist/toolsets/icons.d.ts +12 -0
  392. package/dist/toolsets/icons.d.ts.map +1 -0
  393. package/dist/toolsets/icons.js +36 -0
  394. package/dist/toolsets/icons.js.map +1 -0
  395. package/dist/toolsets/linuxToolsMac.d.ts +8 -0
  396. package/dist/toolsets/linuxToolsMac.d.ts.map +1 -0
  397. package/dist/toolsets/linuxToolsMac.js +31 -0
  398. package/dist/toolsets/linuxToolsMac.js.map +1 -0
  399. package/dist/toolsets/nsis.d.ts +13 -0
  400. package/dist/toolsets/nsis.d.ts.map +1 -0
  401. package/dist/toolsets/nsis.js +100 -0
  402. package/dist/toolsets/nsis.js.map +1 -0
  403. package/dist/toolsets/winCodeSign.d.ts +42 -0
  404. package/dist/toolsets/winCodeSign.d.ts.map +1 -0
  405. package/dist/toolsets/winCodeSign.js +142 -0
  406. package/dist/toolsets/winCodeSign.js.map +1 -0
  407. package/dist/toolsets/wine.d.ts +6 -0
  408. package/dist/toolsets/wine.d.ts.map +1 -0
  409. package/dist/toolsets/wine.js +79 -0
  410. package/dist/toolsets/wine.js.map +1 -0
  411. package/dist/util/AppFileWalker.d.ts +14 -0
  412. package/dist/util/AppFileWalker.d.ts.map +1 -0
  413. package/dist/util/AppFileWalker.js +69 -0
  414. package/dist/util/AppFileWalker.js.map +1 -0
  415. package/dist/util/NodeModuleCopyHelper.d.ts +2 -0
  416. package/dist/util/NodeModuleCopyHelper.d.ts.map +1 -0
  417. package/dist/util/NodeModuleCopyHelper.js +160 -0
  418. package/dist/util/NodeModuleCopyHelper.js.map +1 -0
  419. package/dist/util/appFileCopier.d.ts +17 -0
  420. package/dist/util/appFileCopier.d.ts.map +1 -0
  421. package/dist/util/appFileCopier.js +190 -0
  422. package/dist/util/appFileCopier.js.map +1 -0
  423. package/dist/util/asyncEventEmitter.d.ts +34 -0
  424. package/dist/util/asyncEventEmitter.d.ts.map +1 -0
  425. package/dist/util/asyncEventEmitter.js +56 -0
  426. package/dist/util/asyncEventEmitter.js.map +1 -0
  427. package/dist/util/bundledTool.d.ts +8 -0
  428. package/dist/util/bundledTool.d.ts.map +1 -0
  429. package/dist/util/bundledTool.js +16 -0
  430. package/dist/util/bundledTool.js.map +1 -0
  431. package/dist/util/cacheManager.d.ts +19 -0
  432. package/dist/util/cacheManager.d.ts.map +1 -0
  433. package/dist/util/cacheManager.js +65 -0
  434. package/dist/util/cacheManager.js.map +1 -0
  435. package/dist/util/cacheState.d.ts +29 -0
  436. package/dist/util/cacheState.d.ts.map +1 -0
  437. package/dist/util/cacheState.js +134 -0
  438. package/dist/util/cacheState.js.map +1 -0
  439. package/dist/util/config/config.d.ts +13 -0
  440. package/dist/util/config/config.d.ts.map +1 -0
  441. package/dist/util/config/config.js +236 -0
  442. package/dist/util/config/config.js.map +1 -0
  443. package/dist/util/config/load.d.ts +20 -0
  444. package/dist/util/config/load.d.ts.map +1 -0
  445. package/dist/util/config/load.js +122 -0
  446. package/dist/util/config/load.js.map +1 -0
  447. package/dist/util/config/schemaValidator.d.ts +8 -0
  448. package/dist/util/config/schemaValidator.d.ts.map +1 -0
  449. package/dist/util/config/schemaValidator.js +161 -0
  450. package/dist/util/config/schemaValidator.js.map +1 -0
  451. package/dist/util/dynamicImport.d.ts +2 -0
  452. package/dist/util/dynamicImport.d.ts.map +1 -0
  453. package/dist/util/dynamicImport.js +9 -0
  454. package/dist/util/dynamicImport.js.map +1 -0
  455. package/dist/util/electronGet.d.ts +68 -0
  456. package/dist/util/electronGet.d.ts.map +1 -0
  457. package/dist/util/electronGet.js +560 -0
  458. package/dist/util/electronGet.js.map +1 -0
  459. package/dist/util/filter.d.ts +2 -0
  460. package/dist/util/filter.d.ts.map +1 -0
  461. package/dist/util/filter.js +64 -0
  462. package/dist/util/filter.js.map +1 -0
  463. package/dist/util/flags.d.ts +16 -0
  464. package/dist/util/flags.d.ts.map +1 -0
  465. package/dist/util/flags.js +53 -0
  466. package/dist/util/flags.js.map +1 -0
  467. package/dist/util/hash.d.ts +2 -0
  468. package/dist/util/hash.d.ts.map +1 -0
  469. package/dist/util/hash.js +16 -0
  470. package/dist/util/hash.js.map +1 -0
  471. package/dist/util/iconConverter.d.ts +29 -0
  472. package/dist/util/iconConverter.d.ts.map +1 -0
  473. package/dist/util/iconConverter.js +255 -0
  474. package/dist/util/iconConverter.js.map +1 -0
  475. package/dist/util/langs.d.ts +190 -0
  476. package/dist/util/langs.d.ts.map +1 -0
  477. package/dist/util/langs.js +432 -0
  478. package/dist/util/langs.js.map +1 -0
  479. package/dist/util/license.d.ts +17 -0
  480. package/dist/util/license.d.ts.map +1 -0
  481. package/dist/util/license.js +42 -0
  482. package/dist/util/license.js.map +1 -0
  483. package/dist/util/mac/macosIconComposer.d.ts +11 -0
  484. package/dist/util/mac/macosIconComposer.d.ts.map +1 -0
  485. package/dist/util/mac/macosIconComposer.js +99 -0
  486. package/dist/util/mac/macosIconComposer.js.map +1 -0
  487. package/dist/util/mac/macosVersion.d.ts +4 -0
  488. package/dist/util/mac/macosVersion.d.ts.map +1 -0
  489. package/dist/util/mac/macosVersion.js +31 -0
  490. package/dist/util/mac/macosVersion.js.map +1 -0
  491. package/dist/util/mac/plist.d.ts +8 -0
  492. package/dist/util/mac/plist.d.ts.map +1 -0
  493. package/dist/util/mac/plist.js +27 -0
  494. package/dist/util/mac/plist.js.map +1 -0
  495. package/dist/util/macroExpander.d.ts +4 -0
  496. package/dist/util/macroExpander.d.ts.map +1 -0
  497. package/dist/util/macroExpander.js +61 -0
  498. package/dist/util/macroExpander.js.map +1 -0
  499. package/dist/util/normalizePackageData.d.ts +2 -0
  500. package/dist/util/normalizePackageData.d.ts.map +1 -0
  501. package/dist/util/normalizePackageData.js +323 -0
  502. package/dist/util/normalizePackageData.js.map +1 -0
  503. package/dist/util/packageMetadata.d.ts +2 -0
  504. package/dist/util/packageMetadata.d.ts.map +1 -0
  505. package/dist/util/packageMetadata.js +118 -0
  506. package/dist/util/packageMetadata.js.map +1 -0
  507. package/dist/util/pathManager.d.ts +4 -0
  508. package/dist/util/pathManager.d.ts.map +1 -0
  509. package/dist/util/pathManager.js +17 -0
  510. package/dist/util/pathManager.js.map +1 -0
  511. package/dist/util/rebuild.d.ts +3 -0
  512. package/dist/util/rebuild.d.ts.map +1 -0
  513. package/dist/util/rebuild.js +54 -0
  514. package/dist/util/rebuild.js.map +1 -0
  515. package/dist/util/repositoryInfo.d.ts +4 -0
  516. package/dist/util/repositoryInfo.d.ts.map +1 -0
  517. package/dist/util/repositoryInfo.js +76 -0
  518. package/dist/util/repositoryInfo.js.map +1 -0
  519. package/dist/util/resolve.d.ts +3 -0
  520. package/dist/util/resolve.d.ts.map +1 -0
  521. package/dist/util/resolve.js +56 -0
  522. package/dist/util/resolve.js.map +1 -0
  523. package/dist/util/timer.d.ts +12 -0
  524. package/dist/util/timer.d.ts.map +1 -0
  525. package/dist/util/timer.js +23 -0
  526. package/dist/util/timer.js.map +1 -0
  527. package/dist/util/toolsetLock.d.ts +2 -0
  528. package/dist/util/toolsetLock.d.ts.map +1 -0
  529. package/dist/util/toolsetLock.js +20 -0
  530. package/dist/util/toolsetLock.js.map +1 -0
  531. package/dist/util/win/resEdit.d.ts +11 -0
  532. package/dist/util/win/resEdit.d.ts.map +1 -0
  533. package/dist/util/win/resEdit.js +46 -0
  534. package/dist/util/win/resEdit.js.map +1 -0
  535. package/dist/util/yarn.d.ts +23 -0
  536. package/dist/util/yarn.d.ts.map +1 -0
  537. package/dist/util/yarn.js +153 -0
  538. package/dist/util/yarn.js.map +1 -0
  539. package/dist/version.d.ts +2 -0
  540. package/dist/version.d.ts.map +1 -0
  541. package/dist/version.js +2 -0
  542. package/dist/version.js.map +1 -0
  543. package/dist/vm/MonoVm.d.ts +9 -0
  544. package/dist/vm/MonoVm.d.ts.map +1 -0
  545. package/dist/vm/MonoVm.js +16 -0
  546. package/dist/vm/MonoVm.js.map +1 -0
  547. package/dist/vm/ParallelsVm.d.ts +24 -0
  548. package/dist/vm/ParallelsVm.d.ts.map +1 -0
  549. package/dist/vm/ParallelsVm.js +107 -0
  550. package/dist/vm/ParallelsVm.js.map +1 -0
  551. package/dist/vm/PwshVm.d.ts +7 -0
  552. package/dist/vm/PwshVm.d.ts.map +1 -0
  553. package/dist/vm/PwshVm.js +21 -0
  554. package/dist/vm/PwshVm.js.map +1 -0
  555. package/dist/vm/WineVm.d.ts +14 -0
  556. package/dist/vm/WineVm.d.ts.map +1 -0
  557. package/dist/vm/WineVm.js +35 -0
  558. package/dist/vm/WineVm.js.map +1 -0
  559. package/dist/vm/vm.d.ts +15 -0
  560. package/dist/vm/vm.d.ts.map +1 -0
  561. package/dist/vm/vm.js +81 -0
  562. package/dist/vm/vm.js.map +1 -0
  563. package/dist/winPackager.d.ts +30 -0
  564. package/dist/winPackager.d.ts.map +1 -0
  565. package/dist/winPackager.js +270 -0
  566. package/dist/winPackager.js.map +1 -0
  567. package/helpers/package.json +6 -0
  568. package/helpers/remote-rebuild.js +2 -4
  569. package/package.json +30 -33
  570. package/scheme.json +379 -721
  571. package/out/Framework.d.ts +0 -36
  572. package/out/Framework.js +0 -7
  573. package/out/Framework.js.map +0 -1
  574. package/out/ProtonFramework.d.ts +0 -10
  575. package/out/ProtonFramework.js +0 -94
  576. package/out/ProtonFramework.js.map +0 -1
  577. package/out/appInfo.d.ts +0 -31
  578. package/out/appInfo.js +0 -152
  579. package/out/appInfo.js.map +0 -1
  580. package/out/asar/asar.d.ts +0 -38
  581. package/out/asar/asar.js +0 -163
  582. package/out/asar/asar.js.map +0 -1
  583. package/out/asar/asarFileChecker.d.ts +0 -2
  584. package/out/asar/asarFileChecker.js +0 -25
  585. package/out/asar/asarFileChecker.js.map +0 -1
  586. package/out/asar/asarUtil.d.ts +0 -1
  587. package/out/asar/asarUtil.js +0 -285
  588. package/out/asar/asarUtil.js.map +0 -1
  589. package/out/asar/integrity.d.ts +0 -15
  590. package/out/asar/integrity.js +0 -62
  591. package/out/asar/integrity.js.map +0 -1
  592. package/out/asar/unpackDetector.d.ts +0 -1
  593. package/out/asar/unpackDetector.js +0 -43
  594. package/out/asar/unpackDetector.js.map +0 -1
  595. package/out/binDownload.d.ts +0 -5
  596. package/out/binDownload.js +0 -104
  597. package/out/binDownload.js.map +0 -1
  598. package/out/codeSign/certInfo.d.ts +0 -54
  599. package/out/codeSign/certInfo.js +0 -466
  600. package/out/codeSign/certInfo.js.map +0 -1
  601. package/out/codeSign/codesign.d.ts +0 -3
  602. package/out/codeSign/codesign.js +0 -33
  603. package/out/codeSign/codesign.js.map +0 -1
  604. package/out/codeSign/macCodeSign.d.ts +0 -28
  605. package/out/codeSign/macCodeSign.js +0 -284
  606. package/out/codeSign/macCodeSign.js.map +0 -1
  607. package/out/codeSign/signManager.d.ts +0 -13
  608. package/out/codeSign/signManager.js +0 -3
  609. package/out/codeSign/signManager.js.map +0 -1
  610. package/out/codeSign/windowsCodeSign.d.ts +0 -7
  611. package/out/codeSign/windowsCodeSign.js +0 -38
  612. package/out/codeSign/windowsCodeSign.js.map +0 -1
  613. package/out/codeSign/windowsSignAzureManager.d.ts +0 -17
  614. package/out/codeSign/windowsSignAzureManager.js +0 -73
  615. package/out/codeSign/windowsSignAzureManager.js.map +0 -1
  616. package/out/codeSign/windowsSignToolManager.d.ts +0 -58
  617. package/out/codeSign/windowsSignToolManager.js +0 -376
  618. package/out/codeSign/windowsSignToolManager.js.map +0 -1
  619. package/out/configuration.d.ts +0 -532
  620. package/out/configuration.js +0 -3
  621. package/out/configuration.js.map +0 -1
  622. package/out/core.d.ts +0 -60
  623. package/out/core.js +0 -66
  624. package/out/core.js.map +0 -1
  625. package/out/electron/ElectronFramework.d.ts +0 -16
  626. package/out/electron/ElectronFramework.js +0 -242
  627. package/out/electron/ElectronFramework.js.map +0 -1
  628. package/out/electron/electronMac.d.ts +0 -1
  629. package/out/electron/electronMac.js +0 -262
  630. package/out/electron/electronMac.js.map +0 -1
  631. package/out/electron/electronVersion.d.ts +0 -6
  632. package/out/electron/electronVersion.js +0 -125
  633. package/out/electron/electronVersion.js.map +0 -1
  634. package/out/electron/electronWin.d.ts +0 -1
  635. package/out/electron/electronWin.js +0 -38
  636. package/out/electron/electronWin.js.map +0 -1
  637. package/out/electron/injectFFMPEG.d.ts +0 -11
  638. package/out/electron/injectFFMPEG.js +0 -57
  639. package/out/electron/injectFFMPEG.js.map +0 -1
  640. package/out/electron/search-module.d.ts +0 -23
  641. package/out/electron/search-module.js +0 -73
  642. package/out/electron/search-module.js.map +0 -1
  643. package/out/errorMessages.d.ts +0 -1
  644. package/out/errorMessages.js +0 -11
  645. package/out/errorMessages.js.map +0 -1
  646. package/out/fileMatcher.d.ts +0 -29
  647. package/out/fileMatcher.js +0 -292
  648. package/out/fileMatcher.js.map +0 -1
  649. package/out/fileTransformer.d.ts +0 -1
  650. package/out/fileTransformer.js +0 -107
  651. package/out/fileTransformer.js.map +0 -1
  652. package/out/forge-maker.d.ts +0 -5
  653. package/out/forge-maker.js +0 -23
  654. package/out/forge-maker.js.map +0 -1
  655. package/out/frameworks/LibUiFramework.d.ts +0 -47
  656. package/out/frameworks/LibUiFramework.js +0 -197
  657. package/out/frameworks/LibUiFramework.js.map +0 -1
  658. package/out/index.d.ts +0 -39
  659. package/out/index.js +0 -99
  660. package/out/index.js.map +0 -1
  661. package/out/linuxPackager.d.ts +0 -12
  662. package/out/linuxPackager.js +0 -77
  663. package/out/linuxPackager.js.map +0 -1
  664. package/out/mac/MacTargetHelper.d.ts +0 -29
  665. package/out/mac/MacTargetHelper.js +0 -273
  666. package/out/mac/MacTargetHelper.js.map +0 -1
  667. package/out/macPackager.d.ts +0 -49
  668. package/out/macPackager.js +0 -445
  669. package/out/macPackager.js.map +0 -1
  670. package/out/node-module-collector/bunNodeModulesCollector.d.ts +0 -10
  671. package/out/node-module-collector/bunNodeModulesCollector.js +0 -18
  672. package/out/node-module-collector/bunNodeModulesCollector.js.map +0 -1
  673. package/out/node-module-collector/hoist.d.ts +0 -123
  674. package/out/node-module-collector/hoist.js +0 -884
  675. package/out/node-module-collector/hoist.js.map +0 -1
  676. package/out/node-module-collector/index.d.ts +0 -18
  677. package/out/node-module-collector/index.js +0 -130
  678. package/out/node-module-collector/index.js.map +0 -1
  679. package/out/node-module-collector/moduleManager.d.ts +0 -93
  680. package/out/node-module-collector/moduleManager.js +0 -321
  681. package/out/node-module-collector/moduleManager.js.map +0 -1
  682. package/out/node-module-collector/nodeModulesCollector.d.ts +0 -137
  683. package/out/node-module-collector/nodeModulesCollector.js +0 -428
  684. package/out/node-module-collector/nodeModulesCollector.js.map +0 -1
  685. package/out/node-module-collector/npmNodeModulesCollector.d.ts +0 -14
  686. package/out/node-module-collector/npmNodeModulesCollector.js +0 -80
  687. package/out/node-module-collector/npmNodeModulesCollector.js.map +0 -1
  688. package/out/node-module-collector/packageManager.d.ts +0 -17
  689. package/out/node-module-collector/packageManager.js +0 -144
  690. package/out/node-module-collector/packageManager.js.map +0 -1
  691. package/out/node-module-collector/pnpmNodeModulesCollector.d.ts +0 -44
  692. package/out/node-module-collector/pnpmNodeModulesCollector.js +0 -191
  693. package/out/node-module-collector/pnpmNodeModulesCollector.js.map +0 -1
  694. package/out/node-module-collector/traversalNodeModulesCollector.d.ts +0 -18
  695. package/out/node-module-collector/traversalNodeModulesCollector.js +0 -122
  696. package/out/node-module-collector/traversalNodeModulesCollector.js.map +0 -1
  697. package/out/node-module-collector/types.d.ts +0 -52
  698. package/out/node-module-collector/types.js +0 -3
  699. package/out/node-module-collector/yarnBerryNodeModulesCollector.d.ts +0 -15
  700. package/out/node-module-collector/yarnBerryNodeModulesCollector.js +0 -93
  701. package/out/node-module-collector/yarnBerryNodeModulesCollector.js.map +0 -1
  702. package/out/node-module-collector/yarnNodeModulesCollector.d.ts +0 -10
  703. package/out/node-module-collector/yarnNodeModulesCollector.js +0 -22
  704. package/out/node-module-collector/yarnNodeModulesCollector.js.map +0 -1
  705. package/out/options/AppXOptions.d.ts +0 -105
  706. package/out/options/AppXOptions.js +0 -3
  707. package/out/options/AppXOptions.js.map +0 -1
  708. package/out/options/CommonWindowsInstallerConfiguration.d.ts +0 -47
  709. package/out/options/CommonWindowsInstallerConfiguration.js +0 -51
  710. package/out/options/CommonWindowsInstallerConfiguration.js.map +0 -1
  711. package/out/options/FileAssociation.d.ts +0 -45
  712. package/out/options/FileAssociation.js +0 -3
  713. package/out/options/MsiOptions.d.ts +0 -26
  714. package/out/options/MsiOptions.js +0 -3
  715. package/out/options/MsiOptions.js.map +0 -1
  716. package/out/options/MsiWrappedOptions.d.ts +0 -26
  717. package/out/options/MsiWrappedOptions.js +0 -3
  718. package/out/options/MsiWrappedOptions.js.map +0 -1
  719. package/out/options/PlatformSpecificBuildOptions.d.ts +0 -238
  720. package/out/options/PlatformSpecificBuildOptions.js +0 -3
  721. package/out/options/PlatformSpecificBuildOptions.js.map +0 -1
  722. package/out/options/SnapOptions.d.ts +0 -500
  723. package/out/options/SnapOptions.js +0 -3
  724. package/out/options/SnapOptions.js.map +0 -1
  725. package/out/options/SquirrelWindowsOptions.d.ts +0 -46
  726. package/out/options/SquirrelWindowsOptions.js +0 -3
  727. package/out/options/SquirrelWindowsOptions.js.map +0 -1
  728. package/out/options/linuxOptions.d.ts +0 -287
  729. package/out/options/linuxOptions.js +0 -3
  730. package/out/options/linuxOptions.js.map +0 -1
  731. package/out/options/macOptions.d.ts +0 -388
  732. package/out/options/macOptions.js +0 -3
  733. package/out/options/macOptions.js.map +0 -1
  734. package/out/options/metadata.d.ts +0 -53
  735. package/out/options/metadata.js +0 -3
  736. package/out/options/metadata.js.map +0 -1
  737. package/out/options/pkgOptions.d.ts +0 -136
  738. package/out/options/pkgOptions.js +0 -3
  739. package/out/options/pkgOptions.js.map +0 -1
  740. package/out/options/winOptions.d.ts +0 -164
  741. package/out/options/winOptions.js +0 -3
  742. package/out/options/winOptions.js.map +0 -1
  743. package/out/packager.d.ts +0 -99
  744. package/out/packager.js +0 -515
  745. package/out/packager.js.map +0 -1
  746. package/out/packagerApi.d.ts +0 -31
  747. package/out/packagerApi.js +0 -3
  748. package/out/packagerApi.js.map +0 -1
  749. package/out/platformPackager.d.ts +0 -101
  750. package/out/platformPackager.js +0 -714
  751. package/out/platformPackager.js.map +0 -1
  752. package/out/presets/rectCra.d.ts +0 -1
  753. package/out/presets/rectCra.js +0 -22
  754. package/out/presets/rectCra.js.map +0 -1
  755. package/out/publish/PublishManager.d.ts +0 -30
  756. package/out/publish/PublishManager.js +0 -497
  757. package/out/publish/PublishManager.js.map +0 -1
  758. package/out/publish/updateInfoBuilder.d.ts +0 -14
  759. package/out/publish/updateInfoBuilder.js +0 -226
  760. package/out/publish/updateInfoBuilder.js.map +0 -1
  761. package/out/targets/AppxCapabilities.d.ts +0 -8
  762. package/out/targets/AppxCapabilities.js +0 -258
  763. package/out/targets/AppxCapabilities.js.map +0 -1
  764. package/out/targets/AppxTarget.d.ts +0 -17
  765. package/out/targets/AppxTarget.js +0 -403
  766. package/out/targets/AppxTarget.js.map +0 -1
  767. package/out/targets/ArchiveTarget.d.ts +0 -11
  768. package/out/targets/ArchiveTarget.js +0 -88
  769. package/out/targets/ArchiveTarget.js.map +0 -1
  770. package/out/targets/FlatpakTarget.d.ts +0 -20
  771. package/out/targets/FlatpakTarget.js +0 -159
  772. package/out/targets/FlatpakTarget.js.map +0 -1
  773. package/out/targets/FpmTarget.d.ts +0 -22
  774. package/out/targets/FpmTarget.js +0 -372
  775. package/out/targets/FpmTarget.js.map +0 -1
  776. package/out/targets/LinuxTargetHelper.d.ts +0 -23
  777. package/out/targets/LinuxTargetHelper.js +0 -346
  778. package/out/targets/LinuxTargetHelper.js.map +0 -1
  779. package/out/targets/MsiTarget.d.ts +0 -28
  780. package/out/targets/MsiTarget.js +0 -268
  781. package/out/targets/MsiTarget.js.map +0 -1
  782. package/out/targets/MsiWrappedTarget.d.ts +0 -19
  783. package/out/targets/MsiWrappedTarget.js +0 -80
  784. package/out/targets/MsiWrappedTarget.js.map +0 -1
  785. package/out/targets/appimage/AppImageTarget.d.ts +0 -15
  786. package/out/targets/appimage/AppImageTarget.js +0 -147
  787. package/out/targets/appimage/AppImageTarget.js.map +0 -1
  788. package/out/targets/appimage/appImageUtil.d.ts +0 -56
  789. package/out/targets/appimage/appImageUtil.js +0 -323
  790. package/out/targets/appimage/appImageUtil.js.map +0 -1
  791. package/out/targets/appimage/appLauncher.d.ts +0 -3
  792. package/out/targets/appimage/appLauncher.js +0 -95
  793. package/out/targets/appimage/appLauncher.js.map +0 -1
  794. package/out/targets/archive.d.ts +0 -26
  795. package/out/targets/archive.js +0 -178
  796. package/out/targets/archive.js.map +0 -1
  797. package/out/targets/blockmap/blockmap.d.ts +0 -16
  798. package/out/targets/blockmap/blockmap.js +0 -153
  799. package/out/targets/blockmap/blockmap.js.map +0 -1
  800. package/out/targets/differentialUpdateInfoBuilder.d.ts +0 -15
  801. package/out/targets/differentialUpdateInfoBuilder.js +0 -80
  802. package/out/targets/differentialUpdateInfoBuilder.js.map +0 -1
  803. package/out/targets/nsis/Commands.d.ts +0 -9
  804. package/out/targets/nsis/Commands.js +0 -3
  805. package/out/targets/nsis/Commands.js.map +0 -1
  806. package/out/targets/nsis/Defines.d.ts +0 -80
  807. package/out/targets/nsis/Defines.js +0 -3
  808. package/out/targets/nsis/Defines.js.map +0 -1
  809. package/out/targets/nsis/NsisTarget.d.ts +0 -37
  810. package/out/targets/nsis/NsisTarget.js +0 -729
  811. package/out/targets/nsis/NsisTarget.js.map +0 -1
  812. package/out/targets/nsis/WebInstallerTarget.d.ts +0 -13
  813. package/out/targets/nsis/WebInstallerTarget.js +0 -47
  814. package/out/targets/nsis/WebInstallerTarget.js.map +0 -1
  815. package/out/targets/nsis/nsisLang.d.ts +0 -10
  816. package/out/targets/nsis/nsisLang.js +0 -100
  817. package/out/targets/nsis/nsisLang.js.map +0 -1
  818. package/out/targets/nsis/nsisLicense.d.ts +0 -4
  819. package/out/targets/nsis/nsisLicense.js +0 -77
  820. package/out/targets/nsis/nsisLicense.js.map +0 -1
  821. package/out/targets/nsis/nsisOptions.d.ts +0 -274
  822. package/out/targets/nsis/nsisOptions.js +0 -3
  823. package/out/targets/nsis/nsisOptions.js.map +0 -1
  824. package/out/targets/nsis/nsisScriptGenerator.d.ts +0 -12
  825. package/out/targets/nsis/nsisScriptGenerator.js +0 -64
  826. package/out/targets/nsis/nsisScriptGenerator.js.map +0 -1
  827. package/out/targets/nsis/nsisUtil.d.ts +0 -25
  828. package/out/targets/nsis/nsisUtil.js +0 -225
  829. package/out/targets/nsis/nsisUtil.js.map +0 -1
  830. package/out/targets/nsis/nsisValidation.d.ts +0 -18
  831. package/out/targets/nsis/nsisValidation.js +0 -53
  832. package/out/targets/nsis/nsisValidation.js.map +0 -1
  833. package/out/targets/pkg.d.ts +0 -30
  834. package/out/targets/pkg.js +0 -279
  835. package/out/targets/pkg.js.map +0 -1
  836. package/out/targets/snap/SnapTarget.d.ts +0 -36
  837. package/out/targets/snap/SnapTarget.js +0 -105
  838. package/out/targets/snap/SnapTarget.js.map +0 -1
  839. package/out/targets/snap/core24.d.ts +0 -52
  840. package/out/targets/snap/core24.js +0 -449
  841. package/out/targets/snap/core24.js.map +0 -1
  842. package/out/targets/snap/coreCustom.d.ts +0 -28
  843. package/out/targets/snap/coreCustom.js +0 -63
  844. package/out/targets/snap/coreCustom.js.map +0 -1
  845. package/out/targets/snap/coreLegacy.d.ts +0 -43
  846. package/out/targets/snap/coreLegacy.js +0 -416
  847. package/out/targets/snap/coreLegacy.js.map +0 -1
  848. package/out/targets/snap/snapcraftBuilder.d.ts +0 -39
  849. package/out/targets/snap/snapcraftBuilder.js +0 -419
  850. package/out/targets/snap/snapcraftBuilder.js.map +0 -1
  851. package/out/targets/targetFactory.d.ts +0 -12
  852. package/out/targets/targetFactory.js +0 -101
  853. package/out/targets/targetFactory.js.map +0 -1
  854. package/out/targets/targetUtil.d.ts +0 -14
  855. package/out/targets/targetUtil.js +0 -47
  856. package/out/targets/targetUtil.js.map +0 -1
  857. package/out/toolsets/7zip.d.ts +0 -2
  858. package/out/toolsets/7zip.js +0 -72
  859. package/out/toolsets/7zip.js.map +0 -1
  860. package/out/toolsets/icons.d.ts +0 -8
  861. package/out/toolsets/icons.js +0 -37
  862. package/out/toolsets/icons.js.map +0 -1
  863. package/out/toolsets/linux.d.ts +0 -26
  864. package/out/toolsets/linux.js +0 -146
  865. package/out/toolsets/linux.js.map +0 -1
  866. package/out/toolsets/windows.d.ts +0 -61
  867. package/out/toolsets/windows.js +0 -259
  868. package/out/toolsets/windows.js.map +0 -1
  869. package/out/toolsets/wine.d.ts +0 -5
  870. package/out/toolsets/wine.js +0 -100
  871. package/out/toolsets/wine.js.map +0 -1
  872. package/out/util/AppFileWalker.d.ts +0 -13
  873. package/out/util/AppFileWalker.js +0 -74
  874. package/out/util/AppFileWalker.js.map +0 -1
  875. package/out/util/NodeModuleCopyHelper.d.ts +0 -1
  876. package/out/util/NodeModuleCopyHelper.js +0 -165
  877. package/out/util/NodeModuleCopyHelper.js.map +0 -1
  878. package/out/util/appFileCopier.d.ts +0 -16
  879. package/out/util/appFileCopier.js +0 -251
  880. package/out/util/appFileCopier.js.map +0 -1
  881. package/out/util/asyncEventEmitter.d.ts +0 -33
  882. package/out/util/asyncEventEmitter.js +0 -63
  883. package/out/util/asyncEventEmitter.js.map +0 -1
  884. package/out/util/bundledTool.d.ts +0 -7
  885. package/out/util/bundledTool.js +0 -20
  886. package/out/util/bundledTool.js.map +0 -1
  887. package/out/util/cacheManager.d.ts +0 -18
  888. package/out/util/cacheManager.js +0 -70
  889. package/out/util/cacheManager.js.map +0 -1
  890. package/out/util/cacheState.d.ts +0 -28
  891. package/out/util/cacheState.js +0 -143
  892. package/out/util/cacheState.js.map +0 -1
  893. package/out/util/config/config.d.ts +0 -12
  894. package/out/util/config/config.js +0 -256
  895. package/out/util/config/config.js.map +0 -1
  896. package/out/util/config/load.d.ts +0 -19
  897. package/out/util/config/load.js +0 -129
  898. package/out/util/config/load.js.map +0 -1
  899. package/out/util/config/schemaValidator.d.ts +0 -7
  900. package/out/util/config/schemaValidator.js +0 -154
  901. package/out/util/config/schemaValidator.js.map +0 -1
  902. package/out/util/dynamicImport.d.ts +0 -1
  903. package/out/util/dynamicImport.js +0 -12
  904. package/out/util/dynamicImport.js.map +0 -1
  905. package/out/util/electronGet.d.ts +0 -61
  906. package/out/util/electronGet.js +0 -464
  907. package/out/util/electronGet.js.map +0 -1
  908. package/out/util/envPath.d.ts +0 -2
  909. package/out/util/envPath.js +0 -28
  910. package/out/util/envPath.js.map +0 -1
  911. package/out/util/filter.d.ts +0 -1
  912. package/out/util/filter.js +0 -68
  913. package/out/util/filter.js.map +0 -1
  914. package/out/util/flags.d.ts +0 -3
  915. package/out/util/flags.js +0 -16
  916. package/out/util/flags.js.map +0 -1
  917. package/out/util/hash.d.ts +0 -1
  918. package/out/util/hash.js +0 -19
  919. package/out/util/hash.js.map +0 -1
  920. package/out/util/iconConverter.d.ts +0 -25
  921. package/out/util/iconConverter.js +0 -260
  922. package/out/util/iconConverter.js.map +0 -1
  923. package/out/util/langs.d.ts +0 -189
  924. package/out/util/langs.js +0 -436
  925. package/out/util/langs.js.map +0 -1
  926. package/out/util/license.d.ts +0 -16
  927. package/out/util/license.js +0 -47
  928. package/out/util/license.js.map +0 -1
  929. package/out/util/macosIconComposer.d.ts +0 -10
  930. package/out/util/macosIconComposer.js +0 -102
  931. package/out/util/macosIconComposer.js.map +0 -1
  932. package/out/util/macosVersion.d.ts +0 -3
  933. package/out/util/macosVersion.js +0 -36
  934. package/out/util/macosVersion.js.map +0 -1
  935. package/out/util/macroExpander.d.ts +0 -3
  936. package/out/util/macroExpander.js +0 -64
  937. package/out/util/macroExpander.js.map +0 -1
  938. package/out/util/normalizePackageData.d.ts +0 -1
  939. package/out/util/normalizePackageData.js +0 -328
  940. package/out/util/normalizePackageData.js.map +0 -1
  941. package/out/util/packageDependencies.d.ts +0 -6
  942. package/out/util/packageDependencies.js +0 -3
  943. package/out/util/packageDependencies.js.map +0 -1
  944. package/out/util/packageMetadata.d.ts +0 -1
  945. package/out/util/packageMetadata.js +0 -124
  946. package/out/util/packageMetadata.js.map +0 -1
  947. package/out/util/pathManager.d.ts +0 -3
  948. package/out/util/pathManager.js +0 -23
  949. package/out/util/pathManager.js.map +0 -1
  950. package/out/util/plist.d.ts +0 -7
  951. package/out/util/plist.js +0 -31
  952. package/out/util/plist.js.map +0 -1
  953. package/out/util/rebuild.d.ts +0 -2
  954. package/out/util/rebuild.js +0 -60
  955. package/out/util/rebuild.js.map +0 -1
  956. package/out/util/repositoryInfo.d.ts +0 -3
  957. package/out/util/repositoryInfo.js +0 -79
  958. package/out/util/repositoryInfo.js.map +0 -1
  959. package/out/util/resEdit.d.ts +0 -10
  960. package/out/util/resEdit.js +0 -49
  961. package/out/util/resEdit.js.map +0 -1
  962. package/out/util/resolve.d.ts +0 -2
  963. package/out/util/resolve.js +0 -59
  964. package/out/util/resolve.js.map +0 -1
  965. package/out/util/timer.d.ts +0 -11
  966. package/out/util/timer.js +0 -28
  967. package/out/util/timer.js.map +0 -1
  968. package/out/util/toolsetLock.d.ts +0 -1
  969. package/out/util/toolsetLock.js +0 -23
  970. package/out/util/toolsetLock.js.map +0 -1
  971. package/out/util/yarn.d.ts +0 -22
  972. package/out/util/yarn.js +0 -160
  973. package/out/util/yarn.js.map +0 -1
  974. package/out/version.d.ts +0 -1
  975. package/out/version.js +0 -5
  976. package/out/version.js.map +0 -1
  977. package/out/vm/MonoVm.d.ts +0 -8
  978. package/out/vm/MonoVm.js +0 -20
  979. package/out/vm/MonoVm.js.map +0 -1
  980. package/out/vm/ParallelsVm.d.ts +0 -23
  981. package/out/vm/ParallelsVm.js +0 -102
  982. package/out/vm/ParallelsVm.js.map +0 -1
  983. package/out/vm/PwshVm.d.ts +0 -6
  984. package/out/vm/PwshVm.js +0 -25
  985. package/out/vm/PwshVm.js.map +0 -1
  986. package/out/vm/WineVm.d.ts +0 -12
  987. package/out/vm/WineVm.js +0 -38
  988. package/out/vm/WineVm.js.map +0 -1
  989. package/out/vm/vm.d.ts +0 -14
  990. package/out/vm/vm.js +0 -88
  991. package/out/vm/vm.js.map +0 -1
  992. package/out/winPackager.d.ts +0 -29
  993. package/out/winPackager.js +0 -271
  994. package/out/winPackager.js.map +0 -1
  995. /package/{out → dist}/node-module-collector/types.js.map +0 -0
  996. /package/{out → dist}/options/FileAssociation.js.map +0 -0
  997. /package/helpers/{dynamic-import.js → dynamic-import.cjs} +0 -0
@@ -1,428 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NodeModulesCollector = void 0;
4
- exports.buildPowerShellEncodedArgs = buildPowerShellEncodedArgs;
5
- const builder_util_1 = require("builder-util");
6
- const childProcess = require("child_process");
7
- const fs = require("fs-extra");
8
- const fs_extra_1 = require("fs-extra");
9
- const lazy_val_1 = require("lazy-val");
10
- const path = require("path");
11
- const hoist_1 = require("./hoist");
12
- const moduleManager_1 = require("./moduleManager");
13
- const packageManager_1 = require("./packageManager");
14
- class NodeModulesCollector {
15
- constructor(rootDir, tempDirManager) {
16
- this.rootDir = rootDir;
17
- this.tempDirManager = tempDirManager;
18
- this.nodeModules = [];
19
- this.allDependencies = new Map();
20
- this.productionGraph = {};
21
- this.cache = new moduleManager_1.ModuleManager();
22
- this.isHoisted = new lazy_val_1.Lazy(async () => {
23
- const { manager } = this.installOptions;
24
- const command = (0, packageManager_1.getPackageManagerCommand)(manager);
25
- const config = (await this.asyncExec(command, ["config", "list"])).stdout;
26
- if (config == null) {
27
- builder_util_1.log.debug({ manager }, "unable to determine node-linker setting; assuming non-hoisted (virtual store) layout");
28
- return false;
29
- }
30
- const lines = Object.fromEntries(config.split("\n").map(line => line.split("=").map(s => s.trim())));
31
- if (lines["node-linker"] === "hoisted") {
32
- builder_util_1.log.debug({ manager }, "node_modules are hoisted");
33
- return true;
34
- }
35
- return false;
36
- });
37
- }
38
- /**
39
- * Retrieves and collects all Node.js modules for a given package.
40
- *
41
- * This method orchestrates the entire module collection process by:
42
- * 1. Fetching the dependency tree from the package manager
43
- * 2. Collecting all dependencies recursively
44
- * 3. Extracting workspace references if applicable
45
- * 4. Building a production dependency graph
46
- * 5. Hoisting the dependencies to their final locations
47
- * 6. Resolving and returning module information
48
- */
49
- async getNodeModules({ packageName }) {
50
- const tree = await this.getDependenciesTree(this.installOptions.manager);
51
- await this.collectAllDependencies(tree, packageName);
52
- const realTree = this.getTreeFromWorkspaces(tree, packageName);
53
- await this.extractProductionDependencyGraph(realTree, packageName);
54
- const hoisterResult = (0, hoist_1.hoist)(this.transformToHoisterTree(this.productionGraph, packageName), {
55
- check: builder_util_1.log.isDebugEnabled,
56
- });
57
- await this._getNodeModules(hoisterResult.dependencies, this.nodeModules);
58
- builder_util_1.log.debug({ packageName, depCount: this.nodeModules.length }, "node modules collection complete");
59
- return { nodeModules: this.nodeModules, logSummary: this.cache.logSummary };
60
- }
61
- /**
62
- * Retrieves the dependency tree from the package manager.
63
- *
64
- * Executes the appropriate package manager command to fetch the dependency tree and writes
65
- * the output to a temporary file. Includes retry logic to handle transient failures such as
66
- * incomplete JSON output or missing files. Will retry up to 1 time with exponential backoff.
67
- */
68
- async getDependenciesTree(pm) {
69
- const command = (0, packageManager_1.getPackageManagerCommand)(pm);
70
- const args = this.getArgs();
71
- const tempOutputFile = await this.tempDirManager.getTempFile({
72
- prefix: path.basename(command, path.extname(command)),
73
- suffix: "output.json",
74
- });
75
- return (0, builder_util_1.retry)(async () => {
76
- await this.streamCollectorCommandToFile(command, args, this.rootDir, tempOutputFile);
77
- const shellOutput = await fs.readFile(tempOutputFile, { encoding: "utf8" });
78
- const result = await Promise.resolve(this.parseDependenciesTree(shellOutput));
79
- return result;
80
- }, {
81
- retries: 1,
82
- interval: 2000,
83
- backoff: 2000,
84
- shouldRetry: async (error) => {
85
- var _a, _b;
86
- const fields = { error: error.message, tempOutputFile, cwd: this.rootDir, packageManager: pm };
87
- if (!(await (0, builder_util_1.exists)(tempOutputFile))) {
88
- builder_util_1.log.debug(fields, "dependency tree output file missing, retrying");
89
- return true;
90
- }
91
- const fileContent = await fs.readFile(tempOutputFile, { encoding: "utf8" });
92
- fields.fileContentLength = fileContent.length.toString();
93
- if (fileContent.trim().length === 0) {
94
- builder_util_1.log.debug(fields, "dependency tree output file empty, retrying");
95
- return true;
96
- }
97
- // extract small start/end sample for debugging purposes (e.g. polluted console output)
98
- const lines = fileContent.split("\n");
99
- const lineSampleSize = Math.min(5, lines.length / 2);
100
- if (2 * lineSampleSize > 5) {
101
- fields.sampleStart = lines.slice(0, lineSampleSize).join("\n");
102
- fields.sampleEnd = lines.slice(-lineSampleSize).join("\n");
103
- }
104
- else {
105
- fields.content = fileContent;
106
- }
107
- // Both indicate truncated/polluted PM output (a transient that re-running the command clears).
108
- if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes("Unexpected end of JSON input")) || ((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes("No JSON content found in output"))) {
109
- builder_util_1.log.debug(fields, "JSON parse error in dependency tree, retrying");
110
- return true;
111
- }
112
- builder_util_1.log.error(fields, "error parsing dependencies tree");
113
- return false;
114
- },
115
- });
116
- }
117
- /**
118
- * Parses the dependencies tree from shell command output.
119
- *
120
- **/
121
- parseDependenciesTree(shellOutput) {
122
- return this.extractJsonFromPollutedOutput(shellOutput);
123
- }
124
- extractJsonFromPollutedOutput(shellOutput) {
125
- const consoleOutput = shellOutput.trim();
126
- try {
127
- // Please for the love of all that is holy, this should cover 99% of cases where npm/pnpm/yarn output is clean JSON
128
- return JSON.parse(consoleOutput);
129
- }
130
- catch {
131
- // ignore
132
- }
133
- // DEDICATED FALLBACK FOR POLLUTED OUTPUT, non-trivial to implement correctly, not needed in most cases, and highly inefficient
134
- // Find the first index that starts with { or [
135
- const bracketOpen = Math.max(consoleOutput.indexOf("{"), 0);
136
- const bracketOpenSquare = Math.max(consoleOutput.indexOf("["), 0);
137
- const start = Math.min(bracketOpen, bracketOpenSquare); // always non-negative due to Math.max above
138
- for (let i = start; i < consoleOutput.length; i++) {
139
- const slice = consoleOutput.slice(start, i + 1);
140
- try {
141
- return JSON.parse(slice);
142
- }
143
- catch {
144
- // ignore, try next
145
- }
146
- }
147
- throw new Error("No JSON content found in output");
148
- }
149
- cacheKey(pkg) {
150
- const rel = path.relative(this.rootDir, pkg.path);
151
- return `${pkg.name}::${pkg.version}::${rel !== null && rel !== void 0 ? rel : "."}`;
152
- }
153
- // We use the key (alias name) instead of value.name for npm aliased packages
154
- // e.g., { "foo": { name: "@scope/bar", ... } } should be stored as "foo@version"
155
- normalizePackageVersion(key, pkg) {
156
- return { id: `${key}@${pkg.version}`, pkgOverride: { ...pkg, name: key } };
157
- }
158
- /**
159
- * Determines if a given dependency is a production dependency of a package.
160
- *
161
- * Checks both the dependencies and optionalDependencies of a package to see if
162
- * the specified dependency name is listed.
163
- *
164
- * @param depName - The name of the dependency to check
165
- * @param pkg - The package to search for the dependency in
166
- * @returns True if the dependency is found in either dependencies or optionalDependencies, false otherwise
167
- */
168
- isProdDependency(depName, pkg) {
169
- const prodDeps = { ...pkg.dependencies, ...pkg.optionalDependencies };
170
- return prodDeps[depName] != null;
171
- }
172
- async locatePackageWithVersion(depTree) {
173
- const result = await this.cache.locatePackageVersion({
174
- parentDir: depTree.path,
175
- pkgName: depTree.name,
176
- requiredRange: depTree.version,
177
- });
178
- return result;
179
- }
180
- /**
181
- * Parses a dependency identifier string into name and version components.
182
- *
183
- * Handles both scoped packages (e.g., "@scope/pkg@1.2.3") and regular packages (e.g., "pkg@1.2.3").
184
- * If the identifier is malformed or cannot be parsed, defaults to treating the entire string as
185
- * the package name with an "unknown" version.
186
- */
187
- parseNameVersion(identifier) {
188
- let at;
189
- if (identifier.startsWith("@")) {
190
- // Scoped package: find the version separator after the scope (e.g. "@scope/pkg@1.2.3")
191
- const slashIndex = identifier.indexOf("/");
192
- if (slashIndex === -1) {
193
- return { name: identifier, version: "unknown" };
194
- }
195
- at = identifier.indexOf("@", slashIndex + 1);
196
- }
197
- else {
198
- at = identifier.indexOf("@");
199
- }
200
- if (at <= 0) {
201
- return { name: identifier, version: "unknown" };
202
- }
203
- return { name: identifier.slice(0, at), version: identifier.slice(at + 1) };
204
- }
205
- /**
206
- * Retrieves the dependency tree and handles workspace package self-references.
207
- *
208
- * If the project is a workspace project, this method removes the root package's self-reference
209
- * from the dependency tree to avoid circular dependencies. It promotes the root package's
210
- * direct dependencies to the top level of the tree.
211
- *
212
- * @param tree - The original dependency tree
213
- * @param packageName - The name of the package to check for and remove from the tree
214
- * @returns The extracted dependency subtree
215
- */
216
- getTreeFromWorkspaces(tree, packageName) {
217
- if (tree.workspaces && tree.dependencies) {
218
- for (const [key, value] of Object.entries(tree.dependencies)) {
219
- if (key === packageName) {
220
- return value;
221
- }
222
- }
223
- }
224
- return tree;
225
- }
226
- transformToHoisterTree(obj, key, nodes = new Map()) {
227
- let node = nodes.get(key);
228
- const { name, version } = this.parseNameVersion(key);
229
- if (!node) {
230
- node = {
231
- name,
232
- identName: name,
233
- reference: version,
234
- dependencies: new Set(),
235
- peerNames: new Set(),
236
- };
237
- nodes.set(key, node);
238
- const deps = (obj[key] || {}).dependencies || [];
239
- for (const dep of deps) {
240
- const child = this.transformToHoisterTree(obj, dep, nodes);
241
- node.dependencies.add(child);
242
- }
243
- }
244
- return node;
245
- }
246
- async _getNodeModules(dependencies, result) {
247
- var _a;
248
- if (dependencies.size === 0) {
249
- return;
250
- }
251
- for (const d of dependencies.values()) {
252
- const reference = [...d.references][0];
253
- const key = `${d.name}@${reference}`;
254
- // Normalize the path to handle mixed separators from pnpm JSON output on Windows
255
- const rawPath = (_a = this.allDependencies.get(key)) === null || _a === void 0 ? void 0 : _a.path;
256
- const p = rawPath != null ? path.normalize(rawPath) : undefined;
257
- if (p === undefined) {
258
- this.cache.logSummary[moduleManager_1.LogMessageByKey.PKG_NOT_FOUND].push(key);
259
- continue;
260
- }
261
- // fix npm list issue
262
- // https://github.com/npm/cli/issues/8535
263
- if (!(await this.cache.exists[p])) {
264
- this.logMissingDependency(key);
265
- continue;
266
- }
267
- const node = {
268
- name: d.name,
269
- version: reference,
270
- dir: await this.cache.realPath[p],
271
- };
272
- result.push(node);
273
- if (d.dependencies.size > 0) {
274
- node.dependencies = [];
275
- await this._getNodeModules(d.dependencies, node.dependencies);
276
- }
277
- }
278
- result.sort((a, b) => a.name.localeCompare(b.name));
279
- }
280
- logMissingDependency(pkgName) {
281
- const PLATFORM_PACKAGE_RE = /(linux|win32|darwin|freebsd|android)[-_](x64|arm64|ia32|arm|ppc64|s390x|loong64|riscv64|universal)/;
282
- const diskLogKey = PLATFORM_PACKAGE_RE.test(pkgName) ? moduleManager_1.LogMessageByKey.PKG_OPTIONAL_PLATFORM_NOT_INSTALLED : moduleManager_1.LogMessageByKey.PKG_NOT_ON_DISK;
283
- this.cache.logSummary[diskLogKey].push(pkgName);
284
- }
285
- async asyncExec(command, args, cwd = this.rootDir) {
286
- const file = await this.tempDirManager.getTempFile({ prefix: "exec-", suffix: ".txt" });
287
- try {
288
- await this.streamCollectorCommandToFile(command, args, cwd, file);
289
- const result = await fs.readFile(file, { encoding: "utf8" });
290
- return { stdout: result === null || result === void 0 ? void 0 : result.trim(), stderr: undefined };
291
- }
292
- catch (error) {
293
- builder_util_1.log.debug({ error: error.message }, "failed to execute command");
294
- return { stdout: undefined, stderr: error.message };
295
- }
296
- }
297
- /**
298
- * Executes a command and streams its output to a file.
299
- *
300
- * Spawns a child process to execute the specified command with arguments, capturing stdout
301
- * to a file. On Windows, wraps the invocation in `powershell.exe -EncodedCommand` (UTF-16LE
302
- * base64) to avoid spawning `.cmd` shims directly and to eliminate shell-injection surface area.
303
- * Enables corepack strict mode by default but allows process.env overrides.
304
- *
305
- * Special handling for `npm list` exit code 1, which is expected in certain scenarios.
306
- *
307
- * @param command - The command to execute
308
- * @param args - Array of command-line arguments
309
- * @param cwd - The working directory to execute the command in
310
- * @param tempOutputFile - The path to the temporary file where stdout will be written
311
- * @returns Promise that resolves when the command completes successfully or rejects if it fails
312
- * @throws {Error} If the child process spawn fails or exits with a non-zero code
313
- */
314
- async streamCollectorCommandToFile(command, args, cwd, tempOutputFile) {
315
- // Derive execName from the original command so the npm-list shouldIgnore check below keys off the
316
- // real invocation (e.g. "npm"), not the "powershell" wrapper we spawn on Windows.
317
- const execName = path.basename(command, path.extname(command));
318
- // On Windows the package-manager command is typically a `.cmd` shim (npm.cmd/pnpm.cmd/yarn.cmd),
319
- // which Node can no longer spawn directly (CVE-2024-27980). Rather than spawn with `shell: true` —
320
- // which emits the DEP0190 "args with shell" deprecation warning and forces manual metacharacter
321
- // escaping — wrap the invocation in a single PowerShell `-EncodedCommand`. The base64 (UTF-16LE)
322
- // payload sidesteps every shell-quoting layer, and `powershell.exe` is a real executable we spawn
323
- // directly with no shell. See buildPowerShellEncodedArgs for the UTF-8 / exit-code handling.
324
- const [spawnCommand, spawnArgs] = process.platform === "win32" ? ["powershell.exe", buildPowerShellEncodedArgs(command, args)] : [command, args];
325
- await new Promise((resolve, reject) => {
326
- const outStream = (0, fs_extra_1.createWriteStream)(tempOutputFile);
327
- const child = childProcess.spawn(spawnCommand, spawnArgs, {
328
- cwd,
329
- // Package manager invocations do not need signing/publishing credentials.
330
- env: { COREPACK_ENABLE_STRICT: "0", ...(0, builder_util_1.stripSensitiveEnvVars)(process.env) },
331
- });
332
- let stderr = "";
333
- // The process can close before all piped stdout has been flushed to disk. Resolving on the
334
- // child's "close" alone races the write stream and lets the caller read a TRUNCATED file
335
- // (manifesting as "No JSON content found in output"). Gate the settle on BOTH the child exit
336
- // (for the code/stderr) and the write stream's "finish" (all bytes flushed).
337
- let exitCode = null;
338
- let childClosed = false;
339
- let streamFinished = false;
340
- let settled = false;
341
- // `pipe` ends `outStream` when stdout EOFs, which triggers its "finish" once flushed.
342
- child.stdout.pipe(outStream);
343
- child.stderr.on("data", chunk => {
344
- stderr += chunk.toString();
345
- });
346
- const fail = (err) => {
347
- if (settled) {
348
- return;
349
- }
350
- settled = true;
351
- // Best-effort cleanup: stop the child and close the stream so we don't
352
- // waste CPU writing to a broken fd after rejection.
353
- try {
354
- child.kill();
355
- }
356
- catch {
357
- // ignore
358
- }
359
- try {
360
- outStream.destroy();
361
- }
362
- catch {
363
- // ignore
364
- }
365
- reject(err);
366
- };
367
- const settle = () => {
368
- if (settled || !childClosed || !streamFinished) {
369
- return;
370
- }
371
- const code = exitCode;
372
- // https://github.com/npm/npm/issues/17624
373
- const shouldIgnore = code === 1 && "npm" === execName.toLowerCase() && args.includes("list");
374
- if (shouldIgnore) {
375
- builder_util_1.log.debug(null, "`npm list` returned non-zero exit code, but it MIGHT be expected (https://github.com/npm/npm/issues/17624). Check stderr for details.");
376
- }
377
- if (stderr.length > 0) {
378
- builder_util_1.log.debug({ stderr }, "note: there was node module collector output on stderr");
379
- // Only surface stderr as a user-visible warning when the exit code itself is unexpected.
380
- // When shouldIgnore is true (npm list exit code 1) the stderr is an anticipated side
381
- // effect of package-manager features like yarn resolutions or npm overrides that cause
382
- // npm to report ELSPROBLEMS for aliased packages it considers "invalid".
383
- if (!shouldIgnore) {
384
- this.cache.logSummary[moduleManager_1.LogMessageByKey.PKG_COLLECTOR_OUTPUT].push(stderr);
385
- }
386
- }
387
- settled = true;
388
- const shouldResolve = code === 0 || shouldIgnore;
389
- return shouldResolve ? resolve() : reject(new Error(`Node module collector process exited with code ${code}:\n${stderr}`));
390
- };
391
- outStream.on("error", err => fail(new Error(`Node module collector failed writing output (${command}): ${err.message}`)));
392
- outStream.on("finish", () => {
393
- streamFinished = true;
394
- settle();
395
- });
396
- child.on("error", err => {
397
- fail(new Error(`Node module collector spawn (${command} ${JSON.stringify(args)}) failed: ${err.message}`));
398
- });
399
- child.on("close", code => {
400
- exitCode = code;
401
- childClosed = true;
402
- settle();
403
- });
404
- });
405
- }
406
- }
407
- exports.NodeModulesCollector = NodeModulesCollector;
408
- /**
409
- * Build the argv for invoking a Windows command through `powershell.exe -EncodedCommand`.
410
- *
411
- * Each token is wrapped in a PowerShell single-quoted string (with embedded single quotes doubled),
412
- * so no character is interpreted by a shell. The script:
413
- * - pins `[Console]::OutputEncoding` to UTF-8 *without* a BOM so the JSON dependency tree is not
414
- * corrupted by the console's OEM code page (and no BOM is prepended to break `JSON.parse`),
415
- * - invokes the command via the call operator `&`,
416
- * - re-emits the command's own exit code via `exit $LASTEXITCODE` (e.g. `npm list` returns 1 in
417
- * expected scenarios, which the caller's shouldIgnore logic relies on).
418
- *
419
- * The whole script is base64-encoded as UTF-16LE per PowerShell's `-EncodedCommand` contract.
420
- */
421
- function buildPowerShellEncodedArgs(command, args) {
422
- const psQuote = (value) => `'${value.replace(/'/g, "''")}'`;
423
- const invocation = ["&", psQuote(command), ...args.map(psQuote)].join(" ");
424
- const script = `[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new($false); ${invocation}; exit $LASTEXITCODE`;
425
- const encoded = Buffer.from(script, "utf16le").toString("base64");
426
- return ["-NoProfile", "-NonInteractive", "-EncodedCommand", encoded];
427
- }
428
- //# sourceMappingURL=nodeModulesCollector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeModulesCollector.js","sourceRoot":"","sources":["../../src/node-module-collector/nodeModulesCollector.ts"],"names":[],"mappings":";;;AAwdA,gEAMC;AA9dD,+CAAgF;AAChF,8CAA6C;AAC7C,+BAA8B;AAC9B,uCAA4C;AAC5C,uCAA+B;AAC/B,6BAA4B;AAC5B,mCAAqE;AACrE,mDAAgE;AAChE,qDAA+D;AAG/D,MAAsB,oBAAoB;IAsBxC,YACqB,OAAe,EACjB,cAAsB;QADpB,YAAO,GAAP,OAAO,CAAQ;QACjB,mBAAc,GAAd,cAAc,CAAQ;QAvBxB,gBAAW,GAAqB,EAAE,CAAA;QAChC,oBAAe,GAA6B,IAAI,GAAG,EAAE,CAAA;QACrD,oBAAe,GAAoB,EAAE,CAAA;QACrC,UAAK,GAAkB,IAAI,6BAAa,EAAE,CAAA;QAEnD,cAAS,GAAG,IAAI,eAAI,CAAU,KAAK,IAAI,EAAE;YACjD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAA;YACvC,MAAM,OAAO,GAAG,IAAA,yCAAwB,EAAC,OAAO,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACzE,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,kBAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,sFAAsF,CAAC,CAAA;gBAC9G,OAAO,KAAK,CAAA;YACd,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACpG,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvC,kBAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAA;gBAClD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IAKC,CAAC;IAEJ;;;;;;;;;;OAUG;IACI,KAAK,CAAC,cAAc,CAAC,EAAE,WAAW,EAA2B;QAIlE,MAAM,IAAI,GAAgB,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAErF,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAgB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC3E,MAAM,IAAI,CAAC,gCAAgC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;QAElE,MAAM,aAAa,GAAkB,IAAA,aAAK,EAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE;YACzG,KAAK,EAAE,kBAAG,CAAC,cAAc;SAC1B,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAExE,kBAAG,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,kCAAkC,CAAC,CAAA;QAEjG,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;IAC7E,CAAC;IAWD;;;;;;OAMG;IACO,KAAK,CAAC,mBAAmB,CAAC,EAAM;QACxC,MAAM,OAAO,GAAG,IAAA,yCAAwB,EAAC,EAAE,CAAC,CAAA;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAE3B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;YAC3D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,EAAE,aAAa;SACtB,CAAC,CAAA;QAEF,OAAO,IAAA,oBAAK,EACV,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;YACpF,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;YAC3E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAA;YAC7E,OAAO,MAAM,CAAA;QACf,CAAC,EACD;YACE,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;;gBAChC,MAAM,MAAM,GAA2B,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAA;gBAEtH,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC;oBACpC,kBAAG,CAAC,KAAK,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAA;oBAClE,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC3E,MAAM,CAAC,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;gBAExD,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpC,kBAAG,CAAC,KAAK,CAAC,MAAM,EAAE,6CAA6C,CAAC,CAAA;oBAChE,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,uFAAuF;gBACvF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACrC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBACpD,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC9D,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC5D,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,OAAO,GAAG,WAAW,CAAA;gBAC9B,CAAC;gBAED,+FAA+F;gBAC/F,IAAI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,CAAC,8BAA8B,CAAC,MAAI,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,CAAC,iCAAiC,CAAC,CAAA,EAAE,CAAC;oBAC1H,kBAAG,CAAC,KAAK,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAA;oBAClE,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,kBAAG,CAAC,KAAK,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAA;gBACpD,OAAO,KAAK,CAAA;YACd,CAAC;SACF,CACF,CAAA;IACH,CAAC;IAED;;;QAGI;IACM,qBAAqB,CAAC,WAAmB;QACjD,OAAO,IAAI,CAAC,6BAA6B,CAAc,WAAW,CAAC,CAAA;IACrE,CAAC;IAES,6BAA6B,CAAI,WAAmB;QAC5D,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;QACxC,IAAI,CAAC;YACH,mHAAmH;YACnH,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,+HAA+H;QAE/H,+CAA+C;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA,CAAC,4CAA4C;QAEnG,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,mBAAmB;YACrB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAES,QAAQ,CAAC,GAAmD;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACjD,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,GAAG,EAAE,CAAA;IACrD,CAAC;IAED,6EAA6E;IAC7E,iFAAiF;IACvE,uBAAuB,CAAC,GAAW,EAAE,GAAgB;QAC7D,OAAO,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAA;IAC5E,CAAC;IAED;;;;;;;;;OASG;IACO,gBAAgB,CAAC,OAAe,EAAE,GAAgB;QAC1D,MAAM,QAAQ,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAAA;QACrE,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;IAClC,CAAC;IAES,KAAK,CAAC,wBAAwB,CAAC,OAAuD;QAC9F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACnD,SAAS,EAAE,OAAO,CAAC,IAAI;YACvB,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,aAAa,EAAE,OAAO,CAAC,OAAO;SAC/B,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IACD;;;;;;OAMG;IACO,gBAAgB,CAAC,UAAkB;QAC3C,IAAI,EAAU,CAAA;QACd,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,uFAAuF;YACvF,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC1C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;YACjD,CAAC;YACD,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACZ,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;QACjD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;IAC7E,CAAC;IAED;;;;;;;;;;OAUG;IACO,qBAAqB,CAAC,IAAiB,EAAE,WAAmB;QACpE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7D,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,sBAAsB,CAAC,GAAoB,EAAE,GAAW,EAAE,QAAkC,IAAI,GAAG,EAAE;QAC3G,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAEpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG;gBACL,IAAI;gBACJ,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,OAAO;gBAClB,YAAY,EAAE,IAAI,GAAG,EAAe;gBACpC,SAAS,EAAE,IAAI,GAAG,EAAU;aAC7B,CAAA;YAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAEpB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,CAAA;YAChD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;gBAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,YAAgC,EAAE,MAAwB;;QACtF,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;YACtC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,EAAE,CAAA;YACpC,iFAAiF;YACjF,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,IAAI,CAAA;YACnD,MAAM,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC/D,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,+BAAe,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC9D,SAAQ;YACV,CAAC;YAED,qBAAqB;YACrB,yCAAyC;YACzC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;gBAC9B,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,GAAmB;gBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,SAAS;gBAClB,GAAG,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;aAClC,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjB,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;gBACtB,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACrD,CAAC;IAES,oBAAoB,CAAC,OAAe;QAC5C,MAAM,mBAAmB,GAAG,oGAAoG,CAAA;QAChI,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,+BAAe,CAAC,mCAAmC,CAAC,CAAC,CAAC,+BAAe,CAAC,eAAe,CAAA;QAC5I,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,IAAc,EAAE,MAAc,IAAI,CAAC,OAAO;QACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QACvF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;YAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;QACtD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,kBAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,2BAA2B,CAAC,CAAA;YAChE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;QACrD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACO,KAAK,CAAC,4BAA4B,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW,EAAE,cAAsB;QAC/G,kGAAkG;QAClG,kFAAkF;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAE9D,iGAAiG;QACjG,mGAAmG;QACnG,gGAAgG;QAChG,iGAAiG;QACjG,kGAAkG;QAClG,6FAA6F;QAC7F,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAE,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAW,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,IAAI,CAAW,CAAA;QAEtK,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,SAAS,GAAG,IAAA,4BAAiB,EAAC,cAAc,CAAC,CAAA;YAEnD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE;gBACxD,GAAG;gBACH,0EAA0E;gBAC1E,GAAG,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,GAAG,IAAA,oCAAqB,EAAC,OAAO,CAAC,GAAG,CAAC,EAAE;aAC5E,CAAC,CAAA;YAEF,IAAI,MAAM,GAAG,EAAE,CAAA;YACf,2FAA2F;YAC3F,yFAAyF;YACzF,6FAA6F;YAC7F,6EAA6E;YAC7E,IAAI,QAAQ,GAAkB,IAAI,CAAA;YAClC,IAAI,WAAW,GAAG,KAAK,CAAA;YACvB,IAAI,cAAc,GAAG,KAAK,CAAA;YAC1B,IAAI,OAAO,GAAG,KAAK,CAAA;YAEnB,sFAAsF;YACtF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;YAC5B,CAAC,CAAC,CAAA;YAEF,MAAM,IAAI,GAAG,CAAC,GAAU,EAAE,EAAE;gBAC1B,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAM;gBACR,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,uEAAuE;gBACvE,oDAAoD;gBACpD,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,EAAE,CAAA;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC;oBACH,SAAS,CAAC,OAAO,EAAE,CAAA;gBACrB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC,CAAA;YAED,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,IAAI,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC/C,OAAM;gBACR,CAAC;gBACD,MAAM,IAAI,GAAG,QAAQ,CAAA;gBACrB,0CAA0C;gBAC1C,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,QAAQ,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAC5F,IAAI,YAAY,EAAE,CAAC;oBACjB,kBAAG,CAAC,KAAK,CAAC,IAAI,EAAE,uIAAuI,CAAC,CAAA;gBAC1J,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,kBAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,wDAAwD,CAAC,CAAA;oBAC/E,yFAAyF;oBACzF,qFAAqF;oBACrF,uFAAuF;oBACvF,yEAAyE;oBACzE,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,+BAAe,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAC1E,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,IAAI,YAAY,CAAA;gBAChD,OAAO,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kDAAkD,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC,CAAA;YAC5H,CAAC,CAAA;YAED,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,gDAAgD,OAAO,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;YACzH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAC1B,cAAc,GAAG,IAAI,CAAA;gBACrB,MAAM,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;YACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,IAAI,KAAK,CAAC,gCAAgC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YAC5G,CAAC,CAAC,CAAA;YACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACvB,QAAQ,GAAG,IAAI,CAAA;gBACf,WAAW,GAAG,IAAI,CAAA;gBAClB,MAAM,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AA9bD,oDA8bC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,0BAA0B,CAAC,OAAe,EAAE,IAAc;IACxE,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAA;IACnE,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,sEAAsE,UAAU,sBAAsB,CAAA;IACrH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACjE,OAAO,CAAC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;AACtE,CAAC","sourcesContent":["import { exists, log, retry, stripSensitiveEnvVars, TmpDir } from \"builder-util\"\nimport * as childProcess from \"child_process\"\nimport * as fs from \"fs-extra\"\nimport { createWriteStream } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { hoist, type HoisterResult, type HoisterTree } from \"./hoist\"\nimport { LogMessageByKey, ModuleManager } from \"./moduleManager\"\nimport { getPackageManagerCommand, PM } from \"./packageManager\"\nimport type { Dependency, DependencyGraph, NodeModuleInfo, PackageJson } from \"./types\"\n\nexport abstract class NodeModulesCollector<ProdDepType extends Dependency<ProdDepType, OptionalDepType>, OptionalDepType> {\n private readonly nodeModules: NodeModuleInfo[] = []\n protected readonly allDependencies: Map<string, ProdDepType> = new Map()\n protected readonly productionGraph: DependencyGraph = {}\n protected readonly cache: ModuleManager = new ModuleManager()\n\n protected isHoisted = new Lazy<boolean>(async () => {\n const { manager } = this.installOptions\n const command = getPackageManagerCommand(manager)\n const config = (await this.asyncExec(command, [\"config\", \"list\"])).stdout\n if (config == null) {\n log.debug({ manager }, \"unable to determine node-linker setting; assuming non-hoisted (virtual store) layout\")\n return false\n }\n const lines = Object.fromEntries(config.split(\"\\n\").map(line => line.split(\"=\").map(s => s.trim())))\n if (lines[\"node-linker\"] === \"hoisted\") {\n log.debug({ manager }, \"node_modules are hoisted\")\n return true\n }\n return false\n })\n\n constructor(\n protected readonly rootDir: string,\n private readonly tempDirManager: TmpDir\n ) {}\n\n /**\n * Retrieves and collects all Node.js modules for a given package.\n *\n * This method orchestrates the entire module collection process by:\n * 1. Fetching the dependency tree from the package manager\n * 2. Collecting all dependencies recursively\n * 3. Extracting workspace references if applicable\n * 4. Building a production dependency graph\n * 5. Hoisting the dependencies to their final locations\n * 6. Resolving and returning module information\n */\n public async getNodeModules({ packageName }: { packageName: string }): Promise<{\n nodeModules: NodeModuleInfo[]\n logSummary: ModuleManager[\"logSummary\"]\n }> {\n const tree: ProdDepType = await this.getDependenciesTree(this.installOptions.manager)\n\n await this.collectAllDependencies(tree, packageName)\n const realTree: ProdDepType = this.getTreeFromWorkspaces(tree, packageName)\n await this.extractProductionDependencyGraph(realTree, packageName)\n\n const hoisterResult: HoisterResult = hoist(this.transformToHoisterTree(this.productionGraph, packageName), {\n check: log.isDebugEnabled,\n })\n\n await this._getNodeModules(hoisterResult.dependencies, this.nodeModules)\n\n log.debug({ packageName, depCount: this.nodeModules.length }, \"node modules collection complete\")\n\n return { nodeModules: this.nodeModules, logSummary: this.cache.logSummary }\n }\n\n public abstract readonly installOptions: {\n manager: PM\n lockfile: string\n }\n\n protected abstract getArgs(): string[]\n protected abstract extractProductionDependencyGraph(tree: Dependency<ProdDepType, OptionalDepType>, dependencyId: string): Promise<void>\n protected abstract collectAllDependencies(tree: Dependency<ProdDepType, OptionalDepType>, appPackageName: string): Promise<void>\n\n /**\n * Retrieves the dependency tree from the package manager.\n *\n * Executes the appropriate package manager command to fetch the dependency tree and writes\n * the output to a temporary file. Includes retry logic to handle transient failures such as\n * incomplete JSON output or missing files. Will retry up to 1 time with exponential backoff.\n */\n protected async getDependenciesTree(pm: PM): Promise<ProdDepType> {\n const command = getPackageManagerCommand(pm)\n const args = this.getArgs()\n\n const tempOutputFile = await this.tempDirManager.getTempFile({\n prefix: path.basename(command, path.extname(command)),\n suffix: \"output.json\",\n })\n\n return retry(\n async () => {\n await this.streamCollectorCommandToFile(command, args, this.rootDir, tempOutputFile)\n const shellOutput = await fs.readFile(tempOutputFile, { encoding: \"utf8\" })\n const result = await Promise.resolve(this.parseDependenciesTree(shellOutput))\n return result\n },\n {\n retries: 1,\n interval: 2000,\n backoff: 2000,\n shouldRetry: async (error: any) => {\n const fields: Record<string, string> = { error: error.message, tempOutputFile, cwd: this.rootDir, packageManager: pm }\n\n if (!(await exists(tempOutputFile))) {\n log.debug(fields, \"dependency tree output file missing, retrying\")\n return true\n }\n\n const fileContent = await fs.readFile(tempOutputFile, { encoding: \"utf8\" })\n fields.fileContentLength = fileContent.length.toString()\n\n if (fileContent.trim().length === 0) {\n log.debug(fields, \"dependency tree output file empty, retrying\")\n return true\n }\n\n // extract small start/end sample for debugging purposes (e.g. polluted console output)\n const lines = fileContent.split(\"\\n\")\n const lineSampleSize = Math.min(5, lines.length / 2)\n if (2 * lineSampleSize > 5) {\n fields.sampleStart = lines.slice(0, lineSampleSize).join(\"\\n\")\n fields.sampleEnd = lines.slice(-lineSampleSize).join(\"\\n\")\n } else {\n fields.content = fileContent\n }\n\n // Both indicate truncated/polluted PM output (a transient that re-running the command clears).\n if (error.message?.includes(\"Unexpected end of JSON input\") || error.message?.includes(\"No JSON content found in output\")) {\n log.debug(fields, \"JSON parse error in dependency tree, retrying\")\n return true\n }\n\n log.error(fields, \"error parsing dependencies tree\")\n return false\n },\n }\n )\n }\n\n /**\n * Parses the dependencies tree from shell command output.\n *\n **/\n protected parseDependenciesTree(shellOutput: string): ProdDepType | Promise<ProdDepType> {\n return this.extractJsonFromPollutedOutput<ProdDepType>(shellOutput)\n }\n\n protected extractJsonFromPollutedOutput<T>(shellOutput: string): T {\n const consoleOutput = shellOutput.trim()\n try {\n // Please for the love of all that is holy, this should cover 99% of cases where npm/pnpm/yarn output is clean JSON\n return JSON.parse(consoleOutput)\n } catch {\n // ignore\n }\n\n // DEDICATED FALLBACK FOR POLLUTED OUTPUT, non-trivial to implement correctly, not needed in most cases, and highly inefficient\n\n // Find the first index that starts with { or [\n const bracketOpen = Math.max(consoleOutput.indexOf(\"{\"), 0)\n const bracketOpenSquare = Math.max(consoleOutput.indexOf(\"[\"), 0)\n const start = Math.min(bracketOpen, bracketOpenSquare) // always non-negative due to Math.max above\n\n for (let i = start; i < consoleOutput.length; i++) {\n const slice = consoleOutput.slice(start, i + 1)\n try {\n return JSON.parse(slice)\n } catch {\n // ignore, try next\n }\n }\n throw new Error(\"No JSON content found in output\")\n }\n\n protected cacheKey(pkg: Pick<ProdDepType, \"name\" | \"version\" | \"path\">): string {\n const rel = path.relative(this.rootDir, pkg.path)\n return `${pkg.name}::${pkg.version}::${rel ?? \".\"}`\n }\n\n // We use the key (alias name) instead of value.name for npm aliased packages\n // e.g., { \"foo\": { name: \"@scope/bar\", ... } } should be stored as \"foo@version\"\n protected normalizePackageVersion(key: string, pkg: ProdDepType) {\n return { id: `${key}@${pkg.version}`, pkgOverride: { ...pkg, name: key } }\n }\n\n /**\n * Determines if a given dependency is a production dependency of a package.\n *\n * Checks both the dependencies and optionalDependencies of a package to see if\n * the specified dependency name is listed.\n *\n * @param depName - The name of the dependency to check\n * @param pkg - The package to search for the dependency in\n * @returns True if the dependency is found in either dependencies or optionalDependencies, false otherwise\n */\n protected isProdDependency(depName: string, pkg: ProdDepType): boolean {\n const prodDeps = { ...pkg.dependencies, ...pkg.optionalDependencies }\n return prodDeps[depName] != null\n }\n\n protected async locatePackageWithVersion(depTree: Pick<ProdDepType, \"name\" | \"version\" | \"path\">): Promise<{ packageDir: string; packageJson: PackageJson } | null> {\n const result = await this.cache.locatePackageVersion({\n parentDir: depTree.path,\n pkgName: depTree.name,\n requiredRange: depTree.version,\n })\n return result\n }\n /**\n * Parses a dependency identifier string into name and version components.\n *\n * Handles both scoped packages (e.g., \"@scope/pkg@1.2.3\") and regular packages (e.g., \"pkg@1.2.3\").\n * If the identifier is malformed or cannot be parsed, defaults to treating the entire string as\n * the package name with an \"unknown\" version.\n */\n protected parseNameVersion(identifier: string): { name: string; version: string } {\n let at: number\n if (identifier.startsWith(\"@\")) {\n // Scoped package: find the version separator after the scope (e.g. \"@scope/pkg@1.2.3\")\n const slashIndex = identifier.indexOf(\"/\")\n if (slashIndex === -1) {\n return { name: identifier, version: \"unknown\" }\n }\n at = identifier.indexOf(\"@\", slashIndex + 1)\n } else {\n at = identifier.indexOf(\"@\")\n }\n if (at <= 0) {\n return { name: identifier, version: \"unknown\" }\n }\n return { name: identifier.slice(0, at), version: identifier.slice(at + 1) }\n }\n\n /**\n * Retrieves the dependency tree and handles workspace package self-references.\n *\n * If the project is a workspace project, this method removes the root package's self-reference\n * from the dependency tree to avoid circular dependencies. It promotes the root package's\n * direct dependencies to the top level of the tree.\n *\n * @param tree - The original dependency tree\n * @param packageName - The name of the package to check for and remove from the tree\n * @returns The extracted dependency subtree\n */\n protected getTreeFromWorkspaces(tree: ProdDepType, packageName: string): ProdDepType {\n if (tree.workspaces && tree.dependencies) {\n for (const [key, value] of Object.entries(tree.dependencies)) {\n if (key === packageName) {\n return value\n }\n }\n }\n\n return tree\n }\n\n private transformToHoisterTree(obj: DependencyGraph, key: string, nodes: Map<string, HoisterTree> = new Map()): HoisterTree {\n let node = nodes.get(key)\n const { name, version } = this.parseNameVersion(key)\n\n if (!node) {\n node = {\n name,\n identName: name,\n reference: version,\n dependencies: new Set<HoisterTree>(),\n peerNames: new Set<string>(),\n }\n\n nodes.set(key, node)\n\n const deps = (obj[key] || {}).dependencies || []\n for (const dep of deps) {\n const child = this.transformToHoisterTree(obj, dep, nodes)\n node.dependencies.add(child)\n }\n }\n\n return node\n }\n\n private async _getNodeModules(dependencies: Set<HoisterResult>, result: NodeModuleInfo[]) {\n if (dependencies.size === 0) {\n return\n }\n\n for (const d of dependencies.values()) {\n const reference = [...d.references][0]\n const key = `${d.name}@${reference}`\n // Normalize the path to handle mixed separators from pnpm JSON output on Windows\n const rawPath = this.allDependencies.get(key)?.path\n const p = rawPath != null ? path.normalize(rawPath) : undefined\n if (p === undefined) {\n this.cache.logSummary[LogMessageByKey.PKG_NOT_FOUND].push(key)\n continue\n }\n\n // fix npm list issue\n // https://github.com/npm/cli/issues/8535\n if (!(await this.cache.exists[p])) {\n this.logMissingDependency(key)\n continue\n }\n\n const node: NodeModuleInfo = {\n name: d.name,\n version: reference,\n dir: await this.cache.realPath[p],\n }\n result.push(node)\n if (d.dependencies.size > 0) {\n node.dependencies = []\n await this._getNodeModules(d.dependencies, node.dependencies)\n }\n }\n result.sort((a, b) => a.name.localeCompare(b.name))\n }\n\n protected logMissingDependency(pkgName: string) {\n const PLATFORM_PACKAGE_RE = /(linux|win32|darwin|freebsd|android)[-_](x64|arm64|ia32|arm|ppc64|s390x|loong64|riscv64|universal)/\n const diskLogKey = PLATFORM_PACKAGE_RE.test(pkgName) ? LogMessageByKey.PKG_OPTIONAL_PLATFORM_NOT_INSTALLED : LogMessageByKey.PKG_NOT_ON_DISK\n this.cache.logSummary[diskLogKey].push(pkgName)\n }\n\n protected async asyncExec(command: string, args: string[], cwd: string = this.rootDir): Promise<{ stdout: string | undefined; stderr: string | undefined }> {\n const file = await this.tempDirManager.getTempFile({ prefix: \"exec-\", suffix: \".txt\" })\n try {\n await this.streamCollectorCommandToFile(command, args, cwd, file)\n const result = await fs.readFile(file, { encoding: \"utf8\" })\n return { stdout: result?.trim(), stderr: undefined }\n } catch (error: any) {\n log.debug({ error: error.message }, \"failed to execute command\")\n return { stdout: undefined, stderr: error.message }\n }\n }\n\n /**\n * Executes a command and streams its output to a file.\n *\n * Spawns a child process to execute the specified command with arguments, capturing stdout\n * to a file. On Windows, wraps the invocation in `powershell.exe -EncodedCommand` (UTF-16LE\n * base64) to avoid spawning `.cmd` shims directly and to eliminate shell-injection surface area.\n * Enables corepack strict mode by default but allows process.env overrides.\n *\n * Special handling for `npm list` exit code 1, which is expected in certain scenarios.\n *\n * @param command - The command to execute\n * @param args - Array of command-line arguments\n * @param cwd - The working directory to execute the command in\n * @param tempOutputFile - The path to the temporary file where stdout will be written\n * @returns Promise that resolves when the command completes successfully or rejects if it fails\n * @throws {Error} If the child process spawn fails or exits with a non-zero code\n */\n protected async streamCollectorCommandToFile(command: string, args: string[], cwd: string, tempOutputFile: string) {\n // Derive execName from the original command so the npm-list shouldIgnore check below keys off the\n // real invocation (e.g. \"npm\"), not the \"powershell\" wrapper we spawn on Windows.\n const execName = path.basename(command, path.extname(command))\n\n // On Windows the package-manager command is typically a `.cmd` shim (npm.cmd/pnpm.cmd/yarn.cmd),\n // which Node can no longer spawn directly (CVE-2024-27980). Rather than spawn with `shell: true` —\n // which emits the DEP0190 \"args with shell\" deprecation warning and forces manual metacharacter\n // escaping — wrap the invocation in a single PowerShell `-EncodedCommand`. The base64 (UTF-16LE)\n // payload sidesteps every shell-quoting layer, and `powershell.exe` is a real executable we spawn\n // directly with no shell. See buildPowerShellEncodedArgs for the UTF-8 / exit-code handling.\n const [spawnCommand, spawnArgs] = process.platform === \"win32\" ? ([\"powershell.exe\", buildPowerShellEncodedArgs(command, args)] as const) : ([command, args] as const)\n\n await new Promise<void>((resolve, reject) => {\n const outStream = createWriteStream(tempOutputFile)\n\n const child = childProcess.spawn(spawnCommand, spawnArgs, {\n cwd,\n // Package manager invocations do not need signing/publishing credentials.\n env: { COREPACK_ENABLE_STRICT: \"0\", ...stripSensitiveEnvVars(process.env) },\n })\n\n let stderr = \"\"\n // The process can close before all piped stdout has been flushed to disk. Resolving on the\n // child's \"close\" alone races the write stream and lets the caller read a TRUNCATED file\n // (manifesting as \"No JSON content found in output\"). Gate the settle on BOTH the child exit\n // (for the code/stderr) and the write stream's \"finish\" (all bytes flushed).\n let exitCode: number | null = null\n let childClosed = false\n let streamFinished = false\n let settled = false\n\n // `pipe` ends `outStream` when stdout EOFs, which triggers its \"finish\" once flushed.\n child.stdout.pipe(outStream)\n child.stderr.on(\"data\", chunk => {\n stderr += chunk.toString()\n })\n\n const fail = (err: Error) => {\n if (settled) {\n return\n }\n settled = true\n // Best-effort cleanup: stop the child and close the stream so we don't\n // waste CPU writing to a broken fd after rejection.\n try {\n child.kill()\n } catch {\n // ignore\n }\n try {\n outStream.destroy()\n } catch {\n // ignore\n }\n reject(err)\n }\n\n const settle = () => {\n if (settled || !childClosed || !streamFinished) {\n return\n }\n const code = exitCode\n // https://github.com/npm/npm/issues/17624\n const shouldIgnore = code === 1 && \"npm\" === execName.toLowerCase() && args.includes(\"list\")\n if (shouldIgnore) {\n log.debug(null, \"`npm list` returned non-zero exit code, but it MIGHT be expected (https://github.com/npm/npm/issues/17624). Check stderr for details.\")\n }\n if (stderr.length > 0) {\n log.debug({ stderr }, \"note: there was node module collector output on stderr\")\n // Only surface stderr as a user-visible warning when the exit code itself is unexpected.\n // When shouldIgnore is true (npm list exit code 1) the stderr is an anticipated side\n // effect of package-manager features like yarn resolutions or npm overrides that cause\n // npm to report ELSPROBLEMS for aliased packages it considers \"invalid\".\n if (!shouldIgnore) {\n this.cache.logSummary[LogMessageByKey.PKG_COLLECTOR_OUTPUT].push(stderr)\n }\n }\n settled = true\n const shouldResolve = code === 0 || shouldIgnore\n return shouldResolve ? resolve() : reject(new Error(`Node module collector process exited with code ${code}:\\n${stderr}`))\n }\n\n outStream.on(\"error\", err => fail(new Error(`Node module collector failed writing output (${command}): ${err.message}`)))\n outStream.on(\"finish\", () => {\n streamFinished = true\n settle()\n })\n child.on(\"error\", err => {\n fail(new Error(`Node module collector spawn (${command} ${JSON.stringify(args)}) failed: ${err.message}`))\n })\n child.on(\"close\", code => {\n exitCode = code\n childClosed = true\n settle()\n })\n })\n }\n}\n\n/**\n * Build the argv for invoking a Windows command through `powershell.exe -EncodedCommand`.\n *\n * Each token is wrapped in a PowerShell single-quoted string (with embedded single quotes doubled),\n * so no character is interpreted by a shell. The script:\n * - pins `[Console]::OutputEncoding` to UTF-8 *without* a BOM so the JSON dependency tree is not\n * corrupted by the console's OEM code page (and no BOM is prepended to break `JSON.parse`),\n * - invokes the command via the call operator `&`,\n * - re-emits the command's own exit code via `exit $LASTEXITCODE` (e.g. `npm list` returns 1 in\n * expected scenarios, which the caller's shouldIgnore logic relies on).\n *\n * The whole script is base64-encoded as UTF-16LE per PowerShell's `-EncodedCommand` contract.\n */\nexport function buildPowerShellEncodedArgs(command: string, args: string[]): string[] {\n const psQuote = (value: string) => `'${value.replace(/'/g, \"''\")}'`\n const invocation = [\"&\", psQuote(command), ...args.map(psQuote)].join(\" \")\n const script = `[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new($false); ${invocation}; exit $LASTEXITCODE`\n const encoded = Buffer.from(script, \"utf16le\").toString(\"base64\")\n return [\"-NoProfile\", \"-NonInteractive\", \"-EncodedCommand\", encoded]\n}\n"]}
@@ -1,14 +0,0 @@
1
- import { NodeModulesCollector } from "./nodeModulesCollector.js";
2
- import { PM } from "./packageManager.js";
3
- import { NpmDependency } from "./types.js";
4
- export declare class NpmNodeModulesCollector extends NodeModulesCollector<NpmDependency, string> {
5
- readonly installOptions: {
6
- manager: PM;
7
- lockfile: string;
8
- };
9
- protected getArgs(): string[];
10
- protected collectAllDependencies(tree: NpmDependency): Promise<void>;
11
- protected extractProductionDependencyGraph(tree: NpmDependency, dependencyId: string): Promise<void>;
12
- private isDuplicatedNpmDependency;
13
- protected isProdDependency(packageName: string, tree: NpmDependency): boolean;
14
- }
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NpmNodeModulesCollector = void 0;
4
- const moduleManager_js_1 = require("./moduleManager.js");
5
- const nodeModulesCollector_js_1 = require("./nodeModulesCollector.js");
6
- const packageManager_js_1 = require("./packageManager.js");
7
- class NpmNodeModulesCollector extends nodeModulesCollector_js_1.NodeModulesCollector {
8
- constructor() {
9
- super(...arguments);
10
- this.installOptions = {
11
- manager: packageManager_js_1.PM.NPM,
12
- lockfile: "package-lock.json",
13
- };
14
- }
15
- getArgs() {
16
- return ["list", "-a", "--include", "prod", "--include", "optional", "--omit", "dev", "--json", "--long", "--silent", "--loglevel=error"];
17
- }
18
- async collectAllDependencies(tree) {
19
- for (const [key, value] of Object.entries(tree.dependencies || {})) {
20
- const { id: childDependencyId, pkgOverride } = this.normalizePackageVersion(key, value);
21
- // Only skip if this exact version is already collected AND it's a duplicate reference
22
- // We need to collect nested versions even if a different version exists at top level
23
- if (this.isDuplicatedNpmDependency(value)) {
24
- // This is a reference to a package already defined elsewhere in the tree
25
- // Still add it to allDependencies if we haven't seen this exact version yet
26
- if (!this.allDependencies.has(childDependencyId)) {
27
- this.allDependencies.set(childDependencyId, pkgOverride);
28
- }
29
- this.cache.logSummary[moduleManager_js_1.LogMessageByKey.PKG_DUPLICATE_REF].push(childDependencyId);
30
- continue;
31
- }
32
- // Always store this dependency and recurse into its children
33
- this.allDependencies.set(childDependencyId, pkgOverride);
34
- await this.collectAllDependencies(pkgOverride);
35
- }
36
- }
37
- async extractProductionDependencyGraph(tree, dependencyId) {
38
- if (this.productionGraph[dependencyId]) {
39
- return;
40
- }
41
- const isDuplicateDep = this.isDuplicatedNpmDependency(tree);
42
- const targetTree = isDuplicateDep ? this.allDependencies.get(dependencyId) : tree;
43
- // Initialize with empty dependencies array first to mark this dependency as "in progress"
44
- // After initialization, if there are libraries with the same name+version later, they will not be searched recursively again
45
- // This will prevents infinite loops when circular dependencies are encountered.
46
- this.productionGraph[dependencyId] = { dependencies: [] };
47
- const collectedDependencies = [];
48
- if (targetTree === null || targetTree === void 0 ? void 0 : targetTree.dependencies) {
49
- for (const packageName in targetTree.dependencies) {
50
- // Check against matching _dependencies
51
- if (!this.isProdDependency(packageName, targetTree)) {
52
- continue;
53
- }
54
- const dependency = targetTree.dependencies[packageName];
55
- // Match first version's empty check
56
- if (Object.keys(dependency).length === 0) {
57
- continue;
58
- }
59
- const { id: childDependencyId, pkgOverride } = this.normalizePackageVersion(packageName, dependency);
60
- await this.extractProductionDependencyGraph(pkgOverride, childDependencyId);
61
- collectedDependencies.push(childDependencyId);
62
- }
63
- }
64
- this.productionGraph[dependencyId] = { dependencies: collectedDependencies };
65
- }
66
- // Check: is package already included as a prod dependency due to another package?
67
- // We need to check this to prevent infinite loops in case of duplicated dependencies
68
- isDuplicatedNpmDependency(tree) {
69
- const { _dependencies = {}, dependencies = {} } = tree;
70
- const isDuplicateDep = Object.keys(_dependencies).length > 0 && Object.keys(dependencies).length === 0;
71
- return isDuplicateDep;
72
- }
73
- // `npm list` provides explicit list of deps in _dependencies
74
- isProdDependency(packageName, tree) {
75
- var _a;
76
- return ((_a = tree._dependencies) === null || _a === void 0 ? void 0 : _a[packageName]) != null;
77
- }
78
- }
79
- exports.NpmNodeModulesCollector = NpmNodeModulesCollector;
80
- //# sourceMappingURL=npmNodeModulesCollector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"npmNodeModulesCollector.js","sourceRoot":"","sources":["../../src/node-module-collector/npmNodeModulesCollector.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogMessageByKey } from \"./moduleManager.js\"\nimport { NodeModulesCollector } from \"./nodeModulesCollector.js\"\nimport { PM } from \"./packageManager.js\"\nimport { NpmDependency } from \"./types.js\"\n\nexport class NpmNodeModulesCollector extends NodeModulesCollector<NpmDependency, string> {\n public readonly installOptions = {\n manager: PM.NPM,\n lockfile: \"package-lock.json\",\n }\n\n protected getArgs(): string[] {\n return [\"list\", \"-a\", \"--include\", \"prod\", \"--include\", \"optional\", \"--omit\", \"dev\", \"--json\", \"--long\", \"--silent\", \"--loglevel=error\"]\n }\n\n protected async collectAllDependencies(tree: NpmDependency) {\n for (const [key, value] of Object.entries(tree.dependencies || {})) {\n const { id: childDependencyId, pkgOverride } = this.normalizePackageVersion(key, value)\n\n // Only skip if this exact version is already collected AND it's a duplicate reference\n // We need to collect nested versions even if a different version exists at top level\n if (this.isDuplicatedNpmDependency(value)) {\n // This is a reference to a package already defined elsewhere in the tree\n // Still add it to allDependencies if we haven't seen this exact version yet\n if (!this.allDependencies.has(childDependencyId)) {\n this.allDependencies.set(childDependencyId, pkgOverride)\n }\n this.cache.logSummary[LogMessageByKey.PKG_DUPLICATE_REF].push(childDependencyId)\n continue\n }\n\n // Always store this dependency and recurse into its children\n this.allDependencies.set(childDependencyId, pkgOverride)\n await this.collectAllDependencies(pkgOverride)\n }\n }\n\n protected async extractProductionDependencyGraph(tree: NpmDependency, dependencyId: string): Promise<void> {\n if (this.productionGraph[dependencyId]) {\n return\n }\n\n const isDuplicateDep = this.isDuplicatedNpmDependency(tree)\n const targetTree = isDuplicateDep ? this.allDependencies.get(dependencyId) : tree\n\n // Initialize with empty dependencies array first to mark this dependency as \"in progress\"\n // After initialization, if there are libraries with the same name+version later, they will not be searched recursively again\n // This will prevents infinite loops when circular dependencies are encountered.\n this.productionGraph[dependencyId] = { dependencies: [] }\n\n const collectedDependencies: string[] = []\n if (targetTree?.dependencies) {\n for (const packageName in targetTree.dependencies) {\n // Check against matching _dependencies\n if (!this.isProdDependency(packageName, targetTree)) {\n continue\n }\n const dependency = targetTree.dependencies[packageName]\n // Match first version's empty check\n if (Object.keys(dependency).length === 0) {\n continue\n }\n const { id: childDependencyId, pkgOverride } = this.normalizePackageVersion(packageName, dependency)\n await this.extractProductionDependencyGraph(pkgOverride, childDependencyId)\n collectedDependencies.push(childDependencyId)\n }\n }\n this.productionGraph[dependencyId] = { dependencies: collectedDependencies }\n }\n\n // Check: is package already included as a prod dependency due to another package?\n // We need to check this to prevent infinite loops in case of duplicated dependencies\n private isDuplicatedNpmDependency(tree: NpmDependency): boolean {\n const { _dependencies = {}, dependencies = {} } = tree\n const isDuplicateDep = Object.keys(_dependencies).length > 0 && Object.keys(dependencies).length === 0\n return isDuplicateDep\n }\n\n // `npm list` provides explicit list of deps in _dependencies\n protected isProdDependency(packageName: string, tree: NpmDependency) {\n return tree._dependencies?.[packageName] != null\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- export declare enum PM {
2
- PNPM = "pnpm",
3
- YARN = "yarn",
4
- YARN_BERRY = "yarn-berry",
5
- BUN = "bun",
6
- NPM = "npm",
7
- TRAVERSAL = "traversal"
8
- }
9
- export declare function getPackageManagerCommand(pm: PM): string;
10
- type PackageManagerSetup = {
11
- pm: PM;
12
- corepackConfig: string | undefined;
13
- resolvedDirectory: string | undefined;
14
- detectionMethod: string;
15
- };
16
- export declare function detectPackageManager(searchPaths: string[]): Promise<PackageManagerSetup>;
17
- export {};