app-builder-lib 21.1.6 → 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 (146) hide show
  1. package/electron-osx-sign/util-provisioning-profiles.js +17 -5
  2. package/out/appInfo.d.ts +10 -10
  3. package/out/asar/asar.js +3 -1
  4. package/out/asar/asar.js.map +1 -1
  5. package/out/asar/asarUtil.js +3 -1
  6. package/out/asar/asarUtil.js.map +1 -1
  7. package/out/asar/integrity.js +3 -1
  8. package/out/asar/integrity.js.map +1 -1
  9. package/out/asar/unpackDetector.js +3 -1
  10. package/out/asar/unpackDetector.js.map +1 -1
  11. package/out/codeSign/codesign.js +3 -1
  12. package/out/codeSign/codesign.js.map +1 -1
  13. package/out/codeSign/macCodeSign.js +3 -1
  14. package/out/codeSign/macCodeSign.js.map +1 -1
  15. package/out/codeSign/windowsCodeSign.js +7 -5
  16. package/out/codeSign/windowsCodeSign.js.map +1 -1
  17. package/out/electron/ElectronFramework.d.ts +1 -1
  18. package/out/electron/ElectronFramework.js +3 -1
  19. package/out/electron/ElectronFramework.js.map +1 -1
  20. package/out/electron/electronMac.js +52 -8
  21. package/out/electron/electronMac.js.map +1 -1
  22. package/out/electron/electronVersion.js +3 -1
  23. package/out/electron/electronVersion.js.map +1 -1
  24. package/out/fileMatcher.js +3 -1
  25. package/out/fileMatcher.js.map +1 -1
  26. package/out/fileTransformer.js +3 -1
  27. package/out/fileTransformer.js.map +1 -1
  28. package/out/forge-maker.js +3 -1
  29. package/out/forge-maker.js.map +1 -1
  30. package/out/frameworks/LibUiFramework.js +3 -1
  31. package/out/frameworks/LibUiFramework.js.map +1 -1
  32. package/out/linuxPackager.d.ts +1 -1
  33. package/out/macPackager.d.ts +2 -1
  34. package/out/macPackager.js +18 -8
  35. package/out/macPackager.js.map +1 -1
  36. package/out/options/SnapOptions.d.ts +5 -0
  37. package/out/options/linuxOptions.d.ts +4 -0
  38. package/out/options/pkgOptions.d.ts +4 -0
  39. package/out/packager.d.ts +11 -11
  40. package/out/packager.js +5 -3
  41. package/out/packager.js.map +1 -1
  42. package/out/platformPackager.d.ts +10 -10
  43. package/out/platformPackager.js +3 -1
  44. package/out/platformPackager.js.map +1 -1
  45. package/out/presets/rectCra.js +3 -1
  46. package/out/presets/rectCra.js.map +1 -1
  47. package/out/publish/PublishManager.d.ts +2 -0
  48. package/out/publish/PublishManager.js +5 -3
  49. package/out/publish/PublishManager.js.map +1 -1
  50. package/out/publish/SnapStorePublisher.js +3 -1
  51. package/out/publish/SnapStorePublisher.js.map +1 -1
  52. package/out/publish/s3/BaseS3Publisher.js +3 -1
  53. package/out/publish/s3/BaseS3Publisher.js.map +1 -1
  54. package/out/publish/updateInfoBuilder.js +4 -2
  55. package/out/publish/updateInfoBuilder.js.map +1 -1
  56. package/out/remoteBuilder/ProjectInfoManager.js +3 -1
  57. package/out/remoteBuilder/ProjectInfoManager.js.map +1 -1
  58. package/out/remoteBuilder/RemoteBuilder.js +4 -2
  59. package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
  60. package/out/remoteBuilder/builder-cli.js +4 -2
  61. package/out/remoteBuilder/builder-cli.js.map +1 -1
  62. package/out/targets/AppImageTarget.js +4 -2
  63. package/out/targets/AppImageTarget.js.map +1 -1
  64. package/out/targets/AppxTarget.js +19 -3
  65. package/out/targets/AppxTarget.js.map +1 -1
  66. package/out/targets/ArchiveTarget.js +3 -1
  67. package/out/targets/ArchiveTarget.js.map +1 -1
  68. package/out/targets/LinuxTargetHelper.d.ts +2 -2
  69. package/out/targets/LinuxTargetHelper.js +8 -2
  70. package/out/targets/LinuxTargetHelper.js.map +1 -1
  71. package/out/targets/MsiTarget.js +5 -3
  72. package/out/targets/MsiTarget.js.map +1 -1
  73. package/out/targets/archive.js +3 -1
  74. package/out/targets/archive.js.map +1 -1
  75. package/out/targets/differentialUpdateInfoBuilder.js +4 -2
  76. package/out/targets/differentialUpdateInfoBuilder.js.map +1 -1
  77. package/out/targets/fpm.js +5 -3
  78. package/out/targets/fpm.js.map +1 -1
  79. package/out/targets/nsis/NsisTarget.d.ts +5 -5
  80. package/out/targets/nsis/NsisTarget.js +24 -11
  81. package/out/targets/nsis/NsisTarget.js.map +1 -1
  82. package/out/targets/nsis/WebInstallerTarget.d.ts +2 -2
  83. package/out/targets/nsis/nsisLang.js +3 -1
  84. package/out/targets/nsis/nsisLang.js.map +1 -1
  85. package/out/targets/nsis/nsisLicense.js +3 -1
  86. package/out/targets/nsis/nsisLicense.js.map +1 -1
  87. package/out/targets/nsis/nsisOptions.d.ts +4 -0
  88. package/out/targets/nsis/nsisUtil.d.ts +3 -0
  89. package/out/targets/nsis/nsisUtil.js +195 -4
  90. package/out/targets/nsis/nsisUtil.js.map +1 -1
  91. package/out/targets/pkg.js +15 -2
  92. package/out/targets/pkg.js.map +1 -1
  93. package/out/targets/snap.js +10 -3
  94. package/out/targets/snap.js.map +1 -1
  95. package/out/targets/targetFactory.d.ts +1 -1
  96. package/out/targets/targetUtil.js +3 -1
  97. package/out/targets/targetUtil.js.map +1 -1
  98. package/out/util/AppFileWalker.js +3 -1
  99. package/out/util/AppFileWalker.js.map +1 -1
  100. package/out/util/NodeModuleCopyHelper.js +3 -1
  101. package/out/util/NodeModuleCopyHelper.js.map +1 -1
  102. package/out/util/appBuilder.js +1 -1
  103. package/out/util/appBuilder.js.map +1 -1
  104. package/out/util/appFileCopier.js +15 -18
  105. package/out/util/appFileCopier.js.map +1 -1
  106. package/out/util/bundledTool.js +1 -1
  107. package/out/util/bundledTool.js.map +1 -1
  108. package/out/util/cacheManager.js +3 -1
  109. package/out/util/cacheManager.js.map +1 -1
  110. package/out/util/config.js +4 -2
  111. package/out/util/config.js.map +1 -1
  112. package/out/util/filter.js +3 -1
  113. package/out/util/filter.js.map +1 -1
  114. package/out/util/hash.js +1 -1
  115. package/out/util/hash.js.map +1 -1
  116. package/out/util/license.js +3 -1
  117. package/out/util/license.js.map +1 -1
  118. package/out/util/macosVersion.js +3 -1
  119. package/out/util/macosVersion.js.map +1 -1
  120. package/out/util/packageMetadata.js +3 -1
  121. package/out/util/packageMetadata.js.map +1 -1
  122. package/out/util/pathManager.js +3 -1
  123. package/out/util/pathManager.js.map +1 -1
  124. package/out/util/repositoryInfo.js +3 -1
  125. package/out/util/repositoryInfo.js.map +1 -1
  126. package/out/util/yarn.js +14 -4
  127. package/out/util/yarn.js.map +1 -1
  128. package/out/vm/WineVm.js +3 -1
  129. package/out/vm/WineVm.js.map +1 -1
  130. package/out/vm/vm.d.ts +1 -1
  131. package/out/vm/vm.js +3 -1
  132. package/out/vm/vm.js.map +1 -1
  133. package/out/winPackager.d.ts +2 -2
  134. package/out/winPackager.js +4 -2
  135. package/out/winPackager.js.map +1 -1
  136. package/package.json +9 -9
  137. package/scheme.json +155 -1
  138. package/templates/linux/after-install.tpl +4 -1
  139. package/templates/nsis/assistedInstaller.nsh +6 -0
  140. package/templates/nsis/common.nsh +16 -7
  141. package/templates/nsis/include/extractAppPackage.nsh +46 -12
  142. package/templates/nsis/include/installer.nsh +43 -28
  143. package/templates/nsis/include/webPackage.nsh +19 -7
  144. package/templates/nsis/messages.yml +1 -1
  145. package/templates/nsis/multiUser.nsh +1 -1
  146. package/templates/nsis/portable.nsi +48 -11
