app-builder-lib 23.6.0 → 24.0.0-alpha.10
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/out/ProtonFramework.js +4 -4
- package/out/ProtonFramework.js.map +1 -1
- package/out/appInfo.js +21 -9
- package/out/appInfo.js.map +1 -1
- package/out/asar/asar.d.ts +12 -0
- package/out/asar/asar.js +10 -11
- package/out/asar/asar.js.map +1 -1
- package/out/asar/asarFileChecker.js +2 -2
- package/out/asar/asarFileChecker.js.map +1 -1
- package/out/asar/asarUtil.js +13 -13
- package/out/asar/asarUtil.js.map +1 -1
- package/out/asar/integrity.js +9 -9
- package/out/asar/integrity.js.map +1 -1
- package/out/asar/unpackDetector.js +6 -6
- package/out/asar/unpackDetector.js.map +1 -1
- package/out/binDownload.js +2 -2
- package/out/binDownload.js.map +1 -1
- package/out/codeSign/codesign.js +4 -4
- package/out/codeSign/codesign.js.map +1 -1
- package/out/codeSign/macCodeSign.d.ts +2 -2
- package/out/codeSign/macCodeSign.js +26 -26
- package/out/codeSign/macCodeSign.js.map +1 -1
- package/out/codeSign/windowsCodeSign.js +16 -15
- package/out/codeSign/windowsCodeSign.js.map +1 -1
- package/out/core.js +1 -1
- package/out/core.js.map +1 -1
- package/out/electron/ElectronFramework.js +17 -17
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/electron/electronMac.js +16 -16
- package/out/electron/electronMac.js.map +1 -1
- package/out/electron/electronVersion.js +5 -5
- package/out/electron/electronVersion.js.map +1 -1
- package/out/fileMatcher.js +11 -11
- package/out/fileMatcher.js.map +1 -1
- package/out/fileTransformer.js +5 -5
- package/out/fileTransformer.js.map +1 -1
- package/out/forge-maker.js +1 -1
- package/out/forge-maker.js.map +1 -1
- package/out/frameworks/LibUiFramework.js +10 -10
- package/out/frameworks/LibUiFramework.js.map +1 -1
- package/out/index.js +3 -3
- package/out/index.js.map +1 -1
- package/out/linuxPackager.js +3 -3
- package/out/linuxPackager.js.map +1 -1
- package/out/macPackager.d.ts +3 -1
- package/out/macPackager.js +80 -31
- package/out/macPackager.js.map +1 -1
- package/out/options/CommonWindowsInstallerConfiguration.js +3 -3
- package/out/options/CommonWindowsInstallerConfiguration.js.map +1 -1
- package/out/options/SnapOptions.d.ts +4 -0
- package/out/options/SnapOptions.js.map +1 -1
- package/out/options/macOptions.d.ts +27 -5
- package/out/options/macOptions.js.map +1 -1
- package/out/packager.js +34 -34
- package/out/packager.js.map +1 -1
- package/out/platformPackager.js +39 -39
- package/out/platformPackager.js.map +1 -1
- package/out/presets/rectCra.js +1 -1
- package/out/presets/rectCra.js.map +1 -1
- package/out/publish/BitbucketPublisher.js +5 -5
- package/out/publish/BitbucketPublisher.js.map +1 -1
- package/out/publish/KeygenPublisher.js +7 -7
- package/out/publish/KeygenPublisher.js.map +1 -1
- package/out/publish/PublishManager.d.ts +0 -1
- package/out/publish/PublishManager.js +24 -28
- package/out/publish/PublishManager.js.map +1 -1
- package/out/publish/SnapStorePublisher.js +1 -1
- package/out/publish/SnapStorePublisher.js.map +1 -1
- package/out/publish/s3/BaseS3Publisher.js +3 -3
- package/out/publish/s3/BaseS3Publisher.js.map +1 -1
- package/out/publish/s3/s3Publisher.js +1 -1
- package/out/publish/s3/s3Publisher.js.map +1 -1
- package/out/publish/s3/spacesPublisher.js +2 -2
- package/out/publish/s3/spacesPublisher.js.map +1 -1
- package/out/publish/updateInfoBuilder.js +9 -9
- package/out/publish/updateInfoBuilder.js.map +1 -1
- package/out/remoteBuilder/ProjectInfoManager.js +1 -1
- package/out/remoteBuilder/ProjectInfoManager.js.map +1 -1
- package/out/remoteBuilder/RemoteBuilder.js +3 -3
- package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
- package/out/remoteBuilder/builder-cli.js +3 -3
- package/out/remoteBuilder/builder-cli.js.map +1 -1
- package/out/targets/AppImageTarget.js +6 -6
- package/out/targets/AppImageTarget.js.map +1 -1
- package/out/targets/AppxTarget.js +19 -19
- package/out/targets/AppxTarget.js.map +1 -1
- package/out/targets/ArchiveTarget.js +7 -7
- package/out/targets/ArchiveTarget.js.map +1 -1
- package/out/targets/FlatpakTarget.js +8 -8
- package/out/targets/FlatpakTarget.js.map +1 -1
- package/out/targets/{fpm.d.ts → FpmTarget.d.ts} +1 -0
- package/out/targets/{fpm.js → FpmTarget.js} +54 -20
- package/out/targets/FpmTarget.js.map +1 -0
- package/out/targets/LinuxTargetHelper.js +9 -9
- package/out/targets/LinuxTargetHelper.js.map +1 -1
- package/out/targets/MsiTarget.js +11 -11
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/archive.js +9 -9
- package/out/targets/archive.js.map +1 -1
- package/out/targets/differentialUpdateInfoBuilder.js +2 -2
- package/out/targets/differentialUpdateInfoBuilder.js.map +1 -1
- package/out/targets/nsis/NsisTarget.js +37 -37
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/nsis/WebInstallerTarget.js +2 -2
- package/out/targets/nsis/WebInstallerTarget.js.map +1 -1
- package/out/targets/nsis/nsisLang.js +5 -5
- package/out/targets/nsis/nsisLang.js.map +1 -1
- package/out/targets/nsis/nsisLicense.js +2 -2
- package/out/targets/nsis/nsisLicense.js.map +1 -1
- package/out/targets/nsis/nsisUtil.js +5 -5
- package/out/targets/nsis/nsisUtil.js.map +1 -1
- package/out/targets/pkg.js +19 -25
- package/out/targets/pkg.js.map +1 -1
- package/out/targets/snap.js +22 -11
- package/out/targets/snap.js.map +1 -1
- package/out/targets/targetFactory.js +4 -4
- package/out/targets/targetFactory.js.map +1 -1
- package/out/targets/tools.js +1 -1
- package/out/targets/tools.js.map +1 -1
- package/out/util/AppFileWalker.js +2 -2
- package/out/util/AppFileWalker.js.map +1 -1
- package/out/util/NodeModuleCopyHelper.js +3 -3
- package/out/util/NodeModuleCopyHelper.js.map +1 -1
- package/out/util/appBuilder.js +2 -2
- package/out/util/appBuilder.js.map +1 -1
- package/out/util/appFileCopier.d.ts +1 -0
- package/out/util/appFileCopier.js +10 -9
- package/out/util/appFileCopier.js.map +1 -1
- package/out/util/cacheManager.js +5 -5
- package/out/util/cacheManager.js.map +1 -1
- package/out/util/config.js +10 -10
- package/out/util/config.js.map +1 -1
- package/out/util/flags.js +2 -2
- package/out/util/flags.js.map +1 -1
- package/out/util/hash.js +2 -2
- package/out/util/hash.js.map +1 -1
- package/out/util/license.js +2 -2
- package/out/util/license.js.map +1 -1
- package/out/util/macosVersion.js +3 -3
- package/out/util/macosVersion.js.map +1 -1
- package/out/util/normalizePackageData.js +4 -4
- package/out/util/normalizePackageData.js.map +1 -1
- package/out/util/packageDependencies.js +1 -1
- package/out/util/packageDependencies.js.map +1 -1
- package/out/util/packageMetadata.js +8 -8
- package/out/util/packageMetadata.js.map +1 -1
- package/out/util/repositoryInfo.js +2 -2
- package/out/util/repositoryInfo.js.map +1 -1
- package/out/util/yarn.d.ts +1 -1
- package/out/util/yarn.js +27 -38
- 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/out/vm/MonoVm.js +2 -2
- package/out/vm/MonoVm.js.map +1 -1
- package/out/vm/ParallelsVm.js +6 -6
- package/out/vm/ParallelsVm.js.map +1 -1
- package/out/vm/WineVm.js +1 -1
- package/out/vm/WineVm.js.map +1 -1
- package/out/vm/vm.js +2 -2
- package/out/vm/vm.js.map +1 -1
- package/out/winPackager.js +25 -25
- package/out/winPackager.js.map +1 -1
- package/out/wine.js +2 -2
- package/out/wine.js.map +1 -1
- package/package.json +17 -15
- package/scheme.json +96 -18
- package/templates/nsis/installSection.nsh +4 -1
- package/out/targets/fpm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformPackager.js","sourceRoot":"","sources":["../src/platformPackager.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, AsyncTaskManager, debug, DebugLogger, deepAssign, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces, log, isEnvTrue } from \"builder-util\"\nimport { defaultArchFromString, getArtifactArchName } from \"builder-util/out/arch\"\nimport { FileTransformer, statOrNull } from \"builder-util/out/fs\"\nimport { orIfFileNotExist } from \"builder-util/out/promise\"\nimport { readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport { Minimatch } from \"minimatch\"\nimport * as path from \"path\"\nimport { AppInfo } from \"./appInfo\"\nimport { checkFileInArchive } from \"./asar/asarFileChecker\"\nimport { AsarPackager } from \"./asar/asarUtil\"\nimport { computeData } from \"./asar/integrity\"\nimport { copyFiles, FileMatcher, getFileMatchers, GetFileMatchersOptions, getMainFileMatchers, getNodeModuleFileMatcher } from \"./fileMatcher\"\nimport { createTransformer, isElectronCompileUsed } from \"./fileTransformer\"\nimport { Framework, isElectronBased } from \"./Framework\"\nimport {\n AfterPackContext,\n AsarOptions,\n CompressionLevel,\n Configuration,\n ElectronPlatformName,\n FileAssociation,\n Packager,\n PackagerOptions,\n Platform,\n PlatformSpecificBuildOptions,\n Target,\n TargetSpecificOptions,\n} from \"./index\"\nimport { executeAppBuilderAsJson } from \"./util/appBuilder\"\nimport { computeFileSets, computeNodeModuleFileSets, copyAppFiles, ELECTRON_COMPILE_SHIM_FILENAME, transformFiles } from \"./util/appFileCopier\"\nimport { expandMacro as doExpandMacro } from \"./util/macroExpander\"\n\nexport abstract class PlatformPackager<DC extends PlatformSpecificBuildOptions> {\n get packagerOptions(): PackagerOptions {\n return this.info.options\n }\n\n get buildResourcesDir(): string {\n return this.info.buildResourcesDir\n }\n\n get projectDir(): string {\n return this.info.projectDir\n }\n\n get config(): Configuration {\n return this.info.config\n }\n\n readonly platformSpecificBuildOptions: DC\n\n get resourceList(): Promise<Array<string>> {\n return this._resourceList.value\n }\n\n private readonly _resourceList = new Lazy<Array<string>>(() => orIfFileNotExist(readdir(this.info.buildResourcesDir), []))\n\n readonly appInfo: AppInfo\n\n protected constructor(readonly info: Packager, readonly platform: Platform) {\n this.platformSpecificBuildOptions = PlatformPackager.normalizePlatformSpecificBuildOptions((this.config as any)[platform.buildConfigurationKey])\n this.appInfo = this.prepareAppInfo(info.appInfo)\n }\n\n get compression(): CompressionLevel {\n const compression = this.platformSpecificBuildOptions.compression\n // explicitly set to null - request to use default value instead of parent (in the config)\n if (compression === null) {\n return \"normal\"\n }\n return compression || this.config.compression || \"normal\"\n }\n\n get debugLogger(): DebugLogger {\n return this.info.debugLogger\n }\n\n abstract get defaultTarget(): Array<string>\n\n // eslint-disable-next-line\n protected prepareAppInfo(appInfo: AppInfo) {\n return new AppInfo(this.info, null, this.platformSpecificBuildOptions)\n }\n\n private static normalizePlatformSpecificBuildOptions(options: any | null | undefined): any {\n return options == null ? Object.create(null) : options\n }\n\n abstract createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void\n\n protected getCscPassword(): string {\n const password = this.doGetCscPassword()\n if (isEmptyOrSpaces(password)) {\n log.info({ reason: \"CSC_KEY_PASSWORD is not defined\" }, \"empty password will be used for code signing\")\n return \"\"\n } else {\n return password.trim()\n }\n }\n\n protected getCscLink(extraEnvName?: string | null): string | null | undefined {\n // allow to specify as empty string\n const envValue = chooseNotNull(extraEnvName == null ? null : process.env[extraEnvName], process.env.CSC_LINK)\n return chooseNotNull(chooseNotNull(this.info.config.cscLink, this.platformSpecificBuildOptions.cscLink), envValue)\n }\n\n protected doGetCscPassword(): string | null | undefined {\n // allow to specify as empty string\n return chooseNotNull(chooseNotNull(this.info.config.cscKeyPassword, this.platformSpecificBuildOptions.cscKeyPassword), process.env.CSC_KEY_PASSWORD)\n }\n\n protected computeAppOutDir(outDir: string, arch: Arch): string {\n return (\n this.packagerOptions.prepackaged ||\n path.join(\n outDir,\n `${this.platform.buildConfigurationKey}${getArchSuffix(arch, this.platformSpecificBuildOptions.defaultArch)}${this.platform === Platform.MAC ? \"\" : \"-unpacked\"}`\n )\n )\n }\n\n dispatchArtifactCreated(file: string, target: Target | null, arch: Arch | null, safeArtifactName?: string | null): Promise<void> {\n return this.info.callArtifactBuildCompleted({\n file,\n safeArtifactName,\n target,\n arch,\n packager: this,\n })\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n const appOutDir = this.computeAppOutDir(outDir, arch)\n await this.doPack(outDir, appOutDir, this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets)\n this.packageInDistributableFormat(appOutDir, arch, targets, taskManager)\n }\n\n protected packageInDistributableFormat(appOutDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): void {\n if (targets.find(it => !it.isAsyncSupported) == null) {\n PlatformPackager.buildAsyncTargets(targets, taskManager, appOutDir, arch)\n return\n }\n\n taskManager.add(async () => {\n // BluebirdPromise.map doesn't invoke target.build immediately, but for RemoteTarget it is very critical to call build() before finishBuild()\n const subTaskManager = new AsyncTaskManager(this.info.cancellationToken)\n PlatformPackager.buildAsyncTargets(targets, subTaskManager, appOutDir, arch)\n await subTaskManager.awaitTasks()\n\n for (const target of targets) {\n if (!target.isAsyncSupported) {\n await target.build(appOutDir, arch)\n }\n }\n })\n }\n\n private static buildAsyncTargets(targets: Array<Target>, taskManager: AsyncTaskManager, appOutDir: string, arch: Arch) {\n for (const target of targets) {\n if (target.isAsyncSupported) {\n taskManager.addTask(target.build(appOutDir, arch))\n }\n }\n }\n\n private getExtraFileMatchers(isResources: boolean, appOutDir: string, options: GetFileMatchersOptions): Array<FileMatcher> | null {\n const base = isResources\n ? this.getResourcesDir(appOutDir)\n : this.platform === Platform.MAC\n ? path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\")\n : appOutDir\n return getFileMatchers(this.config, isResources ? \"extraResources\" : \"extraFiles\", base, options)\n }\n\n createGetFileMatchersOptions(outDir: string, arch: Arch, customBuildOptions: PlatformSpecificBuildOptions): GetFileMatchersOptions {\n return {\n macroExpander: it => this.expandMacro(it, arch == null ? null : Arch[arch], { \"/*\": \"{,/**/*}\" }),\n customBuildOptions,\n globalOutDir: outDir,\n defaultSrc: this.projectDir,\n }\n }\n\n protected async doPack(\n outDir: string,\n appOutDir: string,\n platformName: ElectronPlatformName,\n arch: Arch,\n platformSpecificBuildOptions: DC,\n targets: Array<Target>,\n sign = true,\n disableAsarIntegrity = false\n ) {\n if (this.packagerOptions.prepackaged != null) {\n return\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const beforePack = resolveFunction(this.config.beforePack, \"beforePack\")\n if (beforePack != null) {\n await beforePack({\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n })\n }\n\n await this.info.installAppDependencies(this.platform, arch)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const framework = this.info.framework\n log.info(\n {\n platform: platformName,\n arch: Arch[arch],\n [`${framework.name}`]: framework.version,\n appOutDir: log.filePath(appOutDir),\n },\n `packaging`\n )\n\n await framework.prepareApplicationStageDirectory({\n packager: this,\n appOutDir,\n platformName,\n arch: Arch[arch],\n version: framework.version,\n })\n\n const excludePatterns: Array<Minimatch> = []\n\n const computeParsedPatterns = (patterns: Array<FileMatcher> | null) => {\n if (patterns != null) {\n for (const pattern of patterns) {\n pattern.computeParsedPatterns(excludePatterns, this.info.projectDir)\n }\n }\n }\n\n const getFileMatchersOptions = this.createGetFileMatchersOptions(outDir, arch, platformSpecificBuildOptions)\n const macroExpander = getFileMatchersOptions.macroExpander\n const extraResourceMatchers = this.getExtraFileMatchers(true, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraResourceMatchers)\n const extraFileMatchers = this.getExtraFileMatchers(false, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraFileMatchers)\n\n const packContext: AfterPackContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const resourcesPath =\n this.platform === Platform.MAC\n ? path.join(appOutDir, framework.distMacOsAppName, \"Contents\", \"Resources\")\n : isElectronBased(framework)\n ? path.join(appOutDir, \"resources\")\n : appOutDir\n const taskManager = new AsyncTaskManager(this.info.cancellationToken)\n this.copyAppFiles(taskManager, asarOptions, resourcesPath, path.join(resourcesPath, \"app\"), packContext, platformSpecificBuildOptions, excludePatterns, macroExpander)\n await taskManager.awaitTasks()\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n if (framework.beforeCopyExtraFiles != null) {\n const resourcesRelativePath = this.platform === Platform.MAC ? \"Resources\" : isElectronBased(framework) ? \"resources\" : \"\"\n\n await framework.beforeCopyExtraFiles({\n packager: this,\n appOutDir,\n asarIntegrity: asarOptions == null || disableAsarIntegrity ? null : await computeData({ resourcesPath, resourcesRelativePath }),\n platformName,\n })\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n await copyFiles(extraResourceMatchers, transformerForExtraFiles)\n await copyFiles(extraFileMatchers, transformerForExtraFiles)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n await this.info.afterPack(packContext)\n\n if (framework.afterPack != null) {\n await framework.afterPack(packContext)\n }\n\n const isAsar = asarOptions != null\n await this.sanityCheckPackage(appOutDir, isAsar, framework)\n if (sign) {\n await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets)\n }\n }\n\n protected async doSignAfterPack(outDir: string, appOutDir: string, platformName: ElectronPlatformName, arch: Arch, platformSpecificBuildOptions: DC, targets: Array<Target>) {\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const isAsar = asarOptions != null\n const packContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n await this.signApp(packContext, isAsar)\n const afterSign = resolveFunction(this.config.afterSign, \"afterSign\")\n if (afterSign != null) {\n await Promise.resolve(afterSign(packContext))\n }\n }\n\n // eslint-disable-next-line\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n return null\n }\n\n private copyAppFiles(\n taskManager: AsyncTaskManager,\n asarOptions: AsarOptions | null,\n resourcePath: string,\n defaultDestination: string,\n packContext: AfterPackContext,\n platformSpecificBuildOptions: DC,\n excludePatterns: Array<Minimatch>,\n macroExpander: (it: string) => string\n ) {\n const appDir = this.info.appDir\n const config = this.config\n const isElectronCompile = asarOptions != null && isElectronCompileUsed(this.info)\n\n const mainMatchers = getMainFileMatchers(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this, packContext.outDir, isElectronCompile)\n if (excludePatterns.length > 0) {\n for (const matcher of mainMatchers) {\n matcher.excludePatterns = excludePatterns\n }\n }\n\n const framework = this.info.framework\n const transformer = createTransformer(\n appDir,\n config,\n isElectronCompile\n ? {\n originalMain: this.info.metadata.main,\n main: ELECTRON_COMPILE_SHIM_FILENAME,\n ...config.extraMetadata,\n }\n : config.extraMetadata,\n framework.createTransformer == null ? null : framework.createTransformer()\n )\n\n const _computeFileSets = (matchers: Array<FileMatcher>) => {\n return computeFileSets(matchers, this.info.isPrepackedAppAsar ? null : transformer, this, isElectronCompile).then(async result => {\n if (!this.info.isPrepackedAppAsar && !this.info.areNodeModulesHandledExternally) {\n const moduleFileMatcher = getNodeModuleFileMatcher(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this.info)\n result = result.concat(await computeNodeModuleFileSets(this, moduleFileMatcher))\n }\n return result.filter(it => it.files.length > 0)\n })\n }\n\n if (this.info.isPrepackedAppAsar) {\n taskManager.addTask(BluebirdPromise.each(_computeFileSets([new FileMatcher(appDir, resourcePath, macroExpander)]), it => copyAppFiles(it, this.info, transformer)))\n } else if (asarOptions == null) {\n // for ASAR all asar unpacked files will be extra transformed (e.g. sign of EXE and DLL) later,\n // for prepackaged asar extra transformation not supported yet,\n // so, extra transform if asar is disabled\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n const combinedTransformer: FileTransformer = file => {\n if (transformerForExtraFiles != null) {\n const result = transformerForExtraFiles(file)\n if (result != null) {\n return result\n }\n }\n return transformer(file)\n }\n\n taskManager.addTask(BluebirdPromise.each(_computeFileSets(mainMatchers), it => copyAppFiles(it, this.info, combinedTransformer)))\n } else {\n const unpackPattern = getFileMatchers(config, \"asarUnpack\", defaultDestination, {\n macroExpander,\n customBuildOptions: platformSpecificBuildOptions,\n globalOutDir: packContext.outDir,\n defaultSrc: appDir,\n })\n const fileMatcher = unpackPattern == null ? null : unpackPattern[0]\n taskManager.addTask(\n _computeFileSets(mainMatchers).then(async fileSets => {\n for (const fileSet of fileSets) {\n await transformFiles(transformer, fileSet)\n }\n\n await new AsarPackager(appDir, resourcePath, asarOptions, fileMatcher == null ? null : fileMatcher.createFilter()).pack(fileSets, this)\n })\n )\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n return Promise.resolve()\n }\n\n getIconPath(): Promise<string | null> {\n return Promise.resolve(null)\n }\n\n private async computeAsarOptions(customBuildOptions: DC): Promise<AsarOptions | null> {\n if (!isElectronBased(this.info.framework)) {\n return null\n }\n\n function errorMessage(name: string) {\n return `${name} is deprecated is deprecated and not supported — please use asarUnpack`\n }\n\n const buildMetadata = this.config as any\n if (buildMetadata[\"asar-unpack\"] != null) {\n throw new Error(errorMessage(\"asar-unpack\"))\n }\n if (buildMetadata[\"asar-unpack-dir\"] != null) {\n throw new Error(errorMessage(\"asar-unpack-dir\"))\n }\n\n const platformSpecific = customBuildOptions.asar\n const result = platformSpecific == null ? this.config.asar : platformSpecific\n if (result === false) {\n const appAsarStat = await statOrNull(path.join(this.info.appDir, \"app.asar\"))\n //noinspection ES6MissingAwait\n if (appAsarStat == null || !appAsarStat.isFile()) {\n log.warn(\n {\n solution: \"enable asar and use asarUnpack to unpack files that must be externally available\",\n },\n \"asar usage is disabled — this is strongly not recommended\"\n )\n }\n return null\n }\n\n if (result == null || result === true) {\n return {}\n }\n\n for (const name of [\"unpackDir\", \"unpack\"]) {\n if ((result as any)[name] != null) {\n throw new Error(errorMessage(`asar.${name}`))\n }\n }\n return deepAssign({}, result)\n }\n\n public getElectronSrcDir(dist: string): string {\n return path.resolve(this.projectDir, dist)\n }\n\n public getElectronDestinationDir(appOutDir: string): string {\n return appOutDir\n }\n\n getResourcesDir(appOutDir: string): string {\n if (this.platform === Platform.MAC) {\n return this.getMacOsResourcesDir(appOutDir)\n } else if (isElectronBased(this.info.framework)) {\n return path.join(appOutDir, \"resources\")\n } else {\n return appOutDir\n }\n }\n\n public getMacOsResourcesDir(appOutDir: string): string {\n return path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\", \"Resources\")\n }\n\n private async checkFileInPackage(resourcesDir: string, file: string, messagePrefix: string, isAsar: boolean) {\n const relativeFile = path.relative(this.info.appDir, path.resolve(this.info.appDir, file))\n if (isAsar) {\n await checkFileInArchive(path.join(resourcesDir, \"app.asar\"), relativeFile, messagePrefix)\n return\n }\n\n const pathParsed = path.parse(file)\n // Even when packaging to asar is disabled, it does not imply that the main file can not be inside an .asar archive.\n // This may occur when the packaging is done manually before processing with electron-builder.\n if (pathParsed.dir.includes(\".asar\")) {\n // The path needs to be split to the part with an asar archive which acts like a directory and the part with\n // the path to main file itself. (e.g. path/arch.asar/dir/index.js -> path/arch.asar, dir/index.js)\n // noinspection TypeScriptValidateJSTypes\n const pathSplit: Array<string> = pathParsed.dir.split(path.sep)\n let partWithAsarIndex = 0\n pathSplit.some((pathPart: string, index: number) => {\n partWithAsarIndex = index\n return pathPart.endsWith(\".asar\")\n })\n const asarPath = path.join(...pathSplit.slice(0, partWithAsarIndex + 1))\n let mainPath = pathSplit.length > partWithAsarIndex + 1 ? path.join.apply(pathSplit.slice(partWithAsarIndex + 1)) : \"\"\n mainPath += path.join(mainPath, pathParsed.base)\n await checkFileInArchive(path.join(resourcesDir, \"app\", asarPath), mainPath, messagePrefix)\n } else {\n const fullPath = path.join(resourcesDir, \"app\", relativeFile)\n const outStat = await statOrNull(fullPath)\n if (outStat == null) {\n throw new Error(`${messagePrefix} \"${fullPath}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isFile()) {\n throw new Error(`${messagePrefix} \"${fullPath}\" is not a file. Seems like a wrong configuration.`)\n }\n }\n }\n }\n\n private async sanityCheckPackage(appOutDir: string, isAsar: boolean, framework: Framework): Promise<any> {\n const outStat = await statOrNull(appOutDir)\n if (outStat == null) {\n throw new Error(`Output directory \"${appOutDir}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isDirectory()) {\n throw new Error(`Output directory \"${appOutDir}\" is not a directory. Seems like a wrong configuration.`)\n }\n }\n\n const resourcesDir = this.getResourcesDir(appOutDir)\n const mainFile = (framework.getMainFile == null ? null : framework.getMainFile(this.platform)) || this.info.metadata.main || \"index.js\"\n await this.checkFileInPackage(resourcesDir, mainFile, \"Application entry file\", isAsar)\n await this.checkFileInPackage(resourcesDir, \"package.json\", \"Application\", isAsar)\n }\n\n // tslint:disable-next-line:no-invalid-template-strings\n computeSafeArtifactName(\n suggestedName: string | null,\n ext: string,\n arch?: Arch | null,\n skipDefaultArch = true,\n defaultArch?: string,\n safePattern = \"${name}-${version}-${arch}.${ext}\"\n ): string | null {\n return computeSafeArtifactNameIfNeeded(suggestedName, () =>\n this.computeArtifactName(safePattern, ext, skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n )\n }\n\n expandArtifactNamePattern(\n targetSpecificOptions: TargetSpecificOptions | null | undefined,\n ext: string,\n arch?: Arch | null,\n defaultPattern?: string,\n skipDefaultArch = true,\n defaultArch?: string\n ): string {\n const { pattern, isUserForced } = this.artifactPatternConfig(targetSpecificOptions, defaultPattern)\n return this.computeArtifactName(pattern, ext, !isUserForced && skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n }\n\n artifactPatternConfig(targetSpecificOptions: TargetSpecificOptions | null | undefined, defaultPattern: string | undefined) {\n const userSpecifiedPattern = targetSpecificOptions?.artifactName || this.platformSpecificBuildOptions.artifactName || this.config.artifactName\n return {\n isUserForced: !!userSpecifiedPattern,\n pattern: userSpecifiedPattern || defaultPattern || \"${productName}-${version}-${arch}.${ext}\",\n }\n }\n\n expandArtifactBeautyNamePattern(targetSpecificOptions: TargetSpecificOptions | null | undefined, ext: string, arch?: Arch | null): string {\n // tslint:disable-next-line:no-invalid-template-strings\n return this.expandArtifactNamePattern(targetSpecificOptions, ext, arch, \"${productName} ${version} ${arch}.${ext}\", true)\n }\n\n private computeArtifactName(pattern: any, ext: string, arch: Arch | null | undefined): string {\n const archName = arch == null ? null : getArtifactArchName(arch, ext)\n return this.expandMacro(pattern, archName, {\n ext,\n })\n }\n\n expandMacro(pattern: string, arch?: string | null, extra: any = {}, isProductNameSanitized = true): string {\n return doExpandMacro(pattern, arch, this.appInfo, { os: this.platform.buildConfigurationKey, ...extra }, isProductNameSanitized)\n }\n\n generateName2(ext: string | null, classifier: string | null | undefined, deployment: boolean): string {\n const dotExt = ext == null ? \"\" : `.${ext}`\n const separator = ext === \"deb\" ? \"_\" : \"-\"\n return `${deployment ? this.appInfo.name : this.appInfo.productFilename}${separator}${this.appInfo.version}${classifier == null ? \"\" : `${separator}${classifier}`}${dotExt}`\n }\n\n getTempFile(suffix: string): Promise<string> {\n return this.info.tempDirManager.getTempFile({ suffix })\n }\n\n get fileAssociations(): Array<FileAssociation> {\n return asArray(this.config.fileAssociations).concat(asArray(this.platformSpecificBuildOptions.fileAssociations))\n }\n\n async getResource(custom: string | null | undefined, ...names: Array<string>): Promise<string | null> {\n const resourcesDir = this.info.buildResourcesDir\n if (custom === undefined) {\n const resourceList = await this.resourceList\n for (const name of names) {\n if (resourceList.includes(name)) {\n return path.join(resourcesDir, name)\n }\n }\n } else if (custom != null && !isEmptyOrSpaces(custom)) {\n const resourceList = await this.resourceList\n if (resourceList.includes(custom)) {\n return path.join(resourcesDir, custom)\n }\n\n let p = path.resolve(resourcesDir, custom)\n if ((await statOrNull(p)) == null) {\n p = path.resolve(this.projectDir, custom)\n if ((await statOrNull(p)) == null) {\n throw new InvalidConfigurationError(\n `cannot find specified resource \"${custom}\", nor relative to \"${resourcesDir}\", neither relative to project dir (\"${this.projectDir}\")`\n )\n }\n }\n return p\n }\n return null\n }\n\n get forceCodeSigning(): boolean {\n const forceCodeSigningPlatform = this.platformSpecificBuildOptions.forceCodeSigning\n return (forceCodeSigningPlatform == null ? this.config.forceCodeSigning : forceCodeSigningPlatform) || false\n }\n\n protected async getOrConvertIcon(format: IconFormat): Promise<string | null> {\n const result = await this.resolveIcon(asArray(this.platformSpecificBuildOptions.icon || this.config.icon), [], format)\n if (result.length === 0) {\n const framework = this.info.framework\n if (framework.getDefaultIcon != null) {\n return framework.getDefaultIcon(this.platform)\n }\n\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(framework.name)} icon is used`)\n return this.getDefaultFrameworkIcon()\n } else {\n return result[0].file\n }\n }\n\n getDefaultFrameworkIcon(): string | null {\n const framework = this.info.framework\n return framework.getDefaultIcon == null ? null : framework.getDefaultIcon(this.platform)\n }\n\n // convert if need, validate size (it is a reason why tool is called even if file has target extension (already specified as foo.icns for example))\n async resolveIcon(sources: Array<string>, fallbackSources: Array<string>, outputFormat: IconFormat): Promise<Array<IconInfo>> {\n const args = [\n \"icon\",\n \"--format\",\n outputFormat,\n \"--root\",\n this.buildResourcesDir,\n \"--root\",\n this.projectDir,\n \"--out\",\n path.resolve(this.projectDir, this.config.directories!.output!, `.icon-${outputFormat}`),\n ]\n for (const source of sources) {\n args.push(\"--input\", source)\n }\n for (const source of fallbackSources) {\n args.push(\"--fallback-input\", source)\n }\n\n const result: IconConvertResult = await executeAppBuilderAsJson(args)\n const errorMessage = result.error\n if (errorMessage != null) {\n throw new InvalidConfigurationError(errorMessage, result.errorCode)\n }\n\n if (result.isFallback) {\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(this.info.framework.name)} icon is used`)\n }\n\n return result.icons || []\n }\n}\n\nexport interface IconInfo {\n file: string\n size: number\n}\n\ninterface IconConvertResult {\n icons?: Array<IconInfo>\n\n error?: string\n errorCode?: string\n isFallback?: boolean\n}\n\nexport type IconFormat = \"icns\" | \"ico\" | \"set\"\n\nexport function isSafeGithubName(name: string) {\n return /^[0-9A-Za-z._-]+$/.test(name)\n}\n\nexport function computeSafeArtifactNameIfNeeded(suggestedName: string | null, safeNameProducer: () => string): string | null {\n // GitHub only allows the listed characters in file names.\n if (suggestedName != null) {\n if (isSafeGithubName(suggestedName)) {\n return null\n }\n\n // prefer to use suggested name - so, if space is the only problem, just replace only space to dash\n suggestedName = suggestedName.replace(/ /g, \"-\")\n if (isSafeGithubName(suggestedName)) {\n return suggestedName\n }\n }\n\n return safeNameProducer()\n}\n\n// remove leading dot\nexport function normalizeExt(ext: string) {\n return ext.startsWith(\".\") ? ext.substring(1) : ext\n}\n\nexport function resolveFunction<T>(executor: T | string, name: string): T {\n if (executor == null || typeof executor !== \"string\") {\n return executor\n }\n\n let p = executor as string\n if (p.startsWith(\".\")) {\n p = path.resolve(p)\n }\n\n try {\n p = require.resolve(p)\n } catch (e) {\n debug(e)\n p = path.resolve(p)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const m = require(p)\n const namedExport = m[name]\n if (namedExport == null) {\n return m.default || m\n } else {\n return namedExport\n }\n}\n\nexport function chooseNotNull(v1: string | null | undefined, v2: string | null | undefined): string | null | undefined {\n return v1 == null ? v2 : v1\n}\n\nfunction capitalizeFirstLetter(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1)\n}\n\nexport function isSafeToUnpackElectronOnRemoteBuildServer(packager: PlatformPackager<any>) {\n if (packager.platform !== Platform.LINUX || packager.config.remoteBuild === false) {\n return false\n }\n\n if (process.platform === \"win32\" || isEnvTrue(process.env._REMOTE_BUILD)) {\n return packager.config.electronDist == null && packager.config.electronDownload == null\n }\n return false\n}\n"]}
|
|
1
|
+
{"version":3,"file":"platformPackager.js","sourceRoot":"","sources":["../src/platformPackager.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAC1C,+CAAyK;AACzK,gDAAkF;AAClF,4CAAiE;AACjE,sDAA2D;AAC3D,0CAAqC;AACrC,uCAA+B;AAE/B,6BAA4B;AAC5B,uCAAmC;AACnC,4DAA2D;AAC3D,8CAA8C;AAC9C,gDAA8C;AAC9C,+CAA8I;AAC9I,uDAA4E;AAC5E,2CAAwD;AACxD,mCAagB;AAChB,kDAA2D;AAC3D,wDAA+I;AAC/I,wDAAmE;AAEnE,MAAsB,gBAAgB;IA2BpC,YAA+B,IAAc,EAAW,QAAkB;QAA3C,SAAI,GAAJ,IAAI,CAAU;QAAW,aAAQ,GAAR,QAAQ,CAAU;QAJzD,kBAAa,GAAG,IAAI,eAAI,CAAgB,GAAG,EAAE,CAAC,IAAA,0BAAgB,EAAC,IAAA,kBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAKxH,IAAI,CAAC,4BAA4B,GAAG,gBAAgB,CAAC,qCAAqC,CAAE,IAAI,CAAC,MAAc,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAA;QAChJ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAClD,CAAC;IA7BD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;IAC1B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAA;IACpC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC7B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAID,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAA;IACjC,CAAC;IAWD,IAAI,WAAW;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAA;QACjE,0FAA0F;QAC1F,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,OAAO,QAAQ,CAAA;SAChB;QACD,OAAO,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAA;IAC3D,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAID,2BAA2B;IACjB,cAAc,CAAC,OAAgB;QACvC,OAAO,IAAI,iBAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAA;IACxE,CAAC;IAEO,MAAM,CAAC,qCAAqC,CAAC,OAA+B;QAClF,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACxD,CAAC;IAIS,cAAc;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACxC,IAAI,IAAA,8BAAe,EAAC,QAAQ,CAAC,EAAE;YAC7B,kBAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,EAAE,8CAA8C,CAAC,CAAA;YACvG,OAAO,EAAE,CAAA;SACV;aAAM;YACL,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;SACvB;IACH,CAAC;IAES,UAAU,CAAC,YAA4B;QAC/C,mCAAmC;QACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC7G,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;IACpH,CAAC;IAES,gBAAgB;QACxB,mCAAmC;QACnC,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACtJ,CAAC;IAES,gBAAgB,CAAC,MAAc,EAAE,IAAU;QACnD,OAAO,CACL,IAAI,CAAC,eAAe,CAAC,WAAW;YAChC,IAAI,CAAC,IAAI,CACP,MAAM,EACN,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAA,4BAAa,EAAC,IAAI,EAAE,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAClK,CACF,CAAA;IACH,CAAC;IAED,uBAAuB,CAAC,IAAY,EAAE,MAAqB,EAAE,IAAiB,EAAE,gBAAgC;QAC9G,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC;YAC1C,IAAI;YACJ,gBAAgB;YAChB,MAAM;YACN,IAAI;YACJ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,IAAU,EAAE,OAAsB,EAAE,WAA6B;QAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACrD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAgC,EAAE,IAAI,EAAE,IAAI,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAA;QACtI,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IAC1E,CAAC;IAES,4BAA4B,CAAC,SAAiB,EAAE,IAAU,EAAE,OAAsB,EAAE,WAA6B;QACzH,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE;YACpD,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YACzE,OAAM;SACP;QAED,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACzB,6IAA6I;YAC7I,MAAM,cAAc,GAAG,IAAI,+BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACxE,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YAC5E,MAAM,cAAc,CAAC,UAAU,EAAE,CAAA;YAEjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;oBAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;iBACpC;aACF;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,OAAsB,EAAE,WAA6B,EAAE,SAAiB,EAAE,IAAU;QACnH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,MAAM,CAAC,gBAAgB,EAAE;gBAC3B,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA;aACnD;SACF;IACH,CAAC;IAEO,oBAAoB,CAAC,WAAoB,EAAE,SAAiB,EAAE,OAA+B;QACnG,MAAM,IAAI,GAAG,WAAW;YACtB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,GAAG;gBAChC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,MAAM,EAAE,UAAU,CAAC;gBACzE,CAAC,CAAC,SAAS,CAAA;QACb,OAAO,IAAA,6BAAe,EAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACnG,CAAC;IAED,4BAA4B,CAAC,MAAc,EAAE,IAAU,EAAE,kBAAgD;QACvG,OAAO;YACL,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACjG,kBAAkB;YAClB,YAAY,EAAE,MAAM;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAA;IACH,CAAC;IAES,KAAK,CAAC,MAAM,CACpB,MAAc,EACd,SAAiB,EACjB,YAAkC,EAClC,IAAU,EACV,4BAAgC,EAChC,OAAsB,EACtB,IAAI,GAAG,IAAI,EACX,oBAAoB,GAAG,KAAK;QAE5B,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5C,OAAM;SACP;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACzC,OAAM;SACP;QAED,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QACxE,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,MAAM,UAAU,CAAC;gBACf,SAAS;gBACT,MAAM;gBACN,IAAI;gBACJ,OAAO;gBACP,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,YAAY;aACnC,CAAC,CAAA;SACH;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAE3D,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACzC,OAAM;SACP;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;QACrC,kBAAG,CAAC,IAAI,CACN;YACE,QAAQ,EAAE,YAAY;YACtB,IAAI,EAAE,mBAAI,CAAC,IAAI,CAAC;YAChB,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,OAAO;YACxC,SAAS,EAAE,kBAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;SACnC,EACD,WAAW,CACZ,CAAA;QAED,MAAM,SAAS,CAAC,gCAAgC,CAAC;YAC/C,QAAQ,EAAE,IAAI;YACd,SAAS;YACT,YAAY;YACZ,IAAI,EAAE,mBAAI,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC,CAAA;QAEF,MAAM,eAAe,GAAqB,EAAE,CAAA;QAE5C,MAAM,qBAAqB,GAAG,CAAC,QAAmC,EAAE,EAAE;YACpE,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;oBAC9B,OAAO,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;iBACrE;aACF;QACH,CAAC,CAAA;QAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAA;QAC5G,MAAM,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAA;QAC1D,MAAM,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAA;QAChG,qBAAqB,CAAC,qBAAqB,CAAC,CAAA;QAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAA;QAC7F,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;QAExC,MAAM,WAAW,GAAqB;YACpC,SAAS;YACT,MAAM;YACN,IAAI;YACJ,OAAO;YACP,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,YAAY;SACnC,CAAA;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,CAAA;QAC/E,MAAM,aAAa,GACjB,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,GAAG;YAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,CAAC;YAC3E,CAAC,CAAC,IAAA,2BAAe,EAAC,SAAS,CAAC;gBAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,WAAW,GAAG,IAAI,+BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACrE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,eAAe,EAAE,aAAa,CAAC,CAAA;QACtK,MAAM,WAAW,CAAC,UAAU,EAAE,CAAA;QAE9B,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACzC,OAAM;SACP;QAED,IAAI,SAAS,CAAC,oBAAoB,IAAI,IAAI,EAAE;YAC1C,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,2BAAe,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;YAE1H,MAAM,SAAS,CAAC,oBAAoB,CAAC;gBACnC,QAAQ,EAAE,IAAI;gBACd,SAAS;gBACT,aAAa,EAAE,WAAW,IAAI,IAAI,IAAI,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAA,uBAAW,EAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC;gBAC/H,YAAY;aACb,CAAC,CAAA;SACH;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACzC,OAAM;SACP;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAA;QACjF,MAAM,IAAA,uBAAS,EAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAA;QAChE,MAAM,IAAA,uBAAS,EAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAA;QAE5D,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACzC,OAAM;SACP;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAEtC,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,EAAE;YAC/B,MAAM,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;SACvC;QAED,MAAM,MAAM,GAAG,WAAW,IAAI,IAAI,CAAA;QAClC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;QAC3D,IAAI,IAAI,EAAE;YACR,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,CAAC,CAAA;SACzG;IACH,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,YAAkC,EAAE,IAAU,EAAE,4BAAgC,EAAE,OAAsB;QACzK,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,CAAA;QAC/E,MAAM,MAAM,GAAG,WAAW,IAAI,IAAI,CAAA;QAClC,MAAM,WAAW,GAAG;YAClB,SAAS;YACT,MAAM;YACN,IAAI;YACJ,OAAO;YACP,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,YAAY;SACnC,CAAA;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACrE,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;SAC9C;IACH,CAAC;IAED,2BAA2B;IACjB,8BAA8B,CAAC,WAA6B;QACpE,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,YAAY,CAClB,WAA6B,EAC7B,WAA+B,EAC/B,YAAoB,EACpB,kBAA0B,EAC1B,WAA6B,EAC7B,4BAAgC,EAChC,eAAiC,EACjC,aAAqC;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,MAAM,iBAAiB,GAAG,WAAW,IAAI,IAAI,IAAI,IAAA,uCAAqB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEjF,MAAM,YAAY,GAAG,IAAA,iCAAmB,EAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;QAC9J,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;gBAClC,OAAO,CAAC,eAAe,GAAG,eAAe,CAAA;aAC1C;SACF;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;QACrC,MAAM,WAAW,GAAG,IAAA,mCAAiB,EACnC,MAAM,EACN,MAAM,EACN,iBAAiB;YACf,CAAC,CAAC;gBACE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACrC,IAAI,EAAE,8CAA8B;gBACpC,GAAG,MAAM,CAAC,aAAa;aACxB;YACH,CAAC,CAAC,MAAM,CAAC,aAAa,EACxB,SAAS,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAC3E,CAAA;QAED,MAAM,gBAAgB,GAAG,CAAC,QAA4B,EAAE,EAAE;YACxD,OAAO,IAAA,+BAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;gBAC/H,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBAC/E,MAAM,iBAAiB,GAAG,IAAA,sCAAwB,EAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;oBACtI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAA,yCAAyB,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAA;iBACjF;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAChC,WAAW,CAAC,OAAO,CAAC,sBAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,yBAAW,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAA,4BAAY,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;SACpK;aAAM,IAAI,WAAW,IAAI,IAAI,EAAE;YAC9B,+FAA+F;YAC/F,+DAA+D;YAC/D,0CAA0C;YAC1C,MAAM,wBAAwB,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAA;YACjF,MAAM,mBAAmB,GAAoB,IAAI,CAAC,EAAE;gBAClD,IAAI,wBAAwB,IAAI,IAAI,EAAE;oBACpC,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;oBAC7C,IAAI,MAAM,IAAI,IAAI,EAAE;wBAClB,OAAO,MAAM,CAAA;qBACd;iBACF;gBACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;YAC1B,CAAC,CAAA;YAED,WAAW,CAAC,OAAO,CAAC,sBAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAA,4BAAY,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAA;SAClI;aAAM;YACL,MAAM,aAAa,GAAG,IAAA,6BAAe,EAAC,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE;gBAC9E,aAAa;gBACb,kBAAkB,EAAE,4BAA4B;gBAChD,YAAY,EAAE,WAAW,CAAC,MAAM;gBAChC,UAAU,EAAE,MAAM;aACnB,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;YACnE,WAAW,CAAC,OAAO,CACjB,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;gBACnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;oBAC9B,MAAM,IAAA,8BAAc,EAAC,WAAW,EAAE,OAAO,CAAC,CAAA;iBAC3C;gBAED,MAAM,IAAI,uBAAY,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YACzI,CAAC,CAAC,CACH,CAAA;SACF;IACH,CAAC;IAED,6DAA6D;IACnD,OAAO,CAAC,WAA6B,EAAE,MAAe;QAC9D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED,WAAW;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,kBAAsB;QACrD,IAAI,CAAC,IAAA,2BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACzC,OAAO,IAAI,CAAA;SACZ;QAED,SAAS,YAAY,CAAC,IAAY;YAChC,OAAO,GAAG,IAAI,wEAAwE,CAAA;QACxF,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAa,CAAA;QACxC,IAAI,aAAa,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAA;SAC7C;QACD,IAAI,aAAa,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAA;SACjD;QAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAA;QAChD,MAAM,MAAM,GAAG,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAA;QAC7E,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,MAAM,WAAW,GAAG,MAAM,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;YAC7E,8BAA8B;YAC9B,IAAI,WAAW,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;gBAChD,kBAAG,CAAC,IAAI,CACN;oBACE,QAAQ,EAAE,kFAAkF;iBAC7F,EACD,2DAA2D,CAC5D,CAAA;aACF;YACD,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;YACrC,OAAO,EAAE,CAAA;SACV;QAED,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;YAC1C,IAAK,MAAc,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;aAC9C;SACF;QACD,OAAO,IAAA,yBAAU,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC/B,CAAC;IAEM,iBAAiB,CAAC,IAAY;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC;IAEM,yBAAyB,CAAC,SAAiB;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,eAAe,CAAC,SAAiB;QAC/B,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,GAAG,EAAE;YAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;SAC5C;aAAM,IAAI,IAAA,2BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;SACzC;aAAM;YACL,OAAO,SAAS,CAAA;SACjB;IACH,CAAC;IAEM,oBAAoB,CAAC,SAAiB;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAC7F,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,YAAoB,EAAE,IAAY,EAAE,aAAqB,EAAE,MAAe;QACzG,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;QAC1F,IAAI,MAAM,EAAE;YACV,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;YAC1F,OAAM;SACP;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnC,oHAAoH;QACpH,8FAA8F;QAC9F,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACpC,4GAA4G;YAC5G,mGAAmG;YACnG,yCAAyC;YACzC,MAAM,SAAS,GAAkB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/D,IAAI,iBAAiB,GAAG,CAAC,CAAA;YACzB,SAAS,CAAC,IAAI,CAAC,CAAC,QAAgB,EAAE,KAAa,EAAE,EAAE;gBACjD,iBAAiB,GAAG,KAAK,CAAA;gBACzB,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YACnC,CAAC,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAA;YACxE,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACtH,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;YAChD,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;SAC5F;aAAM;YACL,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;YAC7D,MAAM,OAAO,GAAG,MAAM,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAA;YAC1C,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,KAAK,QAAQ,qDAAqD,CAAC,CAAA;aACpG;iBAAM;gBACL,8BAA8B;gBAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;oBACrB,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,KAAK,QAAQ,oDAAoD,CAAC,CAAA;iBACnG;aACF;SACF;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,MAAe,EAAE,SAAoB;QACvF,MAAM,OAAO,GAAG,MAAM,IAAA,eAAU,EAAC,SAAS,CAAC,CAAA;QAC3C,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,qDAAqD,CAAC,CAAA;SACrG;aAAM;YACL,8BAA8B;YAC9B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,yDAAyD,CAAC,CAAA;aACzG;SACF;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAA;QACvI,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAA;QACvF,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;IACpF,CAAC;IAED,uDAAuD;IACvD,uBAAuB,CACrB,aAA4B,EAC5B,GAAW,EACX,IAAkB,EAClB,eAAe,GAAG,IAAI,EACtB,WAAoB,EACpB,WAAW,GAAG,mCAAmC;QAEjD,OAAO,+BAA+B,CAAC,aAAa,EAAE,GAAG,EAAE,CACzD,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,eAAe,IAAI,IAAI,KAAK,IAAA,4BAAqB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CACzH,CAAA;IACH,CAAC;IAED,yBAAyB,CACvB,qBAA+D,EAC/D,GAAW,EACX,IAAkB,EAClB,cAAuB,EACvB,eAAe,GAAG,IAAI,EACtB,WAAoB;QAEpB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAA;QACnG,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,IAAI,eAAe,IAAI,IAAI,KAAK,IAAA,4BAAqB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9I,CAAC;IAED,qBAAqB,CAAC,qBAA+D,EAAE,cAAkC;QACvH,MAAM,oBAAoB,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,YAAY,KAAI,IAAI,CAAC,4BAA4B,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAA;QAC9I,OAAO;YACL,YAAY,EAAE,CAAC,CAAC,oBAAoB;YACpC,OAAO,EAAE,oBAAoB,IAAI,cAAc,IAAI,0CAA0C;SAC9F,CAAA;IACH,CAAC;IAED,+BAA+B,CAAC,qBAA+D,EAAE,GAAW,EAAE,IAAkB;QAC9H,uDAAuD;QACvD,OAAO,IAAI,CAAC,yBAAyB,CAAC,qBAAqB,EAAE,GAAG,EAAE,IAAI,EAAE,0CAA0C,EAAE,IAAI,CAAC,CAAA;IAC3H,CAAC;IAEO,mBAAmB,CAAC,OAAY,EAAE,GAAW,EAAE,IAA6B;QAClF,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,0BAAmB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACrE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;YACzC,GAAG;SACJ,CAAC,CAAA;IACJ,CAAC;IAED,WAAW,CAAC,OAAe,EAAE,IAAoB,EAAE,QAAa,EAAE,EAAE,sBAAsB,GAAG,IAAI;QAC/F,OAAO,IAAA,2BAAa,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAA;IAClI,CAAC;IAED,aAAa,CAAC,GAAkB,EAAE,UAAqC,EAAE,UAAmB;QAC1F,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;QAC3C,MAAM,SAAS,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAC3C,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,UAAU,EAAE,GAAG,MAAM,EAAE,CAAA;IAC/K,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAA,sBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAA,sBAAO,EAAC,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAClH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAiC,EAAE,GAAG,KAAoB;QAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAA;QAChD,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAA;YAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;iBACrC;aACF;SACF;aAAM,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,IAAA,8BAAe,EAAC,MAAM,CAAC,EAAE;YACrD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAA;YAC5C,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;aACvC;YAED,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC1C,IAAI,CAAC,MAAM,IAAA,eAAU,EAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;gBACjC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;gBACzC,IAAI,CAAC,MAAM,IAAA,eAAU,EAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;oBACjC,MAAM,IAAI,wCAAyB,CACjC,mCAAmC,MAAM,uBAAuB,YAAY,wCAAwC,IAAI,CAAC,UAAU,IAAI,CACxI,CAAA;iBACF;aACF;YACD,OAAO,CAAC,CAAA;SACT;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,gBAAgB;QAClB,MAAM,wBAAwB,GAAG,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAA;QACnF,OAAO,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAA;IAC9G,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAkB;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAA,sBAAO,EAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;QACtH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;YACrC,IAAI,SAAS,CAAC,cAAc,IAAI,IAAI,EAAE;gBACpC,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aAC/C;YAED,kBAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,EAAE,WAAW,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YACpH,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAA;SACtC;aAAM;YACL,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;SACtB;IACH,CAAC;IAED,uBAAuB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;QACrC,OAAO,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1F,CAAC;IAED,mJAAmJ;IACnJ,KAAK,CAAC,WAAW,CAAC,OAAsB,EAAE,eAA8B,EAAE,YAAwB;QAChG,MAAM,IAAI,GAAG;YACX,MAAM;YACN,UAAU;YACV,YAAY;YACZ,QAAQ;YACR,IAAI,CAAC,iBAAiB;YACtB,QAAQ;YACR,IAAI,CAAC,UAAU;YACf,OAAO;YACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,MAAO,EAAE,SAAS,YAAY,EAAE,CAAC;SACzF,CAAA;QACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;SAC7B;QACD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;SACtC;QAED,MAAM,MAAM,GAAsB,MAAM,IAAA,oCAAuB,EAAC,IAAI,CAAC,CAAA;QACrE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAA;QACjC,IAAI,YAAY,IAAI,IAAI,EAAE;YACxB,MAAM,IAAI,wCAAyB,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;SACpE;QAED,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,kBAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,EAAE,WAAW,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;SAC/H;QAED,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;IAC3B,CAAC;CACF;AA9pBD,4CA8pBC;AAiBD,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAFD,4CAEC;AAED,SAAgB,+BAA+B,CAAC,aAA4B,EAAE,gBAA8B;IAC1G,0DAA0D;IAC1D,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,IAAI,gBAAgB,CAAC,aAAa,CAAC,EAAE;YACnC,OAAO,IAAI,CAAA;SACZ;QAED,mGAAmG;QACnG,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAChD,IAAI,gBAAgB,CAAC,aAAa,CAAC,EAAE;YACnC,OAAO,aAAa,CAAA;SACrB;KACF;IAED,OAAO,gBAAgB,EAAE,CAAA;AAC3B,CAAC;AAfD,0EAeC;AAED,qBAAqB;AACrB,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AACrD,CAAC;AAFD,oCAEC;AAED,SAAgB,eAAe,CAAI,QAAoB,EAAE,IAAY;IACnE,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QACpD,OAAO,QAAQ,CAAA;KAChB;IAED,IAAI,CAAC,GAAG,QAAkB,CAAA;IAC1B,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACrB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;KACpB;IAED,IAAI;QACF,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;KACvB;IAAC,OAAO,CAAM,EAAE;QACf,IAAA,oBAAK,EAAC,CAAC,CAAC,CAAA;QACR,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;KACpB;IAED,8DAA8D;IAC9D,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACpB,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,WAAW,IAAI,IAAI,EAAE;QACvB,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAA;KACtB;SAAM;QACL,OAAO,WAAW,CAAA;KACnB;AACH,CAAC;AAzBD,0CAyBC;AAED,SAAgB,aAAa,CAAC,EAA6B,EAAE,EAA6B;IACxF,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC7B,CAAC;AAFD,sCAEC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC;AAED,SAAgB,yCAAyC,CAAC,QAA+B;IACvF,IAAI,QAAQ,CAAC,QAAQ,KAAK,gBAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE;QACjF,OAAO,KAAK,CAAA;KACb;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAA,wBAAS,EAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;QACxE,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAA;KACxF;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AATD,8FASC","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, asArray, AsyncTaskManager, debug, DebugLogger, deepAssign, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces, log, isEnvTrue } from \"builder-util\"\nimport { defaultArchFromString, getArtifactArchName } from \"builder-util/out/arch\"\nimport { FileTransformer, statOrNull } from \"builder-util/out/fs\"\nimport { orIfFileNotExist } from \"builder-util/out/promise\"\nimport { readdir } from \"fs/promises\"\nimport { Lazy } from \"lazy-val\"\nimport { Minimatch } from \"minimatch\"\nimport * as path from \"path\"\nimport { AppInfo } from \"./appInfo\"\nimport { checkFileInArchive } from \"./asar/asarFileChecker\"\nimport { AsarPackager } from \"./asar/asarUtil\"\nimport { computeData } from \"./asar/integrity\"\nimport { copyFiles, FileMatcher, getFileMatchers, GetFileMatchersOptions, getMainFileMatchers, getNodeModuleFileMatcher } from \"./fileMatcher\"\nimport { createTransformer, isElectronCompileUsed } from \"./fileTransformer\"\nimport { Framework, isElectronBased } from \"./Framework\"\nimport {\n AfterPackContext,\n AsarOptions,\n CompressionLevel,\n Configuration,\n ElectronPlatformName,\n FileAssociation,\n Packager,\n PackagerOptions,\n Platform,\n PlatformSpecificBuildOptions,\n Target,\n TargetSpecificOptions,\n} from \"./index\"\nimport { executeAppBuilderAsJson } from \"./util/appBuilder\"\nimport { computeFileSets, computeNodeModuleFileSets, copyAppFiles, ELECTRON_COMPILE_SHIM_FILENAME, transformFiles } from \"./util/appFileCopier\"\nimport { expandMacro as doExpandMacro } from \"./util/macroExpander\"\n\nexport abstract class PlatformPackager<DC extends PlatformSpecificBuildOptions> {\n get packagerOptions(): PackagerOptions {\n return this.info.options\n }\n\n get buildResourcesDir(): string {\n return this.info.buildResourcesDir\n }\n\n get projectDir(): string {\n return this.info.projectDir\n }\n\n get config(): Configuration {\n return this.info.config\n }\n\n readonly platformSpecificBuildOptions: DC\n\n get resourceList(): Promise<Array<string>> {\n return this._resourceList.value\n }\n\n private readonly _resourceList = new Lazy<Array<string>>(() => orIfFileNotExist(readdir(this.info.buildResourcesDir), []))\n\n readonly appInfo: AppInfo\n\n protected constructor(readonly info: Packager, readonly platform: Platform) {\n this.platformSpecificBuildOptions = PlatformPackager.normalizePlatformSpecificBuildOptions((this.config as any)[platform.buildConfigurationKey])\n this.appInfo = this.prepareAppInfo(info.appInfo)\n }\n\n get compression(): CompressionLevel {\n const compression = this.platformSpecificBuildOptions.compression\n // explicitly set to null - request to use default value instead of parent (in the config)\n if (compression === null) {\n return \"normal\"\n }\n return compression || this.config.compression || \"normal\"\n }\n\n get debugLogger(): DebugLogger {\n return this.info.debugLogger\n }\n\n abstract get defaultTarget(): Array<string>\n\n // eslint-disable-next-line\n protected prepareAppInfo(appInfo: AppInfo) {\n return new AppInfo(this.info, null, this.platformSpecificBuildOptions)\n }\n\n private static normalizePlatformSpecificBuildOptions(options: any | null | undefined): any {\n return options == null ? Object.create(null) : options\n }\n\n abstract createTargets(targets: Array<string>, mapper: (name: string, factory: (outDir: string) => Target) => void): void\n\n protected getCscPassword(): string {\n const password = this.doGetCscPassword()\n if (isEmptyOrSpaces(password)) {\n log.info({ reason: \"CSC_KEY_PASSWORD is not defined\" }, \"empty password will be used for code signing\")\n return \"\"\n } else {\n return password.trim()\n }\n }\n\n protected getCscLink(extraEnvName?: string | null): string | null | undefined {\n // allow to specify as empty string\n const envValue = chooseNotNull(extraEnvName == null ? null : process.env[extraEnvName], process.env.CSC_LINK)\n return chooseNotNull(chooseNotNull(this.info.config.cscLink, this.platformSpecificBuildOptions.cscLink), envValue)\n }\n\n protected doGetCscPassword(): string | null | undefined {\n // allow to specify as empty string\n return chooseNotNull(chooseNotNull(this.info.config.cscKeyPassword, this.platformSpecificBuildOptions.cscKeyPassword), process.env.CSC_KEY_PASSWORD)\n }\n\n protected computeAppOutDir(outDir: string, arch: Arch): string {\n return (\n this.packagerOptions.prepackaged ||\n path.join(\n outDir,\n `${this.platform.buildConfigurationKey}${getArchSuffix(arch, this.platformSpecificBuildOptions.defaultArch)}${this.platform === Platform.MAC ? \"\" : \"-unpacked\"}`\n )\n )\n }\n\n dispatchArtifactCreated(file: string, target: Target | null, arch: Arch | null, safeArtifactName?: string | null): Promise<void> {\n return this.info.callArtifactBuildCompleted({\n file,\n safeArtifactName,\n target,\n arch,\n packager: this,\n })\n }\n\n async pack(outDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): Promise<any> {\n const appOutDir = this.computeAppOutDir(outDir, arch)\n await this.doPack(outDir, appOutDir, this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets)\n this.packageInDistributableFormat(appOutDir, arch, targets, taskManager)\n }\n\n protected packageInDistributableFormat(appOutDir: string, arch: Arch, targets: Array<Target>, taskManager: AsyncTaskManager): void {\n if (targets.find(it => !it.isAsyncSupported) == null) {\n PlatformPackager.buildAsyncTargets(targets, taskManager, appOutDir, arch)\n return\n }\n\n taskManager.add(async () => {\n // BluebirdPromise.map doesn't invoke target.build immediately, but for RemoteTarget it is very critical to call build() before finishBuild()\n const subTaskManager = new AsyncTaskManager(this.info.cancellationToken)\n PlatformPackager.buildAsyncTargets(targets, subTaskManager, appOutDir, arch)\n await subTaskManager.awaitTasks()\n\n for (const target of targets) {\n if (!target.isAsyncSupported) {\n await target.build(appOutDir, arch)\n }\n }\n })\n }\n\n private static buildAsyncTargets(targets: Array<Target>, taskManager: AsyncTaskManager, appOutDir: string, arch: Arch) {\n for (const target of targets) {\n if (target.isAsyncSupported) {\n taskManager.addTask(target.build(appOutDir, arch))\n }\n }\n }\n\n private getExtraFileMatchers(isResources: boolean, appOutDir: string, options: GetFileMatchersOptions): Array<FileMatcher> | null {\n const base = isResources\n ? this.getResourcesDir(appOutDir)\n : this.platform === Platform.MAC\n ? path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\")\n : appOutDir\n return getFileMatchers(this.config, isResources ? \"extraResources\" : \"extraFiles\", base, options)\n }\n\n createGetFileMatchersOptions(outDir: string, arch: Arch, customBuildOptions: PlatformSpecificBuildOptions): GetFileMatchersOptions {\n return {\n macroExpander: it => this.expandMacro(it, arch == null ? null : Arch[arch], { \"/*\": \"{,/**/*}\" }),\n customBuildOptions,\n globalOutDir: outDir,\n defaultSrc: this.projectDir,\n }\n }\n\n protected async doPack(\n outDir: string,\n appOutDir: string,\n platformName: ElectronPlatformName,\n arch: Arch,\n platformSpecificBuildOptions: DC,\n targets: Array<Target>,\n sign = true,\n disableAsarIntegrity = false\n ) {\n if (this.packagerOptions.prepackaged != null) {\n return\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const beforePack = resolveFunction(this.config.beforePack, \"beforePack\")\n if (beforePack != null) {\n await beforePack({\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n })\n }\n\n await this.info.installAppDependencies(this.platform, arch)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const framework = this.info.framework\n log.info(\n {\n platform: platformName,\n arch: Arch[arch],\n [`${framework.name}`]: framework.version,\n appOutDir: log.filePath(appOutDir),\n },\n `packaging`\n )\n\n await framework.prepareApplicationStageDirectory({\n packager: this,\n appOutDir,\n platformName,\n arch: Arch[arch],\n version: framework.version,\n })\n\n const excludePatterns: Array<Minimatch> = []\n\n const computeParsedPatterns = (patterns: Array<FileMatcher> | null) => {\n if (patterns != null) {\n for (const pattern of patterns) {\n pattern.computeParsedPatterns(excludePatterns, this.info.projectDir)\n }\n }\n }\n\n const getFileMatchersOptions = this.createGetFileMatchersOptions(outDir, arch, platformSpecificBuildOptions)\n const macroExpander = getFileMatchersOptions.macroExpander\n const extraResourceMatchers = this.getExtraFileMatchers(true, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraResourceMatchers)\n const extraFileMatchers = this.getExtraFileMatchers(false, appOutDir, getFileMatchersOptions)\n computeParsedPatterns(extraFileMatchers)\n\n const packContext: AfterPackContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const resourcesPath =\n this.platform === Platform.MAC\n ? path.join(appOutDir, framework.distMacOsAppName, \"Contents\", \"Resources\")\n : isElectronBased(framework)\n ? path.join(appOutDir, \"resources\")\n : appOutDir\n const taskManager = new AsyncTaskManager(this.info.cancellationToken)\n this.copyAppFiles(taskManager, asarOptions, resourcesPath, path.join(resourcesPath, \"app\"), packContext, platformSpecificBuildOptions, excludePatterns, macroExpander)\n await taskManager.awaitTasks()\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n if (framework.beforeCopyExtraFiles != null) {\n const resourcesRelativePath = this.platform === Platform.MAC ? \"Resources\" : isElectronBased(framework) ? \"resources\" : \"\"\n\n await framework.beforeCopyExtraFiles({\n packager: this,\n appOutDir,\n asarIntegrity: asarOptions == null || disableAsarIntegrity ? null : await computeData({ resourcesPath, resourcesRelativePath }),\n platformName,\n })\n }\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n await copyFiles(extraResourceMatchers, transformerForExtraFiles)\n await copyFiles(extraFileMatchers, transformerForExtraFiles)\n\n if (this.info.cancellationToken.cancelled) {\n return\n }\n\n await this.info.afterPack(packContext)\n\n if (framework.afterPack != null) {\n await framework.afterPack(packContext)\n }\n\n const isAsar = asarOptions != null\n await this.sanityCheckPackage(appOutDir, isAsar, framework)\n if (sign) {\n await this.doSignAfterPack(outDir, appOutDir, platformName, arch, platformSpecificBuildOptions, targets)\n }\n }\n\n protected async doSignAfterPack(outDir: string, appOutDir: string, platformName: ElectronPlatformName, arch: Arch, platformSpecificBuildOptions: DC, targets: Array<Target>) {\n const asarOptions = await this.computeAsarOptions(platformSpecificBuildOptions)\n const isAsar = asarOptions != null\n const packContext = {\n appOutDir,\n outDir,\n arch,\n targets,\n packager: this,\n electronPlatformName: platformName,\n }\n await this.signApp(packContext, isAsar)\n const afterSign = resolveFunction(this.config.afterSign, \"afterSign\")\n if (afterSign != null) {\n await Promise.resolve(afterSign(packContext))\n }\n }\n\n // eslint-disable-next-line\n protected createTransformerForExtraFiles(packContext: AfterPackContext): FileTransformer | null {\n return null\n }\n\n private copyAppFiles(\n taskManager: AsyncTaskManager,\n asarOptions: AsarOptions | null,\n resourcePath: string,\n defaultDestination: string,\n packContext: AfterPackContext,\n platformSpecificBuildOptions: DC,\n excludePatterns: Array<Minimatch>,\n macroExpander: (it: string) => string\n ) {\n const appDir = this.info.appDir\n const config = this.config\n const isElectronCompile = asarOptions != null && isElectronCompileUsed(this.info)\n\n const mainMatchers = getMainFileMatchers(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this, packContext.outDir, isElectronCompile)\n if (excludePatterns.length > 0) {\n for (const matcher of mainMatchers) {\n matcher.excludePatterns = excludePatterns\n }\n }\n\n const framework = this.info.framework\n const transformer = createTransformer(\n appDir,\n config,\n isElectronCompile\n ? {\n originalMain: this.info.metadata.main,\n main: ELECTRON_COMPILE_SHIM_FILENAME,\n ...config.extraMetadata,\n }\n : config.extraMetadata,\n framework.createTransformer == null ? null : framework.createTransformer()\n )\n\n const _computeFileSets = (matchers: Array<FileMatcher>) => {\n return computeFileSets(matchers, this.info.isPrepackedAppAsar ? null : transformer, this, isElectronCompile).then(async result => {\n if (!this.info.isPrepackedAppAsar && !this.info.areNodeModulesHandledExternally) {\n const moduleFileMatcher = getNodeModuleFileMatcher(appDir, defaultDestination, macroExpander, platformSpecificBuildOptions, this.info)\n result = result.concat(await computeNodeModuleFileSets(this, moduleFileMatcher))\n }\n return result.filter(it => it.files.length > 0)\n })\n }\n\n if (this.info.isPrepackedAppAsar) {\n taskManager.addTask(BluebirdPromise.each(_computeFileSets([new FileMatcher(appDir, resourcePath, macroExpander)]), it => copyAppFiles(it, this.info, transformer)))\n } else if (asarOptions == null) {\n // for ASAR all asar unpacked files will be extra transformed (e.g. sign of EXE and DLL) later,\n // for prepackaged asar extra transformation not supported yet,\n // so, extra transform if asar is disabled\n const transformerForExtraFiles = this.createTransformerForExtraFiles(packContext)\n const combinedTransformer: FileTransformer = file => {\n if (transformerForExtraFiles != null) {\n const result = transformerForExtraFiles(file)\n if (result != null) {\n return result\n }\n }\n return transformer(file)\n }\n\n taskManager.addTask(BluebirdPromise.each(_computeFileSets(mainMatchers), it => copyAppFiles(it, this.info, combinedTransformer)))\n } else {\n const unpackPattern = getFileMatchers(config, \"asarUnpack\", defaultDestination, {\n macroExpander,\n customBuildOptions: platformSpecificBuildOptions,\n globalOutDir: packContext.outDir,\n defaultSrc: appDir,\n })\n const fileMatcher = unpackPattern == null ? null : unpackPattern[0]\n taskManager.addTask(\n _computeFileSets(mainMatchers).then(async fileSets => {\n for (const fileSet of fileSets) {\n await transformFiles(transformer, fileSet)\n }\n\n await new AsarPackager(appDir, resourcePath, asarOptions, fileMatcher == null ? null : fileMatcher.createFilter()).pack(fileSets, this)\n })\n )\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected signApp(packContext: AfterPackContext, isAsar: boolean): Promise<any> {\n return Promise.resolve()\n }\n\n getIconPath(): Promise<string | null> {\n return Promise.resolve(null)\n }\n\n private async computeAsarOptions(customBuildOptions: DC): Promise<AsarOptions | null> {\n if (!isElectronBased(this.info.framework)) {\n return null\n }\n\n function errorMessage(name: string) {\n return `${name} is deprecated is deprecated and not supported — please use asarUnpack`\n }\n\n const buildMetadata = this.config as any\n if (buildMetadata[\"asar-unpack\"] != null) {\n throw new Error(errorMessage(\"asar-unpack\"))\n }\n if (buildMetadata[\"asar-unpack-dir\"] != null) {\n throw new Error(errorMessage(\"asar-unpack-dir\"))\n }\n\n const platformSpecific = customBuildOptions.asar\n const result = platformSpecific == null ? this.config.asar : platformSpecific\n if (result === false) {\n const appAsarStat = await statOrNull(path.join(this.info.appDir, \"app.asar\"))\n //noinspection ES6MissingAwait\n if (appAsarStat == null || !appAsarStat.isFile()) {\n log.warn(\n {\n solution: \"enable asar and use asarUnpack to unpack files that must be externally available\",\n },\n \"asar usage is disabled — this is strongly not recommended\"\n )\n }\n return null\n }\n\n if (result == null || result === true) {\n return {}\n }\n\n for (const name of [\"unpackDir\", \"unpack\"]) {\n if ((result as any)[name] != null) {\n throw new Error(errorMessage(`asar.${name}`))\n }\n }\n return deepAssign({}, result)\n }\n\n public getElectronSrcDir(dist: string): string {\n return path.resolve(this.projectDir, dist)\n }\n\n public getElectronDestinationDir(appOutDir: string): string {\n return appOutDir\n }\n\n getResourcesDir(appOutDir: string): string {\n if (this.platform === Platform.MAC) {\n return this.getMacOsResourcesDir(appOutDir)\n } else if (isElectronBased(this.info.framework)) {\n return path.join(appOutDir, \"resources\")\n } else {\n return appOutDir\n }\n }\n\n public getMacOsResourcesDir(appOutDir: string): string {\n return path.join(appOutDir, `${this.appInfo.productFilename}.app`, \"Contents\", \"Resources\")\n }\n\n private async checkFileInPackage(resourcesDir: string, file: string, messagePrefix: string, isAsar: boolean) {\n const relativeFile = path.relative(this.info.appDir, path.resolve(this.info.appDir, file))\n if (isAsar) {\n await checkFileInArchive(path.join(resourcesDir, \"app.asar\"), relativeFile, messagePrefix)\n return\n }\n\n const pathParsed = path.parse(file)\n // Even when packaging to asar is disabled, it does not imply that the main file can not be inside an .asar archive.\n // This may occur when the packaging is done manually before processing with electron-builder.\n if (pathParsed.dir.includes(\".asar\")) {\n // The path needs to be split to the part with an asar archive which acts like a directory and the part with\n // the path to main file itself. (e.g. path/arch.asar/dir/index.js -> path/arch.asar, dir/index.js)\n // noinspection TypeScriptValidateJSTypes\n const pathSplit: Array<string> = pathParsed.dir.split(path.sep)\n let partWithAsarIndex = 0\n pathSplit.some((pathPart: string, index: number) => {\n partWithAsarIndex = index\n return pathPart.endsWith(\".asar\")\n })\n const asarPath = path.join(...pathSplit.slice(0, partWithAsarIndex + 1))\n let mainPath = pathSplit.length > partWithAsarIndex + 1 ? path.join.apply(pathSplit.slice(partWithAsarIndex + 1)) : \"\"\n mainPath += path.join(mainPath, pathParsed.base)\n await checkFileInArchive(path.join(resourcesDir, \"app\", asarPath), mainPath, messagePrefix)\n } else {\n const fullPath = path.join(resourcesDir, \"app\", relativeFile)\n const outStat = await statOrNull(fullPath)\n if (outStat == null) {\n throw new Error(`${messagePrefix} \"${fullPath}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isFile()) {\n throw new Error(`${messagePrefix} \"${fullPath}\" is not a file. Seems like a wrong configuration.`)\n }\n }\n }\n }\n\n private async sanityCheckPackage(appOutDir: string, isAsar: boolean, framework: Framework): Promise<any> {\n const outStat = await statOrNull(appOutDir)\n if (outStat == null) {\n throw new Error(`Output directory \"${appOutDir}\" does not exist. Seems like a wrong configuration.`)\n } else {\n //noinspection ES6MissingAwait\n if (!outStat.isDirectory()) {\n throw new Error(`Output directory \"${appOutDir}\" is not a directory. Seems like a wrong configuration.`)\n }\n }\n\n const resourcesDir = this.getResourcesDir(appOutDir)\n const mainFile = (framework.getMainFile == null ? null : framework.getMainFile(this.platform)) || this.info.metadata.main || \"index.js\"\n await this.checkFileInPackage(resourcesDir, mainFile, \"Application entry file\", isAsar)\n await this.checkFileInPackage(resourcesDir, \"package.json\", \"Application\", isAsar)\n }\n\n // tslint:disable-next-line:no-invalid-template-strings\n computeSafeArtifactName(\n suggestedName: string | null,\n ext: string,\n arch?: Arch | null,\n skipDefaultArch = true,\n defaultArch?: string,\n safePattern = \"${name}-${version}-${arch}.${ext}\"\n ): string | null {\n return computeSafeArtifactNameIfNeeded(suggestedName, () =>\n this.computeArtifactName(safePattern, ext, skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n )\n }\n\n expandArtifactNamePattern(\n targetSpecificOptions: TargetSpecificOptions | null | undefined,\n ext: string,\n arch?: Arch | null,\n defaultPattern?: string,\n skipDefaultArch = true,\n defaultArch?: string\n ): string {\n const { pattern, isUserForced } = this.artifactPatternConfig(targetSpecificOptions, defaultPattern)\n return this.computeArtifactName(pattern, ext, !isUserForced && skipDefaultArch && arch === defaultArchFromString(defaultArch) ? null : arch)\n }\n\n artifactPatternConfig(targetSpecificOptions: TargetSpecificOptions | null | undefined, defaultPattern: string | undefined) {\n const userSpecifiedPattern = targetSpecificOptions?.artifactName || this.platformSpecificBuildOptions.artifactName || this.config.artifactName\n return {\n isUserForced: !!userSpecifiedPattern,\n pattern: userSpecifiedPattern || defaultPattern || \"${productName}-${version}-${arch}.${ext}\",\n }\n }\n\n expandArtifactBeautyNamePattern(targetSpecificOptions: TargetSpecificOptions | null | undefined, ext: string, arch?: Arch | null): string {\n // tslint:disable-next-line:no-invalid-template-strings\n return this.expandArtifactNamePattern(targetSpecificOptions, ext, arch, \"${productName} ${version} ${arch}.${ext}\", true)\n }\n\n private computeArtifactName(pattern: any, ext: string, arch: Arch | null | undefined): string {\n const archName = arch == null ? null : getArtifactArchName(arch, ext)\n return this.expandMacro(pattern, archName, {\n ext,\n })\n }\n\n expandMacro(pattern: string, arch?: string | null, extra: any = {}, isProductNameSanitized = true): string {\n return doExpandMacro(pattern, arch, this.appInfo, { os: this.platform.buildConfigurationKey, ...extra }, isProductNameSanitized)\n }\n\n generateName2(ext: string | null, classifier: string | null | undefined, deployment: boolean): string {\n const dotExt = ext == null ? \"\" : `.${ext}`\n const separator = ext === \"deb\" ? \"_\" : \"-\"\n return `${deployment ? this.appInfo.name : this.appInfo.productFilename}${separator}${this.appInfo.version}${classifier == null ? \"\" : `${separator}${classifier}`}${dotExt}`\n }\n\n getTempFile(suffix: string): Promise<string> {\n return this.info.tempDirManager.getTempFile({ suffix })\n }\n\n get fileAssociations(): Array<FileAssociation> {\n return asArray(this.config.fileAssociations).concat(asArray(this.platformSpecificBuildOptions.fileAssociations))\n }\n\n async getResource(custom: string | null | undefined, ...names: Array<string>): Promise<string | null> {\n const resourcesDir = this.info.buildResourcesDir\n if (custom === undefined) {\n const resourceList = await this.resourceList\n for (const name of names) {\n if (resourceList.includes(name)) {\n return path.join(resourcesDir, name)\n }\n }\n } else if (custom != null && !isEmptyOrSpaces(custom)) {\n const resourceList = await this.resourceList\n if (resourceList.includes(custom)) {\n return path.join(resourcesDir, custom)\n }\n\n let p = path.resolve(resourcesDir, custom)\n if ((await statOrNull(p)) == null) {\n p = path.resolve(this.projectDir, custom)\n if ((await statOrNull(p)) == null) {\n throw new InvalidConfigurationError(\n `cannot find specified resource \"${custom}\", nor relative to \"${resourcesDir}\", neither relative to project dir (\"${this.projectDir}\")`\n )\n }\n }\n return p\n }\n return null\n }\n\n get forceCodeSigning(): boolean {\n const forceCodeSigningPlatform = this.platformSpecificBuildOptions.forceCodeSigning\n return (forceCodeSigningPlatform == null ? this.config.forceCodeSigning : forceCodeSigningPlatform) || false\n }\n\n protected async getOrConvertIcon(format: IconFormat): Promise<string | null> {\n const result = await this.resolveIcon(asArray(this.platformSpecificBuildOptions.icon || this.config.icon), [], format)\n if (result.length === 0) {\n const framework = this.info.framework\n if (framework.getDefaultIcon != null) {\n return framework.getDefaultIcon(this.platform)\n }\n\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(framework.name)} icon is used`)\n return this.getDefaultFrameworkIcon()\n } else {\n return result[0].file\n }\n }\n\n getDefaultFrameworkIcon(): string | null {\n const framework = this.info.framework\n return framework.getDefaultIcon == null ? null : framework.getDefaultIcon(this.platform)\n }\n\n // convert if need, validate size (it is a reason why tool is called even if file has target extension (already specified as foo.icns for example))\n async resolveIcon(sources: Array<string>, fallbackSources: Array<string>, outputFormat: IconFormat): Promise<Array<IconInfo>> {\n const args = [\n \"icon\",\n \"--format\",\n outputFormat,\n \"--root\",\n this.buildResourcesDir,\n \"--root\",\n this.projectDir,\n \"--out\",\n path.resolve(this.projectDir, this.config.directories!.output!, `.icon-${outputFormat}`),\n ]\n for (const source of sources) {\n args.push(\"--input\", source)\n }\n for (const source of fallbackSources) {\n args.push(\"--fallback-input\", source)\n }\n\n const result: IconConvertResult = await executeAppBuilderAsJson(args)\n const errorMessage = result.error\n if (errorMessage != null) {\n throw new InvalidConfigurationError(errorMessage, result.errorCode)\n }\n\n if (result.isFallback) {\n log.warn({ reason: \"application icon is not set\" }, `default ${capitalizeFirstLetter(this.info.framework.name)} icon is used`)\n }\n\n return result.icons || []\n }\n}\n\nexport interface IconInfo {\n file: string\n size: number\n}\n\ninterface IconConvertResult {\n icons?: Array<IconInfo>\n\n error?: string\n errorCode?: string\n isFallback?: boolean\n}\n\nexport type IconFormat = \"icns\" | \"ico\" | \"set\"\n\nexport function isSafeGithubName(name: string) {\n return /^[0-9A-Za-z._-]+$/.test(name)\n}\n\nexport function computeSafeArtifactNameIfNeeded(suggestedName: string | null, safeNameProducer: () => string): string | null {\n // GitHub only allows the listed characters in file names.\n if (suggestedName != null) {\n if (isSafeGithubName(suggestedName)) {\n return null\n }\n\n // prefer to use suggested name - so, if space is the only problem, just replace only space to dash\n suggestedName = suggestedName.replace(/ /g, \"-\")\n if (isSafeGithubName(suggestedName)) {\n return suggestedName\n }\n }\n\n return safeNameProducer()\n}\n\n// remove leading dot\nexport function normalizeExt(ext: string) {\n return ext.startsWith(\".\") ? ext.substring(1) : ext\n}\n\nexport function resolveFunction<T>(executor: T | string, name: string): T {\n if (executor == null || typeof executor !== \"string\") {\n return executor\n }\n\n let p = executor as string\n if (p.startsWith(\".\")) {\n p = path.resolve(p)\n }\n\n try {\n p = require.resolve(p)\n } catch (e: any) {\n debug(e)\n p = path.resolve(p)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const m = require(p)\n const namedExport = m[name]\n if (namedExport == null) {\n return m.default || m\n } else {\n return namedExport\n }\n}\n\nexport function chooseNotNull(v1: string | null | undefined, v2: string | null | undefined): string | null | undefined {\n return v1 == null ? v2 : v1\n}\n\nfunction capitalizeFirstLetter(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1)\n}\n\nexport function isSafeToUnpackElectronOnRemoteBuildServer(packager: PlatformPackager<any>) {\n if (packager.platform !== Platform.LINUX || packager.config.remoteBuild === false) {\n return false\n }\n\n if (process.platform === \"win32\" || isEnvTrue(process.env._REMOTE_BUILD)) {\n return packager.config.electronDist == null && packager.config.electronDownload == null\n }\n return false\n}\n"]}
|
package/out/presets/rectCra.js
CHANGED
|
@@ -6,7 +6,7 @@ const fs_1 = require("builder-util/out/fs");
|
|
|
6
6
|
const path = require("path");
|
|
7
7
|
/** @internal */
|
|
8
8
|
async function reactCra(projectDir) {
|
|
9
|
-
if ((await fs_1.statOrNull(path.join(projectDir, "public", "electron.js"))) == null) {
|
|
9
|
+
if ((await (0, fs_1.statOrNull)(path.join(projectDir, "public", "electron.js"))) == null) {
|
|
10
10
|
// noinspection SpellCheckingInspection
|
|
11
11
|
builder_util_1.log.warn("public/electron.js not found. Please see https://medium.com/@kitze/%EF%B8%8F-from-react-to-an-electron-app-ready-for-production-a0468ecb1da3");
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rectCra.js","sourceRoot":"","sources":["../../src/presets/rectCra.ts"],"names":[],"mappings":";;;AAAA,+CAAkC;AAClC,4CAAgD;AAChD,6BAA4B;AAG5B,gBAAgB;AACT,KAAK,UAAU,QAAQ,CAAC,UAAkB;IAC/C,IAAI,CAAC,MAAM,eAAU,
|
|
1
|
+
{"version":3,"file":"rectCra.js","sourceRoot":"","sources":["../../src/presets/rectCra.ts"],"names":[],"mappings":";;;AAAA,+CAAkC;AAClC,4CAAgD;AAChD,6BAA4B;AAG5B,gBAAgB;AACT,KAAK,UAAU,QAAQ,CAAC,UAAkB;IAC/C,IAAI,CAAC,MAAM,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;QAC9E,uCAAuC;QACvC,kBAAG,CAAC,IAAI,CAAC,8IAA8I,CAAC,CAAA;KACzJ;IAED,OAAO;QACL,WAAW,EAAE;YACX,cAAc,EAAE,QAAQ;SACzB;QACD,KAAK,EAAE,CAAC,YAAY,CAAC;QACrB,aAAa,EAAE;YACb,IAAI,EAAE,mBAAmB;SAC1B;KACF,CAAA;AACH,CAAC;AAfD,4BAeC","sourcesContent":["import { log } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport * as path from \"path\"\nimport { Configuration } from \"../configuration\"\n\n/** @internal */\nexport async function reactCra(projectDir: string): Promise<Configuration> {\n if ((await statOrNull(path.join(projectDir, \"public\", \"electron.js\"))) == null) {\n // noinspection SpellCheckingInspection\n log.warn(\"public/electron.js not found. Please see https://medium.com/@kitze/%EF%B8%8F-from-react-to-an-electron-app-ready-for-production-a0468ecb1da3\")\n }\n\n return {\n directories: {\n buildResources: \"assets\",\n },\n files: [\"build/**/*\"],\n extraMetadata: {\n main: \"build/electron.js\",\n },\n }\n}\n"]}
|
|
@@ -14,10 +14,10 @@ class BitbucketPublisher extends electron_publish_1.HttpPublisher {
|
|
|
14
14
|
this.hostname = "api.bitbucket.org";
|
|
15
15
|
const token = info.token || process.env.BITBUCKET_TOKEN || null;
|
|
16
16
|
const username = info.username || process.env.BITBUCKET_USERNAME || null;
|
|
17
|
-
if (builder_util_1.isEmptyOrSpaces(token)) {
|
|
17
|
+
if ((0, builder_util_1.isEmptyOrSpaces)(token)) {
|
|
18
18
|
throw new builder_util_1.InvalidConfigurationError(`Bitbucket token is not set using env "BITBUCKET_TOKEN" (see https://www.electron.build/configuration/publish#BitbucketOptions)`);
|
|
19
19
|
}
|
|
20
|
-
if (builder_util_1.isEmptyOrSpaces(username)) {
|
|
20
|
+
if ((0, builder_util_1.isEmptyOrSpaces)(username)) {
|
|
21
21
|
builder_util_1.log.warn('No Bitbucket username provided via "BITBUCKET_USERNAME". Defaulting to use repo owner.');
|
|
22
22
|
}
|
|
23
23
|
this.info = info;
|
|
@@ -26,7 +26,7 @@ class BitbucketPublisher extends electron_publish_1.HttpPublisher {
|
|
|
26
26
|
}
|
|
27
27
|
doUpload(fileName, _arch, _dataLength, _requestProcessor, file) {
|
|
28
28
|
return builder_util_runtime_1.HttpExecutor.retryOnServerError(async () => {
|
|
29
|
-
const fileContent = await fs_extra_1.readFile(file);
|
|
29
|
+
const fileContent = await (0, fs_extra_1.readFile)(file);
|
|
30
30
|
const form = new FormData();
|
|
31
31
|
form.append("files", fileContent, fileName);
|
|
32
32
|
const upload = {
|
|
@@ -35,7 +35,7 @@ class BitbucketPublisher extends electron_publish_1.HttpPublisher {
|
|
|
35
35
|
headers: form.getHeaders(),
|
|
36
36
|
timeout: this.info.timeout || undefined,
|
|
37
37
|
};
|
|
38
|
-
await nodeHttpExecutor_1.httpExecutor.doApiRequest(builder_util_runtime_1.configureRequestOptions(upload, this.auth, "POST"), this.context.cancellationToken, it => form.pipe(it));
|
|
38
|
+
await nodeHttpExecutor_1.httpExecutor.doApiRequest((0, builder_util_runtime_1.configureRequestOptions)(upload, this.auth, "POST"), this.context.cancellationToken, it => form.pipe(it));
|
|
39
39
|
return fileName;
|
|
40
40
|
});
|
|
41
41
|
}
|
|
@@ -45,7 +45,7 @@ class BitbucketPublisher extends electron_publish_1.HttpPublisher {
|
|
|
45
45
|
path: `${this.basePath}/${filename}`,
|
|
46
46
|
timeout: this.info.timeout || undefined,
|
|
47
47
|
};
|
|
48
|
-
await nodeHttpExecutor_1.httpExecutor.request(builder_util_runtime_1.configureRequestOptions(req, this.auth, "DELETE"), this.context.cancellationToken);
|
|
48
|
+
await nodeHttpExecutor_1.httpExecutor.request((0, builder_util_runtime_1.configureRequestOptions)(req, this.auth, "DELETE"), this.context.cancellationToken);
|
|
49
49
|
}
|
|
50
50
|
toString() {
|
|
51
51
|
const { owner, slug, channel } = this.info;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitbucketPublisher.js","sourceRoot":"","sources":["../../src/publish/BitbucketPublisher.ts"],"names":[],"mappings":";;;AAAA,+CAAoF;AACpF,wEAAgE;AAEhE,uDAAgE;AAEhE,+DAA4E;AAC5E,sCAAqC;AACrC,uCAAmC;AAEnC,MAAa,kBAAmB,SAAQ,gCAAa;IAQnD,YAAY,OAAuB,EAAE,IAAsB;QACzD,KAAK,CAAC,OAAO,CAAC,CAAA;QARP,iBAAY,GAAG,WAAW,CAAA;QAC1B,aAAQ,GAAG,mBAAmB,CAAA;QASrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAA;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAA;QAExE,IAAI,8BAAe,
|
|
1
|
+
{"version":3,"file":"BitbucketPublisher.js","sourceRoot":"","sources":["../../src/publish/BitbucketPublisher.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, InvalidConfigurationError, isEmptyOrSpaces, log } from \"builder-util\"\nimport { httpExecutor } from \"builder-util/out/nodeHttpExecutor\"\nimport { ClientRequest, RequestOptions } from \"http\"\nimport { HttpPublisher, PublishContext } from \"electron-publish\"\nimport { BitbucketOptions } from \"builder-util-runtime/out/publishOptions\"\nimport { configureRequestOptions, HttpExecutor } from \"builder-util-runtime\"\nimport * as FormData from \"form-data\"\nimport { readFile } from \"fs-extra\"\n\nexport class BitbucketPublisher extends HttpPublisher {\n readonly providerName = \"bitbucket\"\n readonly hostname = \"api.bitbucket.org\"\n\n private readonly info: BitbucketOptions\n private readonly auth: string\n private readonly basePath: string\n\n constructor(context: PublishContext, info: BitbucketOptions) {\n super(context)\n\n const token = info.token || process.env.BITBUCKET_TOKEN || null\n const username = info.username || process.env.BITBUCKET_USERNAME || null\n\n if (isEmptyOrSpaces(token)) {\n throw new InvalidConfigurationError(`Bitbucket token is not set using env \"BITBUCKET_TOKEN\" (see https://www.electron.build/configuration/publish#BitbucketOptions)`)\n }\n\n if (isEmptyOrSpaces(username)) {\n log.warn('No Bitbucket username provided via \"BITBUCKET_USERNAME\". Defaulting to use repo owner.')\n }\n\n this.info = info\n this.auth = BitbucketPublisher.convertAppPassword(username ?? this.info.owner, token)\n this.basePath = `/2.0/repositories/${this.info.owner}/${this.info.slug}/downloads`\n }\n\n protected doUpload(\n fileName: string,\n _arch: Arch,\n _dataLength: number,\n _requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void,\n file: string\n ): Promise<any> {\n return HttpExecutor.retryOnServerError(async () => {\n const fileContent = await readFile(file)\n const form = new FormData()\n form.append(\"files\", fileContent, fileName)\n const upload: RequestOptions = {\n hostname: this.hostname,\n path: this.basePath,\n headers: form.getHeaders(),\n timeout: this.info.timeout || undefined,\n }\n await httpExecutor.doApiRequest(configureRequestOptions(upload, this.auth, \"POST\"), this.context.cancellationToken, it => form.pipe(it))\n return fileName\n })\n }\n\n async deleteRelease(filename: string): Promise<void> {\n const req: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/${filename}`,\n timeout: this.info.timeout || undefined,\n }\n await httpExecutor.request(configureRequestOptions(req, this.auth, \"DELETE\"), this.context.cancellationToken)\n }\n\n toString() {\n const { owner, slug, channel } = this.info\n return `Bitbucket (owner: ${owner}, slug: ${slug}, channel: ${channel})`\n }\n\n static convertAppPassword(username: string, token: string) {\n const base64encodedData = Buffer.from(`${username}:${token.trim()}`).toString(\"base64\")\n return `Basic ${base64encodedData}`\n }\n}\n"]}
|
|
@@ -12,7 +12,7 @@ class KeygenPublisher extends electron_publish_1.HttpPublisher {
|
|
|
12
12
|
this.providerName = "keygen";
|
|
13
13
|
this.hostname = "api.keygen.sh";
|
|
14
14
|
const token = process.env.KEYGEN_TOKEN;
|
|
15
|
-
if (builder_util_1.isEmptyOrSpaces(token)) {
|
|
15
|
+
if ((0, builder_util_1.isEmptyOrSpaces)(token)) {
|
|
16
16
|
throw new builder_util_1.InvalidConfigurationError(`Keygen token is not set using env "KEYGEN_TOKEN" (see https://www.electron.build/configuration/publish#KeygenOptions)`);
|
|
17
17
|
}
|
|
18
18
|
this.info = info;
|
|
@@ -47,7 +47,7 @@ class KeygenPublisher extends electron_publish_1.HttpPublisher {
|
|
|
47
47
|
},
|
|
48
48
|
timeout: this.info.timeout || undefined,
|
|
49
49
|
};
|
|
50
|
-
await nodeHttpExecutor_1.httpExecutor.doApiRequest(builder_util_runtime_1.configureRequestOptions(upload, null, "PUT"), this.context.cancellationToken, requestProcessor);
|
|
50
|
+
await nodeHttpExecutor_1.httpExecutor.doApiRequest((0, builder_util_runtime_1.configureRequestOptions)(upload, null, "PUT"), this.context.cancellationToken, requestProcessor);
|
|
51
51
|
}
|
|
52
52
|
async createArtifact(releaseId, fileName, dataLength) {
|
|
53
53
|
const upload = {
|
|
@@ -65,7 +65,7 @@ class KeygenPublisher extends electron_publish_1.HttpPublisher {
|
|
|
65
65
|
type: "artifacts",
|
|
66
66
|
attributes: {
|
|
67
67
|
filename: fileName,
|
|
68
|
-
filetype: filename_1.getCompleteExtname(fileName),
|
|
68
|
+
filetype: (0, filename_1.getCompleteExtname)(fileName),
|
|
69
69
|
filesize: dataLength,
|
|
70
70
|
platform: this.info.platform,
|
|
71
71
|
},
|
|
@@ -79,7 +79,7 @@ class KeygenPublisher extends electron_publish_1.HttpPublisher {
|
|
|
79
79
|
},
|
|
80
80
|
};
|
|
81
81
|
builder_util_1.log.debug({ data: JSON.stringify(data) }, "Keygen create artifact");
|
|
82
|
-
return builder_util_runtime_1.parseJson(nodeHttpExecutor_1.httpExecutor.request(builder_util_runtime_1.configureRequestOptions(upload, this.auth, "POST"), this.context.cancellationToken, { data }));
|
|
82
|
+
return (0, builder_util_runtime_1.parseJson)(nodeHttpExecutor_1.httpExecutor.request((0, builder_util_runtime_1.configureRequestOptions)(upload, this.auth, "POST"), this.context.cancellationToken, { data }));
|
|
83
83
|
}
|
|
84
84
|
async getOrCreateRelease() {
|
|
85
85
|
try {
|
|
@@ -114,7 +114,7 @@ class KeygenPublisher extends electron_publish_1.HttpPublisher {
|
|
|
114
114
|
},
|
|
115
115
|
timeout: this.info.timeout || undefined,
|
|
116
116
|
};
|
|
117
|
-
return builder_util_runtime_1.parseJson(nodeHttpExecutor_1.httpExecutor.request(builder_util_runtime_1.configureRequestOptions(req, this.auth, "GET"), this.context.cancellationToken, null));
|
|
117
|
+
return (0, builder_util_runtime_1.parseJson)(nodeHttpExecutor_1.httpExecutor.request((0, builder_util_runtime_1.configureRequestOptions)(req, this.auth, "GET"), this.context.cancellationToken, null));
|
|
118
118
|
}
|
|
119
119
|
async createRelease() {
|
|
120
120
|
const req = {
|
|
@@ -144,7 +144,7 @@ class KeygenPublisher extends electron_publish_1.HttpPublisher {
|
|
|
144
144
|
},
|
|
145
145
|
};
|
|
146
146
|
builder_util_1.log.debug({ data: JSON.stringify(data) }, "Keygen create release");
|
|
147
|
-
return builder_util_runtime_1.parseJson(nodeHttpExecutor_1.httpExecutor.request(builder_util_runtime_1.configureRequestOptions(req, this.auth, "POST"), this.context.cancellationToken, { data }));
|
|
147
|
+
return (0, builder_util_runtime_1.parseJson)(nodeHttpExecutor_1.httpExecutor.request((0, builder_util_runtime_1.configureRequestOptions)(req, this.auth, "POST"), this.context.cancellationToken, { data }));
|
|
148
148
|
}
|
|
149
149
|
async deleteRelease(releaseId) {
|
|
150
150
|
const req = {
|
|
@@ -156,7 +156,7 @@ class KeygenPublisher extends electron_publish_1.HttpPublisher {
|
|
|
156
156
|
},
|
|
157
157
|
timeout: this.info.timeout || undefined,
|
|
158
158
|
};
|
|
159
|
-
await nodeHttpExecutor_1.httpExecutor.request(builder_util_runtime_1.configureRequestOptions(req, this.auth, "DELETE"), this.context.cancellationToken);
|
|
159
|
+
await nodeHttpExecutor_1.httpExecutor.request((0, builder_util_runtime_1.configureRequestOptions)(req, this.auth, "DELETE"), this.context.cancellationToken);
|
|
160
160
|
}
|
|
161
161
|
toString() {
|
|
162
162
|
const { account, product, platform } = this.info;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeygenPublisher.js","sourceRoot":"","sources":["../../src/publish/KeygenPublisher.ts"],"names":[],"mappings":";;;AAAA,+CAAoF;AACpF,wEAAgE;AAEhE,uDAAgE;AAEhE,+DAAuF;AACvF,+CAAqD;AAyErD,MAAa,eAAgB,SAAQ,gCAAa;IAShD,YAAY,OAAuB,EAAE,IAAmB,EAAE,OAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAA;QATP,iBAAY,GAAG,QAAQ,CAAA;QACvB,aAAQ,GAAG,eAAe,CAAA;QAUjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;QACtC,IAAI,8BAAe,CAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,IAAI,wCAAyB,CAAC,uHAAuH,CAAC,CAAA;SAC7J;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,UAAU,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;IACrD,CAAC;IAES,QAAQ,CAChB,QAAgB,EAChB,KAAW,EACX,UAAkB,EAClB,gBAAkF;IAClF,6DAA6D;IAC7D,KAAa;QAEb,OAAO,mCAAY,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACxD,IAAI,MAAM,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;aACxF;YAED,MAAM,IAAI,CAAC,cAAc,CAAC,IAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAA;YAE3E,OAAO,IAAK,CAAC,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,SAAc,EACd,QAAgB,EAChB,UAAkB,EAClB,gBAAkF;QAElF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;QACnF,IAAI,MAAM,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SACzF;QAED,4EAA4E;QAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,GAAmB;YAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM;YAC/B,OAAO,EAAE;gBACP,gBAAgB,EAAE,UAAU;aAC7B;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,MAAM,+BAAY,CAAC,YAAY,CAAC,8CAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;IACjI,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAc,EAAE,QAAgB,EAAE,UAAkB;QAC/E,MAAM,MAAM,GAAmB;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,YAAY;YAClC,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;gBACvB,MAAM,EAAE,aAAa;aACtB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,MAAM,IAAI,GAAqC;YAC7C,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE;gBACV,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,6BAAkB,CAAC,QAAQ,CAAC;gBACtC,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;aAC7B;YACD,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,SAAS;qBACd;iBACF;aACF;SACF,CAAA;QAED,kBAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAA;QAEnE,OAAO,gCAAS,CAAC,+BAAY,CAAC,OAAO,CAAC,8CAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACtI,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI;YACF,6CAA6C;YAC7C,OAAO,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE;gBACxB,MAAM,CAAC,CAAA;aACR;YAED,IAAI;gBACF,kEAAkE;gBAClE,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;aAClC;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE;oBAChD,MAAM,CAAC,CAAA;iBACR;gBAED,oEAAoE;gBACpE,uCAAuC;gBACvC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;aACzB;SACF;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,GAAG,GAAmB;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC9E,OAAO,EAAE;gBACP,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;aACxB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,OAAO,gCAAS,CAAC,+BAAY,CAAC,OAAO,CAAC,8CAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAA;IAC9H,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,GAAG,GAAmB;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW;YACjC,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;aACxB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,MAAM,IAAI,GAAoC;YAC5C,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ;gBACtC,MAAM,EAAE,WAAW;aACpB;YACD,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;qBACtB;iBACF;aACF;SACF,CAAA;QAED,kBAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAA;QAElE,OAAO,gCAAS,CAAC,+BAAY,CAAC,OAAO,CAAC,8CAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACnI,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,GAAG,GAAmB;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,aAAa,SAAS,EAAE;YAC9C,OAAO,EAAE;gBACP,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;aACxB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QACD,MAAM,+BAAY,CAAC,OAAO,CAAC,8CAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/G,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;QAChD,OAAO,oBAAoB,OAAO,cAAc,OAAO,eAAe,QAAQ,cAAc,IAAI,CAAC,OAAO,GAAG,CAAA;IAC7G,CAAC;CACF;AAjMD,0CAiMC","sourcesContent":["import { Arch, InvalidConfigurationError, log, isEmptyOrSpaces } from \"builder-util\"\nimport { httpExecutor } from \"builder-util/out/nodeHttpExecutor\"\nimport { ClientRequest, RequestOptions } from \"http\"\nimport { HttpPublisher, PublishContext } from \"electron-publish\"\nimport { KeygenOptions } from \"builder-util-runtime/out/publishOptions\"\nimport { configureRequestOptions, HttpExecutor, parseJson } from \"builder-util-runtime\"\nimport { getCompleteExtname } from \"../util/filename\"\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: RecursivePartial<T[P]>\n}\n\nexport interface KeygenError {\n title: string\n detail: string\n code: string\n}\n\nexport interface KeygenRelease {\n id: string\n type: \"releases\"\n attributes: {\n name: string | null\n description: string | null\n channel: \"stable\" | \"rc\" | \"beta\" | \"alpha\" | \"dev\"\n status: \"DRAFT\" | \"PUBLISHED\" | \"YANKED\"\n tag: string\n version: string\n semver: {\n major: number\n minor: number\n patch: number\n prerelease: string | null\n build: string | null\n }\n metadata: { [s: string]: any }\n created: string\n updated: string\n yanked: string | null\n }\n relationships: {\n account: {\n data: { type: \"accounts\"; id: string }\n }\n product: {\n data: { type: \"products\"; id: string }\n }\n }\n}\n\nexport interface KeygenArtifact {\n id: string\n type: \"artifacts\"\n attributes: {\n filename: string\n filetype: string | null\n filesize: number | null\n platform: string | null\n arch: string | null\n signature: string | null\n checksum: string | null\n status: \"WAITING\" | \"UPLOADED\" | \"FAILED\" | \"YANKED\"\n metadata: { [s: string]: any }\n created: string\n updated: string\n }\n relationships: {\n account: {\n data: { type: \"accounts\"; id: string }\n }\n release: {\n data: { type: \"releases\"; id: string }\n }\n }\n links: {\n redirect: string\n }\n}\n\nexport class KeygenPublisher extends HttpPublisher {\n readonly providerName = \"keygen\"\n readonly hostname = \"api.keygen.sh\"\n\n private readonly info: KeygenOptions\n private readonly auth: string\n private readonly version: string\n private readonly basePath: string\n\n constructor(context: PublishContext, info: KeygenOptions, version: string) {\n super(context)\n\n const token = process.env.KEYGEN_TOKEN\n if (isEmptyOrSpaces(token)) {\n throw new InvalidConfigurationError(`Keygen token is not set using env \"KEYGEN_TOKEN\" (see https://www.electron.build/configuration/publish#KeygenOptions)`)\n }\n\n this.info = info\n this.auth = `Bearer ${token.trim()}`\n this.version = version\n this.basePath = `/v1/accounts/${this.info.account}`\n }\n\n protected doUpload(\n fileName: string,\n _arch: Arch,\n dataLength: number,\n requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _file: string\n ): Promise<string> {\n return HttpExecutor.retryOnServerError(async () => {\n const { data, errors } = await this.getOrCreateRelease()\n if (errors) {\n throw new Error(`Keygen - Creating release returned errors: ${JSON.stringify(errors)}`)\n }\n\n await this.uploadArtifact(data!.id, fileName, dataLength, requestProcessor)\n\n return data!.id\n })\n }\n\n private async uploadArtifact(\n releaseId: any,\n fileName: string,\n dataLength: number,\n requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void\n ): Promise<void> {\n const { data, errors } = await this.createArtifact(releaseId, fileName, dataLength)\n if (errors) {\n throw new Error(`Keygen - Creating artifact returned errors: ${JSON.stringify(errors)}`)\n }\n\n // Follow the redirect and upload directly to S3-equivalent storage provider\n const url = new URL(data!.links.redirect)\n const upload: RequestOptions = {\n hostname: url.hostname,\n path: url.pathname + url.search,\n headers: {\n \"Content-Length\": dataLength,\n },\n timeout: this.info.timeout || undefined,\n }\n\n await httpExecutor.doApiRequest(configureRequestOptions(upload, null, \"PUT\"), this.context.cancellationToken, requestProcessor)\n }\n\n private async createArtifact(releaseId: any, fileName: string, dataLength: number): Promise<{ data?: KeygenArtifact; errors?: KeygenError[] }> {\n const upload: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/artifacts`,\n headers: {\n \"Content-Type\": \"application/vnd.api+json\",\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n Prefer: \"no-redirect\",\n },\n timeout: this.info.timeout || undefined,\n }\n\n const data: RecursivePartial<KeygenArtifact> = {\n type: \"artifacts\",\n attributes: {\n filename: fileName,\n filetype: getCompleteExtname(fileName),\n filesize: dataLength,\n platform: this.info.platform,\n },\n relationships: {\n release: {\n data: {\n type: \"releases\",\n id: releaseId,\n },\n },\n },\n }\n\n log.debug({ data: JSON.stringify(data) }, \"Keygen create artifact\")\n\n return parseJson(httpExecutor.request(configureRequestOptions(upload, this.auth, \"POST\"), this.context.cancellationToken, { data }))\n }\n\n private async getOrCreateRelease(): Promise<{ data?: KeygenRelease; errors?: KeygenError[] }> {\n try {\n // First, we'll attempt to fetch the release.\n return await this.getRelease()\n } catch (e) {\n if (e.statusCode !== 404) {\n throw e\n }\n\n try {\n // Next, if the release doesn't exist, we'll attempt to create it.\n return await this.createRelease()\n } catch (e) {\n if (e.statusCode !== 409 && e.statusCode !== 422) {\n throw e\n }\n\n // Lastly, when a conflict occurs (in the case of parallel uploads),\n // we'll try to fetch it one last time.\n return this.getRelease()\n }\n }\n }\n\n private async getRelease(): Promise<{ data?: KeygenRelease; errors?: KeygenError[] }> {\n const req: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/releases/${this.version}?product=${this.info.product}`,\n headers: {\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n },\n timeout: this.info.timeout || undefined,\n }\n\n return parseJson(httpExecutor.request(configureRequestOptions(req, this.auth, \"GET\"), this.context.cancellationToken, null))\n }\n\n private async createRelease(): Promise<{ data?: KeygenRelease; errors?: KeygenError[] }> {\n const req: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/releases`,\n headers: {\n \"Content-Type\": \"application/vnd.api+json\",\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n },\n timeout: this.info.timeout || undefined,\n }\n\n const data: RecursivePartial<KeygenRelease> = {\n type: \"releases\",\n attributes: {\n version: this.version,\n channel: this.info.channel || \"stable\",\n status: \"PUBLISHED\",\n },\n relationships: {\n product: {\n data: {\n type: \"products\",\n id: this.info.product,\n },\n },\n },\n }\n\n log.debug({ data: JSON.stringify(data) }, \"Keygen create release\")\n\n return parseJson(httpExecutor.request(configureRequestOptions(req, this.auth, \"POST\"), this.context.cancellationToken, { data }))\n }\n\n async deleteRelease(releaseId: string): Promise<void> {\n const req: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/releases/${releaseId}`,\n headers: {\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n },\n timeout: this.info.timeout || undefined,\n }\n await httpExecutor.request(configureRequestOptions(req, this.auth, \"DELETE\"), this.context.cancellationToken)\n }\n\n toString() {\n const { account, product, platform } = this.info\n return `Keygen (account: ${account}, product: ${product}, platform: ${platform}, version: ${this.version})`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"KeygenPublisher.js","sourceRoot":"","sources":["../../src/publish/KeygenPublisher.ts"],"names":[],"mappings":";;;AAAA,+CAAoF;AACpF,wEAAgE;AAEhE,uDAAgE;AAEhE,+DAAuF;AACvF,+CAAqD;AAyErD,MAAa,eAAgB,SAAQ,gCAAa;IAShD,YAAY,OAAuB,EAAE,IAAmB,EAAE,OAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAA;QATP,iBAAY,GAAG,QAAQ,CAAA;QACvB,aAAQ,GAAG,eAAe,CAAA;QAUjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;QACtC,IAAI,IAAA,8BAAe,EAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,IAAI,wCAAyB,CAAC,uHAAuH,CAAC,CAAA;SAC7J;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,UAAU,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;IACrD,CAAC;IAES,QAAQ,CAChB,QAAgB,EAChB,KAAW,EACX,UAAkB,EAClB,gBAAkF;IAClF,6DAA6D;IAC7D,KAAa;QAEb,OAAO,mCAAY,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACxD,IAAI,MAAM,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;aACxF;YAED,MAAM,IAAI,CAAC,cAAc,CAAC,IAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAA;YAE3E,OAAO,IAAK,CAAC,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,SAAc,EACd,QAAgB,EAChB,UAAkB,EAClB,gBAAkF;QAElF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;QACnF,IAAI,MAAM,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SACzF;QAED,4EAA4E;QAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,GAAmB;YAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM;YAC/B,OAAO,EAAE;gBACP,gBAAgB,EAAE,UAAU;aAC7B;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,MAAM,+BAAY,CAAC,YAAY,CAAC,IAAA,8CAAuB,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;IACjI,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAc,EAAE,QAAgB,EAAE,UAAkB;QAC/E,MAAM,MAAM,GAAmB;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,YAAY;YAClC,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;gBACvB,MAAM,EAAE,aAAa;aACtB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,MAAM,IAAI,GAAqC;YAC7C,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE;gBACV,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,IAAA,6BAAkB,EAAC,QAAQ,CAAC;gBACtC,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;aAC7B;YACD,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,SAAS;qBACd;iBACF;aACF;SACF,CAAA;QAED,kBAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAA;QAEnE,OAAO,IAAA,gCAAS,EAAC,+BAAY,CAAC,OAAO,CAAC,IAAA,8CAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACtI,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI;YACF,6CAA6C;YAC7C,OAAO,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;SAC/B;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE;gBACxB,MAAM,CAAC,CAAA;aACR;YAED,IAAI;gBACF,kEAAkE;gBAClE,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;aAClC;YAAC,OAAO,CAAM,EAAE;gBACf,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE;oBAChD,MAAM,CAAC,CAAA;iBACR;gBAED,oEAAoE;gBACpE,uCAAuC;gBACvC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;aACzB;SACF;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,GAAG,GAAmB;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC9E,OAAO,EAAE;gBACP,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;aACxB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,OAAO,IAAA,gCAAS,EAAC,+BAAY,CAAC,OAAO,CAAC,IAAA,8CAAuB,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAA;IAC9H,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,GAAG,GAAmB;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW;YACjC,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;aACxB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QAED,MAAM,IAAI,GAAoC;YAC5C,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ;gBACtC,MAAM,EAAE,WAAW;aACpB;YACD,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;qBACtB;iBACF;aACF;SACF,CAAA;QAED,kBAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAA;QAElE,OAAO,IAAA,gCAAS,EAAC,+BAAY,CAAC,OAAO,CAAC,IAAA,8CAAuB,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACnI,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,GAAG,GAAmB;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,aAAa,SAAS,EAAE;YAC9C,OAAO,EAAE;gBACP,MAAM,EAAE,0BAA0B;gBAClC,gBAAgB,EAAE,KAAK;aACxB;YACD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;SACxC,CAAA;QACD,MAAM,+BAAY,CAAC,OAAO,CAAC,IAAA,8CAAuB,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/G,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;QAChD,OAAO,oBAAoB,OAAO,cAAc,OAAO,eAAe,QAAQ,cAAc,IAAI,CAAC,OAAO,GAAG,CAAA;IAC7G,CAAC;CACF;AAjMD,0CAiMC","sourcesContent":["import { Arch, InvalidConfigurationError, log, isEmptyOrSpaces } from \"builder-util\"\nimport { httpExecutor } from \"builder-util/out/nodeHttpExecutor\"\nimport { ClientRequest, RequestOptions } from \"http\"\nimport { HttpPublisher, PublishContext } from \"electron-publish\"\nimport { KeygenOptions } from \"builder-util-runtime/out/publishOptions\"\nimport { configureRequestOptions, HttpExecutor, parseJson } from \"builder-util-runtime\"\nimport { getCompleteExtname } from \"../util/filename\"\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: RecursivePartial<T[P]>\n}\n\nexport interface KeygenError {\n title: string\n detail: string\n code: string\n}\n\nexport interface KeygenRelease {\n id: string\n type: \"releases\"\n attributes: {\n name: string | null\n description: string | null\n channel: \"stable\" | \"rc\" | \"beta\" | \"alpha\" | \"dev\"\n status: \"DRAFT\" | \"PUBLISHED\" | \"YANKED\"\n tag: string\n version: string\n semver: {\n major: number\n minor: number\n patch: number\n prerelease: string | null\n build: string | null\n }\n metadata: { [s: string]: any }\n created: string\n updated: string\n yanked: string | null\n }\n relationships: {\n account: {\n data: { type: \"accounts\"; id: string }\n }\n product: {\n data: { type: \"products\"; id: string }\n }\n }\n}\n\nexport interface KeygenArtifact {\n id: string\n type: \"artifacts\"\n attributes: {\n filename: string\n filetype: string | null\n filesize: number | null\n platform: string | null\n arch: string | null\n signature: string | null\n checksum: string | null\n status: \"WAITING\" | \"UPLOADED\" | \"FAILED\" | \"YANKED\"\n metadata: { [s: string]: any }\n created: string\n updated: string\n }\n relationships: {\n account: {\n data: { type: \"accounts\"; id: string }\n }\n release: {\n data: { type: \"releases\"; id: string }\n }\n }\n links: {\n redirect: string\n }\n}\n\nexport class KeygenPublisher extends HttpPublisher {\n readonly providerName = \"keygen\"\n readonly hostname = \"api.keygen.sh\"\n\n private readonly info: KeygenOptions\n private readonly auth: string\n private readonly version: string\n private readonly basePath: string\n\n constructor(context: PublishContext, info: KeygenOptions, version: string) {\n super(context)\n\n const token = process.env.KEYGEN_TOKEN\n if (isEmptyOrSpaces(token)) {\n throw new InvalidConfigurationError(`Keygen token is not set using env \"KEYGEN_TOKEN\" (see https://www.electron.build/configuration/publish#KeygenOptions)`)\n }\n\n this.info = info\n this.auth = `Bearer ${token.trim()}`\n this.version = version\n this.basePath = `/v1/accounts/${this.info.account}`\n }\n\n protected doUpload(\n fileName: string,\n _arch: Arch,\n dataLength: number,\n requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _file: string\n ): Promise<string> {\n return HttpExecutor.retryOnServerError(async () => {\n const { data, errors } = await this.getOrCreateRelease()\n if (errors) {\n throw new Error(`Keygen - Creating release returned errors: ${JSON.stringify(errors)}`)\n }\n\n await this.uploadArtifact(data!.id, fileName, dataLength, requestProcessor)\n\n return data!.id\n })\n }\n\n private async uploadArtifact(\n releaseId: any,\n fileName: string,\n dataLength: number,\n requestProcessor: (request: ClientRequest, reject: (error: Error) => void) => void\n ): Promise<void> {\n const { data, errors } = await this.createArtifact(releaseId, fileName, dataLength)\n if (errors) {\n throw new Error(`Keygen - Creating artifact returned errors: ${JSON.stringify(errors)}`)\n }\n\n // Follow the redirect and upload directly to S3-equivalent storage provider\n const url = new URL(data!.links.redirect)\n const upload: RequestOptions = {\n hostname: url.hostname,\n path: url.pathname + url.search,\n headers: {\n \"Content-Length\": dataLength,\n },\n timeout: this.info.timeout || undefined,\n }\n\n await httpExecutor.doApiRequest(configureRequestOptions(upload, null, \"PUT\"), this.context.cancellationToken, requestProcessor)\n }\n\n private async createArtifact(releaseId: any, fileName: string, dataLength: number): Promise<{ data?: KeygenArtifact; errors?: KeygenError[] }> {\n const upload: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/artifacts`,\n headers: {\n \"Content-Type\": \"application/vnd.api+json\",\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n Prefer: \"no-redirect\",\n },\n timeout: this.info.timeout || undefined,\n }\n\n const data: RecursivePartial<KeygenArtifact> = {\n type: \"artifacts\",\n attributes: {\n filename: fileName,\n filetype: getCompleteExtname(fileName),\n filesize: dataLength,\n platform: this.info.platform,\n },\n relationships: {\n release: {\n data: {\n type: \"releases\",\n id: releaseId,\n },\n },\n },\n }\n\n log.debug({ data: JSON.stringify(data) }, \"Keygen create artifact\")\n\n return parseJson(httpExecutor.request(configureRequestOptions(upload, this.auth, \"POST\"), this.context.cancellationToken, { data }))\n }\n\n private async getOrCreateRelease(): Promise<{ data?: KeygenRelease; errors?: KeygenError[] }> {\n try {\n // First, we'll attempt to fetch the release.\n return await this.getRelease()\n } catch (e: any) {\n if (e.statusCode !== 404) {\n throw e\n }\n\n try {\n // Next, if the release doesn't exist, we'll attempt to create it.\n return await this.createRelease()\n } catch (e: any) {\n if (e.statusCode !== 409 && e.statusCode !== 422) {\n throw e\n }\n\n // Lastly, when a conflict occurs (in the case of parallel uploads),\n // we'll try to fetch it one last time.\n return this.getRelease()\n }\n }\n }\n\n private async getRelease(): Promise<{ data?: KeygenRelease; errors?: KeygenError[] }> {\n const req: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/releases/${this.version}?product=${this.info.product}`,\n headers: {\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n },\n timeout: this.info.timeout || undefined,\n }\n\n return parseJson(httpExecutor.request(configureRequestOptions(req, this.auth, \"GET\"), this.context.cancellationToken, null))\n }\n\n private async createRelease(): Promise<{ data?: KeygenRelease; errors?: KeygenError[] }> {\n const req: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/releases`,\n headers: {\n \"Content-Type\": \"application/vnd.api+json\",\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n },\n timeout: this.info.timeout || undefined,\n }\n\n const data: RecursivePartial<KeygenRelease> = {\n type: \"releases\",\n attributes: {\n version: this.version,\n channel: this.info.channel || \"stable\",\n status: \"PUBLISHED\",\n },\n relationships: {\n product: {\n data: {\n type: \"products\",\n id: this.info.product,\n },\n },\n },\n }\n\n log.debug({ data: JSON.stringify(data) }, \"Keygen create release\")\n\n return parseJson(httpExecutor.request(configureRequestOptions(req, this.auth, \"POST\"), this.context.cancellationToken, { data }))\n }\n\n async deleteRelease(releaseId: string): Promise<void> {\n const req: RequestOptions = {\n hostname: this.hostname,\n path: `${this.basePath}/releases/${releaseId}`,\n headers: {\n Accept: \"application/vnd.api+json\",\n \"Keygen-Version\": \"1.1\",\n },\n timeout: this.info.timeout || undefined,\n }\n await httpExecutor.request(configureRequestOptions(req, this.auth, \"DELETE\"), this.context.cancellationToken)\n }\n\n toString() {\n const { account, product, platform } = this.info\n return `Keygen (account: ${account}, product: ${product}, platform: ${platform}, version: ${this.version})`\n }\n}\n"]}
|