diff --git a/.changeset/chatty-trains-agree.md b/.changeset/chatty-trains-agree.md
new file mode 100644
index 00000000000..051bce99179
--- /dev/null
+++ b/.changeset/chatty-trains-agree.md
@@ -0,0 +1,8 @@
+---
+"app-builder-lib": minor
+"builder-util-runtime": minor
+"builder-util": minor
+"electron-publish": minor
+---
+
+feat: Adding timeout to publisher config for api requests and uploads
diff --git a/docs/api/electron-builder.md b/docs/api/electron-builder.md
index 9f7660a8e19..2d133713a38 100644
--- a/docs/api/electron-builder.md
+++ b/docs/api/electron-builder.md
@@ -1304,6 +1304,7 @@ return path.join(target.outDir, GitHub options.__${target.name}-${getArtifactArchName(arc
fileContent module:global.Buffer | “undefined”arch Arch | “undefined”safeArtifactName String | “undefined”timeout Number | “undefined”HttpPublisher ⇐
diff --git a/docs/configuration/publish.md b/docs/configuration/publish.md
index 3c2b8535a70..da1be2dd36b 100644
--- a/docs/configuration/publish.md
+++ b/docs/configuration/publish.md
@@ -132,6 +132,9 @@ In all publish options File Macros are
PublisherrequestHeaders module:http.OutgoingHttpHeaders - Any custom request headerstimeout = 60000 Number | “undefined” - Request timeout in milliseconds. (Default is 2 minutes; O is ignored)GithubOptions
GH_TOKEN environment variable.
requestHeaders module:http.OutgoingHttpHeaders - Any custom request headers
timeout = 60000 Number | “undefined” - Request timeout in milliseconds. (Default is 2 minutes; O is ignored)
Snap Store options.
@@ -196,6 +202,9 @@ DefineGH_TOKEN environment variable.
requestHeaders module:http.OutgoingHttpHeaders - Any custom request headers
timeout = 60000 Number | “undefined” - Request timeout in milliseconds. (Default is 2 minutes; O is ignored)
DigitalOcean Spaces options.
@@ -228,6 +237,9 @@ Define KEYGEN_TOKEN environment variable.
requestHeaders module:http.OutgoingHttpHeaders - Any custom request headers
timeout = 60000 Number | “undefined” - Request timeout in milliseconds. (Default is 2 minutes; O is ignored)
Bitbucket options.
@@ -256,6 +268,9 @@ Define BITBUCKET_TOKEN environment variable.
requestHeaders module:http.OutgoingHttpHeaders - Any custom request headers
timeout = 60000 Number | “undefined” - Request timeout in milliseconds. (Default is 2 minutes; O is ignored)
Amazon S3 options.
diff --git a/package.json b/package.json
index a3cb4810674..52a29498dee 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
"generate-changeset": "pnpm changeset",
"generate-docs": "pnpm compile && pnpm jsdoc && pnpm jsdoc2md2html",
"generate-schema": "typescript-json-schema packages/app-builder-lib/tsconfig-scheme.json Configuration --out packages/app-builder-lib/scheme.json --noExtraProps --useTypeOfKeyword --strictNullChecks --required && node ./scripts/fix-schema.js",
+ "generate-all": "pnpm generate-schema && pnpm generate-docs && pnpm prettier",
"ci:test": "node ./test/out/helpers/runTests.js",
"ci:version": "pnpm changelog && changeset version && node scripts/update-package-version-export.js && pnpm run generate-schema && pnpm run generate-docs && pnpm run prettier && git add .",
"ci:publish": "pnpm compile && pnpm publish -r && changeset tag",
diff --git a/packages/app-builder-lib/scheme.json b/packages/app-builder-lib/scheme.json
index dee2e547e70..dbc5d32e200 100644
--- a/packages/app-builder-lib/scheme.json
+++ b/packages/app-builder-lib/scheme.json
@@ -381,6 +381,14 @@
"description": "Repository slug/name",
"type": "string"
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"token": {
"description": "The access token to support auto-update from private bitbucket repositories.",
"type": [
@@ -478,6 +486,14 @@
"$ref": "#/definitions/OutgoingHttpHeaders",
"description": "Any custom request headers"
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"updateProvider": {
"description": "The Provider to provide UpdateInfo regarding available updates. Required\nto use custom providers with electron-updater.",
"typeof": "function"
@@ -1358,6 +1374,14 @@
"$ref": "#/definitions/OutgoingHttpHeaders",
"description": "Any custom request headers"
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"updaterCacheDirName": {
"type": [
"null",
@@ -1482,6 +1506,14 @@
"$ref": "#/definitions/OutgoingHttpHeaders",
"description": "Any custom request headers"
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"token": {
"description": "The access token to support auto-update from private github repositories. Never specify it in the configuration files. Only for [setFeedURL](/auto-update#appupdatersetfeedurloptions).",
"type": [
@@ -1573,6 +1605,14 @@
"$ref": "#/definitions/OutgoingHttpHeaders",
"description": "Any custom request headers"
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"updaterCacheDirName": {
"type": [
"null",
@@ -4876,6 +4916,14 @@
"default": "STANDARD",
"description": "The type of storage to use for the object."
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"updaterCacheDirName": {
"type": [
"null",
@@ -5324,6 +5372,14 @@
"$ref": "#/definitions/OutgoingHttpHeaders",
"description": "Any custom request headers"
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"updaterCacheDirName": {
"type": [
"null",
@@ -5409,6 +5465,14 @@
"$ref": "#/definitions/OutgoingHttpHeaders",
"description": "Any custom request headers"
},
+ "timeout": {
+ "default": 60000,
+ "description": "Request timeout in milliseconds. (Default is 2 minutes; O is ignored)",
+ "type": [
+ "null",
+ "number"
+ ]
+ },
"updaterCacheDirName": {
"type": [
"null",
diff --git a/packages/app-builder-lib/src/electron/electronVersion.ts b/packages/app-builder-lib/src/electron/electronVersion.ts
index 2de29afe1be..6caebd76e76 100644
--- a/packages/app-builder-lib/src/electron/electronVersion.ts
+++ b/packages/app-builder-lib/src/electron/electronVersion.ts
@@ -31,7 +31,7 @@ export async function getElectronVersionFromInstalled(projectDir: string) {
for (const name of electronPackages) {
try {
return (await readJson(path.join(projectDir, "node_modules", name, "package.json"))).version
- } catch (e) {
+ } catch (e: any) {
if (e.code !== "ENOENT") {
log.warn({ name, error: e }, `cannot read electron version package.json`)
}
@@ -44,7 +44,7 @@ export async function getElectronPackage(projectDir: string) {
for (const name of electronPackages) {
try {
return await readJson(path.join(projectDir, "node_modules", name, "package.json"))
- } catch (e) {
+ } catch (e: any) {
if (e.code !== "ENOENT") {
log.warn({ name, error: e }, `cannot find electron in package.json`)
}
diff --git a/packages/app-builder-lib/src/publish/BitbucketPublisher.ts b/packages/app-builder-lib/src/publish/BitbucketPublisher.ts
index 63de458e2f0..58a89d264c5 100644
--- a/packages/app-builder-lib/src/publish/BitbucketPublisher.ts
+++ b/packages/app-builder-lib/src/publish/BitbucketPublisher.ts
@@ -49,6 +49,7 @@ export class BitbucketPublisher extends HttpPublisher {
hostname: this.hostname,
path: this.basePath,
headers: form.getHeaders(),
+ timeout: this.info.timeout || undefined,
}
await httpExecutor.doApiRequest(configureRequestOptions(upload, this.auth, "POST"), this.context.cancellationToken, it => form.pipe(it))
return fileName
@@ -59,6 +60,7 @@ export class BitbucketPublisher extends HttpPublisher {
const req: RequestOptions = {
hostname: this.hostname,
path: `${this.basePath}/${filename}`,
+ timeout: this.info.timeout || undefined,
}
await httpExecutor.request(configureRequestOptions(req, this.auth, "DELETE"), this.context.cancellationToken)
}
diff --git a/packages/app-builder-lib/src/publish/KeygenPublisher.ts b/packages/app-builder-lib/src/publish/KeygenPublisher.ts
index 6061e775a78..383f888234f 100644
--- a/packages/app-builder-lib/src/publish/KeygenPublisher.ts
+++ b/packages/app-builder-lib/src/publish/KeygenPublisher.ts
@@ -139,6 +139,7 @@ export class KeygenPublisher extends HttpPublisher {
headers: {
"Content-Length": dataLength,
},
+ timeout: this.info.timeout || undefined,
}
await httpExecutor.doApiRequest(configureRequestOptions(upload, null, "PUT"), this.context.cancellationToken, requestProcessor)
@@ -154,6 +155,7 @@ export class KeygenPublisher extends HttpPublisher {
"Keygen-Version": "1.1",
Prefer: "no-redirect",
},
+ timeout: this.info.timeout || undefined,
}
const data: RecursivePartial