app-builder-lib 26.0.19 → 26.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/helpers/dynamic-import.d.ts +3 -0
- package/helpers/dynamic-import.js +23 -0
- package/helpers/remote-rebuild.js +38 -0
- package/out/binDownload.js +1 -1
- package/out/binDownload.js.map +1 -1
- package/out/electron/electronVersion.js +1 -1
- package/out/electron/electronVersion.js.map +1 -1
- package/out/electron/search-module.d.ts +23 -0
- package/out/electron/search-module.js +73 -0
- package/out/electron/search-module.js.map +1 -0
- package/out/macPackager.d.ts +1 -0
- package/out/macPackager.js +19 -7
- package/out/macPackager.js.map +1 -1
- package/out/node-module-collector/index.d.ts +5 -4
- package/out/node-module-collector/index.js +28 -7
- package/out/node-module-collector/index.js.map +1 -1
- package/out/node-module-collector/nodeModulesCollector.js +7 -1
- package/out/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/out/node-module-collector/packageManager.d.ts +5 -3
- package/out/node-module-collector/packageManager.js +39 -27
- package/out/node-module-collector/packageManager.js.map +1 -1
- package/out/publish/PublishManager.js +8 -1
- package/out/publish/PublishManager.js.map +1 -1
- package/out/util/appFileCopier.js +3 -2
- package/out/util/appFileCopier.js.map +1 -1
- package/out/util/{rebuild/rebuild.js → rebuild.js} +1 -1
- package/out/util/rebuild.js.map +1 -0
- package/out/util/resolve.js +5 -16
- package/out/util/resolve.js.map +1 -1
- package/out/util/yarn.js +3 -3
- package/out/util/yarn.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/package.json +12 -11
- package/scheme.json +29 -4
- package/templates/linux/apparmor-profile.tpl +1 -1
- package/templates/nsis/include/FileAssociation.nsh +4 -13
- package/templates/nsis/include/allowOnlyOneInstallerInstance.nsh +3 -3
- package/out/util/rebuild/rebuild.js.map +0 -1
- package/out/util/rebuild/remote-rebuild.d.ts +0 -1
- package/out/util/rebuild/remote-rebuild.js +0 -30
- package/out/util/rebuild/remote-rebuild.js.map +0 -1
- /package/out/util/{rebuild/rebuild.d.ts → rebuild.d.ts} +0 -0
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPackageManagerCommand = exports.PM =
|
|
3
|
+
exports.getPackageManagerCommand = exports.PM = void 0;
|
|
4
4
|
exports.getCollectorByPackageManager = getCollectorByPackageManager;
|
|
5
5
|
exports.getNodeModules = getNodeModules;
|
|
6
|
+
exports.detectPackageManager = detectPackageManager;
|
|
6
7
|
const npmNodeModulesCollector_1 = require("./npmNodeModulesCollector");
|
|
7
8
|
const pnpmNodeModulesCollector_1 = require("./pnpmNodeModulesCollector");
|
|
8
9
|
const yarnNodeModulesCollector_1 = require("./yarnNodeModulesCollector");
|
|
9
10
|
const packageManager_1 = require("./packageManager");
|
|
10
|
-
Object.defineProperty(exports, "detectPackageManager", { enumerable: true, get: function () { return packageManager_1.detectPackageManager; } });
|
|
11
11
|
Object.defineProperty(exports, "PM", { enumerable: true, get: function () { return packageManager_1.PM; } });
|
|
12
12
|
Object.defineProperty(exports, "getPackageManagerCommand", { enumerable: true, get: function () { return packageManager_1.getPackageManagerCommand; } });
|
|
13
|
-
async function getCollectorByPackageManager(rootDir, tempDirManager) {
|
|
14
|
-
|
|
15
|
-
switch (manager) {
|
|
13
|
+
async function getCollectorByPackageManager(pm, rootDir, tempDirManager) {
|
|
14
|
+
switch (pm) {
|
|
16
15
|
case packageManager_1.PM.PNPM:
|
|
17
16
|
if (await pnpmNodeModulesCollector_1.PnpmNodeModulesCollector.isPnpmProjectHoisted(rootDir)) {
|
|
18
17
|
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir, tempDirManager);
|
|
19
18
|
}
|
|
20
19
|
return new pnpmNodeModulesCollector_1.PnpmNodeModulesCollector(rootDir, tempDirManager);
|
|
21
20
|
case packageManager_1.PM.NPM:
|
|
21
|
+
case packageManager_1.PM.BUN:
|
|
22
22
|
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir, tempDirManager);
|
|
23
23
|
case packageManager_1.PM.YARN:
|
|
24
24
|
return new yarnNodeModulesCollector_1.YarnNodeModulesCollector(rootDir, tempDirManager);
|
|
@@ -26,8 +26,29 @@ async function getCollectorByPackageManager(rootDir, tempDirManager) {
|
|
|
26
26
|
return new npmNodeModulesCollector_1.NpmNodeModulesCollector(rootDir, tempDirManager);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
async function getNodeModules(rootDir, tempDirManager) {
|
|
30
|
-
const collector = await getCollectorByPackageManager(rootDir, tempDirManager);
|
|
29
|
+
async function getNodeModules(pm, rootDir, tempDirManager) {
|
|
30
|
+
const collector = await getCollectorByPackageManager(pm, rootDir, tempDirManager);
|
|
31
31
|
return collector.getNodeModules();
|
|
32
32
|
}
|
|
33
|
+
function detectPackageManager(dirs) {
|
|
34
|
+
let pm = null;
|
|
35
|
+
const resolveYarnVersion = (pm) => {
|
|
36
|
+
if (pm === packageManager_1.PM.YARN) {
|
|
37
|
+
return (0, packageManager_1.detectYarnBerry)();
|
|
38
|
+
}
|
|
39
|
+
return pm;
|
|
40
|
+
};
|
|
41
|
+
for (const dir of dirs) {
|
|
42
|
+
pm = (0, packageManager_1.detectPackageManagerByLockfile)(dir);
|
|
43
|
+
if (pm) {
|
|
44
|
+
return resolveYarnVersion(pm);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
pm = (0, packageManager_1.detectPackageManagerByEnv)();
|
|
48
|
+
if (pm) {
|
|
49
|
+
return resolveYarnVersion(pm);
|
|
50
|
+
}
|
|
51
|
+
// Default to npm
|
|
52
|
+
return packageManager_1.PM.NPM;
|
|
53
|
+
}
|
|
33
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-module-collector/index.ts"],"names":[],"mappings":";;;AAOA,oEAeC;AAED,wCAGC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-module-collector/index.ts"],"names":[],"mappings":";;;AAOA,oEAeC;AAED,wCAGC;AAED,oDAwBC;AArDD,uEAAmE;AACnE,yEAAqE;AACrE,yEAAqE;AACrE,qDAA2I;AAoDlI,mFApD2D,mBAAE,OAoD3D;AAAE,yGApD2D,yCAAwB,OAoD3D;AAhD9B,KAAK,UAAU,4BAA4B,CAAC,EAAM,EAAE,OAAe,EAAE,cAAsB;IAChG,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,mBAAE,CAAC,IAAI;YACV,IAAI,MAAM,mDAAwB,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjE,OAAO,IAAI,iDAAuB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;YAC7D,CAAC;YACD,OAAO,IAAI,mDAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QAC9D,KAAK,mBAAE,CAAC,GAAG,CAAC;QACZ,KAAK,mBAAE,CAAC,GAAG;YACT,OAAO,IAAI,iDAAuB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QAC7D,KAAK,mBAAE,CAAC,IAAI;YACV,OAAO,IAAI,mDAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QAC9D;YACE,OAAO,IAAI,iDAAuB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;IAC/D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,EAAM,EAAE,OAAe,EAAE,cAAsB;IAClF,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAA;IACjF,OAAO,SAAS,CAAC,cAAc,EAAE,CAAA;AACnC,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAc;IACjD,IAAI,EAAE,GAAc,IAAI,CAAA;IAExB,MAAM,kBAAkB,GAAG,CAAC,EAAM,EAAE,EAAE;QACpC,IAAI,EAAE,KAAK,mBAAE,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAA,gCAAe,GAAE,CAAA;QAC1B,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,EAAE,GAAG,IAAA,+CAA8B,EAAC,GAAG,CAAC,CAAA;QACxC,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,EAAE,GAAG,IAAA,0CAAyB,GAAE,CAAA;IAChC,IAAI,EAAE,EAAE,CAAC;QACP,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,iBAAiB;IACjB,OAAO,mBAAE,CAAC,GAAG,CAAA;AACf,CAAC","sourcesContent":["import { NpmNodeModulesCollector } from \"./npmNodeModulesCollector\"\nimport { PnpmNodeModulesCollector } from \"./pnpmNodeModulesCollector\"\nimport { YarnNodeModulesCollector } from \"./yarnNodeModulesCollector\"\nimport { detectPackageManagerByLockfile, detectPackageManagerByEnv, PM, getPackageManagerCommand, detectYarnBerry } from \"./packageManager\"\nimport { NodeModuleInfo } from \"./types\"\nimport { TmpDir } from \"temp-file\"\n\nexport async function getCollectorByPackageManager(pm: PM, rootDir: string, tempDirManager: TmpDir) {\n switch (pm) {\n case PM.PNPM:\n if (await PnpmNodeModulesCollector.isPnpmProjectHoisted(rootDir)) {\n return new NpmNodeModulesCollector(rootDir, tempDirManager)\n }\n return new PnpmNodeModulesCollector(rootDir, tempDirManager)\n case PM.NPM:\n case PM.BUN:\n return new NpmNodeModulesCollector(rootDir, tempDirManager)\n case PM.YARN:\n return new YarnNodeModulesCollector(rootDir, tempDirManager)\n default:\n return new NpmNodeModulesCollector(rootDir, tempDirManager)\n }\n}\n\nexport async function getNodeModules(pm: PM, rootDir: string, tempDirManager: TmpDir): Promise<NodeModuleInfo[]> {\n const collector = await getCollectorByPackageManager(pm, rootDir, tempDirManager)\n return collector.getNodeModules()\n}\n\nexport function detectPackageManager(dirs: string[]): PM {\n let pm: PM | null = null\n\n const resolveYarnVersion = (pm: PM) => {\n if (pm === PM.YARN) {\n return detectYarnBerry()\n }\n return pm\n }\n\n for (const dir of dirs) {\n pm = detectPackageManagerByLockfile(dir)\n if (pm) {\n return resolveYarnVersion(pm)\n }\n }\n\n pm = detectPackageManagerByEnv()\n if (pm) {\n return resolveYarnVersion(pm)\n }\n\n // Default to npm\n return PM.NPM\n}\n\nexport { PM, getPackageManagerCommand }\n"]}
|
|
@@ -20,8 +20,8 @@ class NodeModulesCollector {
|
|
|
20
20
|
}
|
|
21
21
|
async getNodeModules() {
|
|
22
22
|
const tree = await this.getDependenciesTree();
|
|
23
|
+
this.collectAllDependencies(tree); // Parse from the root, as npm list can host and deduplicate across projects in the workspace
|
|
23
24
|
const realTree = this.getTreeFromWorkspaces(tree);
|
|
24
|
-
this.collectAllDependencies(realTree);
|
|
25
25
|
this.extractProductionDependencyGraph(realTree, "." /*root project name*/);
|
|
26
26
|
const hoisterResult = (0, hoist_1.hoist)(this.transToHoisterTree(this.productionGraph), { check: true });
|
|
27
27
|
this._getNodeModules(hoisterResult.dependencies, this.nodeModules);
|
|
@@ -122,6 +122,12 @@ class NodeModulesCollector {
|
|
|
122
122
|
builder_util_1.log.debug({ name: d.name, reference }, "cannot find path for dependency");
|
|
123
123
|
continue;
|
|
124
124
|
}
|
|
125
|
+
// fix npm list issue
|
|
126
|
+
// https://github.com/npm/cli/issues/8535
|
|
127
|
+
if (!fs.existsSync(p)) {
|
|
128
|
+
builder_util_1.log.debug({ name: d.name, reference, p }, "dependency path does not exist");
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
125
131
|
const node = {
|
|
126
132
|
name: d.name,
|
|
127
133
|
version: reference,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeModulesCollector.js","sourceRoot":"","sources":["../../src/node-module-collector/nodeModulesCollector.ts"],"names":[],"mappings":"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","sourcesContent":["import { hoist, type HoisterTree, type HoisterResult } from \"./hoist\"\nimport * as path from \"path\"\nimport * as fs from \"fs-extra\"\nimport type { NodeModuleInfo, DependencyGraph, Dependency } from \"./types\"\nimport { exists, log, retry, TmpDir } from \"builder-util\"\nimport { getPackageManagerCommand, PM } from \"./packageManager\"\nimport { exec, spawn } from \"child_process\"\nimport { promisify } from \"util\"\nimport { createWriteStream } from \"fs\"\n\nconst execAsync = promisify(exec)\n\nexport abstract class NodeModulesCollector<T extends Dependency<T, OptionalsType>, OptionalsType> {\n private nodeModules: NodeModuleInfo[] = []\n protected allDependencies: Map<string, T> = new Map()\n protected productionGraph: DependencyGraph = {}\n\n constructor(\n private readonly rootDir: string,\n private readonly tempDirManager: TmpDir\n ) {}\n\n public async getNodeModules(): Promise<NodeModuleInfo[]> {\n const tree: T = await this.getDependenciesTree()\n const realTree: T = this.getTreeFromWorkspaces(tree)\n this.collectAllDependencies(realTree)\n this.extractProductionDependencyGraph(realTree, \".\" /*root project name*/)\n\n const hoisterResult: HoisterResult = hoist(this.transToHoisterTree(this.productionGraph), { check: true })\n this._getNodeModules(hoisterResult.dependencies, this.nodeModules)\n\n return this.nodeModules\n }\n\n public abstract readonly installOptions: {\n manager: PM\n lockfile: string\n }\n\n protected abstract getArgs(): string[]\n protected abstract parseDependenciesTree(jsonBlob: string): T\n protected abstract extractProductionDependencyGraph(tree: Dependency<T, OptionalsType>, dependencyId: string): void\n protected abstract collectAllDependencies(tree: Dependency<T, OptionalsType>): void\n\n protected async getDependenciesTree(): Promise<T> {\n const command = getPackageManagerCommand(this.installOptions.manager)\n const args = this.getArgs()\n\n const tempOutputFile = await this.tempDirManager.getTempFile({\n prefix: path.basename(command, path.extname(command)),\n suffix: \"output.json\",\n })\n\n return retry(\n async () => {\n await this.streamCollectorCommandToJsonFile(command, args, this.rootDir, tempOutputFile)\n const dependencies = await fs.readFile(tempOutputFile, { encoding: \"utf8\" })\n try {\n return this.parseDependenciesTree(dependencies)\n } catch (error: any) {\n log.debug({ message: error.message || error.stack, shellOutput: dependencies }, \"error parsing dependencies tree\")\n throw new Error(`Failed to parse dependencies tree: ${error.message || error.stack}. Use DEBUG=electron-builder env var to see the dependency query output.`)\n }\n },\n {\n retries: 2,\n interval: 2000,\n backoff: 2000,\n shouldRetry: async (error: any) => {\n if (!(await exists(tempOutputFile))) {\n log.error({ error: error.message || error.stack, tempOutputFile }, \"error getting dependencies tree, unable to find output; retrying\")\n return true\n }\n const dependencies = await fs.readFile(tempOutputFile, { encoding: \"utf8\" })\n if (dependencies.trim().length === 0 || error.message?.includes(\"Unexpected end of JSON input\")) {\n // If the output file is empty or contains invalid JSON, we retry\n // This can happen if the command fails or if the output is not as expected\n log.error({ error: error.message || error.stack, tempOutputFile }, \"dependency tree output file is empty, retrying\")\n return true\n }\n return false\n },\n }\n )\n }\n\n protected resolvePath(filePath: string): string {\n try {\n const stats = fs.lstatSync(filePath)\n if (stats.isSymbolicLink()) {\n return fs.realpathSync(filePath)\n } else {\n return filePath\n }\n } catch (error: any) {\n log.debug({ message: error.message || error.stack }, \"error resolving path\")\n return filePath\n }\n }\n\n private getTreeFromWorkspaces(tree: T): T {\n if (tree.workspaces && tree.dependencies) {\n const packageJson: Dependency<string, string> = require(path.join(this.rootDir, \"package.json\"))\n const dependencyName = packageJson.name\n for (const [key, value] of Object.entries(tree.dependencies)) {\n if (key === dependencyName) {\n return value\n }\n }\n }\n\n return tree\n }\n\n private transToHoisterTree(obj: DependencyGraph, key: string = `.`, nodes: Map<string, HoisterTree> = new Map()): HoisterTree {\n let node = nodes.get(key)\n const name = key.match(/@?[^@]+/)![0]\n if (!node) {\n node = {\n name,\n identName: name,\n reference: key.match(/@?[^@]+@?(.+)?/)![1] || ``,\n dependencies: new Set<HoisterTree>(),\n peerNames: new Set<string>([]),\n }\n nodes.set(key, node)\n\n for (const dep of (obj[key] || {}).dependencies || []) {\n node.dependencies.add(this.transToHoisterTree(obj, dep, nodes))\n }\n }\n return node\n }\n\n private _getNodeModules(dependencies: Set<HoisterResult>, result: NodeModuleInfo[]) {\n if (dependencies.size === 0) {\n return\n }\n\n for (const d of dependencies.values()) {\n const reference = [...d.references][0]\n const p = this.allDependencies.get(`${d.name}@${reference}`)?.path\n if (p === undefined) {\n log.debug({ name: d.name, reference }, \"cannot find path for dependency\")\n continue\n }\n const node: NodeModuleInfo = {\n name: d.name,\n version: reference,\n dir: this.resolvePath(p),\n }\n result.push(node)\n if (d.dependencies.size > 0) {\n node.dependencies = []\n this._getNodeModules(d.dependencies, node.dependencies)\n }\n }\n result.sort((a, b) => a.name.localeCompare(b.name))\n }\n\n static async safeExec(command: string, args: string[], cwd: string): Promise<string> {\n const payload = await execAsync([`\"${command}\"`, ...args].join(\" \"), { cwd, maxBuffer: 100 * 1024 * 1024 }) // 100MB buffer LOL, some projects can have extremely large dependency trees\n return payload.stdout.trim()\n }\n\n async streamCollectorCommandToJsonFile(command: string, args: string[], cwd: string, tempOutputFile: string) {\n const execName = path.basename(command, path.extname(command))\n const isWindowsScriptFile = process.platform === \"win32\" && path.extname(command).toLowerCase() === \".cmd\"\n if (isWindowsScriptFile) {\n // If the command is a Windows script file (.cmd), we need to wrap it in a .bat file to ensure it runs correctly with cmd.exe\n // This is necessary because .cmd files are not directly executable in the same way as .bat files.\n // We create a temporary .bat file that calls the .cmd file with the provided arguments. The .bat file will be executed by cmd.exe.\n const tempBatFile = await this.tempDirManager.getTempFile({\n prefix: execName,\n suffix: \".bat\",\n })\n const batScript = `@echo off\\r\\n\"${command}\" %*\\r\\n` // <-- CRLF required for .bat\n await fs.writeFile(tempBatFile, batScript, { encoding: \"utf8\" })\n command = \"cmd.exe\"\n args = [\"/c\", tempBatFile, ...args]\n }\n\n await new Promise<void>((resolve, reject) => {\n const outStream = createWriteStream(tempOutputFile)\n\n const child = spawn(command, args, {\n cwd,\n shell: false, // required to prevent console logs polution from shell profile loading when `true`\n })\n\n let stderr = \"\"\n child.stdout.pipe(outStream)\n child.stderr.on(\"data\", chunk => {\n stderr += chunk.toString()\n })\n child.on(\"error\", err => {\n reject(new Error(`Spawn failed: ${err.message}`))\n })\n\n child.on(\"close\", code => {\n outStream.close()\n // https://github.com/npm/npm/issues/17624\n if (code === 1 && execName.toLowerCase() === \"npm\" && args.includes(\"list\")) {\n log.debug({ code, stderr }, \"`npm list` returned non-zero exit code, but it MIGHT be expected (https://github.com/npm/npm/issues/17624). Check stderr for details.\")\n // This is a known issue with npm list command, it can return code 1 even when the command is \"technically\" successful\n resolve()\n return\n }\n if (code !== 0) {\n return reject(new Error(`Process exited with code ${code}:\\n${stderr}`))\n }\n resolve()\n })\n })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nodeModulesCollector.js","sourceRoot":"","sources":["../../src/node-module-collector/nodeModulesCollector.ts"],"names":[],"mappings":"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","sourcesContent":["import { hoist, type HoisterTree, type HoisterResult } from \"./hoist\"\nimport * as path from \"path\"\nimport * as fs from \"fs-extra\"\nimport type { NodeModuleInfo, DependencyGraph, Dependency } from \"./types\"\nimport { exists, log, retry, TmpDir } from \"builder-util\"\nimport { getPackageManagerCommand, PM } from \"./packageManager\"\nimport { exec, spawn } from \"child_process\"\nimport { promisify } from \"util\"\nimport { createWriteStream } from \"fs\"\n\nconst execAsync = promisify(exec)\n\nexport abstract class NodeModulesCollector<T extends Dependency<T, OptionalsType>, OptionalsType> {\n private nodeModules: NodeModuleInfo[] = []\n protected allDependencies: Map<string, T> = new Map()\n protected productionGraph: DependencyGraph = {}\n\n constructor(\n private readonly rootDir: string,\n private readonly tempDirManager: TmpDir\n ) {}\n\n public async getNodeModules(): Promise<NodeModuleInfo[]> {\n const tree: T = await this.getDependenciesTree()\n this.collectAllDependencies(tree) // Parse from the root, as npm list can host and deduplicate across projects in the workspace\n const realTree: T = this.getTreeFromWorkspaces(tree)\n this.extractProductionDependencyGraph(realTree, \".\" /*root project name*/)\n\n const hoisterResult: HoisterResult = hoist(this.transToHoisterTree(this.productionGraph), { check: true })\n this._getNodeModules(hoisterResult.dependencies, this.nodeModules)\n\n return this.nodeModules\n }\n\n public abstract readonly installOptions: {\n manager: PM\n lockfile: string\n }\n\n protected abstract getArgs(): string[]\n protected abstract parseDependenciesTree(jsonBlob: string): T\n protected abstract extractProductionDependencyGraph(tree: Dependency<T, OptionalsType>, dependencyId: string): void\n protected abstract collectAllDependencies(tree: Dependency<T, OptionalsType>): void\n\n protected async getDependenciesTree(): Promise<T> {\n const command = getPackageManagerCommand(this.installOptions.manager)\n const args = this.getArgs()\n\n const tempOutputFile = await this.tempDirManager.getTempFile({\n prefix: path.basename(command, path.extname(command)),\n suffix: \"output.json\",\n })\n\n return retry(\n async () => {\n await this.streamCollectorCommandToJsonFile(command, args, this.rootDir, tempOutputFile)\n const dependencies = await fs.readFile(tempOutputFile, { encoding: \"utf8\" })\n try {\n return this.parseDependenciesTree(dependencies)\n } catch (error: any) {\n log.debug({ message: error.message || error.stack, shellOutput: dependencies }, \"error parsing dependencies tree\")\n throw new Error(`Failed to parse dependencies tree: ${error.message || error.stack}. Use DEBUG=electron-builder env var to see the dependency query output.`)\n }\n },\n {\n retries: 2,\n interval: 2000,\n backoff: 2000,\n shouldRetry: async (error: any) => {\n if (!(await exists(tempOutputFile))) {\n log.error({ error: error.message || error.stack, tempOutputFile }, \"error getting dependencies tree, unable to find output; retrying\")\n return true\n }\n const dependencies = await fs.readFile(tempOutputFile, { encoding: \"utf8\" })\n if (dependencies.trim().length === 0 || error.message?.includes(\"Unexpected end of JSON input\")) {\n // If the output file is empty or contains invalid JSON, we retry\n // This can happen if the command fails or if the output is not as expected\n log.error({ error: error.message || error.stack, tempOutputFile }, \"dependency tree output file is empty, retrying\")\n return true\n }\n return false\n },\n }\n )\n }\n\n protected resolvePath(filePath: string): string {\n try {\n const stats = fs.lstatSync(filePath)\n if (stats.isSymbolicLink()) {\n return fs.realpathSync(filePath)\n } else {\n return filePath\n }\n } catch (error: any) {\n log.debug({ message: error.message || error.stack }, \"error resolving path\")\n return filePath\n }\n }\n\n private getTreeFromWorkspaces(tree: T): T {\n if (tree.workspaces && tree.dependencies) {\n const packageJson: Dependency<string, string> = require(path.join(this.rootDir, \"package.json\"))\n const dependencyName = packageJson.name\n for (const [key, value] of Object.entries(tree.dependencies)) {\n if (key === dependencyName) {\n return value\n }\n }\n }\n\n return tree\n }\n\n private transToHoisterTree(obj: DependencyGraph, key: string = `.`, nodes: Map<string, HoisterTree> = new Map()): HoisterTree {\n let node = nodes.get(key)\n const name = key.match(/@?[^@]+/)![0]\n if (!node) {\n node = {\n name,\n identName: name,\n reference: key.match(/@?[^@]+@?(.+)?/)![1] || ``,\n dependencies: new Set<HoisterTree>(),\n peerNames: new Set<string>([]),\n }\n nodes.set(key, node)\n\n for (const dep of (obj[key] || {}).dependencies || []) {\n node.dependencies.add(this.transToHoisterTree(obj, dep, nodes))\n }\n }\n return node\n }\n\n private _getNodeModules(dependencies: Set<HoisterResult>, result: NodeModuleInfo[]) {\n if (dependencies.size === 0) {\n return\n }\n\n for (const d of dependencies.values()) {\n const reference = [...d.references][0]\n const p = this.allDependencies.get(`${d.name}@${reference}`)?.path\n if (p === undefined) {\n log.debug({ name: d.name, reference }, \"cannot find path for dependency\")\n continue\n }\n\n // fix npm list issue\n // https://github.com/npm/cli/issues/8535\n if (!fs.existsSync(p)) {\n log.debug({ name: d.name, reference, p }, \"dependency path does not exist\")\n continue\n }\n\n const node: NodeModuleInfo = {\n name: d.name,\n version: reference,\n dir: this.resolvePath(p),\n }\n result.push(node)\n if (d.dependencies.size > 0) {\n node.dependencies = []\n this._getNodeModules(d.dependencies, node.dependencies)\n }\n }\n result.sort((a, b) => a.name.localeCompare(b.name))\n }\n\n static async safeExec(command: string, args: string[], cwd: string): Promise<string> {\n const payload = await execAsync([`\"${command}\"`, ...args].join(\" \"), { cwd, maxBuffer: 100 * 1024 * 1024 }) // 100MB buffer LOL, some projects can have extremely large dependency trees\n return payload.stdout.trim()\n }\n\n async streamCollectorCommandToJsonFile(command: string, args: string[], cwd: string, tempOutputFile: string) {\n const execName = path.basename(command, path.extname(command))\n const isWindowsScriptFile = process.platform === \"win32\" && path.extname(command).toLowerCase() === \".cmd\"\n if (isWindowsScriptFile) {\n // If the command is a Windows script file (.cmd), we need to wrap it in a .bat file to ensure it runs correctly with cmd.exe\n // This is necessary because .cmd files are not directly executable in the same way as .bat files.\n // We create a temporary .bat file that calls the .cmd file with the provided arguments. The .bat file will be executed by cmd.exe.\n const tempBatFile = await this.tempDirManager.getTempFile({\n prefix: execName,\n suffix: \".bat\",\n })\n const batScript = `@echo off\\r\\n\"${command}\" %*\\r\\n` // <-- CRLF required for .bat\n await fs.writeFile(tempBatFile, batScript, { encoding: \"utf8\" })\n command = \"cmd.exe\"\n args = [\"/c\", tempBatFile, ...args]\n }\n\n await new Promise<void>((resolve, reject) => {\n const outStream = createWriteStream(tempOutputFile)\n\n const child = spawn(command, args, {\n cwd,\n shell: false, // required to prevent console logs polution from shell profile loading when `true`\n })\n\n let stderr = \"\"\n child.stdout.pipe(outStream)\n child.stderr.on(\"data\", chunk => {\n stderr += chunk.toString()\n })\n child.on(\"error\", err => {\n reject(new Error(`Spawn failed: ${err.message}`))\n })\n\n child.on(\"close\", code => {\n outStream.close()\n // https://github.com/npm/npm/issues/17624\n if (code === 1 && execName.toLowerCase() === \"npm\" && args.includes(\"list\")) {\n log.debug({ code, stderr }, \"`npm list` returned non-zero exit code, but it MIGHT be expected (https://github.com/npm/npm/issues/17624). Check stderr for details.\")\n // This is a known issue with npm list command, it can return code 1 even when the command is \"technically\" successful\n resolve()\n return\n }\n if (code !== 0) {\n return reject(new Error(`Process exited with code ${code}:\\n${stderr}`))\n }\n resolve()\n })\n })\n }\n}\n"]}
|
|
@@ -2,8 +2,10 @@ export declare enum PM {
|
|
|
2
2
|
NPM = "npm",
|
|
3
3
|
YARN = "yarn",
|
|
4
4
|
PNPM = "pnpm",
|
|
5
|
-
YARN_BERRY = "yarn-berry"
|
|
5
|
+
YARN_BERRY = "yarn-berry",
|
|
6
|
+
BUN = "bun"
|
|
6
7
|
}
|
|
7
8
|
export declare function getPackageManagerCommand(pm: PM): string;
|
|
8
|
-
export declare function detectPackageManagerByEnv(): PM;
|
|
9
|
-
export declare function
|
|
9
|
+
export declare function detectPackageManagerByEnv(): PM | null;
|
|
10
|
+
export declare function detectPackageManagerByLockfile(cwd: string): PM | null;
|
|
11
|
+
export declare function detectYarnBerry(): PM.YARN | PM.YARN_BERRY;
|
|
@@ -3,16 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PM = void 0;
|
|
4
4
|
exports.getPackageManagerCommand = getPackageManagerCommand;
|
|
5
5
|
exports.detectPackageManagerByEnv = detectPackageManagerByEnv;
|
|
6
|
-
exports.
|
|
6
|
+
exports.detectPackageManagerByLockfile = detectPackageManagerByLockfile;
|
|
7
|
+
exports.detectYarnBerry = detectYarnBerry;
|
|
7
8
|
const path = require("path");
|
|
8
9
|
const fs = require("fs");
|
|
9
10
|
const which = require("which");
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
10
12
|
var PM;
|
|
11
13
|
(function (PM) {
|
|
12
14
|
PM["NPM"] = "npm";
|
|
13
15
|
PM["YARN"] = "yarn";
|
|
14
16
|
PM["PNPM"] = "pnpm";
|
|
15
17
|
PM["YARN_BERRY"] = "yarn-berry";
|
|
18
|
+
PM["BUN"] = "bun";
|
|
16
19
|
})(PM || (exports.PM = PM = {}));
|
|
17
20
|
// Cache for resolved paths
|
|
18
21
|
const pmPathCache = {
|
|
@@ -20,6 +23,7 @@ const pmPathCache = {
|
|
|
20
23
|
[PM.YARN]: undefined,
|
|
21
24
|
[PM.PNPM]: undefined,
|
|
22
25
|
[PM.YARN_BERRY]: undefined,
|
|
26
|
+
[PM.BUN]: undefined,
|
|
23
27
|
};
|
|
24
28
|
function resolveCommand(pm) {
|
|
25
29
|
const fallback = pm === PM.YARN_BERRY ? "yarn" : pm;
|
|
@@ -43,41 +47,49 @@ function getPackageManagerCommand(pm) {
|
|
|
43
47
|
return resolved;
|
|
44
48
|
}
|
|
45
49
|
function detectPackageManagerByEnv() {
|
|
46
|
-
var _a
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
50
|
+
var _a;
|
|
51
|
+
const packageJsonPath = path.join(process.cwd(), "package.json");
|
|
52
|
+
const packageManager = fs.existsSync(packageJsonPath) ? (_a = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"))) === null || _a === void 0 ? void 0 : _a.packageManager : undefined;
|
|
53
|
+
const priorityChecklist = [
|
|
54
|
+
(key) => { var _a; return (_a = process.env.npm_config_user_agent) === null || _a === void 0 ? void 0 : _a.includes(key); },
|
|
55
|
+
(key) => { var _a; return (_a = process.env.npm_execpath) === null || _a === void 0 ? void 0 : _a.includes(key); },
|
|
56
|
+
(key) => packageManager === null || packageManager === void 0 ? void 0 : packageManager.startsWith(`${key}@`),
|
|
57
|
+
];
|
|
58
|
+
const pms = Object.values(PM).filter(pm => pm !== PM.YARN_BERRY);
|
|
59
|
+
for (const checker of priorityChecklist) {
|
|
60
|
+
for (const pm of pms) {
|
|
61
|
+
if (checker(pm)) {
|
|
62
|
+
return pm;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
|
-
return
|
|
66
|
+
return null;
|
|
61
67
|
}
|
|
62
|
-
function
|
|
68
|
+
function detectPackageManagerByLockfile(cwd) {
|
|
63
69
|
const has = (file) => fs.existsSync(path.join(cwd, file));
|
|
64
|
-
const yarn = has("yarn.lock");
|
|
65
|
-
const pnpm = has("pnpm-lock.yaml");
|
|
66
|
-
const npm = has("package-lock.json");
|
|
67
70
|
const detected = [];
|
|
68
|
-
if (yarn)
|
|
71
|
+
if (has("yarn.lock")) {
|
|
69
72
|
detected.push(PM.YARN);
|
|
70
|
-
|
|
73
|
+
}
|
|
74
|
+
if (has("pnpm-lock.yaml")) {
|
|
71
75
|
detected.push(PM.PNPM);
|
|
72
|
-
|
|
76
|
+
}
|
|
77
|
+
if (has("package-lock.json")) {
|
|
73
78
|
detected.push(PM.NPM);
|
|
79
|
+
}
|
|
80
|
+
if (has("bun.lock") || has("bun.lockb")) {
|
|
81
|
+
detected.push(PM.BUN);
|
|
82
|
+
}
|
|
74
83
|
if (detected.length === 1) {
|
|
75
|
-
if (detected[0] === PM.YARN) {
|
|
76
|
-
return detectPackageManagerByEnv() === PM.YARN_BERRY ? PM.YARN_BERRY : PM.YARN;
|
|
77
|
-
}
|
|
78
84
|
return detected[0];
|
|
79
85
|
}
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
function detectYarnBerry() {
|
|
89
|
+
// yarn --version
|
|
90
|
+
const version = (0, child_process_1.execSync)("yarn --version").toString().trim();
|
|
91
|
+
if (parseInt(version.split(".")[0]) > 1)
|
|
92
|
+
return PM.YARN_BERRY;
|
|
93
|
+
return PM.YARN;
|
|
82
94
|
}
|
|
83
95
|
//# sourceMappingURL=packageManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/node-module-collector/packageManager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/node-module-collector/packageManager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"path\"\nimport * as fs from \"fs\"\nimport * as which from \"which\"\nimport { execSync } from \"child_process\"\n\nexport enum PM {\n NPM = \"npm\",\n YARN = \"yarn\",\n PNPM = \"pnpm\",\n YARN_BERRY = \"yarn-berry\",\n BUN = \"bun\",\n}\n\n// Cache for resolved paths\nconst pmPathCache: Record<PM, string | null | undefined> = {\n [PM.NPM]: undefined,\n [PM.YARN]: undefined,\n [PM.PNPM]: undefined,\n [PM.YARN_BERRY]: undefined,\n [PM.BUN]: undefined,\n}\n\nfunction resolveCommand(pm: PM): string {\n const fallback = pm === PM.YARN_BERRY ? \"yarn\" : pm\n\n if (process.platform !== \"win32\") {\n return fallback\n }\n\n try {\n return which.sync(fallback)\n } catch {\n // If `which` fails (not found), still return the fallback string\n return fallback\n }\n}\n\nexport function getPackageManagerCommand(pm: PM) {\n if (pmPathCache[pm] !== undefined) {\n return pmPathCache[pm]!\n }\n\n const resolved = resolveCommand(pm)\n pmPathCache[pm] = resolved\n return resolved\n}\n\nexport function detectPackageManagerByEnv(): PM | null {\n const packageJsonPath = path.join(process.cwd(), \"package.json\")\n const packageManager = fs.existsSync(packageJsonPath) ? JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\"))?.packageManager : undefined\n\n const priorityChecklist = [\n (key: string) => process.env.npm_config_user_agent?.includes(key),\n (key: string) => process.env.npm_execpath?.includes(key),\n (key: string) => packageManager?.startsWith(`${key}@`),\n ]\n\n const pms = Object.values(PM).filter(pm => pm !== PM.YARN_BERRY)\n for (const checker of priorityChecklist) {\n for (const pm of pms) {\n if (checker(pm)) {\n return pm\n }\n }\n }\n return null\n}\n\nexport function detectPackageManagerByLockfile(cwd: string): PM | null {\n const has = (file: string) => fs.existsSync(path.join(cwd, file))\n\n const detected: PM[] = []\n if (has(\"yarn.lock\")) {\n detected.push(PM.YARN)\n }\n if (has(\"pnpm-lock.yaml\")) {\n detected.push(PM.PNPM)\n }\n if (has(\"package-lock.json\")) {\n detected.push(PM.NPM)\n }\n if (has(\"bun.lock\") || has(\"bun.lockb\")) {\n detected.push(PM.BUN)\n }\n\n if (detected.length === 1) {\n return detected[0]\n }\n\n return null\n}\n\nexport function detectYarnBerry() {\n // yarn --version\n const version = execSync(\"yarn --version\").toString().trim()\n if (parseInt(version.split(\".\")[0]) > 1) return PM.YARN_BERRY\n return PM.YARN\n}\n"]}
|
|
@@ -234,6 +234,8 @@ async function createPublisher(context, version, publishConfig, options, package
|
|
|
234
234
|
switch (provider) {
|
|
235
235
|
case "github":
|
|
236
236
|
return new electron_publish_1.GitHubPublisher(context, publishConfig, version, options);
|
|
237
|
+
case "gitlab":
|
|
238
|
+
return new electron_publish_1.GitlabPublisher(context, publishConfig, version);
|
|
237
239
|
case "keygen":
|
|
238
240
|
return new electron_publish_1.KeygenPublisher(context, publishConfig, version);
|
|
239
241
|
case "snapStore":
|
|
@@ -250,6 +252,8 @@ async function requireProviderClass(provider, packager) {
|
|
|
250
252
|
switch (provider) {
|
|
251
253
|
case "github":
|
|
252
254
|
return electron_publish_1.GitHubPublisher;
|
|
255
|
+
case "gitlab":
|
|
256
|
+
return electron_publish_1.GitlabPublisher;
|
|
253
257
|
case "generic":
|
|
254
258
|
return null;
|
|
255
259
|
case "keygen":
|
|
@@ -290,7 +294,7 @@ function computeDownloadUrl(publishConfiguration, fileName, packager) {
|
|
|
290
294
|
let baseUrl;
|
|
291
295
|
if (publishConfiguration.provider === "github") {
|
|
292
296
|
const gh = publishConfiguration;
|
|
293
|
-
baseUrl = `${(0, builder_util_runtime_1.githubUrl)(gh)}/${gh.owner}/${gh.repo}/releases/download/${gh
|
|
297
|
+
baseUrl = `${(0, builder_util_runtime_1.githubUrl)(gh)}/${gh.owner}/${gh.repo}/releases/download/${(0, builder_util_runtime_1.githubTagPrefix)(gh)}${packager.appInfo.version}`;
|
|
294
298
|
}
|
|
295
299
|
else {
|
|
296
300
|
baseUrl = (0, builder_util_runtime_1.getS3LikeProviderBaseUrl)(publishConfiguration);
|
|
@@ -331,6 +335,9 @@ async function resolvePublishConfigurations(publishers, platformPackager, packag
|
|
|
331
335
|
if (!(0, builder_util_1.isEmptyOrSpaces)(process.env.GH_TOKEN) || !(0, builder_util_1.isEmptyOrSpaces)(process.env.GITHUB_TOKEN)) {
|
|
332
336
|
serviceName = "github";
|
|
333
337
|
}
|
|
338
|
+
else if (!(0, builder_util_1.isEmptyOrSpaces)(process.env.GITLAB_TOKEN)) {
|
|
339
|
+
serviceName = "gitlab";
|
|
340
|
+
}
|
|
334
341
|
else if (!(0, builder_util_1.isEmptyOrSpaces)(process.env.KEYGEN_TOKEN)) {
|
|
335
342
|
serviceName = "keygen";
|
|
336
343
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishManager.js","sourceRoot":"","sources":["../../src/publish/PublishManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, asArray, AsyncTaskManager, exists, InvalidConfigurationError, isEmptyOrSpaces, isPullRequest, log, safeStringifyJson, serializeToYaml } from \"builder-util\"\nimport {\n BitbucketOptions,\n CancellationToken,\n GenericServerOptions,\n getS3LikeProviderBaseUrl,\n GithubOptions,\n githubUrl,\n KeygenOptions,\n Nullish,\n PublishConfiguration,\n PublishProvider,\n SnapStoreOptions,\n} from \"builder-util-runtime\"\nimport _debug from \"debug\"\nimport {\n BitbucketPublisher,\n getCiTag,\n GitHubPublisher,\n KeygenPublisher,\n PublishContext,\n Publisher,\n PublishOptions,\n S3Publisher,\n SnapStorePublisher,\n SpacesPublisher,\n UploadTask,\n} from \"electron-publish\"\nimport { MultiProgress } from \"electron-publish/out/multiProgress\"\nimport { writeFile } from \"fs/promises\"\nimport * as isCi from \"ci-info\"\nimport * as path from \"path\"\nimport { WriteStream as TtyWriteStream } from \"tty\"\nimport * as url from \"url\"\nimport { AppInfo, ArtifactCreated, Configuration, Platform, PlatformSpecificBuildOptions, Target } from \"../index\"\nimport { Packager } from \"../packager\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { expandMacro } from \"../util/macroExpander\"\nimport { WinPackager } from \"../winPackager\"\nimport { createUpdateInfoTasks, UpdateInfoFileTask, writeUpdateInfoFiles } from \"./updateInfoBuilder\"\nimport { resolveModule } from \"../util/resolve\"\n\nconst publishForPrWarning =\n \"There are serious security concerns with PUBLISH_FOR_PULL_REQUEST=true (see the CircleCI documentation (https://circleci.com/docs/1.0/fork-pr-builds/) for details)\" +\n \"\\nIf you have SSH keys, sensitive env vars or AWS credentials stored in your project settings and untrusted forks can make pull requests against your repo, then this option isn't for you.\"\n\nconst debug = _debug(\"electron-builder:publish\")\n\nfunction checkOptions(publishPolicy: any) {\n if (publishPolicy != null && publishPolicy !== \"onTag\" && publishPolicy !== \"onTagOrDraft\" && publishPolicy !== \"always\" && publishPolicy !== \"never\") {\n if (typeof publishPolicy === \"string\") {\n throw new InvalidConfigurationError(\n `Expected one of \"onTag\", \"onTagOrDraft\", \"always\", \"never\", but got ${JSON.stringify(\n publishPolicy\n )}.\\nPlease note that publish configuration should be specified under \"config\"`\n )\n }\n }\n}\n\nexport class PublishManager implements PublishContext {\n private readonly nameToPublisher = new Map<string, Publisher | null>()\n\n private readonly taskManager: AsyncTaskManager\n\n readonly isPublish: boolean = false\n\n readonly progress = (process.stdout as TtyWriteStream).isTTY ? new MultiProgress() : null\n\n private readonly updateFileWriteTask: Array<UpdateInfoFileTask> = []\n\n constructor(\n private readonly packager: Packager,\n private readonly publishOptions: PublishOptions,\n readonly cancellationToken: CancellationToken = packager.cancellationToken\n ) {\n checkOptions(publishOptions.publish)\n\n this.taskManager = new AsyncTaskManager(cancellationToken)\n\n const forcePublishForPr = process.env.PUBLISH_FOR_PULL_REQUEST === \"true\"\n if (!isPullRequest() || forcePublishForPr) {\n if (publishOptions.publish === undefined) {\n if (process.env.npm_lifecycle_event === \"release\") {\n publishOptions.publish = \"always\"\n } else {\n const tag = getCiTag()\n if (tag != null) {\n log.info({ reason: \"tag is defined\", tag }, \"artifacts will be published\")\n publishOptions.publish = \"onTag\"\n } else if (isCi) {\n log.info({ reason: \"CI detected\" }, \"artifacts will be published if draft release exists\")\n publishOptions.publish = \"onTagOrDraft\"\n }\n }\n }\n\n const publishPolicy = publishOptions.publish\n this.isPublish = publishPolicy != null && publishOptions.publish !== \"never\" && (publishPolicy !== \"onTag\" || getCiTag() != null)\n if (this.isPublish && forcePublishForPr) {\n log.warn(publishForPrWarning)\n }\n } else if (publishOptions.publish !== \"never\") {\n log.info(\n {\n reason: \"current build is a part of pull request\",\n solution: `set env PUBLISH_FOR_PULL_REQUEST to true to force code signing\\n${publishForPrWarning}`,\n },\n \"publishing will be skipped\"\n )\n }\n\n packager.onAfterPack(async event => {\n const packager = event.packager\n if (event.electronPlatformName === \"darwin\") {\n if (!event.targets.some(it => it.name === \"dmg\" || it.name === \"zip\")) {\n return\n }\n } else if (packager.platform === Platform.WINDOWS) {\n if (!event.targets.some(it => isSuitableWindowsTarget(it))) {\n return\n }\n }\n\n const publishConfig = await getAppUpdatePublishConfiguration(packager, event.arch, this.isPublish)\n if (publishConfig != null) {\n await writeFile(path.join(packager.getResourcesDir(event.appOutDir), \"app-update.yml\"), serializeToYaml(publishConfig))\n }\n })\n\n packager.onArtifactCreated(async event => {\n const publishConfiguration = event.publishConfig\n if (publishConfiguration == null) {\n this.taskManager.addTask(this.artifactCreatedWithoutExplicitPublishConfig(event))\n } else if (this.isPublish) {\n if (debug.enabled) {\n debug(`artifactCreated (isPublish: ${this.isPublish}): ${safeStringifyJson(event, new Set([\"packager\"]))},\\n publishConfig: ${safeStringifyJson(publishConfiguration)}`)\n }\n await this.scheduleUpload(publishConfiguration, event, this.getAppInfo(event.packager))\n }\n })\n }\n\n private getAppInfo(platformPackager: PlatformPackager<any> | null) {\n return platformPackager == null ? this.packager.appInfo : platformPackager.appInfo\n }\n\n async getGlobalPublishConfigurations(): Promise<Array<PublishConfiguration> | null> {\n const publishers = this.packager.config.publish\n return await resolvePublishConfigurations(publishers, null, this.packager, null, true)\n }\n\n async scheduleUpload(publishConfig: PublishConfiguration, event: UploadTask, appInfo: AppInfo): Promise<void> {\n if (publishConfig.provider === \"generic\") {\n return\n }\n\n const publisher = await this.getOrCreatePublisher(publishConfig, appInfo)\n if (publisher == null) {\n log.debug(\n {\n file: log.filePath(event.file),\n reason: \"publisher is null\",\n publishConfig: safeStringifyJson(publishConfig),\n },\n \"not published\"\n )\n return\n }\n\n const providerName = publisher.providerName\n if (this.publishOptions.publish === \"onTagOrDraft\" && getCiTag() == null && providerName !== \"bitbucket\" && providerName !== \"github\") {\n log.info({ file: log.filePath(event.file), reason: \"current build is not for a git tag\", publishPolicy: \"onTagOrDraft\" }, `not published to ${providerName}`)\n return\n }\n\n if (publishConfig.timeout) {\n event.timeout = publishConfig.timeout\n }\n\n this.taskManager.addTask(publisher.upload(event))\n }\n\n private async artifactCreatedWithoutExplicitPublishConfig(event: ArtifactCreated) {\n const platformPackager = event.packager\n const target = event.target\n const publishConfigs = await getPublishConfigs(platformPackager, target == null ? null : target.options, event.arch, this.isPublish)\n\n if (debug.enabled) {\n debug(`artifactCreated (isPublish: ${this.isPublish}): ${safeStringifyJson(event, new Set([\"packager\"]))},\\n publishConfigs: ${safeStringifyJson(publishConfigs)}`)\n }\n\n const eventFile = event.file\n if (publishConfigs == null) {\n if (this.isPublish) {\n log.debug({ file: eventFile, reason: \"no publish configs\" }, \"not published\")\n }\n return\n }\n\n if (this.isPublish) {\n for (const publishConfig of publishConfigs) {\n if (this.cancellationToken.cancelled) {\n log.debug({ file: event.file, reason: \"cancelled\" }, \"not published\")\n break\n }\n\n await this.scheduleUpload(publishConfig, event, this.getAppInfo(platformPackager))\n }\n }\n\n if (\n event.isWriteUpdateInfo &&\n target != null &&\n eventFile != null &&\n !this.cancellationToken.cancelled &&\n (platformPackager.platform !== Platform.WINDOWS || isSuitableWindowsTarget(target))\n ) {\n this.taskManager.addTask(createUpdateInfoTasks(event, publishConfigs).then(it => this.updateFileWriteTask.push(...it)))\n }\n }\n\n private async getOrCreatePublisher(publishConfig: PublishConfiguration, appInfo: AppInfo): Promise<Publisher | null> {\n // to not include token into cache key\n const providerCacheKey = safeStringifyJson(publishConfig)\n let publisher = this.nameToPublisher.get(providerCacheKey)\n if (publisher == null) {\n publisher = await createPublisher(this, appInfo.version, publishConfig, this.publishOptions, this.packager)\n this.nameToPublisher.set(providerCacheKey, publisher)\n log.info({ publisher: publisher!.toString() }, \"publishing\")\n }\n return publisher\n }\n\n // noinspection JSUnusedGlobalSymbols\n cancelTasks() {\n this.taskManager.cancelTasks()\n this.nameToPublisher.clear()\n }\n\n async awaitTasks(): Promise<void> {\n await this.taskManager.awaitTasks()\n\n const updateInfoFileTasks = this.updateFileWriteTask\n if (this.cancellationToken.cancelled || updateInfoFileTasks.length === 0) {\n return\n }\n\n await writeUpdateInfoFiles(updateInfoFileTasks, this.packager)\n await this.taskManager.awaitTasks()\n }\n}\n\nexport async function getAppUpdatePublishConfiguration(packager: PlatformPackager<any>, arch: Arch, errorIfCannot: boolean) {\n const publishConfigs = await getPublishConfigsForUpdateInfo(packager, await getPublishConfigs(packager, null, arch, errorIfCannot), arch)\n if (publishConfigs == null || publishConfigs.length === 0) {\n return null\n }\n\n const publishConfig = {\n ...publishConfigs[0],\n updaterCacheDirName: packager.appInfo.updaterCacheDirName,\n }\n\n if (packager.platform === Platform.WINDOWS && publishConfig.publisherName == null) {\n const winPackager = packager as WinPackager\n const publisherName = winPackager.isForceCodeSigningVerification ? await (await winPackager.signingManager.value).computedPublisherName.value : undefined\n if (publisherName != null) {\n publishConfig.publisherName = publisherName\n }\n }\n return publishConfig\n}\n\nexport async function getPublishConfigsForUpdateInfo(\n packager: PlatformPackager<any>,\n publishConfigs: Array<PublishConfiguration> | null,\n arch: Arch | null\n): Promise<Array<PublishConfiguration> | null> {\n if (publishConfigs === null) {\n return null\n }\n\n if (publishConfigs.length === 0) {\n log.debug(null, \"getPublishConfigsForUpdateInfo: no publishConfigs, detect using repository info\")\n // https://github.com/electron-userland/electron-builder/issues/925#issuecomment-261732378\n // default publish config is github, file should be generated regardless of publish state (user can test installer locally or manage the release process manually)\n const repositoryInfo = await packager.info.repositoryInfo\n debug(`getPublishConfigsForUpdateInfo: ${safeStringifyJson(repositoryInfo)}`)\n if (repositoryInfo != null && repositoryInfo.type === \"github\") {\n const resolvedPublishConfig = await getResolvedPublishConfig(packager, packager.info, { provider: repositoryInfo.type }, arch, false)\n if (resolvedPublishConfig != null) {\n debug(`getPublishConfigsForUpdateInfo: resolve to publish config ${safeStringifyJson(resolvedPublishConfig)}`)\n return [resolvedPublishConfig]\n }\n }\n }\n return publishConfigs\n}\n\nexport async function createPublisher(\n context: PublishContext,\n version: string,\n publishConfig: PublishConfiguration,\n options: PublishOptions,\n packager: Packager\n): Promise<Publisher | null> {\n if (debug.enabled) {\n debug(`Create publisher: ${safeStringifyJson(publishConfig)}`)\n }\n\n const provider = publishConfig.provider\n switch (provider) {\n case \"github\":\n return new GitHubPublisher(context, publishConfig as GithubOptions, version, options)\n\n case \"keygen\":\n return new KeygenPublisher(context, publishConfig as KeygenOptions, version)\n\n case \"snapStore\":\n return new SnapStorePublisher(context, publishConfig as SnapStoreOptions)\n\n case \"generic\":\n return null\n\n default: {\n const clazz = await requireProviderClass(provider, packager)\n return clazz == null ? null : new clazz(context, publishConfig)\n }\n }\n}\n\nasync function requireProviderClass(provider: string, packager: Packager): Promise<any | null> {\n switch (provider) {\n case \"github\":\n return GitHubPublisher\n\n case \"generic\":\n return null\n\n case \"keygen\":\n return KeygenPublisher\n\n case \"s3\":\n return S3Publisher\n\n case \"snapStore\":\n return SnapStorePublisher\n\n case \"spaces\":\n return SpacesPublisher\n\n case \"bitbucket\":\n return BitbucketPublisher\n\n default: {\n const extensions = [\"mjs\", \"js\", \"cjs\"]\n const template = `electron-publisher-${provider}`\n const name = (ext: string) => `${template}.${ext}`\n\n const validPublisherFiles = extensions.map(ext => path.join(packager.buildResourcesDir, name(ext)))\n for (const potentialFile of validPublisherFiles) {\n if (await exists(potentialFile)) {\n const module: any = await resolveModule(packager.appInfo.type, potentialFile)\n return module.default || module\n }\n }\n log.error({ path: log.filePath(packager.buildResourcesDir), template, extensionsChecked: extensions }, \"unable to find publish provider in build resources\")\n throw new InvalidConfigurationError(`Cannot find module for publisher \"${provider}\" with any extension: ${extensions.join(\", \")}`)\n }\n }\n}\n\nexport function computeDownloadUrl(publishConfiguration: PublishConfiguration, fileName: string | null, packager: PlatformPackager<any>) {\n if (publishConfiguration.provider === \"generic\") {\n const baseUrlString = (publishConfiguration as GenericServerOptions).url\n if (fileName == null) {\n return baseUrlString\n }\n\n const baseUrl = url.parse(baseUrlString)\n return url.format({ ...(baseUrl as url.UrlObject), pathname: path.posix.resolve(baseUrl.pathname || \"/\", encodeURI(fileName)) })\n }\n\n let baseUrl\n if (publishConfiguration.provider === \"github\") {\n const gh = publishConfiguration as GithubOptions\n baseUrl = `${githubUrl(gh)}/${gh.owner}/${gh.repo}/releases/download/${gh.vPrefixedTagName === false ? \"\" : \"v\"}${packager.appInfo.version}`\n } else {\n baseUrl = getS3LikeProviderBaseUrl(publishConfiguration)\n }\n\n if (fileName == null) {\n return baseUrl\n }\n return `${baseUrl}/${encodeURI(fileName)}`\n}\n\nexport async function getPublishConfigs(\n platformPackager: PlatformPackager<any>,\n targetSpecificOptions: PlatformSpecificBuildOptions | Nullish,\n arch: Arch | null,\n errorIfCannot: boolean\n): Promise<Array<PublishConfiguration> | null> {\n let publishers\n\n // check build.nsis (target)\n if (targetSpecificOptions != null) {\n publishers = targetSpecificOptions.publish\n // if explicitly set to null - do not publish\n if (publishers === null) {\n return null\n }\n }\n\n // check build.win (platform)\n if (publishers == null) {\n publishers = platformPackager.platformSpecificBuildOptions.publish\n if (publishers === null) {\n return null\n }\n }\n\n if (publishers == null) {\n publishers = platformPackager.config.publish\n if (publishers === null) {\n return null\n }\n }\n return await resolvePublishConfigurations(publishers, platformPackager, platformPackager.info, arch, errorIfCannot)\n}\n\nasync function resolvePublishConfigurations(\n publishers: any,\n platformPackager: PlatformPackager<any> | null,\n packager: Packager,\n arch: Arch | null,\n errorIfCannot: boolean\n): Promise<Array<PublishConfiguration> | null> {\n if (publishers == null) {\n let serviceName: PublishProvider | null = null\n if (!isEmptyOrSpaces(process.env.GH_TOKEN) || !isEmptyOrSpaces(process.env.GITHUB_TOKEN)) {\n serviceName = \"github\"\n } else if (!isEmptyOrSpaces(process.env.KEYGEN_TOKEN)) {\n serviceName = \"keygen\"\n } else if (!isEmptyOrSpaces(process.env.BITBUCKET_TOKEN)) {\n serviceName = \"bitbucket\"\n } else if (!isEmptyOrSpaces(process.env.BT_TOKEN)) {\n throw new Error(\n \"Bintray has been sunset and is no longer supported by electron-builder. Ref: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/\"\n )\n }\n\n if (serviceName != null) {\n log.debug(null, `detect ${serviceName} as publish provider`)\n return [(await getResolvedPublishConfig(platformPackager, packager, { provider: serviceName }, arch, errorIfCannot))!]\n }\n }\n\n if (publishers == null) {\n return []\n }\n\n debug(`Explicit publish provider: ${safeStringifyJson(publishers)}`)\n return (await Promise.all(\n asArray(publishers).map(it => getResolvedPublishConfig(platformPackager, packager, typeof it === \"string\" ? { provider: it } : it, arch, errorIfCannot))\n )) as PublishConfiguration[]\n}\n\nfunction isSuitableWindowsTarget(target: Target) {\n if (target.name === \"appx\" && target.options != null && (target.options as any).electronUpdaterAware) {\n return true\n }\n return target.name === \"nsis\" || target.name.startsWith(\"nsis-\")\n}\n\nfunction expandPublishConfig(options: any, platformPackager: PlatformPackager<any> | null, packager: Packager, arch: Arch | null): void {\n for (const name of Object.keys(options)) {\n const value = options[name]\n if (typeof value === \"string\") {\n const archValue = arch == null ? null : Arch[arch]\n const expanded = platformPackager == null ? expandMacro(value, archValue, packager.appInfo) : platformPackager.expandMacro(value, archValue)\n if (expanded !== value) {\n options[name] = expanded\n }\n }\n }\n}\n\nfunction isDetectUpdateChannel(platformSpecificConfiguration: PlatformSpecificBuildOptions | null, configuration: Configuration) {\n const value = platformSpecificConfiguration == null ? null : platformSpecificConfiguration.detectUpdateChannel\n return value == null ? configuration.detectUpdateChannel !== false : value\n}\n\nasync function getResolvedPublishConfig(\n platformPackager: PlatformPackager<any> | null,\n packager: Packager,\n options: PublishConfiguration,\n arch: Arch | null,\n errorIfCannot: boolean\n): Promise<PublishConfiguration | GithubOptions | BitbucketOptions | null> {\n options = { ...options }\n expandPublishConfig(options, platformPackager, packager, arch)\n\n let channelFromAppVersion: string | null = null\n if (\n (options as GenericServerOptions).channel == null &&\n isDetectUpdateChannel(platformPackager == null ? null : platformPackager.platformSpecificBuildOptions, packager.config)\n ) {\n channelFromAppVersion = packager.appInfo.channel\n }\n\n const provider = options.provider\n if (provider === \"generic\") {\n const o = options as GenericServerOptions\n if (o.url == null) {\n throw new InvalidConfigurationError(`Please specify \"url\" for \"generic\" update server`)\n }\n\n if (channelFromAppVersion != null) {\n ;(o as any).channel = channelFromAppVersion\n }\n return options\n }\n\n const providerClass = await requireProviderClass(options.provider, packager)\n if (providerClass != null && providerClass.checkAndResolveOptions != null) {\n await providerClass.checkAndResolveOptions(options, channelFromAppVersion, errorIfCannot)\n return options\n }\n\n if (provider === \"keygen\") {\n return {\n ...options,\n platform: platformPackager?.platform.name,\n } as KeygenOptions\n }\n\n const isGithub = provider === \"github\"\n if (!isGithub && provider !== \"bitbucket\") {\n return options\n }\n\n let owner = isGithub ? (options as GithubOptions).owner : (options as BitbucketOptions).owner\n let project = isGithub ? (options as GithubOptions).repo : (options as BitbucketOptions).slug\n\n if (isGithub && owner == null && project != null) {\n const index = project.indexOf(\"/\")\n if (index > 0) {\n const repo = project\n project = repo.substring(0, index)\n owner = repo.substring(index + 1)\n }\n }\n\n async function getInfo() {\n const info = await packager.repositoryInfo\n if (info != null) {\n return info\n }\n\n const message = `Cannot detect repository by .git/config. Please specify \"repository\" in the package.json (https://docs.npmjs.com/files/package.json#repository).\\nPlease see https://electron.build/publish`\n if (errorIfCannot) {\n throw new Error(message)\n } else {\n log.warn(message)\n return null\n }\n }\n\n if (!owner || !project) {\n log.debug({ reason: \"owner or project is not specified explicitly\", provider, owner, project }, \"calling getInfo\")\n const info = await getInfo()\n if (info == null) {\n return null\n }\n\n if (!owner) {\n owner = info.user\n }\n if (!project) {\n project = info.project\n }\n }\n\n if (isGithub) {\n if ((options as GithubOptions).token != null && !(options as GithubOptions).private) {\n log.warn('\"token\" specified in the github publish options. It should be used only for [setFeedURL](module:electron-updater/out/AppUpdater.AppUpdater+setFeedURL).')\n }\n //tslint:disable-next-line:no-object-literal-type-assertion\n return { owner, repo: project, ...options } as GithubOptions\n } else {\n //tslint:disable-next-line:no-object-literal-type-assertion\n return { owner, slug: project, ...options } as BitbucketOptions\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PublishManager.js","sourceRoot":"","sources":["../../src/publish/PublishManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, asArray, AsyncTaskManager, exists, InvalidConfigurationError, isEmptyOrSpaces, isPullRequest, log, safeStringifyJson, serializeToYaml } from \"builder-util\"\nimport {\n BitbucketOptions,\n CancellationToken,\n GenericServerOptions,\n getS3LikeProviderBaseUrl,\n GithubOptions,\n githubTagPrefix,\n githubUrl,\n GitlabOptions,\n KeygenOptions,\n Nullish,\n PublishConfiguration,\n PublishProvider,\n SnapStoreOptions,\n} from \"builder-util-runtime\"\nimport _debug from \"debug\"\nimport {\n BitbucketPublisher,\n getCiTag,\n GitHubPublisher,\n GitlabPublisher,\n KeygenPublisher,\n PublishContext,\n Publisher,\n PublishOptions,\n S3Publisher,\n SnapStorePublisher,\n SpacesPublisher,\n UploadTask,\n} from \"electron-publish\"\nimport { MultiProgress } from \"electron-publish/out/multiProgress\"\nimport { writeFile } from \"fs/promises\"\nimport * as isCi from \"ci-info\"\nimport * as path from \"path\"\nimport { WriteStream as TtyWriteStream } from \"tty\"\nimport * as url from \"url\"\nimport { AppInfo, ArtifactCreated, Configuration, Platform, PlatformSpecificBuildOptions, Target } from \"../index\"\nimport { Packager } from \"../packager\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { expandMacro } from \"../util/macroExpander\"\nimport { WinPackager } from \"../winPackager\"\nimport { createUpdateInfoTasks, UpdateInfoFileTask, writeUpdateInfoFiles } from \"./updateInfoBuilder\"\nimport { resolveModule } from \"../util/resolve\"\n\nconst publishForPrWarning =\n \"There are serious security concerns with PUBLISH_FOR_PULL_REQUEST=true (see the CircleCI documentation (https://circleci.com/docs/1.0/fork-pr-builds/) for details)\" +\n \"\\nIf you have SSH keys, sensitive env vars or AWS credentials stored in your project settings and untrusted forks can make pull requests against your repo, then this option isn't for you.\"\n\nconst debug = _debug(\"electron-builder:publish\")\n\nfunction checkOptions(publishPolicy: any) {\n if (publishPolicy != null && publishPolicy !== \"onTag\" && publishPolicy !== \"onTagOrDraft\" && publishPolicy !== \"always\" && publishPolicy !== \"never\") {\n if (typeof publishPolicy === \"string\") {\n throw new InvalidConfigurationError(\n `Expected one of \"onTag\", \"onTagOrDraft\", \"always\", \"never\", but got ${JSON.stringify(\n publishPolicy\n )}.\\nPlease note that publish configuration should be specified under \"config\"`\n )\n }\n }\n}\n\nexport class PublishManager implements PublishContext {\n private readonly nameToPublisher = new Map<string, Publisher | null>()\n\n private readonly taskManager: AsyncTaskManager\n\n readonly isPublish: boolean = false\n\n readonly progress = (process.stdout as TtyWriteStream).isTTY ? new MultiProgress() : null\n\n private readonly updateFileWriteTask: Array<UpdateInfoFileTask> = []\n\n constructor(\n private readonly packager: Packager,\n private readonly publishOptions: PublishOptions,\n readonly cancellationToken: CancellationToken = packager.cancellationToken\n ) {\n checkOptions(publishOptions.publish)\n\n this.taskManager = new AsyncTaskManager(cancellationToken)\n\n const forcePublishForPr = process.env.PUBLISH_FOR_PULL_REQUEST === \"true\"\n if (!isPullRequest() || forcePublishForPr) {\n if (publishOptions.publish === undefined) {\n if (process.env.npm_lifecycle_event === \"release\") {\n publishOptions.publish = \"always\"\n } else {\n const tag = getCiTag()\n if (tag != null) {\n log.info({ reason: \"tag is defined\", tag }, \"artifacts will be published\")\n publishOptions.publish = \"onTag\"\n } else if (isCi) {\n log.info({ reason: \"CI detected\" }, \"artifacts will be published if draft release exists\")\n publishOptions.publish = \"onTagOrDraft\"\n }\n }\n }\n\n const publishPolicy = publishOptions.publish\n this.isPublish = publishPolicy != null && publishOptions.publish !== \"never\" && (publishPolicy !== \"onTag\" || getCiTag() != null)\n if (this.isPublish && forcePublishForPr) {\n log.warn(publishForPrWarning)\n }\n } else if (publishOptions.publish !== \"never\") {\n log.info(\n {\n reason: \"current build is a part of pull request\",\n solution: `set env PUBLISH_FOR_PULL_REQUEST to true to force code signing\\n${publishForPrWarning}`,\n },\n \"publishing will be skipped\"\n )\n }\n\n packager.onAfterPack(async event => {\n const packager = event.packager\n if (event.electronPlatformName === \"darwin\") {\n if (!event.targets.some(it => it.name === \"dmg\" || it.name === \"zip\")) {\n return\n }\n } else if (packager.platform === Platform.WINDOWS) {\n if (!event.targets.some(it => isSuitableWindowsTarget(it))) {\n return\n }\n }\n\n const publishConfig = await getAppUpdatePublishConfiguration(packager, event.arch, this.isPublish)\n if (publishConfig != null) {\n await writeFile(path.join(packager.getResourcesDir(event.appOutDir), \"app-update.yml\"), serializeToYaml(publishConfig))\n }\n })\n\n packager.onArtifactCreated(async event => {\n const publishConfiguration = event.publishConfig\n if (publishConfiguration == null) {\n this.taskManager.addTask(this.artifactCreatedWithoutExplicitPublishConfig(event))\n } else if (this.isPublish) {\n if (debug.enabled) {\n debug(`artifactCreated (isPublish: ${this.isPublish}): ${safeStringifyJson(event, new Set([\"packager\"]))},\\n publishConfig: ${safeStringifyJson(publishConfiguration)}`)\n }\n await this.scheduleUpload(publishConfiguration, event, this.getAppInfo(event.packager))\n }\n })\n }\n\n private getAppInfo(platformPackager: PlatformPackager<any> | null) {\n return platformPackager == null ? this.packager.appInfo : platformPackager.appInfo\n }\n\n async getGlobalPublishConfigurations(): Promise<Array<PublishConfiguration> | null> {\n const publishers = this.packager.config.publish\n return await resolvePublishConfigurations(publishers, null, this.packager, null, true)\n }\n\n async scheduleUpload(publishConfig: PublishConfiguration, event: UploadTask, appInfo: AppInfo): Promise<void> {\n if (publishConfig.provider === \"generic\") {\n return\n }\n\n const publisher = await this.getOrCreatePublisher(publishConfig, appInfo)\n if (publisher == null) {\n log.debug(\n {\n file: log.filePath(event.file),\n reason: \"publisher is null\",\n publishConfig: safeStringifyJson(publishConfig),\n },\n \"not published\"\n )\n return\n }\n\n const providerName = publisher.providerName\n if (this.publishOptions.publish === \"onTagOrDraft\" && getCiTag() == null && providerName !== \"bitbucket\" && providerName !== \"github\") {\n log.info({ file: log.filePath(event.file), reason: \"current build is not for a git tag\", publishPolicy: \"onTagOrDraft\" }, `not published to ${providerName}`)\n return\n }\n\n if (publishConfig.timeout) {\n event.timeout = publishConfig.timeout\n }\n\n this.taskManager.addTask(publisher.upload(event))\n }\n\n private async artifactCreatedWithoutExplicitPublishConfig(event: ArtifactCreated) {\n const platformPackager = event.packager\n const target = event.target\n const publishConfigs = await getPublishConfigs(platformPackager, target == null ? null : target.options, event.arch, this.isPublish)\n\n if (debug.enabled) {\n debug(`artifactCreated (isPublish: ${this.isPublish}): ${safeStringifyJson(event, new Set([\"packager\"]))},\\n publishConfigs: ${safeStringifyJson(publishConfigs)}`)\n }\n\n const eventFile = event.file\n if (publishConfigs == null) {\n if (this.isPublish) {\n log.debug({ file: eventFile, reason: \"no publish configs\" }, \"not published\")\n }\n return\n }\n\n if (this.isPublish) {\n for (const publishConfig of publishConfigs) {\n if (this.cancellationToken.cancelled) {\n log.debug({ file: event.file, reason: \"cancelled\" }, \"not published\")\n break\n }\n\n await this.scheduleUpload(publishConfig, event, this.getAppInfo(platformPackager))\n }\n }\n\n if (\n event.isWriteUpdateInfo &&\n target != null &&\n eventFile != null &&\n !this.cancellationToken.cancelled &&\n (platformPackager.platform !== Platform.WINDOWS || isSuitableWindowsTarget(target))\n ) {\n this.taskManager.addTask(createUpdateInfoTasks(event, publishConfigs).then(it => this.updateFileWriteTask.push(...it)))\n }\n }\n\n private async getOrCreatePublisher(publishConfig: PublishConfiguration, appInfo: AppInfo): Promise<Publisher | null> {\n // to not include token into cache key\n const providerCacheKey = safeStringifyJson(publishConfig)\n let publisher = this.nameToPublisher.get(providerCacheKey)\n if (publisher == null) {\n publisher = await createPublisher(this, appInfo.version, publishConfig, this.publishOptions, this.packager)\n this.nameToPublisher.set(providerCacheKey, publisher)\n log.info({ publisher: publisher!.toString() }, \"publishing\")\n }\n return publisher\n }\n\n // noinspection JSUnusedGlobalSymbols\n cancelTasks() {\n this.taskManager.cancelTasks()\n this.nameToPublisher.clear()\n }\n\n async awaitTasks(): Promise<void> {\n await this.taskManager.awaitTasks()\n\n const updateInfoFileTasks = this.updateFileWriteTask\n if (this.cancellationToken.cancelled || updateInfoFileTasks.length === 0) {\n return\n }\n\n await writeUpdateInfoFiles(updateInfoFileTasks, this.packager)\n await this.taskManager.awaitTasks()\n }\n}\n\nexport async function getAppUpdatePublishConfiguration(packager: PlatformPackager<any>, arch: Arch, errorIfCannot: boolean) {\n const publishConfigs = await getPublishConfigsForUpdateInfo(packager, await getPublishConfigs(packager, null, arch, errorIfCannot), arch)\n if (publishConfigs == null || publishConfigs.length === 0) {\n return null\n }\n\n const publishConfig = {\n ...publishConfigs[0],\n updaterCacheDirName: packager.appInfo.updaterCacheDirName,\n }\n\n if (packager.platform === Platform.WINDOWS && publishConfig.publisherName == null) {\n const winPackager = packager as WinPackager\n const publisherName = winPackager.isForceCodeSigningVerification ? await (await winPackager.signingManager.value).computedPublisherName.value : undefined\n if (publisherName != null) {\n publishConfig.publisherName = publisherName\n }\n }\n return publishConfig\n}\n\nexport async function getPublishConfigsForUpdateInfo(\n packager: PlatformPackager<any>,\n publishConfigs: Array<PublishConfiguration> | null,\n arch: Arch | null\n): Promise<Array<PublishConfiguration> | null> {\n if (publishConfigs === null) {\n return null\n }\n\n if (publishConfigs.length === 0) {\n log.debug(null, \"getPublishConfigsForUpdateInfo: no publishConfigs, detect using repository info\")\n // https://github.com/electron-userland/electron-builder/issues/925#issuecomment-261732378\n // default publish config is github, file should be generated regardless of publish state (user can test installer locally or manage the release process manually)\n const repositoryInfo = await packager.info.repositoryInfo\n debug(`getPublishConfigsForUpdateInfo: ${safeStringifyJson(repositoryInfo)}`)\n if (repositoryInfo != null && repositoryInfo.type === \"github\") {\n const resolvedPublishConfig = await getResolvedPublishConfig(packager, packager.info, { provider: repositoryInfo.type }, arch, false)\n if (resolvedPublishConfig != null) {\n debug(`getPublishConfigsForUpdateInfo: resolve to publish config ${safeStringifyJson(resolvedPublishConfig)}`)\n return [resolvedPublishConfig]\n }\n }\n }\n return publishConfigs\n}\n\nexport async function createPublisher(\n context: PublishContext,\n version: string,\n publishConfig: PublishConfiguration,\n options: PublishOptions,\n packager: Packager\n): Promise<Publisher | null> {\n if (debug.enabled) {\n debug(`Create publisher: ${safeStringifyJson(publishConfig)}`)\n }\n\n const provider = publishConfig.provider\n switch (provider) {\n case \"github\":\n return new GitHubPublisher(context, publishConfig as GithubOptions, version, options)\n\n case \"gitlab\":\n return new GitlabPublisher(context, publishConfig as GitlabOptions, version)\n\n case \"keygen\":\n return new KeygenPublisher(context, publishConfig as KeygenOptions, version)\n\n case \"snapStore\":\n return new SnapStorePublisher(context, publishConfig as SnapStoreOptions)\n\n case \"generic\":\n return null\n\n default: {\n const clazz = await requireProviderClass(provider, packager)\n return clazz == null ? null : new clazz(context, publishConfig)\n }\n }\n}\n\nasync function requireProviderClass(provider: string, packager: Packager): Promise<any | null> {\n switch (provider) {\n case \"github\":\n return GitHubPublisher\n\n case \"gitlab\":\n return GitlabPublisher\n\n case \"generic\":\n return null\n\n case \"keygen\":\n return KeygenPublisher\n\n case \"s3\":\n return S3Publisher\n\n case \"snapStore\":\n return SnapStorePublisher\n\n case \"spaces\":\n return SpacesPublisher\n\n case \"bitbucket\":\n return BitbucketPublisher\n\n default: {\n const extensions = [\"mjs\", \"js\", \"cjs\"]\n const template = `electron-publisher-${provider}`\n const name = (ext: string) => `${template}.${ext}`\n\n const validPublisherFiles = extensions.map(ext => path.join(packager.buildResourcesDir, name(ext)))\n for (const potentialFile of validPublisherFiles) {\n if (await exists(potentialFile)) {\n const module: any = await resolveModule(packager.appInfo.type, potentialFile)\n return module.default || module\n }\n }\n log.error({ path: log.filePath(packager.buildResourcesDir), template, extensionsChecked: extensions }, \"unable to find publish provider in build resources\")\n throw new InvalidConfigurationError(`Cannot find module for publisher \"${provider}\" with any extension: ${extensions.join(\", \")}`)\n }\n }\n}\n\nexport function computeDownloadUrl(publishConfiguration: PublishConfiguration, fileName: string | null, packager: PlatformPackager<any>) {\n if (publishConfiguration.provider === \"generic\") {\n const baseUrlString = (publishConfiguration as GenericServerOptions).url\n if (fileName == null) {\n return baseUrlString\n }\n\n const baseUrl = url.parse(baseUrlString)\n return url.format({ ...(baseUrl as url.UrlObject), pathname: path.posix.resolve(baseUrl.pathname || \"/\", encodeURI(fileName)) })\n }\n\n let baseUrl\n if (publishConfiguration.provider === \"github\") {\n const gh = publishConfiguration as GithubOptions\n baseUrl = `${githubUrl(gh)}/${gh.owner}/${gh.repo}/releases/download/${githubTagPrefix(gh)}${packager.appInfo.version}`\n } else {\n baseUrl = getS3LikeProviderBaseUrl(publishConfiguration)\n }\n\n if (fileName == null) {\n return baseUrl\n }\n return `${baseUrl}/${encodeURI(fileName)}`\n}\n\nexport async function getPublishConfigs(\n platformPackager: PlatformPackager<any>,\n targetSpecificOptions: PlatformSpecificBuildOptions | Nullish,\n arch: Arch | null,\n errorIfCannot: boolean\n): Promise<Array<PublishConfiguration> | null> {\n let publishers\n\n // check build.nsis (target)\n if (targetSpecificOptions != null) {\n publishers = targetSpecificOptions.publish\n // if explicitly set to null - do not publish\n if (publishers === null) {\n return null\n }\n }\n\n // check build.win (platform)\n if (publishers == null) {\n publishers = platformPackager.platformSpecificBuildOptions.publish\n if (publishers === null) {\n return null\n }\n }\n\n if (publishers == null) {\n publishers = platformPackager.config.publish\n if (publishers === null) {\n return null\n }\n }\n return await resolvePublishConfigurations(publishers, platformPackager, platformPackager.info, arch, errorIfCannot)\n}\n\nasync function resolvePublishConfigurations(\n publishers: any,\n platformPackager: PlatformPackager<any> | null,\n packager: Packager,\n arch: Arch | null,\n errorIfCannot: boolean\n): Promise<Array<PublishConfiguration> | null> {\n if (publishers == null) {\n let serviceName: PublishProvider | null = null\n if (!isEmptyOrSpaces(process.env.GH_TOKEN) || !isEmptyOrSpaces(process.env.GITHUB_TOKEN)) {\n serviceName = \"github\"\n } else if (!isEmptyOrSpaces(process.env.GITLAB_TOKEN)) {\n serviceName = \"gitlab\"\n } else if (!isEmptyOrSpaces(process.env.KEYGEN_TOKEN)) {\n serviceName = \"keygen\"\n } else if (!isEmptyOrSpaces(process.env.BITBUCKET_TOKEN)) {\n serviceName = \"bitbucket\"\n } else if (!isEmptyOrSpaces(process.env.BT_TOKEN)) {\n throw new Error(\n \"Bintray has been sunset and is no longer supported by electron-builder. Ref: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/\"\n )\n }\n\n if (serviceName != null) {\n log.debug(null, `detect ${serviceName} as publish provider`)\n return [(await getResolvedPublishConfig(platformPackager, packager, { provider: serviceName }, arch, errorIfCannot))!]\n }\n }\n\n if (publishers == null) {\n return []\n }\n\n debug(`Explicit publish provider: ${safeStringifyJson(publishers)}`)\n return (await Promise.all(\n asArray(publishers).map(it => getResolvedPublishConfig(platformPackager, packager, typeof it === \"string\" ? { provider: it } : it, arch, errorIfCannot))\n )) as PublishConfiguration[]\n}\n\nfunction isSuitableWindowsTarget(target: Target) {\n if (target.name === \"appx\" && target.options != null && (target.options as any).electronUpdaterAware) {\n return true\n }\n return target.name === \"nsis\" || target.name.startsWith(\"nsis-\")\n}\n\nfunction expandPublishConfig(options: any, platformPackager: PlatformPackager<any> | null, packager: Packager, arch: Arch | null): void {\n for (const name of Object.keys(options)) {\n const value = options[name]\n if (typeof value === \"string\") {\n const archValue = arch == null ? null : Arch[arch]\n const expanded = platformPackager == null ? expandMacro(value, archValue, packager.appInfo) : platformPackager.expandMacro(value, archValue)\n if (expanded !== value) {\n options[name] = expanded\n }\n }\n }\n}\n\nfunction isDetectUpdateChannel(platformSpecificConfiguration: PlatformSpecificBuildOptions | null, configuration: Configuration) {\n const value = platformSpecificConfiguration == null ? null : platformSpecificConfiguration.detectUpdateChannel\n return value == null ? configuration.detectUpdateChannel !== false : value\n}\n\nasync function getResolvedPublishConfig(\n platformPackager: PlatformPackager<any> | null,\n packager: Packager,\n options: PublishConfiguration,\n arch: Arch | null,\n errorIfCannot: boolean\n): Promise<PublishConfiguration | GithubOptions | BitbucketOptions | GitlabOptions | null> {\n options = { ...options }\n expandPublishConfig(options, platformPackager, packager, arch)\n\n let channelFromAppVersion: string | null = null\n if (\n (options as GenericServerOptions).channel == null &&\n isDetectUpdateChannel(platformPackager == null ? null : platformPackager.platformSpecificBuildOptions, packager.config)\n ) {\n channelFromAppVersion = packager.appInfo.channel\n }\n\n const provider = options.provider\n if (provider === \"generic\") {\n const o = options as GenericServerOptions\n if (o.url == null) {\n throw new InvalidConfigurationError(`Please specify \"url\" for \"generic\" update server`)\n }\n\n if (channelFromAppVersion != null) {\n ;(o as any).channel = channelFromAppVersion\n }\n return options\n }\n\n const providerClass = await requireProviderClass(options.provider, packager)\n if (providerClass != null && providerClass.checkAndResolveOptions != null) {\n await providerClass.checkAndResolveOptions(options, channelFromAppVersion, errorIfCannot)\n return options\n }\n\n if (provider === \"keygen\") {\n return {\n ...options,\n platform: platformPackager?.platform.name,\n } as KeygenOptions\n }\n\n const isGithub = provider === \"github\"\n if (!isGithub && provider !== \"bitbucket\") {\n return options\n }\n\n let owner = isGithub ? (options as GithubOptions).owner : (options as BitbucketOptions).owner\n let project = isGithub ? (options as GithubOptions).repo : (options as BitbucketOptions).slug\n\n if (isGithub && owner == null && project != null) {\n const index = project.indexOf(\"/\")\n if (index > 0) {\n const repo = project\n project = repo.substring(0, index)\n owner = repo.substring(index + 1)\n }\n }\n\n async function getInfo() {\n const info = await packager.repositoryInfo\n if (info != null) {\n return info\n }\n\n const message = `Cannot detect repository by .git/config. Please specify \"repository\" in the package.json (https://docs.npmjs.com/files/package.json#repository).\\nPlease see https://electron.build/publish`\n if (errorIfCannot) {\n throw new Error(message)\n } else {\n log.warn(message)\n return null\n }\n }\n\n if (!owner || !project) {\n log.debug({ reason: \"owner or project is not specified explicitly\", provider, owner, project }, \"calling getInfo\")\n const info = await getInfo()\n if (info == null) {\n return null\n }\n\n if (!owner) {\n owner = info.user\n }\n if (!project) {\n project = info.project\n }\n }\n\n if (isGithub) {\n if ((options as GithubOptions).token != null && !(options as GithubOptions).private) {\n log.warn('\"token\" specified in the github publish options. It should be used only for [setFeedURL](module:electron-updater/out/AppUpdater.AppUpdater+setFeedURL).')\n }\n //tslint:disable-next-line:no-object-literal-type-assertion\n return { owner, repo: project, ...options } as GithubOptions\n } else {\n //tslint:disable-next-line:no-object-literal-type-assertion\n return { owner, slug: project, ...options } as BitbucketOptions\n }\n}\n"]}
|
|
@@ -146,12 +146,13 @@ function validateFileSet(fileSet) {
|
|
|
146
146
|
async function computeNodeModuleFileSets(platformPackager, mainMatcher) {
|
|
147
147
|
const projectDir = platformPackager.info.projectDir;
|
|
148
148
|
const appDir = platformPackager.info.appDir;
|
|
149
|
-
|
|
149
|
+
const pm = (0, node_module_collector_1.detectPackageManager)(appDir === projectDir ? [appDir] : [appDir, projectDir]);
|
|
150
|
+
let deps = await (0, node_module_collector_1.getNodeModules)(pm, appDir, platformPackager.info.tempDirManager);
|
|
150
151
|
if (projectDir !== appDir && deps.length === 0) {
|
|
151
152
|
const packageJson = require(path.join(appDir, "package.json"));
|
|
152
153
|
if (Object.keys(packageJson.dependencies || {}).length > 0) {
|
|
153
154
|
builder_util_1.log.debug({ projectDir, appDir }, "no node_modules in app dir, trying to find in project dir");
|
|
154
|
-
deps = await (0, node_module_collector_1.getNodeModules)(projectDir, platformPackager.info.tempDirManager);
|
|
155
|
+
deps = await (0, node_module_collector_1.getNodeModules)(pm, projectDir, platformPackager.info.tempDirManager);
|
|
155
156
|
}
|
|
156
157
|
}
|
|
157
158
|
builder_util_1.log.debug({ nodeModules: deps }, "collected node modules");
|