app-builder-lib 22.1.0 → 22.2.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 (287) hide show
  1. package/out/Framework.d.ts +0 -0
  2. package/out/Framework.js +0 -0
  3. package/out/Framework.js.map +0 -0
  4. package/out/ProtonFramework.d.ts +0 -0
  5. package/out/ProtonFramework.js +0 -0
  6. package/out/ProtonFramework.js.map +0 -0
  7. package/out/appInfo.d.ts +10 -10
  8. package/out/appInfo.js +0 -0
  9. package/out/appInfo.js.map +0 -0
  10. package/out/asar/asar.d.ts +0 -0
  11. package/out/asar/asar.js +1 -1
  12. package/out/asar/asar.js.map +0 -0
  13. package/out/asar/asarFileChecker.d.ts +0 -0
  14. package/out/asar/asarFileChecker.js +0 -0
  15. package/out/asar/asarFileChecker.js.map +0 -0
  16. package/out/asar/asarUtil.d.ts +0 -0
  17. package/out/asar/asarUtil.js +1 -1
  18. package/out/asar/asarUtil.js.map +0 -0
  19. package/out/asar/integrity.d.ts +0 -0
  20. package/out/asar/integrity.js +1 -1
  21. package/out/asar/integrity.js.map +0 -0
  22. package/out/asar/unpackDetector.d.ts +0 -0
  23. package/out/asar/unpackDetector.js +1 -1
  24. package/out/asar/unpackDetector.js.map +0 -0
  25. package/out/binDownload.d.ts +0 -0
  26. package/out/binDownload.js +0 -0
  27. package/out/binDownload.js.map +0 -0
  28. package/out/codeSign/codesign.d.ts +0 -0
  29. package/out/codeSign/codesign.js +1 -1
  30. package/out/codeSign/codesign.js.map +0 -0
  31. package/out/codeSign/macCodeSign.d.ts +0 -0
  32. package/out/codeSign/macCodeSign.js +1 -1
  33. package/out/codeSign/macCodeSign.js.map +0 -0
  34. package/out/codeSign/windowsCodeSign.d.ts +0 -0
  35. package/out/codeSign/windowsCodeSign.js +3 -3
  36. package/out/codeSign/windowsCodeSign.js.map +1 -1
  37. package/out/configuration.d.ts +0 -0
  38. package/out/configuration.js +0 -0
  39. package/out/configuration.js.map +0 -0
  40. package/out/core.d.ts +0 -0
  41. package/out/core.js +0 -0
  42. package/out/core.js.map +0 -0
  43. package/out/electron/ElectronFramework.d.ts +1 -1
  44. package/out/electron/ElectronFramework.js +1 -1
  45. package/out/electron/ElectronFramework.js.map +1 -1
  46. package/out/electron/electronMac.d.ts +0 -0
  47. package/out/electron/electronMac.js +1 -1
  48. package/out/electron/electronMac.js.map +0 -0
  49. package/out/electron/electronVersion.d.ts +0 -0
  50. package/out/electron/electronVersion.js +1 -1
  51. package/out/electron/electronVersion.js.map +0 -0
  52. package/out/errorMessages.d.ts +0 -0
  53. package/out/errorMessages.js +0 -0
  54. package/out/errorMessages.js.map +0 -0
  55. package/out/fileMatcher.d.ts +0 -0
  56. package/out/fileMatcher.js +1 -1
  57. package/out/fileMatcher.js.map +0 -0
  58. package/out/fileTransformer.d.ts +0 -0
  59. package/out/fileTransformer.js +1 -1
  60. package/out/fileTransformer.js.map +0 -0
  61. package/out/forge-maker.d.ts +0 -0
  62. package/out/forge-maker.js +1 -1
  63. package/out/forge-maker.js.map +0 -0
  64. package/out/frameworks/LibUiFramework.d.ts +0 -0
  65. package/out/frameworks/LibUiFramework.js +1 -1
  66. package/out/frameworks/LibUiFramework.js.map +0 -0
  67. package/out/index.d.ts +0 -0
  68. package/out/index.js +0 -0
  69. package/out/index.js.map +0 -0
  70. package/out/linuxPackager.d.ts +1 -1
  71. package/out/linuxPackager.js +0 -0
  72. package/out/linuxPackager.js.map +0 -0
  73. package/out/macPackager.d.ts +1 -1
  74. package/out/macPackager.js +1 -1
  75. package/out/macPackager.js.map +0 -0
  76. package/out/options/AppXOptions.d.ts +0 -0
  77. package/out/options/AppXOptions.js +0 -0
  78. package/out/options/AppXOptions.js.map +0 -0
  79. package/out/options/CommonWindowsInstallerConfiguration.d.ts +0 -0
  80. package/out/options/CommonWindowsInstallerConfiguration.js +0 -0
  81. package/out/options/CommonWindowsInstallerConfiguration.js.map +0 -0
  82. package/out/options/FileAssociation.d.ts +0 -0
  83. package/out/options/FileAssociation.js +0 -0
  84. package/out/options/FileAssociation.js.map +0 -0
  85. package/out/options/MsiOptions.d.ts +0 -0
  86. package/out/options/MsiOptions.js +0 -0
  87. package/out/options/MsiOptions.js.map +0 -0
  88. package/out/options/PlatformSpecificBuildOptions.d.ts +0 -0
  89. package/out/options/PlatformSpecificBuildOptions.js +0 -0
  90. package/out/options/PlatformSpecificBuildOptions.js.map +0 -0
  91. package/out/options/SnapOptions.d.ts +0 -0
  92. package/out/options/SnapOptions.js +0 -0
  93. package/out/options/SnapOptions.js.map +0 -0
  94. package/out/options/SquirrelWindowsOptions.d.ts +0 -0
  95. package/out/options/SquirrelWindowsOptions.js +0 -0
  96. package/out/options/SquirrelWindowsOptions.js.map +0 -0
  97. package/out/options/linuxOptions.d.ts +4 -0
  98. package/out/options/linuxOptions.js +0 -0
  99. package/out/options/linuxOptions.js.map +0 -0
  100. package/out/options/macOptions.d.ts +0 -0
  101. package/out/options/macOptions.js +0 -0
  102. package/out/options/macOptions.js.map +0 -0
  103. package/out/options/metadata.d.ts +0 -0
  104. package/out/options/metadata.js +0 -0
  105. package/out/options/metadata.js.map +0 -0
  106. package/out/options/pkgOptions.d.ts +4 -0
  107. package/out/options/pkgOptions.js +0 -0
  108. package/out/options/pkgOptions.js.map +0 -0
  109. package/out/options/winOptions.d.ts +0 -0
  110. package/out/options/winOptions.js +0 -0
  111. package/out/options/winOptions.js.map +0 -0
  112. package/out/packager.d.ts +11 -11
  113. package/out/packager.js +2 -2
  114. package/out/packager.js.map +0 -0
  115. package/out/packagerApi.d.ts +0 -0
  116. package/out/packagerApi.js +0 -0
  117. package/out/packagerApi.js.map +0 -0
  118. package/out/platformPackager.d.ts +10 -10
  119. package/out/platformPackager.js +1 -1
  120. package/out/platformPackager.js.map +0 -0
  121. package/out/presets/rectCra.d.ts +0 -0
  122. package/out/presets/rectCra.js +1 -1
  123. package/out/presets/rectCra.js.map +0 -0
  124. package/out/publish/PublishManager.d.ts +0 -0
  125. package/out/publish/PublishManager.js +1 -1
  126. package/out/publish/PublishManager.js.map +0 -0
  127. package/out/publish/SnapStorePublisher.js +1 -1
  128. package/out/publish/s3/BaseS3Publisher.js +1 -1
  129. package/out/publish/updateInfoBuilder.d.ts +0 -0
  130. package/out/publish/updateInfoBuilder.js +1 -1
  131. package/out/publish/updateInfoBuilder.js.map +0 -0
  132. package/out/remoteBuilder/ProjectInfoManager.d.ts +0 -0
  133. package/out/remoteBuilder/ProjectInfoManager.js +1 -1
  134. package/out/remoteBuilder/ProjectInfoManager.js.map +0 -0
  135. package/out/remoteBuilder/RemoteBuilder.d.ts +0 -0
  136. package/out/remoteBuilder/RemoteBuilder.js +1 -1
  137. package/out/remoteBuilder/RemoteBuilder.js.map +0 -0
  138. package/out/remoteBuilder/builder-cli.d.ts +0 -0
  139. package/out/remoteBuilder/builder-cli.js +1 -1
  140. package/out/remoteBuilder/builder-cli.js.map +0 -0
  141. package/out/remoteBuilder/remote-builder-certs.d.ts +0 -0
  142. package/out/remoteBuilder/remote-builder-certs.js +0 -0
  143. package/out/remoteBuilder/remote-builder-certs.js.map +0 -0
  144. package/out/targets/AppImageTarget.d.ts +0 -0
  145. package/out/targets/AppImageTarget.js +1 -1
  146. package/out/targets/AppImageTarget.js.map +1 -1
  147. package/out/targets/AppxTarget.d.ts +0 -0
  148. package/out/targets/AppxTarget.js +1 -1
  149. package/out/targets/AppxTarget.js.map +0 -0
  150. package/out/targets/ArchiveTarget.d.ts +0 -0
  151. package/out/targets/ArchiveTarget.js +1 -1
  152. package/out/targets/ArchiveTarget.js.map +0 -0
  153. package/out/targets/LinuxTargetHelper.d.ts +2 -2
  154. package/out/targets/LinuxTargetHelper.js +6 -0
  155. package/out/targets/LinuxTargetHelper.js.map +1 -1
  156. package/out/targets/MsiTarget.d.ts +0 -0
  157. package/out/targets/MsiTarget.js +1 -1
  158. package/out/targets/MsiTarget.js.map +0 -0
  159. package/out/targets/archive.d.ts +0 -0
  160. package/out/targets/archive.js +1 -1
  161. package/out/targets/archive.js.map +0 -0
  162. package/out/targets/differentialUpdateInfoBuilder.d.ts +0 -0
  163. package/out/targets/differentialUpdateInfoBuilder.js +1 -1
  164. package/out/targets/differentialUpdateInfoBuilder.js.map +0 -0
  165. package/out/targets/fpm.d.ts +0 -0
  166. package/out/targets/fpm.js +1 -1
  167. package/out/targets/fpm.js.map +0 -0
  168. package/out/targets/nsis/NsisTarget.d.ts +5 -5
  169. package/out/targets/nsis/NsisTarget.js +18 -7
  170. package/out/targets/nsis/NsisTarget.js.map +1 -1
  171. package/out/targets/nsis/WebInstallerTarget.d.ts +2 -2
  172. package/out/targets/nsis/WebInstallerTarget.js +0 -0
  173. package/out/targets/nsis/WebInstallerTarget.js.map +0 -0
  174. package/out/targets/nsis/nsisLang.d.ts +0 -0
  175. package/out/targets/nsis/nsisLang.js +1 -1
  176. package/out/targets/nsis/nsisLang.js.map +0 -0
  177. package/out/targets/nsis/nsisLicense.d.ts +0 -0
  178. package/out/targets/nsis/nsisLicense.js +1 -1
  179. package/out/targets/nsis/nsisLicense.js.map +0 -0
  180. package/out/targets/nsis/nsisOptions.d.ts +4 -0
  181. package/out/targets/nsis/nsisOptions.js +0 -0
  182. package/out/targets/nsis/nsisOptions.js.map +0 -0
  183. package/out/targets/nsis/nsisScriptGenerator.d.ts +0 -0
  184. package/out/targets/nsis/nsisScriptGenerator.js +0 -0
  185. package/out/targets/nsis/nsisScriptGenerator.js.map +0 -0
  186. package/out/targets/nsis/nsisUtil.d.ts +3 -0
  187. package/out/targets/nsis/nsisUtil.js +193 -4
  188. package/out/targets/nsis/nsisUtil.js.map +1 -1
  189. package/out/targets/pkg.d.ts +0 -0
  190. package/out/targets/pkg.js +12 -1
  191. package/out/targets/pkg.js.map +1 -1
  192. package/out/targets/snap.d.ts +0 -0
  193. package/out/targets/snap.js +1 -1
  194. package/out/targets/snap.js.map +0 -0
  195. package/out/targets/targetFactory.d.ts +1 -1
  196. package/out/targets/targetFactory.js +0 -0
  197. package/out/targets/targetFactory.js.map +0 -0
  198. package/out/targets/targetUtil.d.ts +0 -0
  199. package/out/targets/targetUtil.js +1 -1
  200. package/out/targets/targetUtil.js.map +0 -0
  201. package/out/targets/tools.d.ts +0 -0
  202. package/out/targets/tools.js +0 -0
  203. package/out/targets/tools.js.map +0 -0
  204. package/out/util/AppFileWalker.d.ts +0 -0
  205. package/out/util/AppFileWalker.js +1 -1
  206. package/out/util/AppFileWalker.js.map +0 -0
  207. package/out/util/NodeModuleCopyHelper.d.ts +0 -0
  208. package/out/util/NodeModuleCopyHelper.js +1 -1
  209. package/out/util/NodeModuleCopyHelper.js.map +0 -0
  210. package/out/util/appBuilder.d.ts +0 -0
  211. package/out/util/appBuilder.js +0 -0
  212. package/out/util/appBuilder.js.map +0 -0
  213. package/out/util/appFileCopier.d.ts +0 -0
  214. package/out/util/appFileCopier.js +13 -18
  215. package/out/util/appFileCopier.js.map +1 -1
  216. package/out/util/bundledTool.d.ts +0 -0
  217. package/out/util/bundledTool.js +0 -0
  218. package/out/util/bundledTool.js.map +0 -0
  219. package/out/util/cacheManager.d.ts +0 -0
  220. package/out/util/cacheManager.js +1 -1
  221. package/out/util/cacheManager.js.map +0 -0
  222. package/out/util/config.d.ts +0 -0
  223. package/out/util/config.js +2 -2
  224. package/out/util/config.js.map +0 -0
  225. package/out/util/filter.d.ts +0 -0
  226. package/out/util/filter.js +1 -1
  227. package/out/util/filter.js.map +0 -0
  228. package/out/util/flags.d.ts +0 -0
  229. package/out/util/flags.js +0 -0
  230. package/out/util/flags.js.map +0 -0
  231. package/out/util/hash.d.ts +0 -0
  232. package/out/util/hash.js +0 -0
  233. package/out/util/hash.js.map +0 -0
  234. package/out/util/langs.d.ts +0 -0
  235. package/out/util/langs.js +0 -0
  236. package/out/util/langs.js.map +0 -0
  237. package/out/util/license.d.ts +0 -0
  238. package/out/util/license.js +1 -1
  239. package/out/util/license.js.map +0 -0
  240. package/out/util/macosVersion.d.ts +0 -0
  241. package/out/util/macosVersion.js +1 -1
  242. package/out/util/macosVersion.js.map +0 -0
  243. package/out/util/macroExpander.d.ts +0 -0
  244. package/out/util/macroExpander.js +0 -0
  245. package/out/util/macroExpander.js.map +0 -0
  246. package/out/util/packageDependencies.d.ts +0 -0
  247. package/out/util/packageDependencies.js +0 -0
  248. package/out/util/packageDependencies.js.map +0 -0
  249. package/out/util/packageMetadata.d.ts +0 -0
  250. package/out/util/packageMetadata.js +1 -1
  251. package/out/util/packageMetadata.js.map +0 -0
  252. package/out/util/pathManager.d.ts +0 -0
  253. package/out/util/pathManager.js +1 -1
  254. package/out/util/pathManager.js.map +0 -0
  255. package/out/util/repositoryInfo.d.ts +0 -0
  256. package/out/util/repositoryInfo.js +1 -1
  257. package/out/util/repositoryInfo.js.map +0 -0
  258. package/out/util/timer.d.ts +0 -0
  259. package/out/util/timer.js +0 -0
  260. package/out/util/timer.js.map +0 -0
  261. package/out/util/yarn.d.ts +0 -0
  262. package/out/util/yarn.js +1 -1
  263. package/out/util/yarn.js.map +0 -0
  264. package/out/vm/MonoVm.d.ts +0 -0
  265. package/out/vm/MonoVm.js +0 -0
  266. package/out/vm/MonoVm.js.map +0 -0
  267. package/out/vm/ParallelsVm.d.ts +0 -0
  268. package/out/vm/ParallelsVm.js +0 -0
  269. package/out/vm/ParallelsVm.js.map +0 -0
  270. package/out/vm/WineVm.d.ts +0 -0
  271. package/out/vm/WineVm.js +1 -1
  272. package/out/vm/WineVm.js.map +0 -0
  273. package/out/vm/vm.d.ts +1 -1
  274. package/out/vm/vm.js +1 -1
  275. package/out/vm/vm.js.map +0 -0
  276. package/out/winPackager.d.ts +2 -2
  277. package/out/winPackager.js +1 -1
  278. package/out/winPackager.js.map +0 -0
  279. package/out/wine.d.ts +0 -0
  280. package/out/wine.js +0 -0
  281. package/out/wine.js.map +0 -0
  282. package/package.json +8 -8
  283. package/scheme.json +154 -4
  284. package/templates/entitlements.mac.plist +1 -3
  285. package/templates/nsis/messages.yml +1 -1
  286. package/templates/nsis/multiUser.nsh +1 -1
  287. package/templates/nsis/portable.nsi +21 -2
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CopyElevateHelper = exports.AppPackageHelper = exports.NSIS_PATH = exports.nsisTemplatesDir = void 0;
6
+ exports.UninstallerReader = exports.CopyElevateHelper = exports.AppPackageHelper = exports.NSIS_PATH = exports.nsisTemplatesDir = void 0;
7
7
 
