app-builder-lib 22.7.0 → 22.9.1

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 (83) hide show
  1. package/electron-osx-sign/index.d.ts +1 -0
  2. package/electron-osx-sign/sign.js +12 -1
  3. package/out/asar/asarUtil.js +1 -1
  4. package/out/asar/asarUtil.js.map +1 -1
  5. package/out/codeSign/windowsCodeSign.js +2 -2
  6. package/out/codeSign/windowsCodeSign.js.map +1 -1
  7. package/out/configuration.d.ts +1 -1
  8. package/out/configuration.js +4 -0
  9. package/out/core.js +43 -49
  10. package/out/core.js.map +1 -1
  11. package/out/electron/electronVersion.js +3 -3
  12. package/out/electron/electronVersion.js.map +1 -1
  13. package/out/fileTransformer.js +1 -1
  14. package/out/fileTransformer.js.map +1 -1
  15. package/out/index.js +1 -1
  16. package/out/index.js.map +1 -1
  17. package/out/macPackager.js +25 -2
  18. package/out/macPackager.js.map +1 -1
  19. package/out/options/AppXOptions.js +4 -0
  20. package/out/options/FileAssociation.js +4 -0
  21. package/out/options/MsiOptions.js +4 -0
  22. package/out/options/PlatformSpecificBuildOptions.js +4 -0
  23. package/out/options/SnapOptions.d.ts +18 -0
  24. package/out/options/SnapOptions.js +4 -0
  25. package/out/options/SquirrelWindowsOptions.js +4 -0
  26. package/out/options/linuxOptions.js +4 -0
  27. package/out/options/macOptions.d.ts +15 -0
  28. package/out/options/macOptions.js +4 -0
  29. package/out/options/metadata.js +4 -0
  30. package/out/options/pkgOptions.js +4 -0
  31. package/out/options/winOptions.d.ts +1 -1
  32. package/out/options/winOptions.js +4 -0
  33. package/out/packager.js +1 -1
  34. package/out/packagerApi.js +4 -0
  35. package/out/platformPackager.js +1 -1
  36. package/out/platformPackager.js.map +1 -1
  37. package/out/publish/PublishManager.js +1 -1
  38. package/out/publish/PublishManager.js.map +1 -1
  39. package/out/publish/updateInfoBuilder.js +1 -1
  40. package/out/publish/updateInfoBuilder.js.map +1 -1
  41. package/out/remoteBuilder/RemoteBuilder.js +1 -1
  42. package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
  43. package/out/targets/AppImageTarget.js +1 -1
  44. package/out/targets/AppImageTarget.js.map +1 -1
  45. package/out/targets/AppxTarget.js +3 -3
  46. package/out/targets/AppxTarget.js.map +1 -1
  47. package/out/targets/MsiTarget.js +2 -2
  48. package/out/targets/MsiTarget.js.map +1 -1
  49. package/out/targets/archive.js +1 -1
  50. package/out/targets/archive.js.map +1 -1
  51. package/out/targets/fpm.js +1 -1
  52. package/out/targets/fpm.js.map +1 -1
  53. package/out/targets/nsis/NsisTarget.js +42 -3
  54. package/out/targets/nsis/NsisTarget.js.map +1 -1
  55. package/out/targets/nsis/WebInstallerTarget.js +1 -1
  56. package/out/targets/nsis/WebInstallerTarget.js.map +1 -1
  57. package/out/targets/nsis/nsisLang.js +2 -2
  58. package/out/targets/nsis/nsisLang.js.map +1 -1
  59. package/out/targets/nsis/nsisOptions.js +4 -0
  60. package/out/targets/snap.js +15 -2
  61. package/out/targets/snap.js.map +1 -1
  62. package/out/targets/targetUtil.js +1 -1
  63. package/out/targets/targetUtil.js.map +1 -1
  64. package/out/util/appFileCopier.js +1 -1
  65. package/out/util/appFileCopier.js.map +1 -1
  66. package/out/util/cacheManager.js +56 -62
  67. package/out/util/cacheManager.js.map +1 -1
  68. package/out/util/config.js +2 -2
  69. package/out/util/config.js.map +1 -1
  70. package/out/util/macosVersion.js +1 -1
  71. package/out/util/macosVersion.js.map +1 -1
  72. package/out/util/yarn.js +1 -1
  73. package/out/util/yarn.js.map +1 -1
  74. package/out/winPackager.js +2 -2
  75. package/out/winPackager.js.map +1 -1
  76. package/package.json +31 -31
  77. package/scheme.json +130 -29
  78. package/templates/nsis/assistedInstaller.nsh +18 -14
  79. package/templates/nsis/assistedMessages.yml +17 -0
  80. package/templates/nsis/include/installUtil.nsh +1 -5
  81. package/templates/nsis/messages.yml +5 -0
  82. package/templates/nsis/portable.nsi +3 -1
  83. package/templates/snap/snapcraft.yaml +9 -1
@@ -9,6 +9,7 @@ interface SignOptions extends BaseSignOptions {
9
9
  binaries?: string[];
10
10
  entitlements?: string;
11
11
  'entitlements-inherit'?: string;
12
+ 'entitlements-loginhelper'?: string;
12
13
  'gatekeeper-assess'?: boolean;
13
14
  hardenedRuntime?: boolean;
14
15
  'identity-validation'?: boolean;
@@ -206,7 +206,12 @@ function signApplicationAsync (opts) {
206
206
  continue
207
207
  }
208
208
  debuglog('Signing... ' + filePath)
209
- await execFileAsync('codesign', args.concat('--entitlements', opts['entitlements-inherit'], filePath))
209
+ let entitlementsFile = opts['entitlements-inherit']
210
+ if (filePath.includes('Library/LoginItems')) {
211
+ entitlementsFile = opts['entitlements-loginhelper']
212
+ }
213
+
214
+ await execFileAsync('codesign', args.concat('--entitlements', entitlementsFile, filePath))
210
215
  }
211
216
  debuglog('Signing... ' + opts.app)
212
217
  await execFileAsync('codesign', args.concat('--entitlements', opts.entitlements, opts.app))
@@ -335,6 +340,12 @@ const signAsync = module.exports.signAsync = function (opts) {
335
340
  }
336
341
  }
337
342
  }
343
+ if (!opts['entitlements-loginhelper']) {
344
+ filePath = opts.entitlements
345
+ debugwarn('No `entitlements-loginhelper` passed in arguments:', '\n',
346
+ '* Sandbox entitlements file for login helper is default to:', filePath)
347
+ opts['entitlements-loginhelper'] = filePath
348
+ }
338
349
  })
