Files
deepseek-harness/apps/desktop/scripts/windows-package-settings.mjs
T

24 lines
1.5 KiB
JavaScript

/** Resolve Windows packaging concurrency and archive compression. */
/**
* Validate worker limits and compression without accessing signing hardware.
* File-owned compression takes precedence over the existing electron-builder environment override.
* @param {NodeJS.ProcessEnv} environment Loaded packaging settings and inherited build environment.
* @returns {{signatureCacheConcurrency: number, packConcurrency: number, compressionLevel: number}} Worker limits defaulting to four and archive compression defaulting to three.
*/
export function resolveWindowsPackageSettings(environment) {
const value = environment.DSH_DESKTOP_WINDOWS_SIGNATURE_CACHE_CONCURRENCY ?? '4'
if (!/^[1-8]$/u.test(value)) {
throw new Error('desktop package: DSH_DESKTOP_WINDOWS_SIGNATURE_CACHE_CONCURRENCY must be an integer from 1 to 8')
}
const pack = environment.DSH_DESKTOP_WINDOWS_PACK_CONCURRENCY ?? '4'
if (!/^[1-9]\d*$/u.test(pack) || !Number.isSafeInteger(Number(pack))) {
throw new Error('desktop package: DSH_DESKTOP_WINDOWS_PACK_CONCURRENCY must be a positive integer')
}
const compression = environment.DSH_DESKTOP_WINDOWS_COMPRESSION_LEVEL ?? environment.ELECTRON_BUILDER_COMPRESSION_LEVEL ?? '3'
if (!/^[0-9]$/u.test(compression)) {
throw new Error('desktop package: DSH_DESKTOP_WINDOWS_COMPRESSION_LEVEL must be an integer from 0 to 9')
}
return { signatureCacheConcurrency: Number(value), packConcurrency: Number(pack), compressionLevel: Number(compression) }
}