8
8
  function _bluebirdLst() {
9
9
  const data = _interopRequireDefault(require("bluebird-lst"));
@@ -77,9 +77,21 @@ function _pathManager() {
77
77
  return data;
78
78
  }
79
79
 
80
+ var _fs2 = _interopRequireDefault(require("fs"));
81
+
82
+ function _zlib() {
83
+ const data = _interopRequireDefault(require("zlib"));
84
+
85
+ _zlib = function () {
86
+ return data;
87
+ };
88
+
89
+ return data;
90
+ }
91
+
80
92
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
81
93
 
82
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
94
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
83
95
 
84
96
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
85
97
 
@@ -93,7 +105,7 @@ const NSIS_PATH = new (_lazyVal().Lazy)(() => {
93
105
  } // noinspection SpellCheckingInspection
94
106
 
95
107
 
96
- return (0, _binDownload().getBinFromUrl)("nsis", "3.0.4", "MNETIF8tex6+oiA0mgBi3/XKNH+jog4IBUp/F+Or7zUEhIP+c7cRjb9qGuBIofAXQ51z3RpyCfII4aPadsZB5Q==");
108
+ return (0, _binDownload().getBinFromUrl)("nsis", "3.0.4.1", "VKMiizYdmNdJOWpRGz4trl4lD++BvYP2irAXpMilheUP0pc93iKlWAoP843Vlraj8YG19CVn0j+dCo/hURz9+Q==");
97
109
  });
98
110
  exports.NSIS_PATH = NSIS_PATH;
99
111
 
@@ -189,6 +201,183 @@ class CopyElevateHelper {
189
201
  return promise;
190
202
  }
191
203
 