@@ -55,17 +55,29 @@ Object.defineProperty(ProvisioningProfile.prototype, 'type', {
55
55
  * Returns a promise resolving to a ProvisioningProfile instance based on file.
56
56
  * @function
57
57
  * @param {string} filePath - Path to provisioning profile.
58
+ * @param {string} keychain - Keychain to use when unlocking provisioning profile.
58
59
  * @returns {Promise} Promise.
59
60
  */
60
- var getProvisioningProfileAsync = module.exports.getProvisioningProfileAsync = function (filePath) {
61
- return execFileAsync('security', [
61
+ var getProvisioningProfileAsync = module.exports.getProvisioningProfileAsync = function (filePath, keychain = null) {
62
+ var securityArgs = [
62
63
  'cms',
63
64
  '-D', // Decode a CMS message
64
65
  '-i', filePath // Use infile as source of data
65
- ])
66
+ ];
67
+
68
+ if (keychain) {
69
+ securityArgs.push('-k', keychain);
70
+ }
71
+
72
+ return execFileAsync('security', securityArgs)
66
73
  .then(async function (result) {
74
+ // make filename unique so it doesn't create issues with parallel method calls
75
+ const timestamp = process.hrtime.bigint
76
+ ? process.hrtime.bigint().toString()
77
+ : process.hrtime().join('')
78
+
67
79
  // todo read directly
68
- const tempFile = path.join(os.tmpdir(), `${require('crypto').createHash('sha1').update(filePath).digest("hex")}.plist`)
80
+ const tempFile = path.join(os.tmpdir(), `${require('crypto').createHash('sha1').update(filePath).update(timestamp).digest('hex')}.plist`)
69
81
  await fs.outputFile(tempFile, result)
70
82
  const plistContent = await executeAppBuilderAsJson(["decode-plist", "-f", tempFile])
71
83
  await fs.unlink(tempFile)
@@ -150,7 +162,7 @@ module.exports.preEmbedProvisioningProfile = function (opts) {
150
162
  if (opts['provisioning-profile'] instanceof ProvisioningProfile) {
151
163
  return embedProvisioningProfile()
152
164
  } else {
153
- return getProvisioningProfileAsync(opts['provisioning-profile'])
165
+ return getProvisioningProfileAsync(opts['provisioning-profile'], opts['keychain'])
154
166
  .then(function (provisioningProfile) {
155
167
  opts['provisioning-profile'] = provisioningProfile
156
168
  })
package/out/appInfo.d.ts CHANGED
@@ -10,17 +10,17 @@ export declare class AppInfo {
10
10
  readonly productName: string;
11
11
  readonly productFilename: string;
12
12
  constructor(info: Packager, buildVersion: string | null | undefined, platformSpecificOptions?: PlatformSpecificBuildOptions | null);
13
- readonly channel: string | null;
13
+ get channel(): string | null;
14
14
  getVersionInWeirdWindowsForm(isSetBuildNumber?: boolean): string;
15
- private readonly notNullDevMetadata;
16
- readonly companyName: string | null;
17
- readonly id: string;
18
- readonly macBundleIdentifier: string;
19
- readonly name: string;
20
- readonly linuxPackageName: string;
21
- readonly sanitizedName: string;
22
- readonly updaterCacheDirName: string;
23
- readonly copyright: string;
15
+ private get notNullDevMetadata();
16
+ get companyName(): string | null;
17
+ get id(): string;
18
+ get macBundleIdentifier(): string;
19
+ get name(): string;
20
+ get linuxPackageName(): string;
21
+ get sanitizedName(): string;
22
+ get updaterCacheDirName(): string;
23
+ get copyright(): string;
24
24
  computePackageUrl(): Promise<string | null>;
25
25
  }
26
26
  export declare function smarten(s: string): string;
package/out/asar/asar.js CHANGED
@@ -29,7 +29,9 @@ function _fsExtra() {
29
29
 
30
30
  var path = _interopRequireWildcard(require("path"));
31
31
 
32
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
32
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
33
+
34
+ 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; }
33
35
 
34
36
  /** @internal */
35
37
  class Node {}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asar/asar.ts"],"names":[],"mappings":"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","sourcesContent":["import { createFromBuffer } from \"chromium-pickle-js\"\nimport { close, open, read, readFile, Stats } from \"fs-extra\"\nimport * as path from \"path\"\n\n/** @internal */\nexport class Node {\n // we don't use Map because later it will be stringified\n files?: { [key: string]: Node }\n\n unpacked?: boolean\n\n size?: number\n // electron expects string\n offset?: string\n\n executable?: boolean\n\n link?: string\n}\n\n/** @internal */\nexport class AsarFilesystem {\n private offset = 0\n\n constructor(readonly src: string, readonly header = new Node(), readonly headerSize: number = -1) {\n if (this.header.files == null) {\n this.header.files = {}\n }\n }\n\n searchNodeFromDirectory(p: string, isCreate: boolean): Node | null {\n let node = this.header\n for (const dir of p.split(path.sep)) {\n if (dir !== \".\") {\n let child = node.files![dir]\n if (child == null) {\n if (!isCreate) {\n return null\n }\n child = new Node()\n child.files = {}\n node.files![dir] = child\n }\n node = child\n }\n }\n return node\n }\n\n getOrCreateNode(p: string): Node {\n if (p == null || p.length === 0) {\n return this.header\n }\n\n const name = path.basename(p)\n const dirNode = this.searchNodeFromDirectory(path.dirname(p), true)!\n if (dirNode.files == null) {\n dirNode.files = {}\n }\n\n let result = dirNode.files[name]\n if (result == null) {\n result = new Node()\n dirNode.files[name] = result\n }\n return result\n }\n\n addFileNode(file: string, dirNode: Node, size: number, unpacked: boolean, stat: Stats): Node {\n if (size > 4294967295) {\n throw new Error(`${file}: file size cannot be larger than 4.2GB`)\n }\n\n const node = new Node()\n node.size = size\n if (unpacked) {\n node.unpacked = true\n }\n else {\n // electron expects string\n node.offset = this.offset.toString()\n if (process.platform !== \"win32\" && (stat.mode & 0o100)) {\n node.executable = true\n }\n this.offset += node.size\n }\n\n let children = dirNode.files\n if (children == null) {\n children = {}\n dirNode.files = children\n }\n children[path.basename(file)] = node\n\n return node\n }\n\n getNode(p: string): Node | null {\n const node = this.searchNodeFromDirectory(path.dirname(p), false)!!\n return node.files!![path.basename(p)]\n }\n\n getFile(p: string, followLinks: boolean = true): Node {\n const info = this.getNode(p)!\n // if followLinks is false we don't resolve symlinks\n return followLinks && info.link != null ? this.getFile(info.link) : info\n }\n\n async readJson(file: string): Promise<any> {\n return JSON.parse((await this.readFile(file)).toString())\n }\n\n readFile(file: string): Promise<Buffer> {\n return readFileFromAsar(this, file, this.getFile(file))\n }\n}\n\nexport async function readAsar(archive: string): Promise<AsarFilesystem> {\n const fd = await open(archive, \"r\")\n let size: number\n let headerBuf\n try {\n const sizeBuf = Buffer.allocUnsafe(8)\n if ((await read(fd, sizeBuf, 0, 8, null as any)).bytesRead !== 8) {\n throw new Error(\"Unable to read header size\")\n }\n\n const sizePickle = createFromBuffer(sizeBuf)\n size = sizePickle.createIterator().readUInt32()\n headerBuf = Buffer.allocUnsafe(size)\n if ((await read(fd, headerBuf, 0, size, null as any)).bytesRead !== size) {\n throw new Error(\"Unable to read header\")\n }\n }\n finally {\n await close(fd)\n }\n\n const headerPickle = createFromBuffer(headerBuf!)\n const header = headerPickle.createIterator().readString()\n return new AsarFilesystem(archive, JSON.parse(header), size)\n}\n\nexport async function readAsarJson(archive: string, file: string): Promise<any> {\n const fs = await readAsar(archive)\n return await fs.readJson(file)\n}\n\nasync function readFileFromAsar(filesystem: AsarFilesystem, filename: string, info: Node): Promise<Buffer> {\n const size = info.size!!\n const buffer = Buffer.allocUnsafe(size)\n if (size <= 0) {\n return buffer\n }\n\n if (info.unpacked) {\n return await readFile(path.join(`${filesystem.src}.unpacked`, filename))\n }\n\n const fd = await open(filesystem.src, \"r\")\n try {\n const offset = 8 + filesystem.headerSize + parseInt(info.offset!!, 10)\n await read(fd, buffer, 0, size, offset)\n }\n finally {\n await close(fd)\n }\n return buffer\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/asar/asar.ts"],"names":[],"mappings":"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","sourcesContent":["import { createFromBuffer } from \"chromium-pickle-js\"\nimport { close, open, read, readFile, Stats } from \"fs-extra\"\nimport * as path from \"path\"\n\n/** @internal */\nexport class Node {\n // we don't use Map because later it will be stringified\n files?: { [key: string]: Node }\n\n unpacked?: boolean\n\n size?: number\n // electron expects string\n offset?: string\n\n executable?: boolean\n\n link?: string\n}\n\n/** @internal */\nexport class AsarFilesystem {\n private offset = 0\n\n constructor(readonly src: string, readonly header = new Node(), readonly headerSize: number = -1) {\n if (this.header.files == null) {\n this.header.files = {}\n }\n }\n\n searchNodeFromDirectory(p: string, isCreate: boolean): Node | null {\n let node = this.header\n for (const dir of p.split(path.sep)) {\n if (dir !== \".\") {\n let child = node.files![dir]\n if (child == null) {\n if (!isCreate) {\n return null\n }\n child = new Node()\n child.files = {}\n node.files![dir] = child\n }\n node = child\n }\n }\n return node\n }\n\n getOrCreateNode(p: string): Node {\n if (p == null || p.length === 0) {\n return this.header\n }\n\n const name = path.basename(p)\n const dirNode = this.searchNodeFromDirectory(path.dirname(p), true)!\n if (dirNode.files == null) {\n dirNode.files = {}\n }\n\n let result = dirNode.files[name]\n if (result == null) {\n result = new Node()\n dirNode.files[name] = result\n }\n return result\n }\n\n addFileNode(file: string, dirNode: Node, size: number, unpacked: boolean, stat: Stats): Node {\n if (size > 4294967295) {\n throw new Error(`${file}: file size cannot be larger than 4.2GB`)\n }\n\n const node = new Node()\n node.size = size\n if (unpacked) {\n node.unpacked = true\n }\n else {\n // electron expects string\n node.offset = this.offset.toString()\n if (process.platform !== \"win32\" && (stat.mode & 0o100)) {\n node.executable = true\n }\n this.offset += node.size\n }\n\n let children = dirNode.files\n if (children == null) {\n children = {}\n dirNode.files = children\n }\n children[path.basename(file)] = node\n\n return node\n }\n\n getNode(p: string): Node | null {\n const node = this.searchNodeFromDirectory(path.dirname(p), false)!!\n return node.files!![path.basename(p)]\n }\n\n getFile(p: string, followLinks: boolean = true): Node {\n const info = this.getNode(p)!\n // if followLinks is false we don't resolve symlinks\n return followLinks && info.link != null ? this.getFile(info.link) : info\n }\n\n async readJson(file: string): Promise<any> {\n return JSON.parse((await this.readFile(file)).toString())\n }\n\n readFile(file: string): Promise<Buffer> {\n return readFileFromAsar(this, file, this.getFile(file))\n }\n}\n\nexport async function readAsar(archive: string): Promise<AsarFilesystem> {\n const fd = await open(archive, \"r\")\n let size: number\n let headerBuf\n try {\n const sizeBuf = Buffer.allocUnsafe(8)\n if ((await read(fd, sizeBuf, 0, 8, null as any)).bytesRead !== 8) {\n throw new Error(\"Unable to read header size\")\n }\n\n const sizePickle = createFromBuffer(sizeBuf)\n size = sizePickle.createIterator().readUInt32()\n headerBuf = Buffer.allocUnsafe(size)\n if ((await read(fd, headerBuf, 0, size, null as any)).bytesRead !== size) {\n throw new Error(\"Unable to read header\")\n }\n }\n finally {\n await close(fd)\n }\n\n const headerPickle = createFromBuffer(headerBuf!)\n const header = headerPickle.createIterator().readString()\n return new AsarFilesystem(archive, JSON.parse(header), size)\n}\n\nexport async function readAsarJson(archive: string, file: string): Promise<any> {\n const fs = await readAsar(archive)\n return await fs.readJson(file)\n}\n\nasync function readFileFromAsar(filesystem: AsarFilesystem, filename: string, info: Node): Promise<Buffer> {\n const size = info.size!!\n const buffer = Buffer.allocUnsafe(size)\n if (size <= 0) {\n return buffer\n }\n\n if (info.unpacked) {\n return await readFile(path.join(`${filesystem.src}.unpacked`, filename))\n }\n\n const fd = await open(filesystem.src, \"r\")\n try {\n const offset = 8 + filesystem.headerSize + parseInt(info.offset!!, 10)\n await read(fd, buffer, 0, size, offset)\n }\n finally {\n await close(fd)\n }\n return buffer\n}\n"],"sourceRoot":""}
@@ -69,7 +69,9 @@ function _unpackDetector() {
69
69
  return data;
70
70
  }
71
71
 
72
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
72
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
73
+
74
+ 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
75
 
74
76
  const pickle = require("chromium-pickle-js");
75
77
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asar/asarUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncTaskManager, log } from \"builder-util\"\nimport { FileCopier, Filter, MAX_FILE_REQUESTS } from \"builder-util/out/fs\"\nimport { symlink } from \"fs\"\nimport { createReadStream, createWriteStream, ensureDir, readFile, Stats, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { AsarOptions } from \"..\"\nimport { Packager } from \"../packager\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { getDestinationPath, ResolvedFileSet } from \"../util/appFileCopier\"\nimport { AsarFilesystem, Node } from \"./asar\"\nimport { detectUnpackedDirs } from \"./unpackDetector\"\n\nconst pickle = require(\"chromium-pickle-js\")\n\n/** @internal */\nexport class AsarPackager {\n private readonly fs = new AsarFilesystem(this.src)\n private readonly outFile: string\n private readonly unpackedDest: string\n\n constructor(private readonly src: string, private readonly destination: string, private readonly options: AsarOptions, private readonly unpackPattern: Filter | null) {\n this.outFile = path.join(destination, \"app.asar\")\n this.unpackedDest = `${this.outFile}.unpacked`\n }\n\n // sort files to minimize file change (i.e. asar file is not changed dramatically on small change)\n async pack(fileSets: Array<ResolvedFileSet>, packager: PlatformPackager<any>) {\n if (this.options.ordering != null) {\n // ordering doesn't support transformed files, but ordering is not used functionality - wait user report to fix it\n await order(fileSets[0].files, this.options.ordering, fileSets[0].src)\n }\n await ensureDir(path.dirname(this.outFile))\n const unpackedFileIndexMap = new Map<ResolvedFileSet, Set<number>>()\n for (const fileSet of fileSets) {\n unpackedFileIndexMap.set(fileSet, await this.createPackageFromFiles(fileSet, packager.info))\n }\n await this.writeAsarFile(fileSets, unpackedFileIndexMap)\n }\n\n private async createPackageFromFiles(fileSet: ResolvedFileSet, packager: Packager) {\n const metadata = fileSet.metadata\n // search auto unpacked dir\n const unpackedDirs = new Set<string>()\n const rootForAppFilesWithoutAsar = path.join(this.destination, \"app\")\n\n if (this.options.smartUnpack !== false) {\n await detectUnpackedDirs(fileSet, unpackedDirs, this.unpackedDest, rootForAppFilesWithoutAsar)\n }\n\n const dirToCreateForUnpackedFiles = new Set<string>(unpackedDirs)\n\n const correctDirNodeUnpackedFlag = async (filePathInArchive: string, dirNode: Node) => {\n for (const dir of unpackedDirs) {\n if (filePathInArchive.length > (dir.length + 2) && filePathInArchive[dir.length] === path.sep && filePathInArchive.startsWith(dir)) {\n dirNode.unpacked = true\n unpackedDirs.add(filePathInArchive)\n // not all dirs marked as unpacked after first iteration - because node module dir can be marked as unpacked after processing node module dir content\n // e.g. node-notifier/example/advanced.js processed, but only on process vendor/terminal-notifier.app module will be marked as unpacked\n await ensureDir(path.join(this.unpackedDest, filePathInArchive))\n break\n }\n }\n }\n\n const transformedFiles = fileSet.transformedFiles\n const taskManager = new AsyncTaskManager(packager.cancellationToken)\n const fileCopier = new FileCopier()\n\n let currentDirNode: Node | null = null\n let currentDirPath: string | null = null\n\n const unpackedFileIndexSet = new Set<number>()\n\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const file = fileSet.files[i]\n const stat = metadata.get(file)\n if (stat == null) {\n continue\n }\n\n const pathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(file, fileSet))\n\n if (stat.isSymbolicLink()) {\n const s = (stat as any)\n this.fs.getOrCreateNode(pathInArchive).link = s.relativeLink\n s.pathInArchive = pathInArchive\n unpackedFileIndexSet.add(i)\n continue\n }\n\n let fileParent = path.dirname(pathInArchive)\n if (fileParent === \".\") {\n fileParent = \"\"\n }\n\n if (currentDirPath !== fileParent) {\n if (fileParent.startsWith(\"..\")) {\n throw new Error(`Internal error: path must not start with \"..\": ${fileParent}`)\n }\n\n currentDirPath = fileParent\n currentDirNode = this.fs.getOrCreateNode(fileParent)\n // do not check for root\n if (fileParent !== \"\" && !currentDirNode.unpacked) {\n if (unpackedDirs.has(fileParent)) {\n currentDirNode.unpacked = true\n }\n else {\n await correctDirNodeUnpackedFlag(fileParent, currentDirNode)\n }\n }\n }\n\n const dirNode = currentDirNode!\n const newData = transformedFiles == null ? null : transformedFiles.get(i)\n const isUnpacked = dirNode.unpacked || (this.unpackPattern != null && this.unpackPattern(file, stat))\n this.fs.addFileNode(file, dirNode, newData == null ? stat.size : Buffer.byteLength(newData), isUnpacked, stat)\n if (isUnpacked) {\n if (!dirNode.unpacked && !dirToCreateForUnpackedFiles.has(fileParent)) {\n dirToCreateForUnpackedFiles.add(fileParent)\n await ensureDir(path.join(this.unpackedDest, fileParent))\n }\n\n const unpackedFile = path.join(this.unpackedDest, pathInArchive)\n taskManager.addTask(copyFileOrData(fileCopier, newData, file, unpackedFile, stat))\n if (taskManager.tasks.length > MAX_FILE_REQUESTS) {\n await taskManager.awaitTasks()\n }\n\n unpackedFileIndexSet.add(i)\n }\n }\n\n if (taskManager.tasks.length > 0) {\n await taskManager.awaitTasks()\n }\n\n return unpackedFileIndexSet\n }\n\n private writeAsarFile(fileSets: Array<ResolvedFileSet>, unpackedFileIndexMap: Map<ResolvedFileSet, Set<number>>): Promise<any> {\n return new Promise((resolve, reject) => {\n const headerPickle = pickle.createEmpty()\n headerPickle.writeString(JSON.stringify(this.fs.header))\n const headerBuf = headerPickle.toBuffer()\n\n const sizePickle = pickle.createEmpty()\n sizePickle.writeUInt32(headerBuf.length)\n\n const sizeBuf = sizePickle.toBuffer()\n const writeStream = createWriteStream(this.outFile)\n writeStream.on(\"error\", reject)\n writeStream.on(\"close\", resolve)\n writeStream.write(sizeBuf)\n\n let fileSetIndex = 0\n\n let files = fileSets[0].files\n let metadata = fileSets[0].metadata\n let transformedFiles = fileSets[0].transformedFiles\n let unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[0])!!\n const w = (index: number) => {\n while (true) {\n if (index >= files.length) {\n if (++fileSetIndex >= fileSets.length) {\n writeStream.end()\n return\n }\n else {\n files = fileSets[fileSetIndex].files\n metadata = fileSets[fileSetIndex].metadata\n transformedFiles = fileSets[fileSetIndex].transformedFiles\n unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[fileSetIndex])!!\n index = 0\n }\n }\n\n if (!unpackedFileIndexSet.has(index)) {\n break\n }\n else {\n const stat = metadata.get(files[index])\n if (stat != null && stat.isSymbolicLink()) {\n symlink((stat as any).linkRelativeToFile, path.join(this.unpackedDest, (stat as any).pathInArchive), () => w(index + 1))\n return\n }\n }\n index++\n }\n\n const data = transformedFiles == null ? null : transformedFiles.get(index)\n const file = files[index]\n if (data !== null && data !== undefined) {\n writeStream.write(data, () => w(index + 1))\n return\n }\n\n // https://github.com/yarnpkg/yarn/pull/3539\n const stat = metadata.get(file)\n if (stat != null && stat.size < (2 * 1024 * 1024)) {\n readFile(file)\n .then(it => {\n writeStream.write(it, () => w(index + 1))\n })\n .catch(e => reject(`Cannot read file ${file}: ${e.stack || e}`))\n }\n else {\n const readStream = createReadStream(file)\n readStream.on(\"error\", reject)\n readStream.once(\"end\", () => w(index + 1))\n readStream.pipe(writeStream, {\n end: false\n })\n }\n }\n\n writeStream.write(headerBuf, () => w(0))\n })\n }\n}\n\nasync function order(filenames: Array<string>, orderingFile: string, src: string) {\n const orderingFiles = (await readFile(orderingFile, \"utf8\")).split(\"\\n\").map(line => {\n if (line.indexOf(\":\") !== -1) {\n line = line.split(\":\").pop()!\n }\n line = line.trim()\n if (line[0] === \"/\") {\n line = line.slice(1)\n }\n return line\n })\n\n const ordering: Array<string> = []\n for (const file of orderingFiles) {\n const pathComponents = file.split(path.sep)\n for (const pathComponent of pathComponents) {\n ordering.push(path.join(src, pathComponent))\n }\n }\n\n const sortedFiles: Array<string> = []\n let missing = 0\n const total = filenames.length\n for (const file of ordering) {\n if (!sortedFiles.includes(file) && filenames.includes(file)) {\n sortedFiles.push(file)\n }\n }\n for (const file of filenames) {\n if (!sortedFiles.includes(file)) {\n sortedFiles.push(file)\n missing += 1\n }\n }\n log.info({coverage: ((total - missing) / total * 100)}, \"ordering files in ASAR archive\")\n return sortedFiles\n}\n\nfunction copyFileOrData(fileCopier: FileCopier, data: string | Buffer | undefined | null, source: string, destination: string, stats: Stats) {\n if (data == null) {\n return fileCopier.copy(source, destination, stats)\n }\n else {\n return writeFile(destination, data)\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/asar/asarUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncTaskManager, log } from \"builder-util\"\nimport { FileCopier, Filter, MAX_FILE_REQUESTS } from \"builder-util/out/fs\"\nimport { symlink } from \"fs\"\nimport { createReadStream, createWriteStream, ensureDir, readFile, Stats, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { AsarOptions } from \"..\"\nimport { Packager } from \"../packager\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { getDestinationPath, ResolvedFileSet } from \"../util/appFileCopier\"\nimport { AsarFilesystem, Node } from \"./asar\"\nimport { detectUnpackedDirs } from \"./unpackDetector\"\n\nconst pickle = require(\"chromium-pickle-js\")\n\n/** @internal */\nexport class AsarPackager {\n private readonly fs = new AsarFilesystem(this.src)\n private readonly outFile: string\n private readonly unpackedDest: string\n\n constructor(private readonly src: string, private readonly destination: string, private readonly options: AsarOptions, private readonly unpackPattern: Filter | null) {\n this.outFile = path.join(destination, \"app.asar\")\n this.unpackedDest = `${this.outFile}.unpacked`\n }\n\n // sort files to minimize file change (i.e. asar file is not changed dramatically on small change)\n async pack(fileSets: Array<ResolvedFileSet>, packager: PlatformPackager<any>) {\n if (this.options.ordering != null) {\n // ordering doesn't support transformed files, but ordering is not used functionality - wait user report to fix it\n await order(fileSets[0].files, this.options.ordering, fileSets[0].src)\n }\n await ensureDir(path.dirname(this.outFile))\n const unpackedFileIndexMap = new Map<ResolvedFileSet, Set<number>>()\n for (const fileSet of fileSets) {\n unpackedFileIndexMap.set(fileSet, await this.createPackageFromFiles(fileSet, packager.info))\n }\n await this.writeAsarFile(fileSets, unpackedFileIndexMap)\n }\n\n private async createPackageFromFiles(fileSet: ResolvedFileSet, packager: Packager) {\n const metadata = fileSet.metadata\n // search auto unpacked dir\n const unpackedDirs = new Set<string>()\n const rootForAppFilesWithoutAsar = path.join(this.destination, \"app\")\n\n if (this.options.smartUnpack !== false) {\n await detectUnpackedDirs(fileSet, unpackedDirs, this.unpackedDest, rootForAppFilesWithoutAsar)\n }\n\n const dirToCreateForUnpackedFiles = new Set<string>(unpackedDirs)\n\n const correctDirNodeUnpackedFlag = async (filePathInArchive: string, dirNode: Node) => {\n for (const dir of unpackedDirs) {\n if (filePathInArchive.length > (dir.length + 2) && filePathInArchive[dir.length] === path.sep && filePathInArchive.startsWith(dir)) {\n dirNode.unpacked = true\n unpackedDirs.add(filePathInArchive)\n // not all dirs marked as unpacked after first iteration - because node module dir can be marked as unpacked after processing node module dir content\n // e.g. node-notifier/example/advanced.js processed, but only on process vendor/terminal-notifier.app module will be marked as unpacked\n await ensureDir(path.join(this.unpackedDest, filePathInArchive))\n break\n }\n }\n }\n\n const transformedFiles = fileSet.transformedFiles\n const taskManager = new AsyncTaskManager(packager.cancellationToken)\n const fileCopier = new FileCopier()\n\n let currentDirNode: Node | null = null\n let currentDirPath: string | null = null\n\n const unpackedFileIndexSet = new Set<number>()\n\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const file = fileSet.files[i]\n const stat = metadata.get(file)\n if (stat == null) {\n continue\n }\n\n const pathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(file, fileSet))\n\n if (stat.isSymbolicLink()) {\n const s = (stat as any)\n this.fs.getOrCreateNode(pathInArchive).link = s.relativeLink\n s.pathInArchive = pathInArchive\n unpackedFileIndexSet.add(i)\n continue\n }\n\n let fileParent = path.dirname(pathInArchive)\n if (fileParent === \".\") {\n fileParent = \"\"\n }\n\n if (currentDirPath !== fileParent) {\n if (fileParent.startsWith(\"..\")) {\n throw new Error(`Internal error: path must not start with \"..\": ${fileParent}`)\n }\n\n currentDirPath = fileParent\n currentDirNode = this.fs.getOrCreateNode(fileParent)\n // do not check for root\n if (fileParent !== \"\" && !currentDirNode.unpacked) {\n if (unpackedDirs.has(fileParent)) {\n currentDirNode.unpacked = true\n }\n else {\n await correctDirNodeUnpackedFlag(fileParent, currentDirNode)\n }\n }\n }\n\n const dirNode = currentDirNode!\n const newData = transformedFiles == null ? null : transformedFiles.get(i)\n const isUnpacked = dirNode.unpacked || (this.unpackPattern != null && this.unpackPattern(file, stat))\n this.fs.addFileNode(file, dirNode, newData == null ? stat.size : Buffer.byteLength(newData), isUnpacked, stat)\n if (isUnpacked) {\n if (!dirNode.unpacked && !dirToCreateForUnpackedFiles.has(fileParent)) {\n dirToCreateForUnpackedFiles.add(fileParent)\n await ensureDir(path.join(this.unpackedDest, fileParent))\n }\n\n const unpackedFile = path.join(this.unpackedDest, pathInArchive)\n taskManager.addTask(copyFileOrData(fileCopier, newData, file, unpackedFile, stat))\n if (taskManager.tasks.length > MAX_FILE_REQUESTS) {\n await taskManager.awaitTasks()\n }\n\n unpackedFileIndexSet.add(i)\n }\n }\n\n if (taskManager.tasks.length > 0) {\n await taskManager.awaitTasks()\n }\n\n return unpackedFileIndexSet\n }\n\n private writeAsarFile(fileSets: Array<ResolvedFileSet>, unpackedFileIndexMap: Map<ResolvedFileSet, Set<number>>): Promise<any> {\n return new Promise((resolve, reject) => {\n const headerPickle = pickle.createEmpty()\n headerPickle.writeString(JSON.stringify(this.fs.header))\n const headerBuf = headerPickle.toBuffer()\n\n const sizePickle = pickle.createEmpty()\n sizePickle.writeUInt32(headerBuf.length)\n\n const sizeBuf = sizePickle.toBuffer()\n const writeStream = createWriteStream(this.outFile)\n writeStream.on(\"error\", reject)\n writeStream.on(\"close\", resolve)\n writeStream.write(sizeBuf)\n\n let fileSetIndex = 0\n\n let files = fileSets[0].files\n let metadata = fileSets[0].metadata\n let transformedFiles = fileSets[0].transformedFiles\n let unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[0])!!\n const w = (index: number) => {\n while (true) {\n if (index >= files.length) {\n if (++fileSetIndex >= fileSets.length) {\n writeStream.end()\n return\n }\n else {\n files = fileSets[fileSetIndex].files\n metadata = fileSets[fileSetIndex].metadata\n transformedFiles = fileSets[fileSetIndex].transformedFiles\n unpackedFileIndexSet = unpackedFileIndexMap.get(fileSets[fileSetIndex])!!\n index = 0\n }\n }\n\n if (!unpackedFileIndexSet.has(index)) {\n break\n }\n else {\n const stat = metadata.get(files[index])\n if (stat != null && stat.isSymbolicLink()) {\n symlink((stat as any).linkRelativeToFile, path.join(this.unpackedDest, (stat as any).pathInArchive), () => w(index + 1))\n return\n }\n }\n index++\n }\n\n const data = transformedFiles == null ? null : transformedFiles.get(index)\n const file = files[index]\n if (data !== null && data !== undefined) {\n writeStream.write(data, () => w(index + 1))\n return\n }\n\n // https://github.com/yarnpkg/yarn/pull/3539\n const stat = metadata.get(file)\n if (stat != null && stat.size < (2 * 1024 * 1024)) {\n readFile(file)\n .then(it => {\n writeStream.write(it, () => w(index + 1))\n })\n .catch(e => reject(`Cannot read file ${file}: ${e.stack || e}`))\n }\n else {\n const readStream = createReadStream(file)\n readStream.on(\"error\", reject)\n readStream.once(\"end\", () => w(index + 1))\n readStream.pipe(writeStream, {\n end: false\n })\n }\n }\n\n writeStream.write(headerBuf, () => w(0))\n })\n }\n}\n\nasync function order(filenames: Array<string>, orderingFile: string, src: string) {\n const orderingFiles = (await readFile(orderingFile, \"utf8\")).split(\"\\n\").map(line => {\n if (line.indexOf(\":\") !== -1) {\n line = line.split(\":\").pop()!\n }\n line = line.trim()\n if (line[0] === \"/\") {\n line = line.slice(1)\n }\n return line\n })\n\n const ordering: Array<string> = []\n for (const file of orderingFiles) {\n const pathComponents = file.split(path.sep)\n for (const pathComponent of pathComponents) {\n ordering.push(path.join(src, pathComponent))\n }\n }\n\n const sortedFiles: Array<string> = []\n let missing = 0\n const total = filenames.length\n for (const file of ordering) {\n if (!sortedFiles.includes(file) && filenames.includes(file)) {\n sortedFiles.push(file)\n }\n }\n for (const file of filenames) {\n if (!sortedFiles.includes(file)) {\n sortedFiles.push(file)\n missing += 1\n }\n }\n log.info({coverage: ((total - missing) / total * 100)}, \"ordering files in ASAR archive\")\n return sortedFiles\n}\n\nfunction copyFileOrData(fileCopier: FileCopier, data: string | Buffer | undefined | null, source: string, destination: string, stats: Stats) {\n if (data == null) {\n return fileCopier.copy(source, destination, stats)\n }\n else {\n return writeFile(destination, data)\n }\n}"],"sourceRoot":""}
@@ -39,7 +39,9 @@ function _fsExtra() {
39
39
 
40
40
  var path = _interopRequireWildcard(require("path"));
41
41
 
42
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
42
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
43
+
44
+ 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; }
43
45
 
44
46
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
47
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asar/integrity.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;;;;;AAeO,eAAe,WAAf,CAA2B,aAA3B,EAAkD,OAAlD,EAAuF;AAC5F;AACA,QAAM,KAAK,GAAG,CAAC,MAAM,wBAAQ,aAAR,CAAP,EAA+B,MAA/B,CAAsC,EAAE,IAAI,EAAE,CAAC,QAAH,CAAY,OAAZ,CAA5C,EAAkE,IAAlE,EAAd;AACA,QAAM,SAAS,GAAG,MAAM,uBAAgB,GAAhB,CAAoB,KAApB,EAA2B,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,EAAzB,CAAD,CAAzC,CAAxB;AAEA,QAAM,MAAM,GAA+B,EAA3C;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,CAAC,MAA1B,EAAkC,CAAC,EAAnC,EAAuC;AACrC,IAAA,MAAM,CAAC,KAAK,CAAC,CAAD,CAAN,CAAN,GAAmB,SAAS,CAAC,CAAD,CAA5B;AACD;;AACD,SAAA,MAAA,CAAA,MAAA,CAAA;AAAQ,IAAA,SAAS,EAAE;AAAnB,GAAA,EAA8B,OAA9B,CAAA;AACD;;AAED,SAAS,QAAT,CAAkB,IAAlB,EAAgC,SAAA,GAAoB,QAApD,EAA8D,QAAA,GAAwC,QAAtG,EAA8G;AAC5G,SAAO,IAAI,OAAJ,CAAoB,CAAC,OAAD,EAAU,MAAV,KAAoB;AAC7C,UAAM,IAAI,GAAG,0BAAW,SAAX,CAAb;AACA,IAAA,IAAI,CACD,EADH,CACM,OADN,EACe,MADf,EAEG,WAFH,CAEe,QAFf;AAIA,8BAAiB,IAAjB,EACG,EADH,CACM,OADN,EACe,MADf,EAEG,EAFH,CAEM,KAFN,EAEa,MAAK;AACd,MAAA,IAAI,CAAC,GAAL;AACA,MAAA,OAAO,CAAC,IAAI,CAAC,IAAL,EAAD,CAAP;AACD,KALH,EAMG,IANH,CAMQ,IANR,EAMc;AAAC,MAAA,GAAG,EAAE;AAAN,KANd;AAOD,GAbM,CAAP;AAcD,C","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { createHash } from \"crypto\"\nimport { createReadStream } from \"fs\"\nimport { readdir } from \"fs-extra\"\nimport * as path from \"path\"\n\nexport interface AsarIntegrityOptions {\n /**\n * Allows external asar files.\n *\n * @default false\n */\n readonly externalAllowed?: boolean\n}\n\nexport interface AsarIntegrity extends AsarIntegrityOptions {\n checksums: { [key: string]: string; }\n}\n\nexport async function computeData(resourcesPath: string, options?: AsarIntegrityOptions | null): Promise<AsarIntegrity> {\n // sort to produce constant result\n const names = (await readdir(resourcesPath)).filter(it => it.endsWith(\".asar\")).sort()\n const checksums = await BluebirdPromise.map(names, it => hashFile(path.join(resourcesPath, it)))\n\n const result: { [key: string]: string; } = {}\n for (let i = 0; i < names.length; i++) {\n result[names[i]] = checksums[i]\n }\n return {checksums: result, ...options}\n}\n\nfunction hashFile(file: string, algorithm: string = \"sha512\", encoding: \"hex\" | \"base64\" | \"latin1\" = \"base64\") {\n return new Promise<string>((resolve, reject) => {\n const hash = createHash(algorithm)\n hash\n .on(\"error\", reject)\n .setEncoding(encoding)\n\n createReadStream(file)\n .on(\"error\", reject)\n .on(\"end\", () => {\n hash.end()\n resolve(hash.read() as string)\n })\n .pipe(hash, {end: false})\n })\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/asar/integrity.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;;;;;;;AAeO,eAAe,WAAf,CAA2B,aAA3B,EAAkD,OAAlD,EAAuF;AAC5F;AACA,QAAM,KAAK,GAAG,CAAC,MAAM,wBAAQ,aAAR,CAAP,EAA+B,MAA/B,CAAsC,EAAE,IAAI,EAAE,CAAC,QAAH,CAAY,OAAZ,CAA5C,EAAkE,IAAlE,EAAd;AACA,QAAM,SAAS,GAAG,MAAM,uBAAgB,GAAhB,CAAoB,KAApB,EAA2B,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,EAAzB,CAAD,CAAzC,CAAxB;AAEA,QAAM,MAAM,GAA+B,EAA3C;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,CAAC,MAA1B,EAAkC,CAAC,EAAnC,EAAuC;AACrC,IAAA,MAAM,CAAC,KAAK,CAAC,CAAD,CAAN,CAAN,GAAmB,SAAS,CAAC,CAAD,CAA5B;AACD;;AACD,SAAA,MAAA,CAAA,MAAA,CAAA;AAAQ,IAAA,SAAS,EAAE;AAAnB,GAAA,EAA8B,OAA9B,CAAA;AACD;;AAED,SAAS,QAAT,CAAkB,IAAlB,EAAgC,SAAA,GAAoB,QAApD,EAA8D,QAAA,GAAwC,QAAtG,EAA8G;AAC5G,SAAO,IAAI,OAAJ,CAAoB,CAAC,OAAD,EAAU,MAAV,KAAoB;AAC7C,UAAM,IAAI,GAAG,0BAAW,SAAX,CAAb;AACA,IAAA,IAAI,CACD,EADH,CACM,OADN,EACe,MADf,EAEG,WAFH,CAEe,QAFf;AAIA,8BAAiB,IAAjB,EACG,EADH,CACM,OADN,EACe,MADf,EAEG,EAFH,CAEM,KAFN,EAEa,MAAK;AACd,MAAA,IAAI,CAAC,GAAL;AACA,MAAA,OAAO,CAAC,IAAI,CAAC,IAAL,EAAD,CAAP;AACD,KALH,EAMG,IANH,CAMQ,IANR,EAMc;AAAC,MAAA,GAAG,EAAE;AAAN,KANd;AAOD,GAbM,CAAP;AAcD,C","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { createHash } from \"crypto\"\nimport { createReadStream } from \"fs\"\nimport { readdir } from \"fs-extra\"\nimport * as path from \"path\"\n\nexport interface AsarIntegrityOptions {\n /**\n * Allows external asar files.\n *\n * @default false\n */\n readonly externalAllowed?: boolean\n}\n\nexport interface AsarIntegrity extends AsarIntegrityOptions {\n checksums: { [key: string]: string; }\n}\n\nexport async function computeData(resourcesPath: string, options?: AsarIntegrityOptions | null): Promise<AsarIntegrity> {\n // sort to produce constant result\n const names = (await readdir(resourcesPath)).filter(it => it.endsWith(\".asar\")).sort()\n const checksums = await BluebirdPromise.map(names, it => hashFile(path.join(resourcesPath, it)))\n\n const result: { [key: string]: string; } = {}\n for (let i = 0; i < names.length; i++) {\n result[names[i]] = checksums[i]\n }\n return {checksums: result, ...options}\n}\n\nfunction hashFile(file: string, algorithm: string = \"sha512\", encoding: \"hex\" | \"base64\" | \"latin1\" = \"base64\") {\n return new Promise<string>((resolve, reject) => {\n const hash = createHash(algorithm)\n hash\n .on(\"error\", reject)\n .setEncoding(encoding)\n\n createReadStream(file)\n .on(\"error\", reject)\n .on(\"end\", () => {\n hash.end()\n resolve(hash.read() as string)\n })\n .pipe(hash, {end: false})\n })\n}"],"sourceRoot":""}
@@ -78,7 +78,9 @@ function _appFileCopier() {
78
78
  return data;
79
79
  }
80
80
 
81
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
81
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
82
+
83
+ 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; }
82
84
 