339
350
  .then(async function () {
340
351
  // Pre-sign operations
@@ -100,7 +100,7 @@ class AsarPackager {
100
100
  const unpackedFileIndexMap = new Map();
101
101
 
102
102
  for (const fileSet of fileSets) {
103
- unpackedFileIndexMap.set(fileSet, (await this.createPackageFromFiles(fileSet, packager.info)));
103
+ unpackedFileIndexMap.set(fileSet, await this.createPackageFromFiles(fileSet, packager.info));
104
104
  }
105
105
 
106
106
  await this.writeAsarFile(fileSets, unpackedFileIndexMap);
@@ -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\n// eslint-disable-next-line @typescript-eslint/no-var-requires\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\n// eslint-disable-next-line @typescript-eslint/no-var-requires\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":""}
@@ -209,7 +209,7 @@ async function doSign(configuration, packager) {
209
209
  /* certificateSubjectName and other such options */
210
210
  ) {
211
211
  vm = await packager.vm.value;
212
- tool = getWinSignTool((await getSignVendorPath()));
212
+ tool = getWinSignTool(await getSignVendorPath());
213
213
  args = computeSignToolArgs(configuration, true, vm);
214
214
  } else {
215
215
  vm = new (_vm().VmManager)();
@@ -260,7 +260,7 @@ function computeSignToolArgs(options, isWin, vm = new (_vm().VmManager)()) {
260
260
  const timestampingServiceUrl = options.options.timeStampServer || "http://timestamp.digicert.com";
261
261
 
262
262
  if (isWin) {
263
- args.push(options.isNest || options.hash === "sha256" ? "/tr" : "/t", options.isNest || options.hash === "sha256" ? options.options.rfc3161TimeStampServer || "http://timestamp.comodoca.com/rfc3161" : timestampingServiceUrl);
263
+ args.push(options.isNest || options.hash === "sha256" ? "/tr" : "/t", options.isNest || options.hash === "sha256" ? options.options.rfc3161TimeStampServer || "http://timestamp.digicert.com" : timestampingServiceUrl);
264
264
  } else {
265
265
  args.push("-t", timestampingServiceUrl);
266
266
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/codeSign/windowsCodeSign.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, asArray, log } from \"builder-util/out/util\"\nimport { getBin } from \"../binDownload\"\nimport { executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { computeToolEnv, ToolInfo } from \"../util/bundledTool\"\nimport { rename } from \"fs-extra\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { WindowsConfiguration } from \"..\"\nimport { resolveFunction } from \"../platformPackager\"\nimport { isUseSystemSigncode } from \"../util/flags\"\nimport { VmManager } from \"../vm/vm\"\nimport { WinPackager } from \"../winPackager\"\n\nexport function getSignVendorPath() {\n return getBin(\"winCodeSign\")\n}\n\nexport type CustomWindowsSign = (configuration: CustomWindowsSignTaskConfiguration, packager?: WinPackager) => Promise<any>\n\nexport interface WindowsSignOptions {\n readonly path: string\n\n readonly name?: string | null\n readonly cscInfo?: FileCodeSigningInfo | CertificateFromStoreInfo | null\n readonly site?: string | null\n\n readonly options: WindowsConfiguration\n}\n\nexport interface WindowsSignTaskConfiguration extends WindowsSignOptions {\n // set if output path differs from input (e.g. osslsigncode cannot sign file in-place)\n resultOutputPath?: string\n\n hash: string\n isNest: boolean\n}\n\nexport interface CustomWindowsSignTaskConfiguration extends WindowsSignTaskConfiguration {\n computeSignToolArgs(isWin: boolean): Array<string>\n}\n\nexport async function sign(options: WindowsSignOptions, packager: WinPackager) {\n let hashes = options.options.signingHashAlgorithms\n // msi does not support dual-signing\n if (options.path.endsWith(\".msi\")) {\n hashes = [hashes != null && !hashes.includes(\"sha1\") ? \"sha256\" : \"sha1\"]\n }\n else if (options.path.endsWith(\".appx\")) {\n hashes = [\"sha256\"]\n }\n else if (hashes == null) {\n hashes = [\"sha1\", \"sha256\"]\n }\n else {\n hashes = Array.isArray(hashes) ? hashes : [hashes]\n }\n\n const executor = resolveFunction(options.options.sign, \"sign\") || doSign\n let isNest = false\n for (const hash of hashes) {\n const taskConfiguration: WindowsSignTaskConfiguration = {...options, hash, isNest}\n await executor({\n ...taskConfiguration,\n computeSignToolArgs: isWin => computeSignToolArgs(taskConfiguration, isWin)\n }, packager)\n isNest = true\n if (taskConfiguration.resultOutputPath != null) {\n await rename(taskConfiguration.resultOutputPath, options.path)\n }\n }\n}\n\nexport interface FileCodeSigningInfo {\n readonly file: string\n readonly password: string | null\n}\n\nexport async function getCertInfo(file: string, password: string): Promise<CertificateInfo> {\n let result: any = null\n const errorMessagePrefix = \"Cannot extract publisher name from code signing certificate. As workaround, set win.publisherName. Error: \"\n try {\n result = await executeAppBuilderAsJson<any>([\"certificate-info\", \"--input\", file, \"--password\", password])\n }\n catch (e) {\n throw new Error(`${errorMessagePrefix}${e.stack || e}`)\n }\n\n if (result.error != null) {\n // noinspection ExceptionCaughtLocallyJS\n throw new InvalidConfigurationError(`${errorMessagePrefix}${result.error}`)\n }\n return result\n}\n\nexport interface CertificateInfo {\n readonly commonName: string\n readonly bloodyMicrosoftSubjectDn: string\n}\n\nexport interface CertificateFromStoreInfo {\n thumbprint: string\n subject: string\n store: string\n isLocalMachineStore: boolean\n}\n\nexport async function getCertificateFromStoreInfo(options: WindowsConfiguration, vm: VmManager): Promise<CertificateFromStoreInfo> {\n const certificateSubjectName = options.certificateSubjectName\n const certificateSha1 = options.certificateSha1 ? options.certificateSha1.toUpperCase() : options.certificateSha1\n // ExcludeProperty doesn't work, so, we cannot exclude RawData, it is ok\n // powershell can return object if the only item\n const rawResult = await vm.exec(\"powershell.exe\", [\"Get-ChildItem -Recurse Cert: -CodeSigningCert | Select-Object -Property Subject,PSParentPath,Thumbprint | ConvertTo-Json -Compress\"])\n const certList = rawResult.length === 0 ? [] : asArray<CertInfo>(JSON.parse(rawResult))\n for (const certInfo of certList) {\n if ((certificateSubjectName != null && !certInfo.Subject.includes(certificateSubjectName))\n || certificateSha1 != null && certInfo.Thumbprint.toUpperCase() !== certificateSha1) {\n continue\n }\n\n const parentPath = certInfo.PSParentPath\n const store = parentPath.substring(parentPath.lastIndexOf(\"\\\\\") + 1)\n log.debug({store, PSParentPath: parentPath}, \"auto-detect certificate store\")\n // https://github.com/electron-userland/electron-builder/issues/1717\n const isLocalMachineStore = (parentPath.includes(\"Certificate::LocalMachine\"))\n log.debug(null, \"auto-detect using of LocalMachine store\")\n return {\n thumbprint: certInfo.Thumbprint,\n subject: certInfo.Subject,\n store,\n isLocalMachineStore\n }\n }\n\n throw new Error(`Cannot find certificate ${certificateSubjectName || certificateSha1}, all certs: ${rawResult}`)\n}\n\nexport async function doSign(configuration: CustomWindowsSignTaskConfiguration, packager: WinPackager) {\n // https://github.com/electron-userland/electron-builder/pull/1944\n const timeout = parseInt(process.env.SIGNTOOL_TIMEOUT as any, 10) || 10 * 60 * 1000\n\n let tool: string\n let args: Array<string>\n let env = process.env\n let vm: VmManager\n if (configuration.path.endsWith(\".appx\") || !(\"file\" in configuration.cscInfo!!) /* certificateSubjectName and other such options */) {\n vm = await packager.vm.value\n tool = getWinSignTool(await getSignVendorPath())\n args = computeSignToolArgs(configuration, true, vm)\n }\n else {\n vm = new VmManager()\n const toolInfo = await getToolPath()\n tool = toolInfo.path\n args = configuration.computeSignToolArgs(process.platform === \"win32\")\n if (toolInfo.env != null) {\n env = toolInfo.env\n }\n }\n\n try {\n await vm.exec(tool, args, {timeout, env})\n }\n catch (e) {\n if (e.message.includes(\"The file is being used by another process\") || e.message.includes(\"The specified timestamp server either could not be reached\")) {\n log.warn(`First attempt to code sign failed, another attempt will be made in 15 seconds: ${e.message}`)\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n vm.exec(tool, args, {timeout, env})\n .then(resolve)\n .catch(reject)\n }, 15000)\n })\n }\n throw e\n }\n}\n\ninterface CertInfo {\n Subject: string\n Thumbprint: string\n PSParentPath: string\n}\n\n// on windows be aware of http://stackoverflow.com/a/32640183/1910191\nfunction computeSignToolArgs(options: WindowsSignTaskConfiguration, isWin: boolean, vm: VmManager = new VmManager()): Array<string> {\n const inputFile = vm.toVmFile(options.path)\n const outputPath = isWin ? inputFile : getOutputPath(inputFile, options.hash)\n if (!isWin) {\n options.resultOutputPath = outputPath\n }\n\n const args = isWin ? [\"sign\"] : [\"-in\", inputFile, \"-out\", outputPath]\n\n if (process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n const timestampingServiceUrl = options.options.timeStampServer || \"http://timestamp.digicert.com\"\n if (isWin) {\n args.push(options.isNest || options.hash === \"sha256\" ? \"/tr\" : \"/t\", options.isNest || options.hash === \"sha256\" ? (options.options.rfc3161TimeStampServer || \"http://timestamp.comodoca.com/rfc3161\") : timestampingServiceUrl)\n }\n else {\n args.push(\"-t\", timestampingServiceUrl)\n }\n }\n\n const certificateFile = (options.cscInfo as FileCodeSigningInfo).file\n if (certificateFile == null) {\n const cscInfo = (options.cscInfo as CertificateFromStoreInfo)\n const subjectName = cscInfo.thumbprint\n if (!isWin) {\n throw new Error(`${subjectName == null ? \"certificateSha1\" : \"certificateSubjectName\"} supported only on Windows`)\n }\n\n args.push(\"/sha1\", cscInfo.thumbprint)\n args.push(\"/s\", cscInfo.store)\n if (cscInfo.isLocalMachineStore) {\n args.push(\"/sm\")\n }\n }\n else {\n const certExtension = path.extname(certificateFile)\n if (certExtension === \".p12\" || certExtension === \".pfx\") {\n args.push(isWin ? \"/f\" : \"-pkcs12\", vm.toVmFile(certificateFile))\n }\n else {\n throw new Error(`Please specify pkcs12 (.p12/.pfx) file, ${certificateFile} is not correct`)\n }\n }\n\n if (!isWin || options.hash !== \"sha1\") {\n args.push(isWin ? \"/fd\" : \"-h\", options.hash)\n if (isWin && process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n args.push(\"/td\", \"sha256\")\n }\n }\n\n if (options.name) {\n args.push(isWin ? \"/d\" : \"-n\", options.name)\n }\n\n if (options.site) {\n args.push(isWin ? \"/du\" : \"-i\", options.site)\n }\n\n // msi does not support dual-signing\n if (options.isNest) {\n args.push(isWin ? \"/as\" : \"-nest\")\n }\n\n const password = options.cscInfo == null ? null : (options.cscInfo as FileCodeSigningInfo).password\n if (password) {\n args.push(isWin ? \"/p\" : \"-pass\", password)\n }\n\n if (options.options.additionalCertificateFile) {\n args.push(isWin ? \"/ac\" : \"-ac\", vm.toVmFile(options.options.additionalCertificateFile))\n }\n\n const httpsProxyFromEnv = process.env.HTTPS_PROXY\n if (!isWin && httpsProxyFromEnv != null && httpsProxyFromEnv.length) {\n args.push(\"-p\", httpsProxyFromEnv)\n }\n\n if (isWin) {\n // https://github.com/electron-userland/electron-builder/issues/2875#issuecomment-387233610\n args.push(\"/debug\")\n // must be last argument\n args.push(inputFile)\n }\n\n return args\n}\n\nfunction getOutputPath(inputPath: string, hash: string) {\n const extension = path.extname(inputPath)\n return path.join(path.dirname(inputPath), `${path.basename(inputPath, extension)}-signed-${hash}${extension}`)\n}\n\n/** @internal */\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nfunction getWinSignTool(vendorPath: string): string {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n if (isOldWin6()) {\n return path.join(vendorPath, \"windows-6\", \"signtool.exe\")\n }\n else {\n return path.join(vendorPath, \"windows-10\", process.arch, \"signtool.exe\")\n }\n}\n\nasync function getToolPath(): Promise<ToolInfo> {\n if (isUseSystemSigncode()) {\n return {path: \"osslsigncode\"}\n }\n\n const result = process.env.SIGNTOOL_PATH\n if (result) {\n return {path: result}\n }\n\n const vendorPath = await getSignVendorPath()\n if (process.platform === \"win32\") {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n return {path: getWinSignTool(vendorPath)}\n }\n else if (process.platform === \"darwin\") {\n const toolDirPath = path.join(vendorPath, process.platform, \"10.12\")\n return {\n path: path.join(toolDirPath, \"osslsigncode\"),\n env: computeToolEnv([path.join(toolDirPath, \"lib\")]),\n }\n }\n else {\n return {path: path.join(vendorPath, process.platform, \"osslsigncode\")}\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/codeSign/windowsCodeSign.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, asArray, log } from \"builder-util/out/util\"\nimport { getBin } from \"../binDownload\"\nimport { executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { computeToolEnv, ToolInfo } from \"../util/bundledTool\"\nimport { rename } from \"fs-extra\"\nimport * as os from \"os\"\nimport * as path from \"path\"\nimport { WindowsConfiguration } from \"..\"\nimport { resolveFunction } from \"../platformPackager\"\nimport { isUseSystemSigncode } from \"../util/flags\"\nimport { VmManager } from \"../vm/vm\"\nimport { WinPackager } from \"../winPackager\"\n\nexport function getSignVendorPath() {\n return getBin(\"winCodeSign\")\n}\n\nexport type CustomWindowsSign = (configuration: CustomWindowsSignTaskConfiguration, packager?: WinPackager) => Promise<any>\n\nexport interface WindowsSignOptions {\n readonly path: string\n\n readonly name?: string | null\n readonly cscInfo?: FileCodeSigningInfo | CertificateFromStoreInfo | null\n readonly site?: string | null\n\n readonly options: WindowsConfiguration\n}\n\nexport interface WindowsSignTaskConfiguration extends WindowsSignOptions {\n // set if output path differs from input (e.g. osslsigncode cannot sign file in-place)\n resultOutputPath?: string\n\n hash: string\n isNest: boolean\n}\n\nexport interface CustomWindowsSignTaskConfiguration extends WindowsSignTaskConfiguration {\n computeSignToolArgs(isWin: boolean): Array<string>\n}\n\nexport async function sign(options: WindowsSignOptions, packager: WinPackager) {\n let hashes = options.options.signingHashAlgorithms\n // msi does not support dual-signing\n if (options.path.endsWith(\".msi\")) {\n hashes = [hashes != null && !hashes.includes(\"sha1\") ? \"sha256\" : \"sha1\"]\n }\n else if (options.path.endsWith(\".appx\")) {\n hashes = [\"sha256\"]\n }\n else if (hashes == null) {\n hashes = [\"sha1\", \"sha256\"]\n }\n else {\n hashes = Array.isArray(hashes) ? hashes : [hashes]\n }\n\n const executor = resolveFunction(options.options.sign, \"sign\") || doSign\n let isNest = false\n for (const hash of hashes) {\n const taskConfiguration: WindowsSignTaskConfiguration = {...options, hash, isNest}\n await executor({\n ...taskConfiguration,\n computeSignToolArgs: isWin => computeSignToolArgs(taskConfiguration, isWin)\n }, packager)\n isNest = true\n if (taskConfiguration.resultOutputPath != null) {\n await rename(taskConfiguration.resultOutputPath, options.path)\n }\n }\n}\n\nexport interface FileCodeSigningInfo {\n readonly file: string\n readonly password: string | null\n}\n\nexport async function getCertInfo(file: string, password: string): Promise<CertificateInfo> {\n let result: any = null\n const errorMessagePrefix = \"Cannot extract publisher name from code signing certificate. As workaround, set win.publisherName. Error: \"\n try {\n result = await executeAppBuilderAsJson<any>([\"certificate-info\", \"--input\", file, \"--password\", password])\n }\n catch (e) {\n throw new Error(`${errorMessagePrefix}${e.stack || e}`)\n }\n\n if (result.error != null) {\n // noinspection ExceptionCaughtLocallyJS\n throw new InvalidConfigurationError(`${errorMessagePrefix}${result.error}`)\n }\n return result\n}\n\nexport interface CertificateInfo {\n readonly commonName: string\n readonly bloodyMicrosoftSubjectDn: string\n}\n\nexport interface CertificateFromStoreInfo {\n thumbprint: string\n subject: string\n store: string\n isLocalMachineStore: boolean\n}\n\nexport async function getCertificateFromStoreInfo(options: WindowsConfiguration, vm: VmManager): Promise<CertificateFromStoreInfo> {\n const certificateSubjectName = options.certificateSubjectName\n const certificateSha1 = options.certificateSha1 ? options.certificateSha1.toUpperCase() : options.certificateSha1\n // ExcludeProperty doesn't work, so, we cannot exclude RawData, it is ok\n // powershell can return object if the only item\n const rawResult = await vm.exec(\"powershell.exe\", [\"Get-ChildItem -Recurse Cert: -CodeSigningCert | Select-Object -Property Subject,PSParentPath,Thumbprint | ConvertTo-Json -Compress\"])\n const certList = rawResult.length === 0 ? [] : asArray<CertInfo>(JSON.parse(rawResult))\n for (const certInfo of certList) {\n if ((certificateSubjectName != null && !certInfo.Subject.includes(certificateSubjectName))\n || certificateSha1 != null && certInfo.Thumbprint.toUpperCase() !== certificateSha1) {\n continue\n }\n\n const parentPath = certInfo.PSParentPath\n const store = parentPath.substring(parentPath.lastIndexOf(\"\\\\\") + 1)\n log.debug({store, PSParentPath: parentPath}, \"auto-detect certificate store\")\n // https://github.com/electron-userland/electron-builder/issues/1717\n const isLocalMachineStore = (parentPath.includes(\"Certificate::LocalMachine\"))\n log.debug(null, \"auto-detect using of LocalMachine store\")\n return {\n thumbprint: certInfo.Thumbprint,\n subject: certInfo.Subject,\n store,\n isLocalMachineStore\n }\n }\n\n throw new Error(`Cannot find certificate ${certificateSubjectName || certificateSha1}, all certs: ${rawResult}`)\n}\n\nexport async function doSign(configuration: CustomWindowsSignTaskConfiguration, packager: WinPackager) {\n // https://github.com/electron-userland/electron-builder/pull/1944\n const timeout = parseInt(process.env.SIGNTOOL_TIMEOUT as any, 10) || 10 * 60 * 1000\n\n let tool: string\n let args: Array<string>\n let env = process.env\n let vm: VmManager\n if (configuration.path.endsWith(\".appx\") || !(\"file\" in configuration.cscInfo!!) /* certificateSubjectName and other such options */) {\n vm = await packager.vm.value\n tool = getWinSignTool(await getSignVendorPath())\n args = computeSignToolArgs(configuration, true, vm)\n }\n else {\n vm = new VmManager()\n const toolInfo = await getToolPath()\n tool = toolInfo.path\n args = configuration.computeSignToolArgs(process.platform === \"win32\")\n if (toolInfo.env != null) {\n env = toolInfo.env\n }\n }\n\n try {\n await vm.exec(tool, args, {timeout, env})\n }\n catch (e) {\n if (e.message.includes(\"The file is being used by another process\") || e.message.includes(\"The specified timestamp server either could not be reached\")) {\n log.warn(`First attempt to code sign failed, another attempt will be made in 15 seconds: ${e.message}`)\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n vm.exec(tool, args, {timeout, env})\n .then(resolve)\n .catch(reject)\n }, 15000)\n })\n }\n throw e\n }\n}\n\ninterface CertInfo {\n Subject: string\n Thumbprint: string\n PSParentPath: string\n}\n\n// on windows be aware of http://stackoverflow.com/a/32640183/1910191\nfunction computeSignToolArgs(options: WindowsSignTaskConfiguration, isWin: boolean, vm: VmManager = new VmManager()): Array<string> {\n const inputFile = vm.toVmFile(options.path)\n const outputPath = isWin ? inputFile : getOutputPath(inputFile, options.hash)\n if (!isWin) {\n options.resultOutputPath = outputPath\n }\n\n const args = isWin ? [\"sign\"] : [\"-in\", inputFile, \"-out\", outputPath]\n\n if (process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n const timestampingServiceUrl = options.options.timeStampServer || \"http://timestamp.digicert.com\"\n if (isWin) {\n args.push(options.isNest || options.hash === \"sha256\" ? \"/tr\" : \"/t\", options.isNest || options.hash === \"sha256\" ? (options.options.rfc3161TimeStampServer || \"http://timestamp.digicert.com\") : timestampingServiceUrl)\n }\n else {\n args.push(\"-t\", timestampingServiceUrl)\n }\n }\n\n const certificateFile = (options.cscInfo as FileCodeSigningInfo).file\n if (certificateFile == null) {\n const cscInfo = (options.cscInfo as CertificateFromStoreInfo)\n const subjectName = cscInfo.thumbprint\n if (!isWin) {\n throw new Error(`${subjectName == null ? \"certificateSha1\" : \"certificateSubjectName\"} supported only on Windows`)\n }\n\n args.push(\"/sha1\", cscInfo.thumbprint)\n args.push(\"/s\", cscInfo.store)\n if (cscInfo.isLocalMachineStore) {\n args.push(\"/sm\")\n }\n }\n else {\n const certExtension = path.extname(certificateFile)\n if (certExtension === \".p12\" || certExtension === \".pfx\") {\n args.push(isWin ? \"/f\" : \"-pkcs12\", vm.toVmFile(certificateFile))\n }\n else {\n throw new Error(`Please specify pkcs12 (.p12/.pfx) file, ${certificateFile} is not correct`)\n }\n }\n\n if (!isWin || options.hash !== \"sha1\") {\n args.push(isWin ? \"/fd\" : \"-h\", options.hash)\n if (isWin && process.env.ELECTRON_BUILDER_OFFLINE !== \"true\") {\n args.push(\"/td\", \"sha256\")\n }\n }\n\n if (options.name) {\n args.push(isWin ? \"/d\" : \"-n\", options.name)\n }\n\n if (options.site) {\n args.push(isWin ? \"/du\" : \"-i\", options.site)\n }\n\n // msi does not support dual-signing\n if (options.isNest) {\n args.push(isWin ? \"/as\" : \"-nest\")\n }\n\n const password = options.cscInfo == null ? null : (options.cscInfo as FileCodeSigningInfo).password\n if (password) {\n args.push(isWin ? \"/p\" : \"-pass\", password)\n }\n\n if (options.options.additionalCertificateFile) {\n args.push(isWin ? \"/ac\" : \"-ac\", vm.toVmFile(options.options.additionalCertificateFile))\n }\n\n const httpsProxyFromEnv = process.env.HTTPS_PROXY\n if (!isWin && httpsProxyFromEnv != null && httpsProxyFromEnv.length) {\n args.push(\"-p\", httpsProxyFromEnv)\n }\n\n if (isWin) {\n // https://github.com/electron-userland/electron-builder/issues/2875#issuecomment-387233610\n args.push(\"/debug\")\n // must be last argument\n args.push(inputFile)\n }\n\n return args\n}\n\nfunction getOutputPath(inputPath: string, hash: string) {\n const extension = path.extname(inputPath)\n return path.join(path.dirname(inputPath), `${path.basename(inputPath, extension)}-signed-${hash}${extension}`)\n}\n\n/** @internal */\nexport function isOldWin6() {\n const winVersion = os.release()\n return winVersion.startsWith(\"6.\") && !winVersion.startsWith(\"6.3\")\n}\n\nfunction getWinSignTool(vendorPath: string): string {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n if (isOldWin6()) {\n return path.join(vendorPath, \"windows-6\", \"signtool.exe\")\n }\n else {\n return path.join(vendorPath, \"windows-10\", process.arch, \"signtool.exe\")\n }\n}\n\nasync function getToolPath(): Promise<ToolInfo> {\n if (isUseSystemSigncode()) {\n return {path: \"osslsigncode\"}\n }\n\n const result = process.env.SIGNTOOL_PATH\n if (result) {\n return {path: result}\n }\n\n const vendorPath = await getSignVendorPath()\n if (process.platform === \"win32\") {\n // use modern signtool on Windows Server 2012 R2 to be able to sign AppX\n return {path: getWinSignTool(vendorPath)}\n }\n else if (process.platform === \"darwin\") {\n const toolDirPath = path.join(vendorPath, process.platform, \"10.12\")\n return {\n path: path.join(toolDirPath, \"osslsigncode\"),\n env: computeToolEnv([path.join(toolDirPath, \"lib\")]),\n }\n }\n else {\n return {path: path.join(vendorPath, process.platform, \"osslsigncode\")}\n }\n}\n"],"sourceRoot":""}
@@ -219,7 +219,7 @@ export interface MetadataDirectories {
219
219
  /**
220
220
  * The path to build resources.
221
221
  *
222
- * Please note — build resources is not packed into the app. If you need to use some files, e.g. as tray icon, please include required files explicitly: `"files": ["**\/*", "build/icon.*"]`
222
+ * Please note — build resources are not packed into the app. If you need to use some files, e.g. as tray icon, please include required files explicitly: `"files": ["**\/*", "build/icon.*"]`
223
223
  * @default build
224
224
  */
225
225
  readonly buildResources?: string | null;
@@ -1,3 +1,7 @@
1
1
  "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
2
6
  // __ts-babel@6.0.4
3
7
  //# sourceMappingURL=configuration.js.map
package/out/core.js CHANGED
@@ -15,72 +15,66 @@ function _builderUtil() {
15
15
  return data;
16
16
  }
17
17
 
18
- let Platform =
19
- /** @class */
20
- (() => {
21
- class Platform {
22
- constructor(name, buildConfigurationKey, nodeName) {
23
- this.name = name;
24
- this.buildConfigurationKey = buildConfigurationKey;
25
- this.nodeName = nodeName;
26
- }
27
-
28
- toString() {
29
- return this.name;
30
- }
31
-
32
- createTarget(type, ...archs) {
33
- if (type == null && (archs == null || archs.length === 0)) {
34
- return new Map([[this, new Map()]]);
35
- }
18
+ class Platform {
19
+ constructor(name, buildConfigurationKey, nodeName) {
20
+ this.name = name;
21
+ this.buildConfigurationKey = buildConfigurationKey;
22
+ this.nodeName = nodeName;
23
+ }
36
24
 
37
- const archToType = new Map();
25
+ toString() {
26
+ return this.name;
27
+ }
38
28
 
39
- if (this === Platform.MAC) {
40
- archs = [_builderUtil().Arch.x64];
41
- }
29
+ createTarget(type, ...archs) {
30
+ if (type == null && (archs == null || archs.length === 0)) {
31
+ return new Map([[this, new Map()]]);
32
+ }
42
33
 
43
- for (const arch of archs == null || archs.length === 0 ? [(0, _builderUtil().archFromString)(process.arch)] : archs) {
44
- archToType.set(arch, type == null ? [] : Array.isArray(type) ? type : [type]);
45
- }
34
+ const archToType = new Map();
46
35
 
47
- return new Map([[this, archToType]]);
36
+ if (this === Platform.MAC) {
37
+ archs = [_builderUtil().Arch.x64];
48
38
  }
49
39
 
50
- static current() {
51
- return Platform.fromString(process.platform);
40
+ for (const arch of archs == null || archs.length === 0 ? [(0, _builderUtil().archFromString)(process.arch)] : archs) {
41
+ archToType.set(arch, type == null ? [] : Array.isArray(type) ? type : [type]);
52
42
  }
53
43
 
54
- static fromString(name) {
55
- name = name.toLowerCase();
44
+ return new Map([[this, archToType]]);
45
+ }
56
46
 
57
- switch (name) {
58
- case Platform.MAC.nodeName:
59
- case Platform.MAC.name:
60
- return Platform.MAC;
47
+ static current() {
48
+ return Platform.fromString(process.platform);
49
+ }
61
50
 
62
- case Platform.WINDOWS.nodeName:
63
- case Platform.WINDOWS.name:
64
- case Platform.WINDOWS.buildConfigurationKey:
65
- return Platform.WINDOWS;
51
+ static fromString(name) {
52
+ name = name.toLowerCase();
66
53
 
67
- case Platform.LINUX.nodeName:
68
- return Platform.LINUX;
54
+ switch (name) {
55
+ case Platform.MAC.nodeName:
56
+ case Platform.MAC.name:
57
+ return Platform.MAC;
69
58
 
70
- default:
71
- throw new Error(`Unknown platform: ${name}`);
72
- }
73
- }
59
+ case Platform.WINDOWS.nodeName:
60
+ case Platform.WINDOWS.name:
61
+ case Platform.WINDOWS.buildConfigurationKey:
62
+ return Platform.WINDOWS;
74
63
 
64
+ case Platform.LINUX.nodeName:
65
+ return Platform.LINUX;
66
+
67
+ default:
68
+ throw new Error(`Unknown platform: ${name}`);
69
+ }
75
70
  }
76
71
 
77
- Platform.MAC = new Platform("mac", "mac", "darwin");
78
- Platform.LINUX = new Platform("linux", "linux", "linux");
79
- Platform.WINDOWS = new Platform("windows", "win", "win32");
80
- return Platform;
81
- })();
72
+ }
82
73
 
83
74
  exports.Platform = Platform;
75
+ Platform.MAC = new Platform("mac", "mac", "darwin");
76
+ Platform.LINUX = new Platform("linux", "linux", "linux");
77
+ Platform.WINDOWS = new Platform("windows", "win", "win32");
84
78
 
85
79
  class Target {
86
80
  constructor(name, isAsyncSupported = true) {
package/out/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, archFromString, ArchType } from \"builder-util\"\nimport { AllPublishOptions } from \"builder-util-runtime\"\nimport { SnapStoreOptions } from \"./publish/SnapStorePublisher\"\n\n// https://github.com/YousefED/typescript-json-schema/issues/80\nexport type Publish = AllPublishOptions | SnapStoreOptions | Array<AllPublishOptions | SnapStoreOptions> | null\n\nexport type TargetConfigType = Array<string | TargetConfiguration> | string | TargetConfiguration | null\n\nexport interface TargetConfiguration {\n /**\n * The target name. e.g. `snap`.\n */\n readonly target: string\n\n /**\n * The arch or list of archs.\n */\n readonly arch?: Array<ArchType> | ArchType\n}\n\nexport class Platform {\n static MAC = new Platform(\"mac\", \"mac\", \"darwin\")\n static LINUX = new Platform(\"linux\", \"linux\", \"linux\")\n static WINDOWS = new Platform(\"windows\", \"win\", \"win32\")\n\n constructor(public name: string, public buildConfigurationKey: string, public nodeName: NodeJS.Platform) {\n }\n\n toString() {\n return this.name\n }\n\n createTarget(type?: string | Array<string> | null, ...archs: Array<Arch>): Map<Platform, Map<Arch, Array<string>>> {\n if (type == null && (archs == null || archs.length === 0)) {\n return new Map([[this, new Map()]])\n }\n\n const archToType = new Map()\n if (this === Platform.MAC) {\n archs = [Arch.x64]\n }\n\n for (const arch of (archs == null || archs.length === 0 ? [archFromString(process.arch)] : archs)) {\n archToType.set(arch, type == null ? [] : (Array.isArray(type) ? type : [type]))\n }\n return new Map([[this, archToType]])\n }\n\n static current(): Platform {\n return Platform.fromString(process.platform)\n }\n\n static fromString(name: string): Platform {\n name = name.toLowerCase()\n switch (name) {\n case Platform.MAC.nodeName:\n case Platform.MAC.name:\n return Platform.MAC\n\n case Platform.WINDOWS.nodeName:\n case Platform.WINDOWS.name:\n case Platform.WINDOWS.buildConfigurationKey:\n return Platform.WINDOWS\n\n case Platform.LINUX.nodeName:\n return Platform.LINUX\n\n default:\n throw new Error(`Unknown platform: ${name}`)\n }\n }\n}\n\nexport abstract class Target {\n abstract readonly outDir: string\n abstract readonly options: TargetSpecificOptions | null | undefined\n\n protected constructor(readonly name: string, readonly isAsyncSupported: boolean = true) {\n }\n\n async checkOptions(): Promise<any> {\n // ignore\n }\n\n abstract build(appOutDir: string, arch: Arch): Promise<any>\n\n finishBuild(): Promise<any> {\n return Promise.resolve()\n }\n}\n\nexport interface TargetSpecificOptions {\n /**\n The [artifact file name template](/configuration/configuration#artifact-file-name-template).\n */\n readonly artifactName?: string | null\n\n publish?: Publish\n}\n\nexport const DEFAULT_TARGET = \"default\"\nexport const DIR_TARGET = \"dir\"\n\nexport type CompressionLevel = \"store\" | \"normal\" | \"maximum\"\n\nexport interface BeforeBuildContext {\n readonly appDir: string\n readonly electronVersion: string\n readonly platform: Platform\n readonly arch: string\n}\n\nexport interface SourceRepositoryInfo {\n type?: string\n domain?: string\n user: string\n project: string\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../src/core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, archFromString, ArchType } from \"builder-util\"\nimport { AllPublishOptions } from \"builder-util-runtime\"\nimport { SnapStoreOptions } from \"./publish/SnapStorePublisher\"\n\n// https://github.com/YousefED/typescript-json-schema/issues/80\nexport type Publish = AllPublishOptions | SnapStoreOptions | Array<AllPublishOptions | SnapStoreOptions> | null\n\nexport type TargetConfigType = Array<string | TargetConfiguration> | string | TargetConfiguration | null\n\nexport interface TargetConfiguration {\n /**\n * The target name. e.g. `snap`.\n */\n readonly target: string\n\n /**\n * The arch or list of archs.\n */\n readonly arch?: Array<ArchType> | ArchType\n}\n\nexport class Platform {\n static MAC = new Platform(\"mac\", \"mac\", \"darwin\")\n static LINUX = new Platform(\"linux\", \"linux\", \"linux\")\n static WINDOWS = new Platform(\"windows\", \"win\", \"win32\")\n\n constructor(public name: string, public buildConfigurationKey: string, public nodeName: NodeJS.Platform) {\n }\n\n toString() {\n return this.name\n }\n\n createTarget(type?: string | Array<string> | null, ...archs: Array<Arch>): Map<Platform, Map<Arch, Array<string>>> {\n if (type == null && (archs == null || archs.length === 0)) {\n return new Map([[this, new Map()]])\n }\n\n const archToType = new Map()\n if (this === Platform.MAC) {\n archs = [Arch.x64]\n }\n\n for (const arch of (archs == null || archs.length === 0 ? [archFromString(process.arch)] : archs)) {\n archToType.set(arch, type == null ? [] : (Array.isArray(type) ? type : [type]))\n }\n return new Map([[this, archToType]])\n }\n\n static current(): Platform {\n return Platform.fromString(process.platform)\n }\n\n static fromString(name: string): Platform {\n name = name.toLowerCase()\n switch (name) {\n case Platform.MAC.nodeName:\n case Platform.MAC.name:\n return Platform.MAC\n\n case Platform.WINDOWS.nodeName:\n case Platform.WINDOWS.name:\n case Platform.WINDOWS.buildConfigurationKey:\n return Platform.WINDOWS\n\n case Platform.LINUX.nodeName:\n return Platform.LINUX\n\n default:\n throw new Error(`Unknown platform: ${name}`)\n }\n }\n}\n\nexport abstract class Target {\n abstract readonly outDir: string\n abstract readonly options: TargetSpecificOptions | null | undefined\n\n protected constructor(readonly name: string, readonly isAsyncSupported: boolean = true) {\n }\n\n async checkOptions(): Promise<any> {\n // ignore\n }\n\n abstract build(appOutDir: string, arch: Arch): Promise<any>\n\n finishBuild(): Promise<any> {\n return Promise.resolve()\n }\n}\n\nexport interface TargetSpecificOptions {\n /**\n The [artifact file name template](/configuration/configuration#artifact-file-name-template).\n */\n readonly artifactName?: string | null\n\n publish?: Publish\n}\n\nexport const DEFAULT_TARGET = \"default\"\nexport const DIR_TARGET = \"dir\"\n\nexport type CompressionLevel = \"store\" | \"normal\" | \"maximum\"\n\nexport interface BeforeBuildContext {\n readonly appDir: string\n readonly electronVersion: string\n readonly platform: Platform\n readonly arch: string\n}\n\nexport interface SourceRepositoryInfo {\n type?: string\n domain?: string\n user: string\n project: string\n}"],"sourceRoot":""}
@@ -151,7 +151,7 @@ async function computeElectronVersion(projectDir, projectMetadata) {
151
151
  return result;
152
152
  }
153
153
 
154
- const dependency = findFromPackageMetadata((await projectMetadata.value));
154
+ const dependency = findFromPackageMetadata(await projectMetadata.value);
155
155
 
156
156
  if ((dependency === null || dependency === void 0 ? void 0 : dependency.name) === "electron-nightly") {
157
157
  _builderUtil().log.info("You are using a nightly version of electron, be warned that those builds are highly unstable.");
@@ -171,13 +171,13 @@ async function computeElectronVersion(projectDir, projectMetadata) {
171
171
  _builderUtil().log.warn("Electron version is set to \"latest\", but it is recommended to set it to some more restricted version range.");
172
172
 
173
173
  try {
174
- const releaseInfo = JSON.parse((await _nodeHttpExecutor().httpExecutor.request({
174
+ const releaseInfo = JSON.parse(await _nodeHttpExecutor().httpExecutor.request({
175
175
  hostname: "github.com",
176
176
  path: `/electron/${dependency.name === "electron-nightly" ? "nightlies" : "electron"}/releases/latest`,
177
177
  headers: {
178
178
  accept: "application/json"
179
179
  }
180
- })));
180
+ }));
181
181
  const version = releaseInfo.tag_name.startsWith("v") ? releaseInfo.tag_name.substring(1) : releaseInfo.tag_name;
182
182
 
183
183
  _builderUtil().log.info({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/electron/electronVersion.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, log } from \"builder-util\"\nimport { parseXml } from \"builder-util-runtime\"\nimport { httpExecutor } from \"builder-util/out/nodeHttpExecutor\"\nimport { readJson } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { orNullIfFileNotExist } from \"read-config-file\"\nimport * as semver from \"semver\"\nimport { Configuration } from \"../configuration\"\nimport { getConfig } from \"../util/config\"\n\nexport type MetadataValue = Lazy<{ [key: string]: any } | null>\n\nconst electronPackages = [\"electron\", \"electron-prebuilt\", \"electron-prebuilt-compile\", \"electron-nightly\"]\n\nexport async function getElectronVersion(projectDir: string, config?: Configuration, projectMetadata: MetadataValue = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, \"package.json\"))))): Promise<string> {\n if (config == null) {\n config = await getConfig(projectDir, null, null)\n }\n if (config.electronVersion != null) {\n return config.electronVersion\n }\n return await computeElectronVersion(projectDir, projectMetadata)\n}\n\nexport async function getElectronVersionFromInstalled(projectDir: string) {\n for (const name of electronPackages) {\n try {\n return (await readJson(path.join(projectDir, \"node_modules\", name, \"package.json\"))).version\n }\n catch (e) {\n if (e.code !== \"ENOENT\") {\n log.warn({name, error: e}, `cannot read electron version package.json`)\n }\n }\n }\n return null\n}\n\nexport async function getElectronPackage(projectDir: string) {\n for (const name of electronPackages) {\n try {\n return (await readJson(path.join(projectDir, \"node_modules\", name, \"package.json\")))\n }\n catch (e) {\n if (e.code !== \"ENOENT\") {\n log.warn({name, error: e}, `cannot find electron in package.json`)\n }\n }\n }\n return null\n}\n\n/** @internal */\nexport async function computeElectronVersion(projectDir: string, projectMetadata: MetadataValue): Promise<string> {\n const result = await getElectronVersionFromInstalled(projectDir)\n if (result != null) {\n return result\n }\n\n const dependency = findFromPackageMetadata(await projectMetadata!!.value)\n if (dependency?.name === \"electron-nightly\") {\n log.info(\"You are using a nightly version of electron, be warned that those builds are highly unstable.\")\n const feedXml = await httpExecutor.request({\n hostname: \"github.com\",\n path: `/electron/nightlies/releases.atom`,\n headers: {\n accept: \"application/xml, application/atom+xml, text/xml, */*\",\n },\n })\n const feed = parseXml(feedXml!!)\n const latestRelease = feed.element(\"entry\", false, `No published versions on GitHub`)\n const v = latestRelease.element(\"link\").attribute(\"href\").match(/\\/tag\\/v?([^/]+)$/)!![1]\n return v.startsWith(\"v\") ? v.substring(1) : v\n }\n else if (dependency?.version === \"latest\") {\n log.warn(\"Electron version is set to \\\"latest\\\", but it is recommended to set it to some more restricted version range.\")\n try {\n const releaseInfo = JSON.parse((await httpExecutor.request({\n hostname: \"github.com\",\n path: `/electron/${dependency.name === \"electron-nightly\" ? \"nightlies\" : \"electron\"}/releases/latest`,\n headers: {\n accept: \"application/json\",\n },\n }))!!)\n const version = (releaseInfo.tag_name.startsWith(\"v\")) ? releaseInfo.tag_name.substring(1) : releaseInfo.tag_name\n log.info({version}, `resolve ${dependency.name}@${dependency.version}`)\n return version\n }\n catch (e) {\n log.warn(e)\n }\n\n throw new InvalidConfigurationError(`Cannot find electron dependency to get electron version in the '${path.join(projectDir, \"package.json\")}'`)\n }\n\n const version = dependency?.version\n if (version == null || !/^\\d/.test(version)) {\n const versionMessage = version == null ? \"\" : ` and version (\"${version}\") is not fixed in project`\n throw new InvalidConfigurationError(`Cannot compute electron version from installed node modules - none of the possible electron modules are installed${versionMessage}.\\nSee https://github.com/electron-userland/electron-builder/issues/3984#issuecomment-504968246`)\n }\n\n return semver.coerce(version)!!.toString()\n}\n\ninterface NameAndVersion {\n readonly name: string\n readonly version: string\n}\n\nfunction findFromPackageMetadata(packageData: any): NameAndVersion | null {\n for (const name of electronPackages) {\n const devDependencies = packageData.devDependencies\n let dep = devDependencies == null ? null : devDependencies[name]\n if (dep == null) {\n const dependencies = packageData.dependencies\n dep = dependencies == null ? null : dependencies[name]\n }\n if (dep != null) {\n return {name, version: dep}\n }\n }\n return null\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/electron/electronVersion.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, log } from \"builder-util\"\nimport { parseXml } from \"builder-util-runtime\"\nimport { httpExecutor } from \"builder-util/out/nodeHttpExecutor\"\nimport { readJson } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { orNullIfFileNotExist } from \"read-config-file\"\nimport * as semver from \"semver\"\nimport { Configuration } from \"../configuration\"\nimport { getConfig } from \"../util/config\"\n\nexport type MetadataValue = Lazy<{ [key: string]: any } | null>\n\nconst electronPackages = [\"electron\", \"electron-prebuilt\", \"electron-prebuilt-compile\", \"electron-nightly\"]\n\nexport async function getElectronVersion(projectDir: string, config?: Configuration, projectMetadata: MetadataValue = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, \"package.json\"))))): Promise<string> {\n if (config == null) {\n config = await getConfig(projectDir, null, null)\n }\n if (config.electronVersion != null) {\n return config.electronVersion\n }\n return await computeElectronVersion(projectDir, projectMetadata)\n}\n\nexport async function getElectronVersionFromInstalled(projectDir: string) {\n for (const name of electronPackages) {\n try {\n return (await readJson(path.join(projectDir, \"node_modules\", name, \"package.json\"))).version\n }\n catch (e) {\n if (e.code !== \"ENOENT\") {\n log.warn({name, error: e}, `cannot read electron version package.json`)\n }\n }\n }\n return null\n}\n\nexport async function getElectronPackage(projectDir: string) {\n for (const name of electronPackages) {\n try {\n return (await readJson(path.join(projectDir, \"node_modules\", name, \"package.json\")))\n }\n catch (e) {\n if (e.code !== \"ENOENT\") {\n log.warn({name, error: e}, `cannot find electron in package.json`)\n }\n }\n }\n return null\n}\n\n/** @internal */\nexport async function computeElectronVersion(projectDir: string, projectMetadata: MetadataValue): Promise<string> {\n const result = await getElectronVersionFromInstalled(projectDir)\n if (result != null) {\n return result\n }\n\n const dependency = findFromPackageMetadata(await projectMetadata!!.value)\n if (dependency?.name === \"electron-nightly\") {\n log.info(\"You are using a nightly version of electron, be warned that those builds are highly unstable.\")\n const feedXml = await httpExecutor.request({\n hostname: \"github.com\",\n path: `/electron/nightlies/releases.atom`,\n headers: {\n accept: \"application/xml, application/atom+xml, text/xml, */*\",\n },\n })\n const feed = parseXml(feedXml!!)\n const latestRelease = feed.element(\"entry\", false, `No published versions on GitHub`)\n const v = latestRelease.element(\"link\").attribute(\"href\").match(/\\/tag\\/v?([^/]+)$/)!![1]\n return v.startsWith(\"v\") ? v.substring(1) : v\n }\n else if (dependency?.version === \"latest\") {\n log.warn(\"Electron version is set to \\\"latest\\\", but it is recommended to set it to some more restricted version range.\")\n try {\n const releaseInfo = JSON.parse((await httpExecutor.request({\n hostname: \"github.com\",\n path: `/electron/${dependency.name === \"electron-nightly\" ? \"nightlies\" : \"electron\"}/releases/latest`,\n headers: {\n accept: \"application/json\",\n },\n }))!!)\n const version = (releaseInfo.tag_name.startsWith(\"v\")) ? releaseInfo.tag_name.substring(1) : releaseInfo.tag_name\n log.info({version}, `resolve ${dependency.name}@${dependency.version}`)\n return version\n }\n catch (e) {\n log.warn(e)\n }\n\n throw new InvalidConfigurationError(`Cannot find electron dependency to get electron version in the '${path.join(projectDir, \"package.json\")}'`)\n }\n\n const version = dependency?.version\n if (version == null || !/^\\d/.test(version)) {\n const versionMessage = version == null ? \"\" : ` and version (\"${version}\") is not fixed in project`\n throw new InvalidConfigurationError(`Cannot compute electron version from installed node modules - none of the possible electron modules are installed${versionMessage}.\\nSee https://github.com/electron-userland/electron-builder/issues/3984#issuecomment-504968246`)\n }\n\n return semver.coerce(version)!!.toString()\n}\n\ninterface NameAndVersion {\n readonly name: string\n readonly version: string\n}\n\nfunction findFromPackageMetadata(packageData: any): NameAndVersion | null {\n for (const name of electronPackages) {\n const devDependencies = packageData.devDependencies\n let dep = devDependencies == null ? null : devDependencies[name]\n if (dep == null) {\n const dependencies = packageData.dependencies\n dep = dependencies == null ? null : dependencies[name]\n }\n if (dep != null) {\n return {name, version: dep}\n }\n }\n return null\n}\n"],"sourceRoot":""}
@@ -117,7 +117,7 @@ function cleanupPackageJson(data, options) {
117
117
  }
118
118
 
119
119
  async function modifyMainPackageJson(file, extraMetadata, isRemovePackageScripts) {
120
- const mainPackageData = JSON.parse((await (0, _fsExtra().readFile)(file, "utf-8")));
120
+ const mainPackageData = JSON.parse(await (0, _fsExtra().readFile)(file, "utf-8"));
121
121
 
122
122
  if (extraMetadata != null) {
123
123
  (0, _builderUtil().deepAssign)(mainPackageData, extraMetadata);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fileTransformer.ts"],"names":[],"mappings":"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","sourcesContent":["import { debug, log, deepAssign } from \"builder-util\"\nimport { FileTransformer } from \"builder-util/out/fs\"\nimport { readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { Configuration } from \"./configuration\"\nimport { Packager } from \"./packager\"\n\n/** @internal */\nexport const NODE_MODULES_PATTERN = `${path.sep}node_modules${path.sep}`\n\n/** @internal */\nexport function isElectronCompileUsed(info: Packager): boolean {\n if (info.config.electronCompile != null) {\n return info.config.electronCompile\n }\n\n // if in devDependencies - it means that babel is used for precompilation or for some reason user decided to not use electron-compile for production\n return hasDep(\"electron-compile\", info)\n}\n\n/** @internal */\nexport function hasDep(name: string, info: Packager) {\n const deps = info.metadata.dependencies\n return deps != null && name in deps\n}\n\n/** @internal */\nexport function createTransformer(srcDir: string, configuration: Configuration, extraMetadata: any, extraTransformer: FileTransformer | null): FileTransformer {\n const mainPackageJson = path.join(srcDir, \"package.json\")\n const isRemovePackageScripts = configuration.removePackageScripts !== false\n const packageJson = path.sep + \"package.json\"\n return file => {\n if (file === mainPackageJson) {\n return modifyMainPackageJson(file, extraMetadata, isRemovePackageScripts)\n }\n\n if (file.endsWith(packageJson) && file.includes(NODE_MODULES_PATTERN)) {\n return readFile(file, \"utf-8\")\n .then(it => cleanupPackageJson(JSON.parse(it), {\n isMain: false,\n isRemovePackageScripts,\n }))\n .catch(e => log.warn(e))\n }\n else if (extraTransformer != null) {\n return extraTransformer(file)\n }\n else {\n return null\n }\n }\n}\n\n/** @internal */\nexport interface CompilerHost {\n compile(file: string): any\n\n saveConfiguration(): Promise<any>\n}\n\n/** @internal */\nexport function createElectronCompilerHost(projectDir: string, cacheDir: string): Promise<CompilerHost> {\n const electronCompilePath = path.join(projectDir, \"node_modules\", \"electron-compile\", \"lib\")\n return require(path.join(electronCompilePath, \"config-parser\")).createCompilerHostFromProjectRoot(projectDir, cacheDir)\n}\n\nconst ignoredPackageMetadataProperties = new Set([\"dist\", \"gitHead\", \"keywords\", \"build\", \"jspm\", \"ava\", \"xo\", \"nyc\", \"eslintConfig\", \"contributors\", \"bundleDependencies\", \"tags\"])\n\ninterface CleanupPackageFileOptions {\n readonly isRemovePackageScripts: boolean\n readonly isMain: boolean\n}\n\nfunction cleanupPackageJson(data: any, options: CleanupPackageFileOptions): any {\n const deps = data.dependencies\n // https://github.com/electron-userland/electron-builder/issues/507#issuecomment-312772099\n const isRemoveBabel = deps != null && typeof deps === \"object\" && !Object.getOwnPropertyNames(deps).some(it => it.startsWith(\"babel\"))\n try {\n let changed = false\n for (const prop of Object.getOwnPropertyNames(data)) {\n // removing devDependencies from package.json breaks levelup in electron, so, remove it only from main package.json\n if (prop[0] === \"_\" ||\n ignoredPackageMetadataProperties.has(prop) ||\n (options.isRemovePackageScripts && prop === \"scripts\") ||\n (options.isMain && prop === \"devDependencies\") ||\n (!options.isMain && prop === \"bugs\") ||\n (isRemoveBabel && prop === \"babel\")) {\n delete data[prop]\n changed = true\n }\n }\n\n if (changed) {\n return JSON.stringify(data, null, 2)\n }\n }\n catch (e) {\n debug(e)\n }\n\n return null\n}\n\nasync function modifyMainPackageJson(file: string, extraMetadata: any, isRemovePackageScripts: boolean) {\n const mainPackageData = JSON.parse(await readFile(file, \"utf-8\"))\n if (extraMetadata != null) {\n deepAssign(mainPackageData, extraMetadata)\n }\n\n // https://github.com/electron-userland/electron-builder/issues/1212\n const serializedDataIfChanged = cleanupPackageJson(mainPackageData, {\n isMain: true,\n isRemovePackageScripts,\n })\n if (serializedDataIfChanged != null) {\n return serializedDataIfChanged\n }\n else if (extraMetadata != null) {\n return JSON.stringify(mainPackageData, null, 2)\n }\n return null\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../src/fileTransformer.ts"],"names":[],"mappings":"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","sourcesContent":["import { debug, log, deepAssign } from \"builder-util\"\nimport { FileTransformer } from \"builder-util/out/fs\"\nimport { readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { Configuration } from \"./configuration\"\nimport { Packager } from \"./packager\"\n\n/** @internal */\nexport const NODE_MODULES_PATTERN = `${path.sep}node_modules${path.sep}`\n\n/** @internal */\nexport function isElectronCompileUsed(info: Packager): boolean {\n if (info.config.electronCompile != null) {\n return info.config.electronCompile\n }\n\n // if in devDependencies - it means that babel is used for precompilation or for some reason user decided to not use electron-compile for production\n return hasDep(\"electron-compile\", info)\n}\n\n/** @internal */\nexport function hasDep(name: string, info: Packager) {\n const deps = info.metadata.dependencies\n return deps != null && name in deps\n}\n\n/** @internal */\nexport function createTransformer(srcDir: string, configuration: Configuration, extraMetadata: any, extraTransformer: FileTransformer | null): FileTransformer {\n const mainPackageJson = path.join(srcDir, \"package.json\")\n const isRemovePackageScripts = configuration.removePackageScripts !== false\n const packageJson = path.sep + \"package.json\"\n return file => {\n if (file === mainPackageJson) {\n return modifyMainPackageJson(file, extraMetadata, isRemovePackageScripts)\n }\n\n if (file.endsWith(packageJson) && file.includes(NODE_MODULES_PATTERN)) {\n return readFile(file, \"utf-8\")\n .then(it => cleanupPackageJson(JSON.parse(it), {\n isMain: false,\n isRemovePackageScripts,\n }))\n .catch(e => log.warn(e))\n }\n else if (extraTransformer != null) {\n return extraTransformer(file)\n }\n else {\n return null\n }\n }\n}\n\n/** @internal */\nexport interface CompilerHost {\n compile(file: string): any\n\n saveConfiguration(): Promise<any>\n}\n\n/** @internal */\nexport function createElectronCompilerHost(projectDir: string, cacheDir: string): Promise<CompilerHost> {\n const electronCompilePath = path.join(projectDir, \"node_modules\", \"electron-compile\", \"lib\")\n return require(path.join(electronCompilePath, \"config-parser\")).createCompilerHostFromProjectRoot(projectDir, cacheDir)\n}\n\nconst ignoredPackageMetadataProperties = new Set([\"dist\", \"gitHead\", \"keywords\", \"build\", \"jspm\", \"ava\", \"xo\", \"nyc\", \"eslintConfig\", \"contributors\", \"bundleDependencies\", \"tags\"])\n\ninterface CleanupPackageFileOptions {\n readonly isRemovePackageScripts: boolean\n readonly isMain: boolean\n}\n\nfunction cleanupPackageJson(data: any, options: CleanupPackageFileOptions): any {\n const deps = data.dependencies\n // https://github.com/electron-userland/electron-builder/issues/507#issuecomment-312772099\n const isRemoveBabel = deps != null && typeof deps === \"object\" && !Object.getOwnPropertyNames(deps).some(it => it.startsWith(\"babel\"))\n try {\n let changed = false\n for (const prop of Object.getOwnPropertyNames(data)) {\n // removing devDependencies from package.json breaks levelup in electron, so, remove it only from main package.json\n if (prop[0] === \"_\" ||\n ignoredPackageMetadataProperties.has(prop) ||\n (options.isRemovePackageScripts && prop === \"scripts\") ||\n (options.isMain && prop === \"devDependencies\") ||\n (!options.isMain && prop === \"bugs\") ||\n (isRemoveBabel && prop === \"babel\")) {\n delete data[prop]\n changed = true\n }\n }\n\n if (changed) {\n return JSON.stringify(data, null, 2)\n }\n }\n catch (e) {\n debug(e)\n }\n\n return null\n}\n\nasync function modifyMainPackageJson(file: string, extraMetadata: any, isRemovePackageScripts: boolean) {\n const mainPackageData = JSON.parse(await readFile(file, \"utf-8\"))\n if (extraMetadata != null) {\n deepAssign(mainPackageData, extraMetadata)\n }\n\n // https://github.com/electron-userland/electron-builder/issues/1212\n const serializedDataIfChanged = cleanupPackageJson(mainPackageData, {\n isMain: true,\n isRemovePackageScripts,\n })\n if (serializedDataIfChanged != null) {\n return serializedDataIfChanged\n }\n else if (extraMetadata != null) {\n return JSON.stringify(mainPackageData, null, 2)\n }\n return null\n}"],"sourceRoot":""}
package/out/index.js CHANGED
@@ -200,7 +200,7 @@ function build(options, packager = new (_packager().Packager)(options)) {
200
200
  const afterAllArtifactBuild = (0, _platformPackager().resolveFunction)(buildResult.configuration.afterAllArtifactBuild, "afterAllArtifactBuild");
201
201
 
202
202
  if (afterAllArtifactBuild != null) {
203
- const newArtifacts = (0, _builderUtilRuntime().asArray)((await Promise.resolve(afterAllArtifactBuild(buildResult))));
203
+ const newArtifacts = (0, _builderUtilRuntime().asArray)(await Promise.resolve(afterAllArtifactBuild(buildResult)));
204
204
 
205
205
  if (newArtifacts.length === 0 || !publishManager.isPublish) {
206
206
  return buildResult.artifactPaths;
package/out/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { executeFinally } from \"builder-util/out/promise\"\nimport { PublishOptions } from \"electron-publish/out/publisher\"\nimport { log, InvalidConfigurationError } from \"builder-util\"\nimport { asArray } from \"builder-util-runtime\"\nimport { Packager } from \"./packager\"\nimport { PackagerOptions } from \"./packagerApi\"\nimport { resolveFunction } from \"./platformPackager\"\nimport { PublishManager } from \"./publish/PublishManager\"\n\nexport { Packager, BuildResult } from \"./packager\"\nexport { PackagerOptions, ArtifactCreated, ArtifactBuildStarted } from \"./packagerApi\"\nexport { TargetConfiguration, Platform, Target, DIR_TARGET, BeforeBuildContext, SourceRepositoryInfo, TargetSpecificOptions, TargetConfigType, DEFAULT_TARGET, CompressionLevel } from \"./core\"\nexport { getArchSuffix, Arch, archFromString } from \"builder-util\"\nexport { Configuration, AfterPackContext, MetadataDirectories } from \"./configuration\"\nexport { ElectronDownloadOptions, ElectronPlatformName } from \"./electron/ElectronFramework\"\nexport { PlatformSpecificBuildOptions, AsarOptions, FileSet, Protocol, ReleaseInfo } from \"./options/PlatformSpecificBuildOptions\"\nexport { FileAssociation } from \"./options/FileAssociation\"\nexport { MacConfiguration, DmgOptions, MasConfiguration, MacOsTargetName, DmgContent, DmgWindow } from \"./options/macOptions\"\nexport { PkgOptions, PkgBackgroundOptions, BackgroundAlignment, BackgroundScaling } from \"./options/pkgOptions\"\nexport { WindowsConfiguration } from \"./options/winOptions\"\nexport { AppXOptions } from \"./options/AppXOptions\"\nexport { MsiOptions } from \"./options/MsiOptions\"\nexport { CommonWindowsInstallerConfiguration } from \"./options/CommonWindowsInstallerConfiguration\"\nexport { NsisOptions, NsisWebOptions, PortableOptions, CommonNsisOptions } from \"./targets/nsis/nsisOptions\"\nexport { LinuxConfiguration, DebOptions, CommonLinuxOptions, LinuxTargetSpecificOptions, AppImageOptions } from \"./options/linuxOptions\"\nexport { SnapOptions } from \"./options/SnapOptions\"\nexport { Metadata, AuthorMetadata, RepositoryInfo } from \"./options/metadata\"\nexport { AppInfo } from \"./appInfo\"\nexport { SquirrelWindowsOptions } from \"./options/SquirrelWindowsOptions\"\nexport { WindowsSignOptions, CustomWindowsSignTaskConfiguration, WindowsSignTaskConfiguration, CustomWindowsSign, FileCodeSigningInfo, CertificateFromStoreInfo } from \"./codeSign/windowsCodeSign\"\nexport { CancellationToken, ProgressInfo } from \"builder-util-runtime\"\nexport { PublishOptions, UploadTask } from \"electron-publish\"\nexport { PublishManager } from \"./publish/PublishManager\"\nexport { PlatformPackager } from \"./platformPackager\"\nexport { Framework, PrepareApplicationStageDirectoryOptions } from \"./Framework\"\nexport { buildForge, ForgeOptions } from \"./forge-maker\"\nexport { SnapStoreOptions } from \"./publish/SnapStorePublisher\"\n\nconst expectedOptions = new Set([\"publish\", \"targets\", \"mac\", \"win\", \"linux\", \"projectDir\", \"platformPackagerFactory\", \"config\", \"effectiveOptionComputed\", \"prepackaged\"])\n\nexport function checkBuildRequestOptions(options: PackagerOptions & PublishOptions) {\n for (const optionName of Object.keys(options)) {\n if (!expectedOptions.has(optionName) && (options as any)[optionName] !== undefined) {\n throw new InvalidConfigurationError(`Unknown option \"${optionName}\"`)\n }\n }\n}\n\nexport function build(options: PackagerOptions & PublishOptions, packager: Packager = new Packager(options)): Promise<Array<string>> {\n checkBuildRequestOptions(options)\n\n const publishManager = new PublishManager(packager, options)\n const sigIntHandler = () => {\n log.warn(\"cancelled by SIGINT\")\n packager.cancellationToken.cancel()\n publishManager.cancelTasks()\n }\n process.once(\"SIGINT\", sigIntHandler)\n\n const promise = packager.build()\n .then(async buildResult => {\n const afterAllArtifactBuild = resolveFunction(buildResult.configuration.afterAllArtifactBuild, \"afterAllArtifactBuild\")\n if (afterAllArtifactBuild != null) {\n const newArtifacts = asArray(await Promise.resolve(afterAllArtifactBuild(buildResult)))\n if (newArtifacts.length === 0 || !publishManager.isPublish) {\n return buildResult.artifactPaths\n }\n\n const publishConfigurations = await publishManager.getGlobalPublishConfigurations()\n if (publishConfigurations == null || publishConfigurations.length === 0) {\n return buildResult.artifactPaths\n }\n\n for (const newArtifact of newArtifacts) {\n buildResult.artifactPaths.push(newArtifact)\n for (const publishConfiguration of publishConfigurations) {\n publishManager.scheduleUpload(publishConfiguration, {\n file: newArtifact,\n arch: null\n }, packager.appInfo)\n }\n }\n }\n return buildResult.artifactPaths\n })\n\n return executeFinally(promise, isErrorOccurred => {\n let promise: Promise<any>\n if (isErrorOccurred) {\n publishManager.cancelTasks()\n promise = Promise.resolve(null)\n }\n else {\n promise = publishManager.awaitTasks()\n }\n\n return promise\n .then(() => process.removeListener(\"SIGINT\", sigIntHandler))\n })\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAgBA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAQA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA,MAAM,eAAe,GAAG,IAAI,GAAJ,CAAQ,CAAC,SAAD,EAAY,SAAZ,EAAuB,KAAvB,EAA8B,KAA9B,EAAqC,OAArC,EAA8C,YAA9C,EAA4D,yBAA5D,EAAuF,QAAvF,EAAiG,yBAAjG,EAA4H,aAA5H,CAAR,CAAxB;;AAEM,SAAU,wBAAV,CAAmC,OAAnC,EAA4E;AAChF,OAAK,MAAM,UAAX,IAAyB,MAAM,CAAC,IAAP,CAAY,OAAZ,CAAzB,EAA+C;AAC7C,QAAI,CAAC,eAAe,CAAC,GAAhB,CAAoB,UAApB,CAAD,IAAqC,OAAe,CAAC,UAAD,CAAf,KAAgC,SAAzE,EAAoF;AAClF,YAAM,KAAI,wCAAJ,EAA8B,mBAAmB,UAAU,GAA3D,CAAN;AACD;AACF;AACF;;AAEK,SAAU,KAAV,CAAgB,OAAhB,EAA2D,QAAA,GAAqB,KAAI,oBAAJ,EAAa,OAAb,CAAhF,EAAqG;AACzG,EAAA,wBAAwB,CAAC,OAAD,CAAxB;AAEA,QAAM,cAAc,GAAG,KAAI,gCAAJ,EAAmB,QAAnB,EAA6B,OAA7B,CAAvB;;AACA,QAAM,aAAa,GAAG,MAAK;AACzB,uBAAI,IAAJ,CAAS,qBAAT;;AACA,IAAA,QAAQ,CAAC,iBAAT,CAA2B,MAA3B;AACA,IAAA,cAAc,CAAC,WAAf;AACD,GAJD;;AAKA,EAAA,OAAO,CAAC,IAAR,CAAa,QAAb,EAAuB,aAAvB;AAEA,QAAM,OAAO,GAAG,QAAQ,CAAC,KAAT,GACb,IADa,CACR,MAAM,WAAN,IAAoB;AACxB,UAAM,qBAAqB,GAAG,yCAAgB,WAAW,CAAC,aAAZ,CAA0B,qBAA1C,EAAiE,uBAAjE,CAA9B;;AACA,QAAI,qBAAqB,IAAI,IAA7B,EAAmC;AACjC,YAAM,YAAY,GAAG,mCAAQ,MAAM,OAAO,CAAC,OAAR,CAAgB,qBAAqB,CAAC,WAAD,CAArC,CAAd,CAArB;;AACA,UAAI,YAAY,CAAC,MAAb,KAAwB,CAAxB,IAA6B,CAAC,cAAc,CAAC,SAAjD,EAA4D;AAC1D,eAAO,WAAW,CAAC,aAAnB;AACD;;AAED,YAAM,qBAAqB,GAAG,MAAM,cAAc,CAAC,8BAAf,EAApC;;AACA,UAAI,qBAAqB,IAAI,IAAzB,IAAiC,qBAAqB,CAAC,MAAtB,KAAiC,CAAtE,EAAyE;AACvE,eAAO,WAAW,CAAC,aAAnB;AACD;;AAED,WAAK,MAAM,WAAX,IAA0B,YAA1B,EAAwC;AACtC,QAAA,WAAW,CAAC,aAAZ,CAA0B,IAA1B,CAA+B,WAA/B;;AACA,aAAK,MAAM,oBAAX,IAAmC,qBAAnC,EAA0D;AACxD,UAAA,cAAc,CAAC,cAAf,CAA8B,oBAA9B,EAAoD;AAClD,YAAA,IAAI,EAAE,WAD4C;AAElD,YAAA,IAAI,EAAE;AAF4C,WAApD,EAGG,QAAQ,CAAC,OAHZ;AAID;AACF;AACF;;AACD,WAAO,WAAW,CAAC,aAAnB;AACD,GAzBa,CAAhB;AA2BA,SAAO,+BAAe,OAAf,EAAwB,eAAe,IAAG;AAC/C,QAAI,OAAJ;;AACA,QAAI,eAAJ,EAAqB;AACnB,MAAA,cAAc,CAAC,WAAf;AACA,MAAA,OAAO,GAAG,OAAO,CAAC,OAAR,CAAgB,IAAhB,CAAV;AACD,KAHD,MAIK;AACH,MAAA,OAAO,GAAG,cAAc,CAAC,UAAf,EAAV;AACD;;AAED,WAAO,OAAO,CACX,IADI,CACC,MAAM,OAAO,CAAC,cAAR,CAAuB,QAAvB,EAAiC,aAAjC,CADP,CAAP;AAED,GAZM,CAAP;AAaD,C","sourcesContent":["import { executeFinally } from \"builder-util/out/promise\"\nimport { PublishOptions } from \"electron-publish/out/publisher\"\nimport { log, InvalidConfigurationError } from \"builder-util\"\nimport { asArray } from \"builder-util-runtime\"\nimport { Packager } from \"./packager\"\nimport { PackagerOptions } from \"./packagerApi\"\nimport { resolveFunction } from \"./platformPackager\"\nimport { PublishManager } from \"./publish/PublishManager\"\n\nexport { Packager, BuildResult } from \"./packager\"\nexport { PackagerOptions, ArtifactCreated, ArtifactBuildStarted } from \"./packagerApi\"\nexport { TargetConfiguration, Platform, Target, DIR_TARGET, BeforeBuildContext, SourceRepositoryInfo, TargetSpecificOptions, TargetConfigType, DEFAULT_TARGET, CompressionLevel } from \"./core\"\nexport { getArchSuffix, Arch, archFromString } from \"builder-util\"\nexport { Configuration, AfterPackContext, MetadataDirectories } from \"./configuration\"\nexport { ElectronDownloadOptions, ElectronPlatformName } from \"./electron/ElectronFramework\"\nexport { PlatformSpecificBuildOptions, AsarOptions, FileSet, Protocol, ReleaseInfo } from \"./options/PlatformSpecificBuildOptions\"\nexport { FileAssociation } from \"./options/FileAssociation\"\nexport { MacConfiguration, DmgOptions, MasConfiguration, MacOsTargetName, DmgContent, DmgWindow } from \"./options/macOptions\"\nexport { PkgOptions, PkgBackgroundOptions, BackgroundAlignment, BackgroundScaling } from \"./options/pkgOptions\"\nexport { WindowsConfiguration } from \"./options/winOptions\"\nexport { AppXOptions } from \"./options/AppXOptions\"\nexport { MsiOptions } from \"./options/MsiOptions\"\nexport { CommonWindowsInstallerConfiguration } from \"./options/CommonWindowsInstallerConfiguration\"\nexport { NsisOptions, NsisWebOptions, PortableOptions, CommonNsisOptions } from \"./targets/nsis/nsisOptions\"\nexport { LinuxConfiguration, DebOptions, CommonLinuxOptions, LinuxTargetSpecificOptions, AppImageOptions } from \"./options/linuxOptions\"\nexport { SnapOptions } from \"./options/SnapOptions\"\nexport { Metadata, AuthorMetadata, RepositoryInfo } from \"./options/metadata\"\nexport { AppInfo } from \"./appInfo\"\nexport { SquirrelWindowsOptions } from \"./options/SquirrelWindowsOptions\"\nexport { WindowsSignOptions, CustomWindowsSignTaskConfiguration, WindowsSignTaskConfiguration, CustomWindowsSign, FileCodeSigningInfo, CertificateFromStoreInfo } from \"./codeSign/windowsCodeSign\"\nexport { CancellationToken, ProgressInfo } from \"builder-util-runtime\"\nexport { PublishOptions, UploadTask } from \"electron-publish\"\nexport { PublishManager } from \"./publish/PublishManager\"\nexport { PlatformPackager } from \"./platformPackager\"\nexport { Framework, PrepareApplicationStageDirectoryOptions } from \"./Framework\"\nexport { buildForge, ForgeOptions } from \"./forge-maker\"\nexport { SnapStoreOptions } from \"./publish/SnapStorePublisher\"\n\nconst expectedOptions = new Set([\"publish\", \"targets\", \"mac\", \"win\", \"linux\", \"projectDir\", \"platformPackagerFactory\", \"config\", \"effectiveOptionComputed\", \"prepackaged\"])\n\nexport function checkBuildRequestOptions(options: PackagerOptions & PublishOptions) {\n for (const optionName of Object.keys(options)) {\n if (!expectedOptions.has(optionName) && (options as any)[optionName] !== undefined) {\n throw new InvalidConfigurationError(`Unknown option \"${optionName}\"`)\n }\n }\n}\n\nexport function build(options: PackagerOptions & PublishOptions, packager: Packager = new Packager(options)): Promise<Array<string>> {\n checkBuildRequestOptions(options)\n\n const publishManager = new PublishManager(packager, options)\n const sigIntHandler = () => {\n log.warn(\"cancelled by SIGINT\")\n packager.cancellationToken.cancel()\n publishManager.cancelTasks()\n }\n process.once(\"SIGINT\", sigIntHandler)\n\n const promise = packager.build()\n .then(async buildResult => {\n const afterAllArtifactBuild = resolveFunction(buildResult.configuration.afterAllArtifactBuild, \"afterAllArtifactBuild\")\n if (afterAllArtifactBuild != null) {\n const newArtifacts = asArray(await Promise.resolve(afterAllArtifactBuild(buildResult)))\n if (newArtifacts.length === 0 || !publishManager.isPublish) {\n return buildResult.artifactPaths\n }\n\n const publishConfigurations = await publishManager.getGlobalPublishConfigurations()\n if (publishConfigurations == null || publishConfigurations.length === 0) {\n return buildResult.artifactPaths\n }\n\n for (const newArtifact of newArtifacts) {\n buildResult.artifactPaths.push(newArtifact)\n for (const publishConfiguration of publishConfigurations) {\n publishManager.scheduleUpload(publishConfiguration, {\n file: newArtifact,\n arch: null\n }, packager.appInfo)\n }\n }\n }\n return buildResult.artifactPaths\n })\n\n return executeFinally(promise, isErrorOccurred => {\n let promise: Promise<any>\n if (isErrorOccurred) {\n publishManager.cancelTasks()\n promise = Promise.resolve(null)\n }\n else {\n promise = publishManager.awaitTasks()\n }\n\n return promise\n .then(() => process.removeListener(\"SIGINT\", sigIntHandler))\n })\n}"],"sourceRoot":""}