192
- } exports.CopyElevateHelper = CopyElevateHelper;
204
+ }
205
+
206
+ exports.CopyElevateHelper = CopyElevateHelper;
207
+
208
+ class BinaryReader {
209
+ constructor(buffer) {
210
+ this._buffer = buffer;
211
+ this._position = 0;
212
+ }
213
+
214
+ get length() {
215
+ return this._buffer.length;
216
+ }
217
+
218
+ get position() {
219
+ return this._position;
220
+ }
221
+
222
+ match(signature) {
223
+ if (signature.every((v, i) => this._buffer[this._position + i] === v)) {
224
+ this._position += signature.length;
225
+ return true;
226
+ }
227
+
228
+ return false;
229
+ }
230
+
231
+ skip(offset) {
232
+ this._position += offset;
233
+ }
234
+
235
+ bytes(size) {
236
+ const value = this._buffer.subarray(this._position, this._position + size);
237
+
238
+ this._position += size;
239
+ return value;
240
+ }
241
+
242
+ uint16() {
243
+ const value = this._buffer[this._position] | this._buffer[this._position + 1] << 8;
244
+ this._position += 2;
245
+ return value;
246
+ }
247
+
248
+ uint32() {
249
+ return this.uint16() | this.uint16() << 16;
250
+ }
251
+
252
+ string(length) {
253
+ let value = "";
254
+
255
+ for (let i = 0; i < length; i++) {
256
+ const c = this._buffer[this._position + i];
257
+
258
+ if (c === 0x00) {
259
+ break;
260
+ }
261
+
262
+ value += String.fromCharCode(c);
263
+ }
264
+
265
+ this._position += length;
266
+ return value;
267
+ }
268
+
269
+ }
270
+
271
+ class UninstallerReader {
272
+ // noinspection SpellCheckingInspection
273
+ static exec(installerPath, uninstallerPath) {
274
+ const buffer = _fs2.default.readFileSync(installerPath);
275
+
276
+ const reader = new BinaryReader(buffer); // IMAGE_DOS_HEADER
277
+
278
+ if (!reader.match([0x4D, 0x5A])) {
279
+ throw new Error("Invalid 'MZ' signature.");
280
+ }
281
+
282
+ reader.skip(58); // e_lfanew
283
+
284
+ reader.skip(reader.uint32() - reader.position); // IMAGE_FILE_HEADER
285
+
286
+ if (!reader.match([0x50, 0x45, 0x00, 0x00])) {
287
+ throw new Error("Invalid 'PE' signature.");
288
+ }
289
+
290
+ reader.skip(2);
291
+ const numberOfSections = reader.uint16();
292
+ reader.skip(12);
293
+ const sizeOfOptionalHeader = reader.uint16();
294
+ reader.skip(2);
295
+ reader.skip(sizeOfOptionalHeader); // IMAGE_SECTION_HEADER
296
+
297
+ let nsisOffset = 0;
298
+
299
+ for (let i = 0; i < numberOfSections; i++) {
300
+ const name = reader.string(8);
301
+ reader.skip(8);
302
+ const rawSize = reader.uint32();
303
+ const rawPointer = reader.uint32();
304
+ reader.skip(16);
305
+
306
+ switch (name) {
307
+ case ".text":
308
+ case ".rdata":
309
+ case ".data":
310
+ case ".rsrc":
311
+ {
312
+ nsisOffset = Math.max(rawPointer + rawSize, nsisOffset);
313
+ break;
314
+ }
315
+
316
+ default:
317
+ {
318
+ if (rawPointer !== 0 && rawSize !== 0) {
319
+ throw new Error("Unsupported section '" + name + "'.");
320
+ }
321
+
322
+ break;
323
+ }
324
+ }
325
+ }
326
+
327
+ const executable = buffer.subarray(0, nsisOffset);
328
+ const nsisSize = buffer.length - nsisOffset;
329
+ const nsisReader = new BinaryReader(buffer.subarray(nsisOffset, nsisOffset + nsisSize));
330
+ const nsisSignature = [0xEF, 0xBE, 0xAD, 0xDE, 0x4E, 0x75, 0x6C, 0x6C, 0x73, 0x6F, 0x66, 0x74, 0x49, 0x6E, 0x73, 0x74];
331
+ nsisReader.uint32(); // ?
332
+
333
+ if (!nsisReader.match(nsisSignature)) {
334
+ throw new Error("Invalid signature.");
335
+ }
336
+
337
+ nsisReader.uint32(); // ?
338
+
339
+ if (nsisSize !== nsisReader.uint32()) {
340
+ throw new Error("Size mismatch.");
341
+ }
342
+
343
+ let innerBuffer = null;
344
+
345
+ while (true) {
346
+ let size = nsisReader.uint32();
347
+ const compressed = (size & 0x80000000) !== 0;
348
+ size = size & 0x7FFFFFFF;
349
+
350
+ if (size === 0 || nsisReader.position + size > nsisReader.length || nsisReader.position >= nsisReader.length) {
351
+ break;
352
+ }
353
+
354
+ let buffer = nsisReader.bytes(size);
355
+
356
+ if (compressed) {
357
+ buffer = _zlib().default.inflateRawSync(buffer);
358
+ }
359
+
360
+ const innerReader = new BinaryReader(buffer);
361
+ innerReader.uint32(); // ?
362
+
363
+ if (innerReader.match(nsisSignature)) {
364
+ if (innerBuffer) {
365
+ throw new Error("Multiple inner blocks.");
366
+ }
367
+
368
+ innerBuffer = buffer;
369
+ }
370
+ }
371
+
372
+ if (!innerBuffer) {
373
+ throw new Error("Inner block not found.");
374
+ }
375
+
376
+ _fs2.default.writeFileSync(uninstallerPath, executable);
377
+
378
+ _fs2.default.appendFileSync(uninstallerPath, innerBuffer);
379
+ }
380
+
381
+ } exports.UninstallerReader = UninstallerReader;
193
382
  // __ts-babel@6.0.4