83
85
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
84
86
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/asar/unpackDetector.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { log } from \"builder-util\"\nimport { CONCURRENCY } from \"builder-util/out/fs\"\nimport { ensureDir } from \"fs-extra\"\nimport { isBinaryFile } from \"isbinaryfile\"\nimport * as path from \"path\"\nimport { NODE_MODULES_PATTERN } from \"../fileTransformer\"\nimport { getDestinationPath, ResolvedFileSet } from \"../util/appFileCopier\"\n\nfunction addValue(map: Map<string, Array<string>>, key: string, value: string) {\n let list = map.get(key)\n if (list == null) {\n list = [value]\n map.set(key, list)\n }\n else {\n list.push(value)\n }\n}\n\nexport function isLibOrExe(file: string): boolean {\n return file.endsWith(\".dll\") || file.endsWith(\".exe\") || file.endsWith(\".dylib\") || file.endsWith(\".so\")\n}\n\n/** @internal */\nexport async function detectUnpackedDirs(fileSet: ResolvedFileSet, autoUnpackDirs: Set<string>, unpackedDest: string, rootForAppFilesWithoutAsar: string) {\n const dirToCreate = new Map<string, Array<string>>()\n const metadata = fileSet.metadata\n\n function addParents(child: string, root: string) {\n child = path.dirname(child)\n if (autoUnpackDirs.has(child)) {\n return\n }\n\n do {\n autoUnpackDirs.add(child)\n const p = path.dirname(child)\n // create parent dir to be able to copy file later without directory existence check\n addValue(dirToCreate, p, path.basename(child))\n\n if (child === root || p === root || autoUnpackDirs.has(p)) {\n break\n }\n child = p\n }\n while (true)\n\n autoUnpackDirs.add(root)\n }\n\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const file = fileSet.files[i]\n const index = file.lastIndexOf(NODE_MODULES_PATTERN)\n if (index < 0) {\n continue\n }\n\n let nextSlashIndex = file.indexOf(path.sep, index + NODE_MODULES_PATTERN.length + 1)\n if (nextSlashIndex < 0) {\n continue\n }\n\n if (file[index + NODE_MODULES_PATTERN.length] === \"@\") {\n nextSlashIndex = file.indexOf(path.sep, nextSlashIndex + 1)\n }\n\n if (!metadata.get(file)!.isFile()) {\n continue\n }\n\n const packageDir = file.substring(0, nextSlashIndex)\n const packageDirPathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(packageDir, fileSet))\n const pathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(file, fileSet))\n if (autoUnpackDirs.has(packageDirPathInArchive)) {\n // if package dir is unpacked, any file also unpacked\n addParents(pathInArchive, packageDirPathInArchive)\n continue\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2679\n let shouldUnpack = false\n // ffprobe-static and ffmpeg-static are known packages to always unpack\n const moduleName = path.basename(packageDir)\n if (moduleName === \"ffprobe-static\" || moduleName === \"ffmpeg-static\" || isLibOrExe(file)) {\n shouldUnpack = true\n }\n else if (!file.includes(\".\", nextSlashIndex) && path.extname(file) === \"\") {\n shouldUnpack = await isBinaryFile(file)\n }\n\n if (!shouldUnpack) {\n continue\n }\n\n if (log.isDebugEnabled) {\n log.debug({file: pathInArchive, reason: \"contains executable code\"}, \"not packed into asar archive\")\n }\n\n addParents(pathInArchive, packageDirPathInArchive)\n }\n\n if (dirToCreate.size > 0) {\n await ensureDir(unpackedDest + path.sep + \"node_modules\")\n // child directories should be not created asynchronously - parent directories should be created first\n await BluebirdPromise.map(dirToCreate.keys(), async parentDir => {\n const base = unpackedDest + path.sep + parentDir\n await ensureDir(base)\n await BluebirdPromise.each(dirToCreate.get(parentDir)!, (it): any => {\n if (dirToCreate.has(parentDir + path.sep + it)) {\n // already created\n return null\n }\n else {\n return ensureDir(base + path.sep + it)\n }\n })\n }, CONCURRENCY)\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/asar/unpackDetector.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { log } from \"builder-util\"\nimport { CONCURRENCY } from \"builder-util/out/fs\"\nimport { ensureDir } from \"fs-extra\"\nimport { isBinaryFile } from \"isbinaryfile\"\nimport * as path from \"path\"\nimport { NODE_MODULES_PATTERN } from \"../fileTransformer\"\nimport { getDestinationPath, ResolvedFileSet } from \"../util/appFileCopier\"\n\nfunction addValue(map: Map<string, Array<string>>, key: string, value: string) {\n let list = map.get(key)\n if (list == null) {\n list = [value]\n map.set(key, list)\n }\n else {\n list.push(value)\n }\n}\n\nexport function isLibOrExe(file: string): boolean {\n return file.endsWith(\".dll\") || file.endsWith(\".exe\") || file.endsWith(\".dylib\") || file.endsWith(\".so\")\n}\n\n/** @internal */\nexport async function detectUnpackedDirs(fileSet: ResolvedFileSet, autoUnpackDirs: Set<string>, unpackedDest: string, rootForAppFilesWithoutAsar: string) {\n const dirToCreate = new Map<string, Array<string>>()\n const metadata = fileSet.metadata\n\n function addParents(child: string, root: string) {\n child = path.dirname(child)\n if (autoUnpackDirs.has(child)) {\n return\n }\n\n do {\n autoUnpackDirs.add(child)\n const p = path.dirname(child)\n // create parent dir to be able to copy file later without directory existence check\n addValue(dirToCreate, p, path.basename(child))\n\n if (child === root || p === root || autoUnpackDirs.has(p)) {\n break\n }\n child = p\n }\n while (true)\n\n autoUnpackDirs.add(root)\n }\n\n for (let i = 0, n = fileSet.files.length; i < n; i++) {\n const file = fileSet.files[i]\n const index = file.lastIndexOf(NODE_MODULES_PATTERN)\n if (index < 0) {\n continue\n }\n\n let nextSlashIndex = file.indexOf(path.sep, index + NODE_MODULES_PATTERN.length + 1)\n if (nextSlashIndex < 0) {\n continue\n }\n\n if (file[index + NODE_MODULES_PATTERN.length] === \"@\") {\n nextSlashIndex = file.indexOf(path.sep, nextSlashIndex + 1)\n }\n\n if (!metadata.get(file)!.isFile()) {\n continue\n }\n\n const packageDir = file.substring(0, nextSlashIndex)\n const packageDirPathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(packageDir, fileSet))\n const pathInArchive = path.relative(rootForAppFilesWithoutAsar, getDestinationPath(file, fileSet))\n if (autoUnpackDirs.has(packageDirPathInArchive)) {\n // if package dir is unpacked, any file also unpacked\n addParents(pathInArchive, packageDirPathInArchive)\n continue\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2679\n let shouldUnpack = false\n // ffprobe-static and ffmpeg-static are known packages to always unpack\n const moduleName = path.basename(packageDir)\n if (moduleName === \"ffprobe-static\" || moduleName === \"ffmpeg-static\" || isLibOrExe(file)) {\n shouldUnpack = true\n }\n else if (!file.includes(\".\", nextSlashIndex) && path.extname(file) === \"\") {\n shouldUnpack = await isBinaryFile(file)\n }\n\n if (!shouldUnpack) {\n continue\n }\n\n if (log.isDebugEnabled) {\n log.debug({file: pathInArchive, reason: \"contains executable code\"}, \"not packed into asar archive\")\n }\n\n addParents(pathInArchive, packageDirPathInArchive)\n }\n\n if (dirToCreate.size > 0) {\n await ensureDir(unpackedDest + path.sep + \"node_modules\")\n // child directories should be not created asynchronously - parent directories should be created first\n await BluebirdPromise.map(dirToCreate.keys(), async parentDir => {\n const base = unpackedDest + path.sep + parentDir\n await ensureDir(base)\n await BluebirdPromise.each(dirToCreate.get(parentDir)!, (it): any => {\n if (dirToCreate.has(parentDir + path.sep + it)) {\n // already created\n return null\n }\n else {\n return ensureDir(base + path.sep + it)\n }\n })\n }, CONCURRENCY)\n }\n}"],"sourceRoot":""}
@@ -57,7 +57,9 @@ function _binDownload() {
57
57
  return data;
58
58
  }