194
383
  //# sourceMappingURL=nsisUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/targets/nsis/nsisUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, log } from \"builder-util\"\nimport { PackageFileInfo } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { copyFile } from \"builder-util/out/fs\"\nimport { unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { getTemplatePath } from \"../../util/pathManager\"\nimport { NsisTarget } from \"./NsisTarget\"\n\nexport const nsisTemplatesDir = getTemplatePath(\"nsis\")\n\nexport const NSIS_PATH = new Lazy(() => {\n const custom = process.env.ELECTRON_BUILDER_NSIS_DIR\n if (custom != null && custom.length > 0) {\n return Promise.resolve(custom.trim())\n }\n // noinspection SpellCheckingInspection\n return getBinFromUrl(\"nsis\", \"3.0.4\", \"MNETIF8tex6+oiA0mgBi3/XKNH+jog4IBUp/F+Or7zUEhIP+c7cRjb9qGuBIofAXQ51z3RpyCfII4aPadsZB5Q==\")\n})\n\nexport class AppPackageHelper {\n private readonly archToFileInfo = new Map<Arch, Promise<PackageFileInfo>>()\n private readonly infoToIsDelete = new Map<PackageFileInfo, boolean>()\n\n /** @private */\n refCount = 0\n\n constructor(private readonly elevateHelper: CopyElevateHelper) {\n }\n\n async packArch(arch: Arch, target: NsisTarget): Promise<PackageFileInfo> {\n let infoPromise = this.archToFileInfo.get(arch)\n if (infoPromise == null) {\n const appOutDir = target.archs.get(arch)!\n infoPromise = this.elevateHelper.copy(appOutDir, target)\n .then(() => target.buildAppPackage(appOutDir, arch))\n this.archToFileInfo.set(arch, infoPromise)\n }\n\n const info = await infoPromise\n if (target.isWebInstaller) {\n this.infoToIsDelete.set(info, false)\n }\n else if (!this.infoToIsDelete.has(info)) {\n this.infoToIsDelete.set(info, true)\n }\n return info\n }\n\n async finishBuild(): Promise<any> {\n if (--this.refCount > 0) {\n return\n }\n\n const filesToDelete: Array<string> = []\n for (const [info, isDelete] of this.infoToIsDelete.entries()) {\n if (isDelete) {\n filesToDelete.push(info.path)\n }\n }\n\n await BluebirdPromise.map(filesToDelete, it => unlink(it))\n }\n}\n\nexport class CopyElevateHelper {\n private readonly copied = new Map<string, Promise<any>>()\n\n copy(appOutDir: string, target: NsisTarget): Promise<any> {\n if (!target.packager.info.framework.isCopyElevateHelper) {\n return Promise.resolve()\n }\n\n let isPackElevateHelper = target.options.packElevateHelper\n if (isPackElevateHelper === false && target.options.perMachine === true) {\n isPackElevateHelper = true\n log.warn(\"`packElevateHelper = false` is ignored, because `perMachine` is set to `true`\")\n }\n\n if (isPackElevateHelper === false) {\n return Promise.resolve()\n }\n\n let promise = this.copied.get(appOutDir)\n if (promise != null) {\n return promise\n }\n\n promise = NSIS_PATH.value\n .then(it => {\n const outFile = path.join(appOutDir, \"resources\", \"elevate.exe\")\n const promise = copyFile(path.join(it, \"elevate.exe\"), outFile, false)\n if (target.packager.platformSpecificBuildOptions.signAndEditExecutable !== false) {\n return promise.then(() => target.packager.sign(outFile))\n }\n return promise\n })\n this.copied.set(appOutDir, promise)\n return promise\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../../src/targets/nsis/nsisUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, log } from \"builder-util\"\nimport { PackageFileInfo } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { copyFile } from \"builder-util/out/fs\"\nimport { unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { getTemplatePath } from \"../../util/pathManager\"\nimport { NsisTarget } from \"./NsisTarget\"\nimport fs from \"fs\"\nimport zlib from \"zlib\"\n\nexport const nsisTemplatesDir = getTemplatePath(\"nsis\")\n\nexport const NSIS_PATH = new Lazy(() => {\n const custom = process.env.ELECTRON_BUILDER_NSIS_DIR\n if (custom != null && custom.length > 0) {\n return Promise.resolve(custom.trim())\n }\n // noinspection SpellCheckingInspection\n return getBinFromUrl(\"nsis\", \"3.0.4.1\", \"VKMiizYdmNdJOWpRGz4trl4lD++BvYP2irAXpMilheUP0pc93iKlWAoP843Vlraj8YG19CVn0j+dCo/hURz9+Q==\")\n})\n\nexport class AppPackageHelper {\n private readonly archToFileInfo = new Map<Arch, Promise<PackageFileInfo>>()\n private readonly infoToIsDelete = new Map<PackageFileInfo, boolean>()\n\n /** @private */\n refCount = 0\n\n constructor(private readonly elevateHelper: CopyElevateHelper) {\n }\n\n async packArch(arch: Arch, target: NsisTarget): Promise<PackageFileInfo> {\n let infoPromise = this.archToFileInfo.get(arch)\n if (infoPromise == null) {\n const appOutDir = target.archs.get(arch)!\n infoPromise = this.elevateHelper.copy(appOutDir, target)\n .then(() => target.buildAppPackage(appOutDir, arch))\n this.archToFileInfo.set(arch, infoPromise)\n }\n\n const info = await infoPromise\n if (target.isWebInstaller) {\n this.infoToIsDelete.set(info, false)\n }\n else if (!this.infoToIsDelete.has(info)) {\n this.infoToIsDelete.set(info, true)\n }\n return info\n }\n\n async finishBuild(): Promise<any> {\n if (--this.refCount > 0) {\n return\n }\n\n const filesToDelete: Array<string> = []\n for (const [info, isDelete] of this.infoToIsDelete.entries()) {\n if (isDelete) {\n filesToDelete.push(info.path)\n }\n }\n\n await BluebirdPromise.map(filesToDelete, it => unlink(it))\n }\n}\n\nexport class CopyElevateHelper {\n private readonly copied = new Map<string, Promise<any>>()\n\n copy(appOutDir: string, target: NsisTarget): Promise<any> {\n if (!target.packager.info.framework.isCopyElevateHelper) {\n return Promise.resolve()\n }\n\n let isPackElevateHelper = target.options.packElevateHelper\n if (isPackElevateHelper === false && target.options.perMachine === true) {\n isPackElevateHelper = true\n log.warn(\"`packElevateHelper = false` is ignored, because `perMachine` is set to `true`\")\n }\n\n if (isPackElevateHelper === false) {\n return Promise.resolve()\n }\n\n let promise = this.copied.get(appOutDir)\n if (promise != null) {\n return promise\n }\n\n promise = NSIS_PATH.value\n .then(it => {\n const outFile = path.join(appOutDir, \"resources\", \"elevate.exe\")\n const promise = copyFile(path.join(it, \"elevate.exe\"), outFile, false)\n if (target.packager.platformSpecificBuildOptions.signAndEditExecutable !== false) {\n return promise.then(() => target.packager.sign(outFile))\n }\n return promise\n })\n this.copied.set(appOutDir, promise)\n return promise\n }\n}\n\nclass BinaryReader {\n private readonly _buffer: Buffer\n private _position: number\n\n constructor(buffer: Buffer) {\n this._buffer = buffer\n this._position = 0\n }\n\n get length(): number {\n return this._buffer.length\n }\n\n get position(): number {\n return this._position\n }\n\n match(signature: Array<number>): boolean {\n if (signature.every((v, i) => this._buffer[this._position + i] === v)) {\n this._position += signature.length\n return true\n }\n return false\n }\n\n skip(offset: number) {\n this._position += offset\n }\n\n bytes(size: number): Buffer {\n const value = this._buffer.subarray(this._position, this._position + size)\n this._position += size\n return value\n }\n\n uint16(): number {\n const value = this._buffer[this._position] | (this._buffer[this._position + 1] << 8)\n this._position += 2\n return value\n }\n\n uint32(): number {\n return this.uint16() | (this.uint16() << 16)\n }\n\n string(length: number): string {\n let value = \"\"\n for (let i = 0; i < length; i++) {\n const c = this._buffer[this._position + i]\n if (c === 0x00) {\n break\n }\n value += String.fromCharCode(c)\n }\n this._position += length\n return value\n }\n}\n\nexport class UninstallerReader {\n // noinspection SpellCheckingInspection\n static exec(installerPath: string, uninstallerPath: string) {\n const buffer = fs.readFileSync(installerPath)\n const reader = new BinaryReader(buffer)\n // IMAGE_DOS_HEADER\n if (!reader.match([ 0x4D, 0x5A ])) {\n throw new Error(\"Invalid 'MZ' signature.\")\n }\n reader.skip(58)\n // e_lfanew\n reader.skip(reader.uint32() - reader.position)\n // IMAGE_FILE_HEADER\n if (!reader.match([ 0x50, 0x45, 0x00, 0x00 ])) {\n throw new Error(\"Invalid 'PE' signature.\")\n }\n reader.skip(2)\n const numberOfSections = reader.uint16()\n reader.skip(12)\n const sizeOfOptionalHeader = reader.uint16()\n reader.skip(2)\n reader.skip(sizeOfOptionalHeader)\n // IMAGE_SECTION_HEADER\n let nsisOffset = 0\n for (let i = 0; i < numberOfSections; i++) {\n const name = reader.string(8)\n reader.skip(8)\n const rawSize = reader.uint32()\n const rawPointer = reader.uint32()\n reader.skip(16)\n switch (name) {\n case \".text\":\n case \".rdata\":\n case \".data\":\n case \".rsrc\": {\n nsisOffset = Math.max(rawPointer + rawSize, nsisOffset)\n break\n }\n default: {\n if (rawPointer !== 0 && rawSize !== 0) {\n throw new Error(\"Unsupported section '\" + name + \"'.\")\n }\n break\n }\n }\n }\n const executable = buffer.subarray(0, nsisOffset)\n const nsisSize = buffer.length - nsisOffset\n const nsisReader = new BinaryReader(buffer.subarray(nsisOffset, nsisOffset + nsisSize))\n const nsisSignature = [ 0xEF, 0xBE, 0xAD, 0xDE, 0x4E, 0x75, 0x6C, 0x6C, 0x73, 0x6F, 0x66, 0x74, 0x49, 0x6E, 0x73, 0x74 ]\n nsisReader.uint32() // ?\n if (!nsisReader.match(nsisSignature)) {\n throw new Error(\"Invalid signature.\")\n }\n nsisReader.uint32() // ?\n if (nsisSize !== nsisReader.uint32()) {\n throw new Error(\"Size mismatch.\")\n }\n\n let innerBuffer = null\n while (true) {\n let size = nsisReader.uint32()\n const compressed = (size & 0x80000000) !== 0\n size = size & 0x7FFFFFFF\n if (size === 0 || (nsisReader.position + size) > nsisReader.length || nsisReader.position >= nsisReader.length) {\n break\n }\n let buffer = nsisReader.bytes(size)\n if (compressed) {\n buffer = zlib.inflateRawSync(buffer)\n }\n const innerReader = new BinaryReader(buffer)\n innerReader.uint32() // ?\n if (innerReader.match(nsisSignature)) {\n if (innerBuffer) {\n throw new Error(\"Multiple inner blocks.\")\n }\n innerBuffer = buffer\n }\n }\n if (!innerBuffer) {\n throw new Error(\"Inner block not found.\")\n }\n fs.writeFileSync(uninstallerPath, executable)\n fs.appendFileSync(uninstallerPath, innerBuffer)\n }\n}\n"],"sourceRoot":""}
File without changes
@@ -90,7 +90,7 @@ function _core() {
90
90
 
91
91
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
92
92
 
93
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
93
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
94
94
 
95
95
  const certType = "Developer ID Installer"; // http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/
96
96
  // to use --scripts, we must build .app bundle separately using pkgbuild
@@ -150,6 +150,17 @@ class PkgTarget extends _core().Target {
150
150
  });
151
151
  const options = this.options;
152
152
  let distInfo = await (0, _fsExtra().readFile)(distInfoFile, "utf-8");
153
+
154
+ if (options.mustClose != null && options.mustClose.length !== 0) {
155
+ const startContent = ` <pkg-ref id="${this.packager.appInfo.id}">\n <must-close>\n`;
156
+ const endContent = " </must-close>\n </pkg-ref>\n</installer-gui-script>";
157
+ let mustCloseContent = "";
158
+ options.mustClose.forEach(appId => {
159
+ mustCloseContent += ` <app id="${appId}"/>\n`;
160
+ });
161
+ distInfo = distInfo.replace("</installer-gui-script>", `${startContent}${mustCloseContent}${endContent}`);
162
+ }
163
+
153
164
  const insertIndex = distInfo.lastIndexOf("</installer-gui-script>");
154
165
  distInfo = distInfo.substring(0, insertIndex) + ` <domains enable_anywhere="${options.allowAnywhere}" enable_currentUserHome="${options.allowCurrentUserHome}" enable_localSystem="${options.allowRootDirectory}" />\n` + distInfo.substring(insertIndex);
155
166
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/pkg.ts"],"names":[],"mappings":";;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAGA,MAAM,QAAQ,GAAG,wBAAjB,C,CAEA;AACA;AACA;AACA;;AACM,MAAO,SAAP,SAAyB,cAAzB,CAA+B;AAQnC,EAAA,WAAA,CAA6B,QAA7B,EAA6D,MAA7D,EAA2E;AACzE,UAAM,KAAN;AAD2B,SAAA,QAAA,GAAA,QAAA;AAAgC,SAAA,MAAA,GAAA,MAAA;AAPpD,SAAA,OAAA,GAAO,MAAA,CAAA,MAAA,CAAA;AACd,MAAA,aAAa,EAAE,IADD;AAEd,MAAA,oBAAoB,EAAE,IAFR;AAGd,MAAA,kBAAkB,EAAE;AAHN,KAAA,EAIX,KAAK,QAAL,CAAc,MAAd,CAAqB,GAJV,CAAP;AASR;;AAED,QAAM,KAAN,CAAY,OAAZ,EAA6B,IAA7B,EAAuC;AACrC,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,OAAO,GAAG,QAAQ,CAAC,OAAzB,CAHqC,CAKrC;;AACA,UAAM,YAAY,GAAG,QAAQ,CAAC,yBAAT,CAAmC,OAAnC,EAA4C,KAA5C,CAArB;AACA,UAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,MAAf,EAAuB,YAAvB,CAArB;AAEA,UAAM,QAAQ,CAAC,IAAT,CAAc,wBAAd,CAAuC;AAC3C,MAAA,qBAAqB,EAAE,KADoB;AAE3C,MAAA,IAAI,EAAE,YAFqC;AAG3C,MAAA;AAH2C,KAAvC,CAAN;AAMA,UAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,eAAT,CAAyB,KAAhC,EAAuC,YAA5D;AAEA,UAAM,SAAS,GAAG,KAAK,MAAvB,CAjBqC,CAkBrC;;AACA,UAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,kBAArB,CAArB;AAEA,UAAM,gBAAgB,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,GAAG,yCAAyB,OAAO,CAAC,EAAjC,CAAoC,MAA5D,CAAzB;AACA,UAAM,yBAAyB,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,GAAG,yCAAyB,OAAO,CAAC,EAAjC,CAAoC,QAA5D,CAAlC;AACA,UAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,GAAR,CAAY,CAClC,iCAAa,QAAb,EAAuB,OAAO,CAAC,QAAR,IAAoB,QAAQ,CAAC,4BAAT,CAAsC,QAAjF,EAA2F,YAA3F,CADkC,EAElC,KAAK,kCAAL,CAAwC,YAAxC,EAAsD,OAAtD,CAFkC,EAGlC,KAAK,qBAAL,CAA2B,OAA3B,EAAoC,yBAApC,EAA+D,gBAA/D,CAHkC,CAAZ,CAAP,EAIb,CAJa,CAAjB;;AAMA,QAAI,QAAQ,IAAI,IAAZ,IAAoB,QAAQ,CAAC,gBAAjC,EAAmD;AACjD,YAAM,IAAI,KAAJ,CAAU,sBAAsB,QAAQ,gFAAxC,CAAN;AACD;;AAED,UAAM,IAAI,GAAG,uBAAuB,CAAC,QAAD,EAAW,YAAX,CAApC;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,gBAAV,EAA4B,YAA5B;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,YAAV;AACA,4BAAI,OAAO,CAAC,YAAZ,EAA0B,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,GAAG,EAAb,CAAhC;AACA,UAAM,yBAAK,cAAL,EAAqB,IAArB,EAA2B;AAC/B,MAAA,GAAG,EAAE;AAD0B,KAA3B,CAAN;AAGA,UAAM,OAAO,CAAC,GAAR,CAAY,CAAC,uBAAO,gBAAP,CAAD,EAA2B,uBAAO,YAAP,CAA3B,CAAZ,CAAN;AAEA,UAAM,QAAQ,CAAC,uBAAT,CAAiC,YAAjC,EAA+C,IAA/C,EAAqD,IAArD,EAA2D,QAAQ,CAAC,uBAAT,CAAiC,YAAjC,EAA+C,KAA/C,EAAsD,IAAtD,CAA3D,CAAN;AACD;;AAEO,QAAM,kCAAN,CAAyC,YAAzC,EAA+D,OAA/D,EAA8E;AACpF,UAAM,yBAAK,cAAL,EAAqB,CAAC,cAAD,EAAiB,aAAjB,EAAgC,OAAhC,EAAyC,YAAzC,CAArB,EAA6E;AACjF,MAAA,GAAG,EAAE,KAAK;AADuE,KAA7E,CAAN;AAIA,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,QAAI,QAAQ,GAAG,MAAM,yBAAS,YAAT,EAAuB,OAAvB,CAArB;AACA,UAAM,WAAW,GAAG,QAAQ,CAAC,WAAT,CAAqB,yBAArB,CAApB;AACA,IAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,iCAAiC,OAAO,CAAC,aAAa,6BAA6B,OAAO,CAAC,oBAAoB,yBAAyB,OAAO,CAAC,kBAAkB,QAAvM,GAAkN,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAA7N;;AAEA,QAAI,OAAO,CAAC,UAAR,IAAsB,IAA1B,EAAgC;AAC9B,YAAM,UAAU,GAAG,MAAM,KAAK,QAAL,CAAc,WAAd,CAA0B,OAAO,CAAC,UAAR,CAAmB,IAA7C,CAAzB;;AACA,UAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,cAAM,SAAS,GAAG,OAAO,CAAC,UAAR,CAAmB,SAAnB,IAAgC,QAAlD,CADsB,CAEtB;;AACA,cAAM,OAAO,GAAG,OAAO,CAAC,UAAR,CAAmB,OAAnB,IAA8B,OAA9C;AACA,QAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,yBAAyB,UAAU,gBAAgB,SAAS,cAAc,OAAO,OAAtH,GAAgI,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAA3I;AACD;AACF;;AAED,UAAM,OAAO,GAAG,MAAM,KAAK,QAAL,CAAc,WAAd,CAA0B,OAAO,CAAC,OAAlC,CAAtB;;AACA,QAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,MAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,sBAAsB,OAAO,OAAlE,GAA4E,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAAvF;AACD;;AAED,UAAM,OAAO,GAAG,MAAM,2CAA2B,OAAO,CAAC,OAAnC,EAA4C,KAAK,QAAjD,CAAtB;;AACA,QAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,MAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,sBAAsB,OAAO,OAAlE,GAA4E,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAAvF;AACD;;AAED,UAAM,UAAU,GAAG,MAAM,KAAK,QAAL,CAAc,WAAd,CAA0B,OAAO,CAAC,UAAlC,CAAzB;;AACA,QAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,MAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,yBAAyB,UAAU,OAAxE,GAAkF,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAA7F;AACD;;AAED,8BAAM,QAAN;AACA,UAAM,0BAAU,YAAV,EAAwB,QAAxB,CAAN;AACD;;AAEO,QAAM,qBAAN,CAA4B,OAA5B,EAA6C,sBAA7C,EAA6E,iBAA7E,EAAsG;AAC5G,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,QAAQ,GAAG,IAAI,CAAC,OAAL,CAAa,OAAb,CAAjB,CAF4G,CAI5G;;AACA,UAAM,yBAAK,UAAL,EAAiB,CACrB,WADqB,EAErB,QAFqB,EAEX,QAFW,EAGrB,sBAHqB,CAAjB,CAAN,CAL4G,CAW5G;;AACA,UAAM,SAAS,GAAG,CAAC,MAAM,2CAAoC,CAAC,cAAD,EAAiB,IAAjB,EAAuB,sBAAvB,CAApC,CAAP,EAA4F,CAA5F,EAA+F,MAA/F,CAAuG,EAAD,IAAa,EAAE,CAAC,sBAAH,KAA8B,eAAjJ,CAAlB;;AACA,QAAI,SAAS,CAAC,MAAV,GAAmB,CAAvB,EAA0B;AACxB,YAAM,WAAW,GAAG,SAAS,CAAC,CAAD,CAA7B,CADwB,CAGxB;AACA;AACA;;AACA,aAAO,WAAW,CAAC,YAAnB;;AAEA,UAAI,OAAO,CAAC,aAAR,IAAyB,IAA7B,EAAmC;AACjC,QAAA,WAAW,CAAC,mBAAZ,GAAkC,OAAO,CAAC,aAA1C;AACD;;AAED,UAAI,OAAO,CAAC,gBAAR,IAA4B,IAAhC,EAAsC;AACpC,QAAA,WAAW,CAAC,sBAAZ,GAAqC,OAAO,CAAC,gBAA7C;AACD;;AAED,UAAI,OAAO,CAAC,mBAAR,IAA+B,IAAnC,EAAyC;AACvC,QAAA,WAAW,CAAC,yBAAZ,GAAwC,OAAO,CAAC,mBAAhD;AACD;;AAED,UAAI,OAAO,CAAC,eAAR,IAA2B,IAA/B,EAAqC;AACnC,QAAA,WAAW,CAAC,qBAAZ,GAAoC,OAAO,CAAC,eAA5C;AACD;;AAED,YAAM,iDAA8B,CAAC,cAAD,CAA9B,EAAgD;AAAC,SAAC,sBAAD,GAA0B;AAA3B,OAAhD,CAAN;AACD,KAtC2G,CAwC5G;;;AACA,UAAM,IAAI,GAAG,CACX,QADW,EACD,QADC,EAEX,mBAFW,EAEU,sBAFV,CAAb;AAKA,4BAAI,KAAK,OAAL,CAAa,eAAb,IAAgC,eAApC,EAAqD,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,oBAAV,EAAgC,EAAhC,CAA3D;;AACA,QAAI,OAAO,CAAC,OAAR,IAAmB,IAAvB,EAA6B;AAC3B,MAAA,IAAI,CAAC,IAAL,CAAU,WAAV,EAAuB,IAAI,CAAC,OAAL,CAAa,KAAK,QAAL,CAAc,IAAd,CAAmB,iBAAhC,EAAmD,OAAO,CAAC,OAA3D,CAAvB;AACD,KAFD,MAGK,IAAI,OAAO,CAAC,OAAR,KAAoB,IAAxB,EAA8B;AACjC,YAAM,GAAG,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,QAAL,CAAc,IAAd,CAAmB,iBAA7B,EAAgD,aAAhD,CAAZ;AACA,YAAM,IAAI,GAAG,MAAM,sBAAW,GAAX,CAAnB;;AACA,UAAI,IAAI,IAAI,IAAR,IAAgB,IAAI,CAAC,WAAL,EAApB,EAAwC;AACtC,QAAA,IAAI,CAAC,IAAL,CAAU,WAAV,EAAuB,GAAvB;AACD;AACF;;AAED,IAAA,IAAI,CAAC,IAAL,CAAU,iBAAV;AAEA,UAAM,yBAAK,UAAL,EAAiB,IAAjB,CAAN;AACD;;AA7JkC;;;;AAgK/B,SAAU,uBAAV,CAAkC,QAAlC,EAA6D,QAA7D,EAAgG;AACpG,QAAM,IAAI,GAAkB,EAA5B;;AACA,MAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,IAAA,IAAI,CAAC,IAAL,CAAU,QAAV,EAAoB,QAAQ,CAAC,IAA7B;;AACA,QAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,MAAA,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,QAAxB;AACD;AACF;;AACD,SAAO,IAAP;AACD,C","sourcesContent":["import { Arch, debug, exec, use } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { executeAppBuilderAndWriteJson, executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { readFile, unlink, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { PkgOptions } from \"..\"\nimport { filterCFBundleIdentifier } from \"../appInfo\"\nimport { findIdentity, Identity } from \"../codeSign/macCodeSign\"\nimport { Target } from \"../core\"\nimport MacPackager from \"../macPackager\"\n\nconst certType = \"Developer ID Installer\"\n\n// http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/\n// to use --scripts, we must build .app bundle separately using pkgbuild\n// productbuild --scripts doesn't work (because scripts in this case not added to our package)\n// https://github.com/electron-userland/electron-osx-sign/issues/96#issuecomment-274986942\nexport class PkgTarget extends Target {\n readonly options: PkgOptions = {\n allowAnywhere: true,\n allowCurrentUserHome: true,\n allowRootDirectory: true,\n ...this.packager.config.pkg,\n }\n\n constructor(private readonly packager: MacPackager, readonly outDir: string) {\n super(\"pkg\")\n }\n\n async build(appPath: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n const appInfo = packager.appInfo\n\n // pkg doesn't like not ASCII symbols (Could not open package to list files: /Volumes/test/t-gIjdGK/test-project-0/dist/Test App ßW-1.1.0.pkg)\n const artifactName = packager.expandArtifactNamePattern(options, \"pkg\")\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"pkg\",\n file: artifactPath,\n arch,\n })\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n\n const appOutDir = this.outDir\n // https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html\n const distInfoFile = path.join(appOutDir, \"distribution.xml\")\n\n const innerPackageFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.pkg`)\n const componentPropertyListFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.plist`)\n const identity = (await Promise.all([\n findIdentity(certType, options.identity || packager.platformSpecificBuildOptions.identity, keychainFile),\n this.customizeDistributionConfiguration(distInfoFile, appPath),\n this.buildComponentPackage(appPath, componentPropertyListFile, innerPackageFile),\n ]))[0]\n\n if (identity == null && packager.forceCodeSigning) {\n throw new Error(`Cannot find valid \"${certType}\" to sign standalone installer, please see https://electron.build/code-signing`)\n }\n\n const args = prepareProductBuildArgs(identity, keychainFile)\n args.push(\"--distribution\", distInfoFile)\n args.push(artifactPath)\n use(options.productbuild, it => args.push(...it as any))\n await exec(\"productbuild\", args, {\n cwd: appOutDir,\n })\n await Promise.all([unlink(innerPackageFile), unlink(distInfoFile)])\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch, packager.computeSafeArtifactName(artifactName, \"pkg\", arch))\n }\n\n private async customizeDistributionConfiguration(distInfoFile: string, appPath: string) {\n await exec(\"productbuild\", [\"--synthesize\", \"--component\", appPath, distInfoFile], {\n cwd: this.outDir,\n })\n\n const options = this.options\n let distInfo = await readFile(distInfoFile, \"utf-8\")\n const insertIndex = distInfo.lastIndexOf(\"</installer-gui-script>\")\n distInfo = distInfo.substring(0, insertIndex) + ` <domains enable_anywhere=\"${options.allowAnywhere}\" enable_currentUserHome=\"${options.allowCurrentUserHome}\" enable_localSystem=\"${options.allowRootDirectory}\" />\\n` + distInfo.substring(insertIndex)\n\n if (options.background != null) {\n const background = await this.packager.getResource(options.background.file)\n if (background != null) {\n const alignment = options.background.alignment || \"center\"\n // noinspection SpellCheckingInspection\n const scaling = options.background.scaling || \"tofit\"\n distInfo = distInfo.substring(0, insertIndex) + ` <background file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n }\n }\n\n const welcome = await this.packager.getResource(options.welcome)\n if (welcome != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <welcome file=\"${welcome}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const license = await getNotLocalizedLicenseFile(options.license, this.packager)\n if (license != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <license file=\"${license}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const conclusion = await this.packager.getResource(options.conclusion)\n if (conclusion != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <conclusion file=\"${conclusion}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n debug(distInfo)\n await writeFile(distInfoFile, distInfo)\n }\n\n private async buildComponentPackage(appPath: string, propertyListOutputFile: string, packageOutputFile: string) {\n const options = this.options\n const rootPath = path.dirname(appPath)\n\n // first produce a component plist template\n await exec(\"pkgbuild\", [\n \"--analyze\",\n \"--root\", rootPath,\n propertyListOutputFile,\n ])\n\n // process the template plist\n const plistInfo = (await executeAppBuilderAsJson<Array<any>>([\"decode-plist\", \"-f\", propertyListOutputFile]))[0].filter((it: any) => it.RootRelativeBundlePath !== \"Electron.dSYM\")\n if (plistInfo.length > 0) {\n const packageInfo = plistInfo[0]\n\n // ChildBundles lists all of electron binaries within the .app.\n // There is no particular reason for removing that key, except to be as close as possible to\n // the PackageInfo generated by previous versions of electron-builder.\n delete packageInfo.ChildBundles\n\n if (options.isRelocatable != null) {\n packageInfo.BundleIsRelocatable = options.isRelocatable\n }\n\n if (options.isVersionChecked != null) {\n packageInfo.BundleIsVersionChecked = options.isVersionChecked\n }\n\n if (options.hasStrictIdentifier != null) {\n packageInfo.BundleHasStrictIdentifier = options.hasStrictIdentifier\n }\n\n if (options.overwriteAction != null) {\n packageInfo.BundleOverwriteAction = options.overwriteAction\n }\n\n await executeAppBuilderAndWriteJson([\"encode-plist\"], {[propertyListOutputFile]: plistInfo})\n }\n\n // now build the package\n const args = [\n \"--root\", rootPath,\n \"--component-plist\", propertyListOutputFile,\n ]\n\n use(this.options.installLocation || \"/Applications\", it => args.push(\"--install-location\", it!))\n if (options.scripts != null) {\n args.push(\"--scripts\", path.resolve(this.packager.info.buildResourcesDir, options.scripts))\n }\n else if (options.scripts !== null) {\n const dir = path.join(this.packager.info.buildResourcesDir, \"pkg-scripts\")\n const stat = await statOrNull(dir)\n if (stat != null && stat.isDirectory()) {\n args.push(\"--scripts\", dir)\n }\n }\n\n args.push(packageOutputFile)\n\n await exec(\"pkgbuild\", args)\n }\n}\n\nexport function prepareProductBuildArgs(identity: Identity | null, keychain: string | null | undefined): Array<string> {\n const args: Array<string> = []\n if (identity != null) {\n args.push(\"--sign\", identity.hash)\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n }\n return args\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/pkg.ts"],"names":[],"mappings":";;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAGA,MAAM,QAAQ,GAAG,wBAAjB,C,CAEA;AACA;AACA;AACA;;AACM,MAAO,SAAP,SAAyB,cAAzB,CAA+B;AAQnC,EAAA,WAAA,CAA6B,QAA7B,EAA6D,MAA7D,EAA2E;AACzE,UAAM,KAAN;AAD2B,SAAA,QAAA,GAAA,QAAA;AAAgC,SAAA,MAAA,GAAA,MAAA;AAPpD,SAAA,OAAA,GAAO,MAAA,CAAA,MAAA,CAAA;AACd,MAAA,aAAa,EAAE,IADD;AAEd,MAAA,oBAAoB,EAAE,IAFR;AAGd,MAAA,kBAAkB,EAAE;AAHN,KAAA,EAIX,KAAK,QAAL,CAAc,MAAd,CAAqB,GAJV,CAAP;AASR;;AAED,QAAM,KAAN,CAAY,OAAZ,EAA6B,IAA7B,EAAuC;AACrC,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,OAAO,GAAG,QAAQ,CAAC,OAAzB,CAHqC,CAKrC;;AACA,UAAM,YAAY,GAAG,QAAQ,CAAC,yBAAT,CAAmC,OAAnC,EAA4C,KAA5C,CAArB;AACA,UAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,MAAf,EAAuB,YAAvB,CAArB;AAEA,UAAM,QAAQ,CAAC,IAAT,CAAc,wBAAd,CAAuC;AAC3C,MAAA,qBAAqB,EAAE,KADoB;AAE3C,MAAA,IAAI,EAAE,YAFqC;AAG3C,MAAA;AAH2C,KAAvC,CAAN;AAMA,UAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,eAAT,CAAyB,KAAhC,EAAuC,YAA5D;AAEA,UAAM,SAAS,GAAG,KAAK,MAAvB,CAjBqC,CAkBrC;;AACA,UAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,kBAArB,CAArB;AAEA,UAAM,gBAAgB,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,GAAG,yCAAyB,OAAO,CAAC,EAAjC,CAAoC,MAA5D,CAAzB;AACA,UAAM,yBAAyB,GAAG,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,GAAG,yCAAyB,OAAO,CAAC,EAAjC,CAAoC,QAA5D,CAAlC;AACA,UAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,GAAR,CAAY,CAClC,iCAAa,QAAb,EAAuB,OAAO,CAAC,QAAR,IAAoB,QAAQ,CAAC,4BAAT,CAAsC,QAAjF,EAA2F,YAA3F,CADkC,EAElC,KAAK,kCAAL,CAAwC,YAAxC,EAAsD,OAAtD,CAFkC,EAGlC,KAAK,qBAAL,CAA2B,OAA3B,EAAoC,yBAApC,EAA+D,gBAA/D,CAHkC,CAAZ,CAAP,EAIb,CAJa,CAAjB;;AAMA,QAAI,QAAQ,IAAI,IAAZ,IAAoB,QAAQ,CAAC,gBAAjC,EAAmD;AACjD,YAAM,IAAI,KAAJ,CAAU,sBAAsB,QAAQ,gFAAxC,CAAN;AACD;;AAED,UAAM,IAAI,GAAG,uBAAuB,CAAC,QAAD,EAAW,YAAX,CAApC;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,gBAAV,EAA4B,YAA5B;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,YAAV;AACA,4BAAI,OAAO,CAAC,YAAZ,EAA0B,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,GAAG,EAAb,CAAhC;AACA,UAAM,yBAAK,cAAL,EAAqB,IAArB,EAA2B;AAC/B,MAAA,GAAG,EAAE;AAD0B,KAA3B,CAAN;AAGA,UAAM,OAAO,CAAC,GAAR,CAAY,CAAC,uBAAO,gBAAP,CAAD,EAA2B,uBAAO,YAAP,CAA3B,CAAZ,CAAN;AAEA,UAAM,QAAQ,CAAC,uBAAT,CAAiC,YAAjC,EAA+C,IAA/C,EAAqD,IAArD,EAA2D,QAAQ,CAAC,uBAAT,CAAiC,YAAjC,EAA+C,KAA/C,EAAsD,IAAtD,CAA3D,CAAN;AACD;;AAEO,QAAM,kCAAN,CAAyC,YAAzC,EAA+D,OAA/D,EAA8E;AACpF,UAAM,yBAAK,cAAL,EAAqB,CAAC,cAAD,EAAiB,aAAjB,EAAgC,OAAhC,EAAyC,YAAzC,CAArB,EAA6E;AACjF,MAAA,GAAG,EAAE,KAAK;AADuE,KAA7E,CAAN;AAIA,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,QAAI,QAAQ,GAAG,MAAM,yBAAS,YAAT,EAAuB,OAAvB,CAArB;;AAEA,QAAI,OAAO,CAAC,SAAR,IAAqB,IAArB,IAA6B,OAAO,CAAC,SAAR,CAAkB,MAAlB,KAA6B,CAA9D,EAAiE;AAC/D,YAAM,YAAY,GAAG,oBAAoB,KAAK,QAAL,CAAc,OAAd,CAAsB,EAAE,4BAAjE;AACA,YAAM,UAAU,GAAG,gEAAnB;AACA,UAAI,gBAAgB,GAAG,EAAvB;AACA,MAAA,OAAO,CAAC,SAAR,CAAkB,OAAlB,CAA0B,KAAK,IAAG;AAChC,QAAA,gBAAgB,IAAI,wBAAwB,KAAK,OAAjD;AACD,OAFD;AAGA,MAAA,QAAQ,GAAG,QAAQ,CAAC,OAAT,CAAiB,yBAAjB,EAA4C,GAAG,YAAY,GAAG,gBAAgB,GAAG,UAAU,EAA3F,CAAX;AACD;;AAED,UAAM,WAAW,GAAG,QAAQ,CAAC,WAAT,CAAqB,yBAArB,CAApB;AACA,IAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,iCAAiC,OAAO,CAAC,aAAa,6BAA6B,OAAO,CAAC,oBAAoB,yBAAyB,OAAO,CAAC,kBAAkB,QAAvM,GAAkN,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAA7N;;AAEA,QAAI,OAAO,CAAC,UAAR,IAAsB,IAA1B,EAAgC;AAC9B,YAAM,UAAU,GAAG,MAAM,KAAK,QAAL,CAAc,WAAd,CAA0B,OAAO,CAAC,UAAR,CAAmB,IAA7C,CAAzB;;AACA,UAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,cAAM,SAAS,GAAG,OAAO,CAAC,UAAR,CAAmB,SAAnB,IAAgC,QAAlD,CADsB,CAEtB;;AACA,cAAM,OAAO,GAAG,OAAO,CAAC,UAAR,CAAmB,OAAnB,IAA8B,OAA9C;AACA,QAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,yBAAyB,UAAU,gBAAgB,SAAS,cAAc,OAAO,OAAtH,GAAgI,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAA3I;AACD;AACF;;AAED,UAAM,OAAO,GAAG,MAAM,KAAK,QAAL,CAAc,WAAd,CAA0B,OAAO,CAAC,OAAlC,CAAtB;;AACA,QAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,MAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,sBAAsB,OAAO,OAAlE,GAA4E,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAAvF;AACD;;AAED,UAAM,OAAO,GAAG,MAAM,2CAA2B,OAAO,CAAC,OAAnC,EAA4C,KAAK,QAAjD,CAAtB;;AACA,QAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,MAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,sBAAsB,OAAO,OAAlE,GAA4E,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAAvF;AACD;;AAED,UAAM,UAAU,GAAG,MAAM,KAAK,QAAL,CAAc,WAAd,CAA0B,OAAO,CAAC,UAAlC,CAAzB;;AACA,QAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,MAAA,QAAQ,GAAG,QAAQ,CAAC,SAAT,CAAmB,CAAnB,EAAsB,WAAtB,IAAqC,yBAAyB,UAAU,OAAxE,GAAkF,QAAQ,CAAC,SAAT,CAAmB,WAAnB,CAA7F;AACD;;AAED,8BAAM,QAAN;AACA,UAAM,0BAAU,YAAV,EAAwB,QAAxB,CAAN;AACD;;AAEO,QAAM,qBAAN,CAA4B,OAA5B,EAA6C,sBAA7C,EAA6E,iBAA7E,EAAsG;AAC5G,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,QAAQ,GAAG,IAAI,CAAC,OAAL,CAAa,OAAb,CAAjB,CAF4G,CAI5G;;AACA,UAAM,yBAAK,UAAL,EAAiB,CACrB,WADqB,EAErB,QAFqB,EAEX,QAFW,EAGrB,sBAHqB,CAAjB,CAAN,CAL4G,CAW5G;;AACA,UAAM,SAAS,GAAG,CAAC,MAAM,2CAAoC,CAAC,cAAD,EAAiB,IAAjB,EAAuB,sBAAvB,CAApC,CAAP,EAA4F,CAA5F,EAA+F,MAA/F,CAAuG,EAAD,IAAa,EAAE,CAAC,sBAAH,KAA8B,eAAjJ,CAAlB;;AACA,QAAI,SAAS,CAAC,MAAV,GAAmB,CAAvB,EAA0B;AACxB,YAAM,WAAW,GAAG,SAAS,CAAC,CAAD,CAA7B,CADwB,CAGxB;AACA;AACA;;AACA,aAAO,WAAW,CAAC,YAAnB;;AAEA,UAAI,OAAO,CAAC,aAAR,IAAyB,IAA7B,EAAmC;AACjC,QAAA,WAAW,CAAC,mBAAZ,GAAkC,OAAO,CAAC,aAA1C;AACD;;AAED,UAAI,OAAO,CAAC,gBAAR,IAA4B,IAAhC,EAAsC;AACpC,QAAA,WAAW,CAAC,sBAAZ,GAAqC,OAAO,CAAC,gBAA7C;AACD;;AAED,UAAI,OAAO,CAAC,mBAAR,IAA+B,IAAnC,EAAyC;AACvC,QAAA,WAAW,CAAC,yBAAZ,GAAwC,OAAO,CAAC,mBAAhD;AACD;;AAED,UAAI,OAAO,CAAC,eAAR,IAA2B,IAA/B,EAAqC;AACnC,QAAA,WAAW,CAAC,qBAAZ,GAAoC,OAAO,CAAC,eAA5C;AACD;;AAED,YAAM,iDAA8B,CAAC,cAAD,CAA9B,EAAgD;AAAC,SAAC,sBAAD,GAA0B;AAA3B,OAAhD,CAAN;AACD,KAtC2G,CAwC5G;;;AACA,UAAM,IAAI,GAAG,CACX,QADW,EACD,QADC,EAEX,mBAFW,EAEU,sBAFV,CAAb;AAKA,4BAAI,KAAK,OAAL,CAAa,eAAb,IAAgC,eAApC,EAAqD,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,oBAAV,EAAgC,EAAhC,CAA3D;;AACA,QAAI,OAAO,CAAC,OAAR,IAAmB,IAAvB,EAA6B;AAC3B,MAAA,IAAI,CAAC,IAAL,CAAU,WAAV,EAAuB,IAAI,CAAC,OAAL,CAAa,KAAK,QAAL,CAAc,IAAd,CAAmB,iBAAhC,EAAmD,OAAO,CAAC,OAA3D,CAAvB;AACD,KAFD,MAGK,IAAI,OAAO,CAAC,OAAR,KAAoB,IAAxB,EAA8B;AACjC,YAAM,GAAG,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,QAAL,CAAc,IAAd,CAAmB,iBAA7B,EAAgD,aAAhD,CAAZ;AACA,YAAM,IAAI,GAAG,MAAM,sBAAW,GAAX,CAAnB;;AACA,UAAI,IAAI,IAAI,IAAR,IAAgB,IAAI,CAAC,WAAL,EAApB,EAAwC;AACtC,QAAA,IAAI,CAAC,IAAL,CAAU,WAAV,EAAuB,GAAvB;AACD;AACF;;AAED,IAAA,IAAI,CAAC,IAAL,CAAU,iBAAV;AAEA,UAAM,yBAAK,UAAL,EAAiB,IAAjB,CAAN;AACD;;AAxKkC;;;;AA2K/B,SAAU,uBAAV,CAAkC,QAAlC,EAA6D,QAA7D,EAAgG;AACpG,QAAM,IAAI,GAAkB,EAA5B;;AACA,MAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,IAAA,IAAI,CAAC,IAAL,CAAU,QAAV,EAAoB,QAAQ,CAAC,IAA7B;;AACA,QAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,MAAA,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,QAAxB;AACD;AACF;;AACD,SAAO,IAAP;AACD,C","sourcesContent":["import { Arch, debug, exec, use } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { executeAppBuilderAndWriteJson, executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { readFile, unlink, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { PkgOptions } from \"..\"\nimport { filterCFBundleIdentifier } from \"../appInfo\"\nimport { findIdentity, Identity } from \"../codeSign/macCodeSign\"\nimport { Target } from \"../core\"\nimport MacPackager from \"../macPackager\"\n\nconst certType = \"Developer ID Installer\"\n\n// http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/\n// to use --scripts, we must build .app bundle separately using pkgbuild\n// productbuild --scripts doesn't work (because scripts in this case not added to our package)\n// https://github.com/electron-userland/electron-osx-sign/issues/96#issuecomment-274986942\nexport class PkgTarget extends Target {\n readonly options: PkgOptions = {\n allowAnywhere: true,\n allowCurrentUserHome: true,\n allowRootDirectory: true,\n ...this.packager.config.pkg,\n }\n\n constructor(private readonly packager: MacPackager, readonly outDir: string) {\n super(\"pkg\")\n }\n\n async build(appPath: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n const appInfo = packager.appInfo\n\n // pkg doesn't like not ASCII symbols (Could not open package to list files: /Volumes/test/t-gIjdGK/test-project-0/dist/Test App ßW-1.1.0.pkg)\n const artifactName = packager.expandArtifactNamePattern(options, \"pkg\")\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"pkg\",\n file: artifactPath,\n arch,\n })\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n\n const appOutDir = this.outDir\n // https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html\n const distInfoFile = path.join(appOutDir, \"distribution.xml\")\n\n const innerPackageFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.pkg`)\n const componentPropertyListFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.plist`)\n const identity = (await Promise.all([\n findIdentity(certType, options.identity || packager.platformSpecificBuildOptions.identity, keychainFile),\n this.customizeDistributionConfiguration(distInfoFile, appPath),\n this.buildComponentPackage(appPath, componentPropertyListFile, innerPackageFile),\n ]))[0]\n\n if (identity == null && packager.forceCodeSigning) {\n throw new Error(`Cannot find valid \"${certType}\" to sign standalone installer, please see https://electron.build/code-signing`)\n }\n\n const args = prepareProductBuildArgs(identity, keychainFile)\n args.push(\"--distribution\", distInfoFile)\n args.push(artifactPath)\n use(options.productbuild, it => args.push(...it as any))\n await exec(\"productbuild\", args, {\n cwd: appOutDir,\n })\n await Promise.all([unlink(innerPackageFile), unlink(distInfoFile)])\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch, packager.computeSafeArtifactName(artifactName, \"pkg\", arch))\n }\n\n private async customizeDistributionConfiguration(distInfoFile: string, appPath: string) {\n await exec(\"productbuild\", [\"--synthesize\", \"--component\", appPath, distInfoFile], {\n cwd: this.outDir,\n })\n\n const options = this.options\n let distInfo = await readFile(distInfoFile, \"utf-8\")\n\n if (options.mustClose != null && options.mustClose.length !== 0) {\n const startContent = ` <pkg-ref id=\"${this.packager.appInfo.id}\">\\n <must-close>\\n`\n const endContent = \" </must-close>\\n </pkg-ref>\\n</installer-gui-script>\"\n let mustCloseContent = \"\"\n options.mustClose.forEach(appId => {\n mustCloseContent += ` <app id=\"${appId}\"/>\\n`\n })\n distInfo = distInfo.replace(\"</installer-gui-script>\", `${startContent}${mustCloseContent}${endContent}`)\n }\n\n const insertIndex = distInfo.lastIndexOf(\"</installer-gui-script>\")\n distInfo = distInfo.substring(0, insertIndex) + ` <domains enable_anywhere=\"${options.allowAnywhere}\" enable_currentUserHome=\"${options.allowCurrentUserHome}\" enable_localSystem=\"${options.allowRootDirectory}\" />\\n` + distInfo.substring(insertIndex)\n\n if (options.background != null) {\n const background = await this.packager.getResource(options.background.file)\n if (background != null) {\n const alignment = options.background.alignment || \"center\"\n // noinspection SpellCheckingInspection\n const scaling = options.background.scaling || \"tofit\"\n distInfo = distInfo.substring(0, insertIndex) + ` <background file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n }\n }\n\n const welcome = await this.packager.getResource(options.welcome)\n if (welcome != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <welcome file=\"${welcome}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const license = await getNotLocalizedLicenseFile(options.license, this.packager)\n if (license != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <license file=\"${license}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const conclusion = await this.packager.getResource(options.conclusion)\n if (conclusion != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <conclusion file=\"${conclusion}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n debug(distInfo)\n await writeFile(distInfoFile, distInfo)\n }\n\n private async buildComponentPackage(appPath: string, propertyListOutputFile: string, packageOutputFile: string) {\n const options = this.options\n const rootPath = path.dirname(appPath)\n\n // first produce a component plist template\n await exec(\"pkgbuild\", [\n \"--analyze\",\n \"--root\", rootPath,\n propertyListOutputFile,\n ])\n\n // process the template plist\n const plistInfo = (await executeAppBuilderAsJson<Array<any>>([\"decode-plist\", \"-f\", propertyListOutputFile]))[0].filter((it: any) => it.RootRelativeBundlePath !== \"Electron.dSYM\")\n if (plistInfo.length > 0) {\n const packageInfo = plistInfo[0]\n\n // ChildBundles lists all of electron binaries within the .app.\n // There is no particular reason for removing that key, except to be as close as possible to\n // the PackageInfo generated by previous versions of electron-builder.\n delete packageInfo.ChildBundles\n\n if (options.isRelocatable != null) {\n packageInfo.BundleIsRelocatable = options.isRelocatable\n }\n\n if (options.isVersionChecked != null) {\n packageInfo.BundleIsVersionChecked = options.isVersionChecked\n }\n\n if (options.hasStrictIdentifier != null) {\n packageInfo.BundleHasStrictIdentifier = options.hasStrictIdentifier\n }\n\n if (options.overwriteAction != null) {\n packageInfo.BundleOverwriteAction = options.overwriteAction\n }\n\n await executeAppBuilderAndWriteJson([\"encode-plist\"], {[propertyListOutputFile]: plistInfo})\n }\n\n // now build the package\n const args = [\n \"--root\", rootPath,\n \"--component-plist\", propertyListOutputFile,\n ]\n\n use(this.options.installLocation || \"/Applications\", it => args.push(\"--install-location\", it!))\n if (options.scripts != null) {\n args.push(\"--scripts\", path.resolve(this.packager.info.buildResourcesDir, options.scripts))\n }\n else if (options.scripts !== null) {\n const dir = path.join(this.packager.info.buildResourcesDir, \"pkg-scripts\")\n const stat = await statOrNull(dir)\n if (stat != null && stat.isDirectory()) {\n args.push(\"--scripts\", dir)\n }\n }\n\n args.push(packageOutputFile)\n\n await exec(\"pkgbuild\", args)\n }\n}\n\nexport function prepareProductBuildArgs(identity: Identity | null, keychain: string | null | undefined): Array<string> {\n const args: Array<string> = []\n if (identity != null) {\n args.push(\"--sign\", identity.hash)\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n }\n return args\n}\n"],"sourceRoot":""}
File without changes
@@ -89,7 +89,7 @@ function _targetUtil() {
89
89
 
90
90
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
91
91
 
92
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
92
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
93
93
 
94
94
  const defaultPlugs = ["desktop", "desktop-legacy", "home", "x11", "wayland", "unity7", "browser-support", "network", "gsettings", "pulseaudio", "opengl"];
95
95
 
File without changes
@@ -7,6 +7,6 @@ export declare function createCommonTarget(target: string, outDir: string, packa
7
7
  export declare class NoOpTarget extends Target {
8
8
  readonly options: null;
9
9
  constructor(name: string);
10
- readonly outDir: string;
10
+ get outDir(): string;
11
11
  build(appOutDir: string, arch: Arch): Promise<any>;
12
12
  }
File without changes
File without changes
File without changes
@@ -32,7 +32,7 @@ function _builderUtil() {
32
32
 
33
33
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
34
34
 
35
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
36
36
 
37
37
  class StageDir {
38
38
  constructor(dir) {
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -19,7 +19,7 @@ var path = _interopRequireWildcard(require("path"));
19
19
 
20
20
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
21
21
 
22
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
23
 
24
24
  const nodeModulesSystemDependentSuffix = `${path.sep}node_modules`;
25
25
 
File without changes
File without changes
@@ -69,7 +69,7 @@ function _AppFileWalker() {
69
69
 
70
70
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
71
71
 
72
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
72
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
73
73
 
74
74
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
75
75
 
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -114,7 +114,7 @@ function _NodeModuleCopyHelper() {
114
114
 
115
115
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
116
116
 
117
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
117
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
118
118
 
119
119
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
120
120
 
@@ -137,15 +137,17 @@ function getDestinationPath(file, fileSet) {
137
137
  // hoisted node_modules
138
138
  // not lastIndexOf, to ensure that nested module (top-level module depends on) copied to parent node_modules, not to top-level directory
139
139
  // project https://github.com/angexis/punchcontrol/commit/cf929aba55c40d0d8901c54df7945e1d001ce022
140
- const index = file.indexOf(_fileTransformer().NODE_MODULES_PATTERN);
140
+ let index = file.indexOf(_fileTransformer().NODE_MODULES_PATTERN);
141
+
142
+ if (index < 0 && file.endsWith(`${path.sep}node_modules`)) {
143
+ index = file.length - 13;
144
+ }
141
145
 
142
146
  if (index < 0) {
143
147
  throw new Error(`File "${file}" not under the source directory "${fileSet.src}"`);
144
148
  }
145
149
 
146
- return dest + file.substring(index + 1
147
- /* leading slash */
148
- );
150
+ return dest + file.substring(index);
149
151
  }
150
152
  }
151
153
  }
@@ -316,21 +318,14 @@ async function computeNodeModuleFileSets(platformPackager, mainMatcher) {
316
318
 
317
319
  for (const info of deps) {
318
320
  const source = info.dir;
319
- let destination;
320
-
321
- if (source.length > mainMatcher.from.length && source.startsWith(mainMatcher.from) && source[mainMatcher.from.length] === path.sep) {
322
- destination = getDestinationPath(source, {
323
- src: mainMatcher.from,
324
- destination: mainMatcher.to,
325
- files: [],
326
- metadata: null
327
- });
328
- } else {
329
- destination = mainMatcher.to + path.sep + "node_modules";
330
- } // use main matcher patterns, so, user can exclude some files in such hoisted node modules
321
+ const destination = getDestinationPath(source, {
322
+ src: mainMatcher.from,
323
+ destination: mainMatcher.to,
324
+ files: [],
325
+ metadata: null
326
+ }); // use main matcher patterns, so, user can exclude some files in such hoisted node modules
331
327
  // source here includes node_modules, but pattern base should be without because users expect that pattern "!node_modules/loot-core/src{,/**/*}" will work
332
328
 
333
-
334
329
  const matcher = new (_fileMatcher().FileMatcher)(path.dirname(source), destination, mainMatcher.macroExpander, mainMatcher.patterns);
335
330
  const copier = new (_NodeModuleCopyHelper().NodeModuleCopyHelper)(matcher, platformPackager.info);
336
331
  const files = await copier.collectNodeModules(source, info.deps.map(it => it.name), nodeModuleExcludedExts);