59
59
 
60
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
60
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
61
+
62
+ 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; }
61
63
 
62
64
  /** @private */
63
65
  async function downloadCertificate(urlOrBase64, tmpDir, currentDir) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codeSign/codesign.ts"],"names":[],"mappings":";;;;;;;AAAA;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;;;;AAEA;AACO,eAAe,mBAAf,CAAmC,WAAnC,EAAwD,MAAxD,EAAwE,UAAxE,EAA0F;AAC/F,EAAA,WAAW,GAAG,WAAW,CAAC,IAAZ,EAAd;AAEA,MAAI,IAAI,GAAkB,IAA1B;;AACA,MAAK,WAAW,CAAC,MAAZ,GAAqB,CAArB,IAA0B,WAAW,CAAC,CAAD,CAAX,KAAmB,GAA9C,IAAsD,WAAW,CAAC,UAAZ,CAAuB,GAAvB,CAAtD,IAAqF,WAAW,CAAC,UAAZ,CAAuB,GAAvB,CAAzF,EAAsH;AACpH,IAAA,IAAI,GAAG,WAAP;AACD,GAFD,MAGK,IAAI,WAAW,CAAC,UAAZ,CAAuB,SAAvB,CAAJ,EAAuC;AAC1C,IAAA,IAAI,GAAG,WAAW,CAAC,SAAZ,CAAsB,UAAU,MAAhC,CAAP;AACD,GAFI,MAGA,IAAI,WAAW,CAAC,UAAZ,CAAuB,IAAvB,CAAJ,EAAkC;AACrC,IAAA,IAAI,GAAG,IAAI,CAAC,IAAL,CAAU,oBAAV,EAAqB,WAAW,CAAC,SAAZ,CAAsB,KAAK,MAA3B,CAArB,CAAP;AACD,GAFI,MAGA;AACH,UAAM,KAAK,GAAG,WAAW,CAAC,UAAZ,CAAuB,UAAvB,CAAd;;AACA,QAAI,KAAK,IAAI,WAAW,CAAC,MAAZ,GAAqB,IAA9B,IAAsC,WAAW,CAAC,QAAZ,CAAqB,GAArB,CAA1C,EAAqE;AACnE,YAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAP,CAAmB;AAAC,QAAA,MAAM,EAAE;AAAT,OAAnB,CAAvB;;AACA,UAAI,KAAJ,EAAW;AACT,cAAM,6BAAS,WAAT,EAAsB,QAAtB,CAAN;AACD,OAFD,MAGK;AACH,cAAM,2BAAW,QAAX,EAAqB,MAAM,CAAC,IAAP,CAAY,WAAZ,EAAyB,QAAzB,CAArB,CAAN;AACD;;AACD,aAAO,QAAP;AACD,KATD,MAUK;AACH,MAAA,IAAI,GAAG,WAAP;AACD;AACF;;AAED,EAAA,IAAI,GAAG,IAAI,CAAC,OAAL,CAAa,UAAb,EAAyB,IAAzB,CAAP;AACA,QAAM,IAAI,GAAG,MAAM,sBAAW,IAAX,CAAnB;;AACA,MAAI,IAAI,IAAI,IAAZ,EAAkB;AAChB,UAAM,KAAI,wCAAJ,EAA8B,GAAG,IAAI,gBAArC,CAAN;AACD,GAFD,MAGK,IAAI,CAAC,IAAI,CAAC,MAAL,EAAL,EAAoB;AACvB,UAAM,KAAI,wCAAJ,EAA8B,GAAG,IAAI,aAArC,CAAN;AACD,GAFI,MAGA;AACH,WAAO,IAAP;AACD;AACF,C","sourcesContent":["import { outputFile } from \"fs-extra\"\nimport { homedir } from \"os\"\nimport * as path from \"path\"\nimport { TmpDir } from \"temp-file\"\nimport { InvalidConfigurationError } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { download } from \"../binDownload\"\n\n/** @private */\nexport async function downloadCertificate(urlOrBase64: string, tmpDir: TmpDir, currentDir: string): Promise<string> {\n urlOrBase64 = urlOrBase64.trim()\n\n let file: string | null = null\n if ((urlOrBase64.length > 3 && urlOrBase64[1] === \":\") || urlOrBase64.startsWith(\"/\") || urlOrBase64.startsWith(\".\")) {\n file = urlOrBase64\n }\n else if (urlOrBase64.startsWith(\"file://\")) {\n file = urlOrBase64.substring(\"file://\".length)\n }\n else if (urlOrBase64.startsWith(\"~/\")) {\n file = path.join(homedir(), urlOrBase64.substring(\"~/\".length))\n }\n else {\n const isUrl = urlOrBase64.startsWith(\"https://\")\n if (isUrl || urlOrBase64.length > 2048 || urlOrBase64.endsWith(\"=\")) {\n const tempFile = await tmpDir.getTempFile({suffix: \".p12\"})\n if (isUrl) {\n await download(urlOrBase64, tempFile)\n }\n else {\n await outputFile(tempFile, Buffer.from(urlOrBase64, \"base64\"))\n }\n return tempFile\n }\n else {\n file = urlOrBase64\n }\n }\n\n file = path.resolve(currentDir, file)\n const stat = await statOrNull(file)\n if (stat == null) {\n throw new InvalidConfigurationError(`${file} doesn't exist`)\n }\n else if (!stat.isFile()) {\n throw new InvalidConfigurationError(`${file} not a file`)\n }\n else {\n return file\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/codeSign/codesign.ts"],"names":[],"mappings":";;;;;;;AAAA;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;;;;;;AAEA;AACO,eAAe,mBAAf,CAAmC,WAAnC,EAAwD,MAAxD,EAAwE,UAAxE,EAA0F;AAC/F,EAAA,WAAW,GAAG,WAAW,CAAC,IAAZ,EAAd;AAEA,MAAI,IAAI,GAAkB,IAA1B;;AACA,MAAK,WAAW,CAAC,MAAZ,GAAqB,CAArB,IAA0B,WAAW,CAAC,CAAD,CAAX,KAAmB,GAA9C,IAAsD,WAAW,CAAC,UAAZ,CAAuB,GAAvB,CAAtD,IAAqF,WAAW,CAAC,UAAZ,CAAuB,GAAvB,CAAzF,EAAsH;AACpH,IAAA,IAAI,GAAG,WAAP;AACD,GAFD,MAGK,IAAI,WAAW,CAAC,UAAZ,CAAuB,SAAvB,CAAJ,EAAuC;AAC1C,IAAA,IAAI,GAAG,WAAW,CAAC,SAAZ,CAAsB,UAAU,MAAhC,CAAP;AACD,GAFI,MAGA,IAAI,WAAW,CAAC,UAAZ,CAAuB,IAAvB,CAAJ,EAAkC;AACrC,IAAA,IAAI,GAAG,IAAI,CAAC,IAAL,CAAU,oBAAV,EAAqB,WAAW,CAAC,SAAZ,CAAsB,KAAK,MAA3B,CAArB,CAAP;AACD,GAFI,MAGA;AACH,UAAM,KAAK,GAAG,WAAW,CAAC,UAAZ,CAAuB,UAAvB,CAAd;;AACA,QAAI,KAAK,IAAI,WAAW,CAAC,MAAZ,GAAqB,IAA9B,IAAsC,WAAW,CAAC,QAAZ,CAAqB,GAArB,CAA1C,EAAqE;AACnE,YAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAP,CAAmB;AAAC,QAAA,MAAM,EAAE;AAAT,OAAnB,CAAvB;;AACA,UAAI,KAAJ,EAAW;AACT,cAAM,6BAAS,WAAT,EAAsB,QAAtB,CAAN;AACD,OAFD,MAGK;AACH,cAAM,2BAAW,QAAX,EAAqB,MAAM,CAAC,IAAP,CAAY,WAAZ,EAAyB,QAAzB,CAArB,CAAN;AACD;;AACD,aAAO,QAAP;AACD,KATD,MAUK;AACH,MAAA,IAAI,GAAG,WAAP;AACD;AACF;;AAED,EAAA,IAAI,GAAG,IAAI,CAAC,OAAL,CAAa,UAAb,EAAyB,IAAzB,CAAP;AACA,QAAM,IAAI,GAAG,MAAM,sBAAW,IAAX,CAAnB;;AACA,MAAI,IAAI,IAAI,IAAZ,EAAkB;AAChB,UAAM,KAAI,wCAAJ,EAA8B,GAAG,IAAI,gBAArC,CAAN;AACD,GAFD,MAGK,IAAI,CAAC,IAAI,CAAC,MAAL,EAAL,EAAoB;AACvB,UAAM,KAAI,wCAAJ,EAA8B,GAAG,IAAI,aAArC,CAAN;AACD,GAFI,MAGA;AACH,WAAO,IAAP;AACD;AACF,C","sourcesContent":["import { outputFile } from \"fs-extra\"\nimport { homedir } from \"os\"\nimport * as path from \"path\"\nimport { TmpDir } from \"temp-file\"\nimport { InvalidConfigurationError } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { download } from \"../binDownload\"\n\n/** @private */\nexport async function downloadCertificate(urlOrBase64: string, tmpDir: TmpDir, currentDir: string): Promise<string> {\n urlOrBase64 = urlOrBase64.trim()\n\n let file: string | null = null\n if ((urlOrBase64.length > 3 && urlOrBase64[1] === \":\") || urlOrBase64.startsWith(\"/\") || urlOrBase64.startsWith(\".\")) {\n file = urlOrBase64\n }\n else if (urlOrBase64.startsWith(\"file://\")) {\n file = urlOrBase64.substring(\"file://\".length)\n }\n else if (urlOrBase64.startsWith(\"~/\")) {\n file = path.join(homedir(), urlOrBase64.substring(\"~/\".length))\n }\n else {\n const isUrl = urlOrBase64.startsWith(\"https://\")\n if (isUrl || urlOrBase64.length > 2048 || urlOrBase64.endsWith(\"=\")) {\n const tempFile = await tmpDir.getTempFile({suffix: \".p12\"})\n if (isUrl) {\n await download(urlOrBase64, tempFile)\n }\n else {\n await outputFile(tempFile, Buffer.from(urlOrBase64, \"base64\"))\n }\n return tempFile\n }\n else {\n file = urlOrBase64\n }\n }\n\n file = path.resolve(currentDir, file)\n const stat = await statOrNull(file)\n if (stat == null) {\n throw new InvalidConfigurationError(`${file} doesn't exist`)\n }\n else if (!stat.isFile()) {\n throw new InvalidConfigurationError(`${file} not a file`)\n }\n else {\n return file\n }\n}"],"sourceRoot":""}
@@ -123,7 +123,9 @@ function _codesign() {
123
123
  return data;
124
124
  }
125
125
 
126
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
126
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
127
+
128
+ 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; }
127
129
 
128
130
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
129
131
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codeSign/macCodeSign.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { exec, InvalidConfigurationError, isEmptyOrSpaces, isEnvTrue, isPullRequest, log, TmpDir } from \"builder-util/out/util\"\nimport { copyFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { Fields, Logger } from \"builder-util/out/log\"\nimport { randomBytes, createHash } from \"crypto\"\nimport { rename } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport { homedir, tmpdir } from \"os\"\nimport * as path from \"path\"\nimport { getTempName } from \"temp-file\"\nimport { isAutoDiscoveryCodeSignIdentity } from \"../util/flags\"\nimport { downloadCertificate } from \"./codesign\"\n\nexport const appleCertificatePrefixes = [\"Developer ID Application:\", \"Developer ID Installer:\", \"3rd Party Mac Developer Application:\", \"3rd Party Mac Developer Installer:\"]\n\nexport type CertType = \"Developer ID Application\" | \"Developer ID Installer\" | \"3rd Party Mac Developer Application\" | \"3rd Party Mac Developer Installer\" | \"Mac Developer\"\n\nexport interface CodeSigningInfo {\n keychainFile?: string | null\n}\n\nexport function isSignAllowed(isPrintWarn = true): boolean {\n if (process.platform !== \"darwin\") {\n if (isPrintWarn) {\n log.warn({reason: \"supported only on macOS\"}, \"skipped macOS application code signing\")\n }\n return false\n }\n\n const buildForPrWarning = \"There are serious security concerns with CSC_FOR_PULL_REQUEST=true (see the CircleCI documentation (https://circleci.com/docs/1.0/fork-pr-builds/) for details)\" +\n \"\\nIf you have SSH keys, sensitive env vars or AWS credentials stored in your project settings and untrusted forks can make pull requests against your repo, then this option isn't for you.\"\n\n if (isPullRequest()) {\n if (isEnvTrue(process.env.CSC_FOR_PULL_REQUEST)) {\n if (isPrintWarn) {\n log.warn(buildForPrWarning)\n }\n }\n else {\n if (isPrintWarn) {\n // https://github.com/electron-userland/electron-builder/issues/1524\n log.warn(\"Current build is a part of pull request, code signing will be skipped.\" +\n \"\\nSet env CSC_FOR_PULL_REQUEST to true to force code signing.\" +\n `\\n${buildForPrWarning}`)\n }\n return false\n }\n }\n return true\n}\n\nexport async function reportError(isMas: boolean, certificateType: CertType, qualifier: string | null | undefined, keychainFile: string | null | undefined, isForceCodeSigning: boolean) {\n const logFields: Fields = {}\n if (qualifier == null) {\n logFields.reason = \"\"\n if (isAutoDiscoveryCodeSignIdentity()) {\n logFields.reason += `cannot find valid \"${certificateType}\" identity${(isMas ? \"\" : ` or custom non-Apple code signing certificate`)}`\n }\n logFields.reason += \", see https://electron.build/code-signing\"\n if (!isAutoDiscoveryCodeSignIdentity()) {\n logFields.CSC_IDENTITY_AUTO_DISCOVERY = false\n }\n }\n else {\n logFields.reason = \"Identity name is specified, but no valid identity with this name in the keychain\"\n logFields.identity = qualifier\n }\n\n const args = [\"find-identity\"]\n if (keychainFile != null) {\n args.push(keychainFile)\n }\n\n if (qualifier != null || isAutoDiscoveryCodeSignIdentity()) {\n logFields.allIdentities = (await exec(\"security\", args))\n .trim()\n .split(\"\\n\")\n .filter(it => !(it.includes(\"Policy: X.509 Basic\") || it.includes(\"Matching identities\")))\n .join(\"\\n\")\n }\n\n if (isMas || isForceCodeSigning) {\n throw new Error(Logger.createMessage(\"skipped macOS application code signing\", logFields, \"error\", it => it))\n }\n else {\n log.warn(logFields, \"skipped macOS application code signing\")\n }\n}\n\n// \"Note that filename will not be searched to resolve the signing identity's certificate chain unless it is also on the user's keychain search list.\"\n// but \"security list-keychains\" doesn't support add - we should 1) get current list 2) set new list - it is very bad http://stackoverflow.com/questions/10538942/add-a-keychain-to-search-list\n// \"overly complicated and introduces a race condition.\"\n// https://github.com/electron-userland/electron-builder/issues/398\nconst bundledCertKeychainAdded = new Lazy<void>(async () => {\n // copy to temp and then atomic rename to final path\n const cacheDir = getCacheDirectory()\n const tmpKeychainPath = path.join(cacheDir, getTempName(\"electron-builder-root-certs\"))\n const keychainPath = path.join(cacheDir, \"electron-builder-root-certs.keychain\")\n const results = await Promise.all<any>([\n listUserKeychains(),\n copyFile(path.join(__dirname, \"..\", \"..\", \"certs\", \"root_certs.keychain\"), tmpKeychainPath)\n .then(() => rename(tmpKeychainPath, keychainPath)),\n ])\n const list = results[0]\n if (!list.includes(keychainPath)) {\n await exec(\"security\", [\"list-keychains\", \"-d\", \"user\", \"-s\", keychainPath].concat(list))\n }\n})\n\nfunction getCacheDirectory(): string {\n const env = process.env.ELECTRON_BUILDER_CACHE\n return isEmptyOrSpaces(env) ? path.join(homedir(), \"Library\", \"Caches\", \"electron-builder\") : path.resolve(env!!)\n}\n\nfunction listUserKeychains(): Promise<Array<string>> {\n return exec(\"security\", [\"list-keychains\", \"-d\", \"user\"])\n .then(it => it\n .split(\"\\n\")\n .map(it => {\n const r = it.trim()\n return r.substring(1, r.length - 1)\n })\n .filter(it => it.length > 0))\n}\n\nexport interface CreateKeychainOptions {\n tmpDir: TmpDir\n cscLink: string\n cscKeyPassword: string\n cscILink?: string | null\n cscIKeyPassword?: string | null\n currentDir: string\n}\n\nexport function removeKeychain(keychainFile: string, printWarn = true): Promise<any> {\n return exec(\"security\", [\"delete-keychain\", keychainFile])\n .catch(e => {\n if (printWarn) {\n log.warn({file: keychainFile, error: e.stack || e}, \"cannot delete keychain\")\n }\n return unlinkIfExists(keychainFile)\n })\n}\n\nexport async function createKeychain({tmpDir, cscLink, cscKeyPassword, cscILink, cscIKeyPassword, currentDir}: CreateKeychainOptions): Promise<CodeSigningInfo> {\n // travis has correct AppleWWDRCA cert\n if (process.env.TRAVIS !== \"true\") {\n await bundledCertKeychainAdded.value\n }\n\n // https://github.com/electron-userland/electron-builder/issues/3685\n // use constant file\n const keychainFile = path.join(process.env.APP_BUILDER_TMP_DIR || tmpdir(), `${createHash(\"sha256\").update(currentDir).update(\"app-builder\").digest(\"hex\")}.keychain`)\n // noinspection JSUnusedLocalSymbols\n await removeKeychain(keychainFile, false).catch(_ => {/* ignore*/})\n\n const certLinks = [cscLink]\n if (cscILink != null) {\n certLinks.push(cscILink)\n }\n\n const certPaths = new Array(certLinks.length)\n const keychainPassword = randomBytes(32).toString(\"base64\")\n const securityCommands = [\n [\"create-keychain\", \"-p\", keychainPassword, keychainFile],\n [\"unlock-keychain\", \"-p\", keychainPassword, keychainFile],\n [\"set-keychain-settings\", keychainFile]\n ]\n\n // https://stackoverflow.com/questions/42484678/codesign-keychain-gets-ignored\n // https://github.com/electron-userland/electron-builder/issues/1457\n const list = await listUserKeychains()\n if (!list.includes(keychainFile)) {\n securityCommands.push([\"list-keychains\", \"-d\", \"user\", \"-s\", keychainFile].concat(list))\n }\n\n await Promise.all([\n // we do not clear downloaded files - will be removed on tmpDir cleanup automatically. not a security issue since in any case data is available as env variables and protected by password.\n BluebirdPromise.map(certLinks, (link, i) => downloadCertificate(link, tmpDir, currentDir).then(it => certPaths[i] = it)),\n BluebirdPromise.mapSeries(securityCommands, it => exec(\"security\", it))\n ])\n return await importCerts(keychainFile, certPaths, [cscKeyPassword, cscIKeyPassword].filter(it => it != null) as Array<string>)\n}\n\nasync function importCerts(keychainFile: string, paths: Array<string>, keyPasswords: Array<string>): Promise<CodeSigningInfo> {\n for (let i = 0; i < paths.length; i++) {\n const password = keyPasswords[i]\n await exec(\"security\", [\"import\", paths[i], \"-k\", keychainFile, \"-T\", \"/usr/bin/codesign\", \"-T\", \"/usr/bin/productbuild\", \"-P\", password])\n\n // https://stackoverflow.com/questions/39868578/security-codesign-in-sierra-keychain-ignores-access-control-settings-and-ui-p\n // https://github.com/electron-userland/electron-packager/issues/701#issuecomment-322315996\n await exec(\"security\", [\"set-key-partition-list\", \"-S\", \"apple-tool:,apple:\", \"-s\", \"-k\", password, keychainFile])\n }\n\n return {\n keychainFile,\n }\n}\n\n/** @private */\nexport function sign(path: string, name: string, keychain: string): Promise<any> {\n const args = [\"--deep\", \"--force\", \"--sign\", name, path]\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n return exec(\"codesign\", args)\n}\n\nexport let findIdentityRawResult: Promise<Array<string>> | null = null\n\nasync function getValidIdentities(keychain?: string | null): Promise<Array<string>> {\n function addKeychain(args: Array<string>) {\n if (keychain != null) {\n args.push(keychain)\n }\n return args\n }\n\n let result = findIdentityRawResult\n if (result == null || keychain != null) {\n // https://github.com/electron-userland/electron-builder/issues/481\n // https://github.com/electron-userland/electron-builder/issues/535\n result = Promise.all<Array<string>>([\n exec(\"security\", addKeychain([\"find-identity\", \"-v\"]))\n .then(it => it.trim().split(\"\\n\").filter(it => {\n for (const prefix of appleCertificatePrefixes) {\n if (it.includes(prefix)) {\n return true\n }\n }\n return false\n })),\n exec(\"security\", addKeychain([\"find-identity\", \"-v\", \"-p\", \"codesigning\"]))\n .then(it => it.trim().split((\"\\n\"))),\n ])\n .then(it => {\n const array = it[0].concat(it[1])\n .filter(it => !it.includes(\"(Missing required extension)\") && !it.includes(\"valid identities found\") && !it.includes(\"iPhone \") && !it.includes(\"com.apple.idms.appleid.prd.\"))\n // remove 1)\n .map(it => it.substring(it.indexOf(\")\") + 1).trim())\n return Array.from(new Set(array))\n })\n\n if (keychain == null) {\n findIdentityRawResult = result\n }\n }\n return result\n}\n\nasync function _findIdentity(type: CertType, qualifier?: string | null, keychain?: string | null): Promise<Identity | null> {\n // https://github.com/electron-userland/electron-builder/issues/484\n //noinspection SpellCheckingInspection\n const lines = await getValidIdentities(keychain)\n const namePrefix = `${type}:`\n for (const line of lines) {\n if (qualifier != null && !line.includes(qualifier)) {\n continue\n }\n\n if (line.includes(namePrefix)) {\n return parseIdentity(line)\n }\n }\n\n if (type === \"Developer ID Application\") {\n // find non-Apple certificate\n // https://github.com/electron-userland/electron-builder/issues/458\n l: for (const line of lines) {\n if (qualifier != null && !line.includes(qualifier)) {\n continue\n }\n\n if (line.includes(\"Mac Developer:\")) {\n continue\n }\n\n for (const prefix of appleCertificatePrefixes) {\n if (line.includes(prefix)) {\n continue l\n }\n }\n\n return parseIdentity(line)\n }\n }\n return null\n}\n\nexport declare class Identity {\n readonly name: string\n readonly hash: string\n\n constructor(name: string, hash: string)\n}\n\nconst _Identity = require(\"../../electron-osx-sign/util-identities\").Identity\n\nfunction parseIdentity(line: string): Identity {\n const firstQuoteIndex = line.indexOf('\"')\n const name = line.substring(firstQuoteIndex + 1, line.lastIndexOf('\"'))\n const hash = line.substring(0, firstQuoteIndex - 1)\n return new _Identity(name, hash)\n}\n\nexport function findIdentity(certType: CertType, qualifier?: string | null, keychain?: string | null): Promise<Identity | null> {\n let identity = qualifier || process.env.CSC_NAME\n if (isEmptyOrSpaces(identity)) {\n if (isAutoDiscoveryCodeSignIdentity()) {\n return _findIdentity(certType, null, keychain)\n }\n else {\n return Promise.resolve(null)\n }\n }\n else {\n identity = identity!.trim()\n for (const prefix of appleCertificatePrefixes) {\n checkPrefix(identity, prefix)\n }\n return _findIdentity(certType, identity, keychain)\n }\n}\n\nfunction checkPrefix(name: string, prefix: string) {\n if (name.startsWith(prefix)) {\n throw new InvalidConfigurationError(`Please remove prefix \"${prefix}\" from the specified name — appropriate certificate will be chosen automatically`)\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/codeSign/macCodeSign.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { exec, InvalidConfigurationError, isEmptyOrSpaces, isEnvTrue, isPullRequest, log, TmpDir } from \"builder-util/out/util\"\nimport { copyFile, unlinkIfExists } from \"builder-util/out/fs\"\nimport { Fields, Logger } from \"builder-util/out/log\"\nimport { randomBytes, createHash } from \"crypto\"\nimport { rename } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport { homedir, tmpdir } from \"os\"\nimport * as path from \"path\"\nimport { getTempName } from \"temp-file\"\nimport { isAutoDiscoveryCodeSignIdentity } from \"../util/flags\"\nimport { downloadCertificate } from \"./codesign\"\n\nexport const appleCertificatePrefixes = [\"Developer ID Application:\", \"Developer ID Installer:\", \"3rd Party Mac Developer Application:\", \"3rd Party Mac Developer Installer:\"]\n\nexport type CertType = \"Developer ID Application\" | \"Developer ID Installer\" | \"3rd Party Mac Developer Application\" | \"3rd Party Mac Developer Installer\" | \"Mac Developer\"\n\nexport interface CodeSigningInfo {\n keychainFile?: string | null\n}\n\nexport function isSignAllowed(isPrintWarn = true): boolean {\n if (process.platform !== \"darwin\") {\n if (isPrintWarn) {\n log.warn({reason: \"supported only on macOS\"}, \"skipped macOS application code signing\")\n }\n return false\n }\n\n const buildForPrWarning = \"There are serious security concerns with CSC_FOR_PULL_REQUEST=true (see the CircleCI documentation (https://circleci.com/docs/1.0/fork-pr-builds/) for details)\" +\n \"\\nIf you have SSH keys, sensitive env vars or AWS credentials stored in your project settings and untrusted forks can make pull requests against your repo, then this option isn't for you.\"\n\n if (isPullRequest()) {\n if (isEnvTrue(process.env.CSC_FOR_PULL_REQUEST)) {\n if (isPrintWarn) {\n log.warn(buildForPrWarning)\n }\n }\n else {\n if (isPrintWarn) {\n // https://github.com/electron-userland/electron-builder/issues/1524\n log.warn(\"Current build is a part of pull request, code signing will be skipped.\" +\n \"\\nSet env CSC_FOR_PULL_REQUEST to true to force code signing.\" +\n `\\n${buildForPrWarning}`)\n }\n return false\n }\n }\n return true\n}\n\nexport async function reportError(isMas: boolean, certificateType: CertType, qualifier: string | null | undefined, keychainFile: string | null | undefined, isForceCodeSigning: boolean) {\n const logFields: Fields = {}\n if (qualifier == null) {\n logFields.reason = \"\"\n if (isAutoDiscoveryCodeSignIdentity()) {\n logFields.reason += `cannot find valid \"${certificateType}\" identity${(isMas ? \"\" : ` or custom non-Apple code signing certificate`)}`\n }\n logFields.reason += \", see https://electron.build/code-signing\"\n if (!isAutoDiscoveryCodeSignIdentity()) {\n logFields.CSC_IDENTITY_AUTO_DISCOVERY = false\n }\n }\n else {\n logFields.reason = \"Identity name is specified, but no valid identity with this name in the keychain\"\n logFields.identity = qualifier\n }\n\n const args = [\"find-identity\"]\n if (keychainFile != null) {\n args.push(keychainFile)\n }\n\n if (qualifier != null || isAutoDiscoveryCodeSignIdentity()) {\n logFields.allIdentities = (await exec(\"security\", args))\n .trim()\n .split(\"\\n\")\n .filter(it => !(it.includes(\"Policy: X.509 Basic\") || it.includes(\"Matching identities\")))\n .join(\"\\n\")\n }\n\n if (isMas || isForceCodeSigning) {\n throw new Error(Logger.createMessage(\"skipped macOS application code signing\", logFields, \"error\", it => it))\n }\n else {\n log.warn(logFields, \"skipped macOS application code signing\")\n }\n}\n\n// \"Note that filename will not be searched to resolve the signing identity's certificate chain unless it is also on the user's keychain search list.\"\n// but \"security list-keychains\" doesn't support add - we should 1) get current list 2) set new list - it is very bad http://stackoverflow.com/questions/10538942/add-a-keychain-to-search-list\n// \"overly complicated and introduces a race condition.\"\n// https://github.com/electron-userland/electron-builder/issues/398\nconst bundledCertKeychainAdded = new Lazy<void>(async () => {\n // copy to temp and then atomic rename to final path\n const cacheDir = getCacheDirectory()\n const tmpKeychainPath = path.join(cacheDir, getTempName(\"electron-builder-root-certs\"))\n const keychainPath = path.join(cacheDir, \"electron-builder-root-certs.keychain\")\n const results = await Promise.all<any>([\n listUserKeychains(),\n copyFile(path.join(__dirname, \"..\", \"..\", \"certs\", \"root_certs.keychain\"), tmpKeychainPath)\n .then(() => rename(tmpKeychainPath, keychainPath)),\n ])\n const list = results[0]\n if (!list.includes(keychainPath)) {\n await exec(\"security\", [\"list-keychains\", \"-d\", \"user\", \"-s\", keychainPath].concat(list))\n }\n})\n\nfunction getCacheDirectory(): string {\n const env = process.env.ELECTRON_BUILDER_CACHE\n return isEmptyOrSpaces(env) ? path.join(homedir(), \"Library\", \"Caches\", \"electron-builder\") : path.resolve(env!!)\n}\n\nfunction listUserKeychains(): Promise<Array<string>> {\n return exec(\"security\", [\"list-keychains\", \"-d\", \"user\"])\n .then(it => it\n .split(\"\\n\")\n .map(it => {\n const r = it.trim()\n return r.substring(1, r.length - 1)\n })\n .filter(it => it.length > 0))\n}\n\nexport interface CreateKeychainOptions {\n tmpDir: TmpDir\n cscLink: string\n cscKeyPassword: string\n cscILink?: string | null\n cscIKeyPassword?: string | null\n currentDir: string\n}\n\nexport function removeKeychain(keychainFile: string, printWarn = true): Promise<any> {\n return exec(\"security\", [\"delete-keychain\", keychainFile])\n .catch(e => {\n if (printWarn) {\n log.warn({file: keychainFile, error: e.stack || e}, \"cannot delete keychain\")\n }\n return unlinkIfExists(keychainFile)\n })\n}\n\nexport async function createKeychain({tmpDir, cscLink, cscKeyPassword, cscILink, cscIKeyPassword, currentDir}: CreateKeychainOptions): Promise<CodeSigningInfo> {\n // travis has correct AppleWWDRCA cert\n if (process.env.TRAVIS !== \"true\") {\n await bundledCertKeychainAdded.value\n }\n\n // https://github.com/electron-userland/electron-builder/issues/3685\n // use constant file\n const keychainFile = path.join(process.env.APP_BUILDER_TMP_DIR || tmpdir(), `${createHash(\"sha256\").update(currentDir).update(\"app-builder\").digest(\"hex\")}.keychain`)\n // noinspection JSUnusedLocalSymbols\n await removeKeychain(keychainFile, false).catch(_ => {/* ignore*/})\n\n const certLinks = [cscLink]\n if (cscILink != null) {\n certLinks.push(cscILink)\n }\n\n const certPaths = new Array(certLinks.length)\n const keychainPassword = randomBytes(32).toString(\"base64\")\n const securityCommands = [\n [\"create-keychain\", \"-p\", keychainPassword, keychainFile],\n [\"unlock-keychain\", \"-p\", keychainPassword, keychainFile],\n [\"set-keychain-settings\", keychainFile]\n ]\n\n // https://stackoverflow.com/questions/42484678/codesign-keychain-gets-ignored\n // https://github.com/electron-userland/electron-builder/issues/1457\n const list = await listUserKeychains()\n if (!list.includes(keychainFile)) {\n securityCommands.push([\"list-keychains\", \"-d\", \"user\", \"-s\", keychainFile].concat(list))\n }\n\n await Promise.all([\n // we do not clear downloaded files - will be removed on tmpDir cleanup automatically. not a security issue since in any case data is available as env variables and protected by password.\n BluebirdPromise.map(certLinks, (link, i) => downloadCertificate(link, tmpDir, currentDir).then(it => certPaths[i] = it)),\n BluebirdPromise.mapSeries(securityCommands, it => exec(\"security\", it))\n ])\n return await importCerts(keychainFile, certPaths, [cscKeyPassword, cscIKeyPassword].filter(it => it != null) as Array<string>)\n}\n\nasync function importCerts(keychainFile: string, paths: Array<string>, keyPasswords: Array<string>): Promise<CodeSigningInfo> {\n for (let i = 0; i < paths.length; i++) {\n const password = keyPasswords[i]\n await exec(\"security\", [\"import\", paths[i], \"-k\", keychainFile, \"-T\", \"/usr/bin/codesign\", \"-T\", \"/usr/bin/productbuild\", \"-P\", password])\n\n // https://stackoverflow.com/questions/39868578/security-codesign-in-sierra-keychain-ignores-access-control-settings-and-ui-p\n // https://github.com/electron-userland/electron-packager/issues/701#issuecomment-322315996\n await exec(\"security\", [\"set-key-partition-list\", \"-S\", \"apple-tool:,apple:\", \"-s\", \"-k\", password, keychainFile])\n }\n\n return {\n keychainFile,\n }\n}\n\n/** @private */\nexport function sign(path: string, name: string, keychain: string): Promise<any> {\n const args = [\"--deep\", \"--force\", \"--sign\", name, path]\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n return exec(\"codesign\", args)\n}\n\nexport let findIdentityRawResult: Promise<Array<string>> | null = null\n\nasync function getValidIdentities(keychain?: string | null): Promise<Array<string>> {\n function addKeychain(args: Array<string>) {\n if (keychain != null) {\n args.push(keychain)\n }\n return args\n }\n\n let result = findIdentityRawResult\n if (result == null || keychain != null) {\n // https://github.com/electron-userland/electron-builder/issues/481\n // https://github.com/electron-userland/electron-builder/issues/535\n result = Promise.all<Array<string>>([\n exec(\"security\", addKeychain([\"find-identity\", \"-v\"]))\n .then(it => it.trim().split(\"\\n\").filter(it => {\n for (const prefix of appleCertificatePrefixes) {\n if (it.includes(prefix)) {\n return true\n }\n }\n return false\n })),\n exec(\"security\", addKeychain([\"find-identity\", \"-v\", \"-p\", \"codesigning\"]))\n .then(it => it.trim().split((\"\\n\"))),\n ])\n .then(it => {\n const array = it[0].concat(it[1])\n .filter(it => !it.includes(\"(Missing required extension)\") && !it.includes(\"valid identities found\") && !it.includes(\"iPhone \") && !it.includes(\"com.apple.idms.appleid.prd.\"))\n // remove 1)\n .map(it => it.substring(it.indexOf(\")\") + 1).trim())\n return Array.from(new Set(array))\n })\n\n if (keychain == null) {\n findIdentityRawResult = result\n }\n }\n return result\n}\n\nasync function _findIdentity(type: CertType, qualifier?: string | null, keychain?: string | null): Promise<Identity | null> {\n // https://github.com/electron-userland/electron-builder/issues/484\n //noinspection SpellCheckingInspection\n const lines = await getValidIdentities(keychain)\n const namePrefix = `${type}:`\n for (const line of lines) {\n if (qualifier != null && !line.includes(qualifier)) {\n continue\n }\n\n if (line.includes(namePrefix)) {\n return parseIdentity(line)\n }\n }\n\n if (type === \"Developer ID Application\") {\n // find non-Apple certificate\n // https://github.com/electron-userland/electron-builder/issues/458\n l: for (const line of lines) {\n if (qualifier != null && !line.includes(qualifier)) {\n continue\n }\n\n if (line.includes(\"Mac Developer:\")) {\n continue\n }\n\n for (const prefix of appleCertificatePrefixes) {\n if (line.includes(prefix)) {\n continue l\n }\n }\n\n return parseIdentity(line)\n }\n }\n return null\n}\n\nexport declare class Identity {\n readonly name: string\n readonly hash: string\n\n constructor(name: string, hash: string)\n}\n\nconst _Identity = require(\"../../electron-osx-sign/util-identities\").Identity\n\nfunction parseIdentity(line: string): Identity {\n const firstQuoteIndex = line.indexOf('\"')\n const name = line.substring(firstQuoteIndex + 1, line.lastIndexOf('\"'))\n const hash = line.substring(0, firstQuoteIndex - 1)\n return new _Identity(name, hash)\n}\n\nexport function findIdentity(certType: CertType, qualifier?: string | null, keychain?: string | null): Promise<Identity | null> {\n let identity = qualifier || process.env.CSC_NAME\n if (isEmptyOrSpaces(identity)) {\n if (isAutoDiscoveryCodeSignIdentity()) {\n return _findIdentity(certType, null, keychain)\n }\n else {\n return Promise.resolve(null)\n }\n }\n else {\n identity = identity!.trim()\n for (const prefix of appleCertificatePrefixes) {\n checkPrefix(identity, prefix)\n }\n return _findIdentity(certType, identity, keychain)\n }\n}\n\nfunction checkPrefix(name: string, prefix: string) {\n if (name.startsWith(prefix)) {\n throw new InvalidConfigurationError(`Please remove prefix \"${prefix}\" from the specified name — appropriate certificate will be chosen automatically`)\n }\n}"],"sourceRoot":""}
@@ -101,7 +101,9 @@ function _vm() {
101
101
  return data;
102
102
  }
103
103
 
104
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
104
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
105
+
106
+ 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; }
105
107
 
106
108
  function getSignVendorPath() {
107
109
  return (0, _binDownload().getBin)("winCodeSign");
@@ -128,11 +130,11 @@ async function sign(options, packager) {
128
130
  let isNest = false;
129
131
 
130
132
  for (const hash of hashes) {
131
- const taskConfiguration = Object.assign({}, options, {
133
+ const taskConfiguration = Object.assign(Object.assign({}, options), {
132
134
  hash,
133
135
  isNest
134
136
  });
135
- await executor(Object.assign({}, taskConfiguration, {
137
+ await executor(Object.assign(Object.assign({}, taskConfiguration), {
136
138
  computeSignToolArgs: isWin => computeSignToolArgs(taskConfiguration, isWin)
137
139
  }));
138
140
  isNest = true;
@@ -234,7 +236,7 @@ async function doSign(configuration, packager) {
234
236
  });
235
237
  } catch (e) {
236
238
  if (e.message.includes("The file is being used by another process") || e.message.includes("The specified timestamp server either could not be reached")) {
237
- _util().log.warn(`First attempt to code sign failed, another attempt will be made in 2 seconds: ${e.message}`);
239
+ _util().log.warn(`First attempt to code sign failed, another attempt will be made in 15 seconds: ${e.message}`);
238
240
 
239
241
  await new Promise((resolve, reject) => {
240
242
  setTimeout(() => {
@@ -242,7 +244,7 @@ async function doSign(configuration, packager) {
242
244
  timeout,
243
245
  env
244
246
  }).then(resolve).catch(reject);
245
- }, 2000);
247
+ }, 15000);
246
248
  });
247
249
  }
248
250