pake-cli 3.6.3 → 3.6.4
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/dist/cli.js +24 -18
- package/package.json +1 -1
- package/src-tauri/.pake/pake.json +1 -1
- package/src-tauri/.pake/tauri.conf.json +9 -5
- package/src-tauri/.pake/tauri.linux.conf.json +0 -1
- package/src-tauri/.pake/tauri.macos.conf.json +5 -2
- package/src-tauri/Cargo.lock +1 -1
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.linux.conf.json +0 -1
- package/dist/dev.js +0 -1943
- package/dist/dev.js.map +0 -1
package/dist/dev.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sources":["../bin/options/logger.ts","../bin/utils/info.ts","../bin/utils/dir.ts","../bin/utils/platform.ts","../bin/utils/name.ts","../bin/options/icon.ts","../bin/utils/url.ts","../bin/options/index.ts","../bin/helpers/tauriConfig.ts","../bin/utils/shell.ts","../bin/utils/ip.ts","../bin/helpers/rust.ts","../bin/utils/combine.ts","../bin/helpers/merge.ts","../bin/builders/BaseBuilder.ts","../bin/builders/MacBuilder.ts","../bin/builders/WinBuilder.ts","../bin/builders/LinuxBuilder.ts","../bin/builders/BuilderProvider.ts","../bin/defaults.ts","../bin/utils/validate.ts","../bin/helpers/cli-program.ts","../bin/dev.ts"],"sourcesContent":["import chalk from 'chalk';\nimport log from 'loglevel';\n\nconst logger = {\n info(...msg: any[]) {\n log.info(...msg.map((m) => chalk.white(m)));\n },\n debug(...msg: any[]) {\n log.debug(...msg);\n },\n error(...msg: any[]) {\n log.error(...msg.map((m) => chalk.red(m)));\n },\n warn(...msg: any[]) {\n log.info(...msg.map((m) => chalk.yellow(m)));\n },\n success(...msg: any[]) {\n log.info(...msg.map((m) => chalk.green(m)));\n },\n};\n\nexport default logger;\n","import crypto from 'crypto';\nimport prompts from 'prompts';\nimport ora from 'ora';\nimport chalk from 'chalk';\n\n// Generates an identifier based on the given URL.\nexport function getIdentifier(url: string) {\n const postFixHash = crypto\n .createHash('md5')\n .update(url)\n .digest('hex')\n .substring(0, 6);\n return `com.pake.${postFixHash}`;\n}\n\nexport async function promptText(\n message: string,\n initial?: string,\n): Promise<string> {\n const response = await prompts({\n type: 'text',\n name: 'content',\n message,\n initial,\n });\n return response.content;\n}\n\nexport function capitalizeFirstLetter(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function getSpinner(text: string) {\n const loadingType = {\n interval: 80,\n frames: ['✦', '✶', '✺', '✵', '✸', '✹', '✺'],\n };\n return ora({\n text: `${chalk.cyan(text)}\\n`,\n spinner: loadingType,\n color: 'cyan',\n }).start();\n}\n","import path from 'path';\nimport { fileURLToPath } from 'url';\n\n// Convert the current module URL to a file path\nconst currentModulePath = fileURLToPath(import.meta.url);\n\n// Resolve the parent directory of the current module\nexport const npmDirectory = path.join(path.dirname(currentModulePath), '..');\n\nexport const tauriConfigDirectory = path.join(\n npmDirectory,\n 'src-tauri',\n '.pake',\n);\n","const { platform } = process;\n\nexport const IS_MAC = platform === 'darwin';\nexport const IS_WIN = platform === 'win32';\nexport const IS_LINUX = platform === 'linux';\n","export function generateSafeFilename(name: string): string {\n return name\n .replace(/[<>:\"/\\\\|?*]/g, '_')\n .replace(/\\s+/g, '_')\n .replace(/\\.+$/g, '')\n .slice(0, 255);\n}\n\nexport function getSafeAppName(name: string): string {\n return generateSafeFilename(name).toLowerCase();\n}\n\nexport function generateLinuxPackageName(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9\\u4e00-\\u9fff]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .replace(/-+/g, '-');\n}\n\nexport function generateIdentifierSafeName(name: string): string {\n const cleaned = name.replace(/[^a-zA-Z0-9\\u4e00-\\u9fff]/g, '').toLowerCase();\n\n if (cleaned === '') {\n const fallback = Array.from(name)\n .map((char) => {\n const code = char.charCodeAt(0);\n if (\n (code >= 48 && code <= 57) ||\n (code >= 65 && code <= 90) ||\n (code >= 97 && code <= 122)\n ) {\n return char.toLowerCase();\n }\n return code.toString(16);\n })\n .join('')\n .slice(0, 50);\n\n return fallback || 'pake-app';\n }\n\n return cleaned;\n}\n\nexport function generateWindowsFilename(name: string): string {\n return name\n .replace(/[<>:\"/\\\\|?*]/g, '_')\n .replace(/^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])$/i, '${name}_')\n .slice(0, 255);\n}\n\nexport function generateMacOSFilename(name: string): string {\n return name.replace(/[:]/g, '_').slice(0, 255);\n}\n","import path from 'path';\nimport axios from 'axios';\nimport fsExtra from 'fs-extra';\nimport chalk from 'chalk';\nimport { dir } from 'tmp-promise';\nimport { fileTypeFromBuffer } from 'file-type';\nimport icongen from 'icon-gen';\nimport sharp from 'sharp';\n\nimport logger from './logger';\nimport { getSpinner } from '@/utils/info';\nimport { npmDirectory } from '@/utils/dir';\nimport { IS_LINUX, IS_WIN, IS_MAC } from '@/utils/platform';\nimport { PakeAppOptions } from '@/types';\n\ntype PlatformIconConfig = {\n format: string;\n sizes?: number[];\n size?: number;\n};\nconst ICON_CONFIG = {\n minFileSize: 100,\n supportedFormats: ['png', 'ico', 'jpeg', 'jpg', 'webp', 'icns'] as const,\n whiteBackground: { r: 255, g: 255, b: 255 },\n transparentBackground: { r: 255, g: 255, b: 255, alpha: 0 },\n downloadTimeout: {\n ci: 5000,\n default: 15000,\n },\n} as const;\n\nconst PLATFORM_CONFIG: Record<'win' | 'linux' | 'macos', PlatformIconConfig> = {\n win: { format: '.ico', sizes: [16, 32, 48, 64, 128, 256] },\n linux: { format: '.png', size: 512 },\n macos: { format: '.icns', sizes: [16, 32, 64, 128, 256, 512, 1024] },\n};\n\nconst API_KEYS = {\n logoDev: ['pk_JLLMUKGZRpaG5YclhXaTkg', 'pk_Ph745P8mQSeYFfW2Wk039A'],\n brandfetch: ['1idqvJC0CeFSeyp3Yf7', '1idej-yhU_ThggIHFyG'],\n};\n\n/**\n * Generates platform-specific icon paths and handles copying for Windows\n */\nimport { generateSafeFilename } from '@/utils/name';\n\nfunction generateIconPath(appName: string, isDefault = false): string {\n const safeName = isDefault\n ? 'icon'\n : generateSafeFilename(appName).toLowerCase();\n const baseName = safeName;\n\n if (IS_WIN) {\n return path.join(npmDirectory, 'src-tauri', 'png', `${baseName}_256.ico`);\n }\n if (IS_LINUX) {\n return path.join(npmDirectory, 'src-tauri', 'png', `${baseName}_512.png`);\n }\n return path.join(npmDirectory, 'src-tauri', 'icons', `${baseName}.icns`);\n}\n\nasync function copyWindowsIconIfNeeded(\n convertedPath: string,\n appName: string,\n): Promise<string> {\n if (!IS_WIN || !convertedPath.endsWith('.ico')) {\n return convertedPath;\n }\n\n try {\n const finalIconPath = generateIconPath(appName);\n await fsExtra.ensureDir(path.dirname(finalIconPath));\n await fsExtra.copy(convertedPath, finalIconPath);\n return finalIconPath;\n } catch (error) {\n logger.warn(\n `Failed to copy Windows icon: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n return convertedPath;\n }\n}\n\n/**\n * Adds white background to transparent icons only\n */\nasync function preprocessIcon(inputPath: string): Promise<string> {\n try {\n const metadata = await sharp(inputPath).metadata();\n if (metadata.channels !== 4) return inputPath; // No transparency\n\n const { path: tempDir } = await dir();\n const outputPath = path.join(tempDir, 'icon-with-background.png');\n\n await sharp({\n create: {\n width: metadata.width || 512,\n height: metadata.height || 512,\n channels: 4,\n background: { ...ICON_CONFIG.whiteBackground, alpha: 1 },\n },\n })\n .composite([{ input: inputPath }])\n .png()\n .toFile(outputPath);\n\n return outputPath;\n } catch (error) {\n if (error instanceof Error) {\n logger.warn(`Failed to add background to icon: ${error.message}`);\n }\n return inputPath;\n }\n}\n\n/**\n * Applies macOS squircle mask to icon\n */\nasync function applyMacOSMask(inputPath: string): Promise<string> {\n try {\n const { path: tempDir } = await dir();\n const outputPath = path.join(tempDir, 'icon-macos-rounded.png');\n\n // 1. Create a 1024x1024 rounded rect mask\n // rx=\"224\" is closer to the smooth Apple squircle look for 1024px\n const mask = Buffer.from(\n '<svg width=\"1024\" height=\"1024\"><rect x=\"0\" y=\"0\" width=\"1024\" height=\"1024\" rx=\"224\" ry=\"224\" fill=\"white\"/></svg>',\n );\n\n // 2. Load input, resize to 1024, apply mask\n const maskedBuffer = await sharp(inputPath)\n .resize(1024, 1024, {\n fit: 'contain',\n background: { r: 0, g: 0, b: 0, alpha: 0 },\n })\n .composite([\n {\n input: mask,\n blend: 'dest-in',\n },\n ])\n .png()\n .toBuffer();\n\n // 3. Resize to 840x840 (~18% padding) to solve \"too big\" visual issue\n // Native MacOS icons often leave some breathing room\n await sharp(maskedBuffer)\n .resize(840, 840, {\n fit: 'contain',\n background: { r: 0, g: 0, b: 0, alpha: 0 },\n })\n .extend({\n top: 92,\n bottom: 92,\n left: 92,\n right: 92,\n background: { r: 0, g: 0, b: 0, alpha: 0 },\n })\n .toFile(outputPath);\n\n return outputPath;\n } catch (error) {\n if (error instanceof Error) {\n logger.warn(`Failed to apply macOS mask: ${error.message}`);\n }\n return inputPath;\n }\n}\n\n/**\n * Converts icon to platform-specific format\n */\nasync function convertIconFormat(\n inputPath: string,\n appName: string,\n): Promise<string | null> {\n try {\n if (!(await fsExtra.pathExists(inputPath))) return null;\n\n const { path: outputDir } = await dir();\n const platformOutputDir = path.join(outputDir, 'converted-icons');\n await fsExtra.ensureDir(platformOutputDir);\n\n const processedInputPath = await preprocessIcon(inputPath);\n const iconName = generateSafeFilename(appName).toLowerCase();\n\n // Generate platform-specific format\n if (IS_WIN) {\n // Support multiple sizes for better Windows compatibility\n await icongen(processedInputPath, platformOutputDir, {\n report: false,\n ico: {\n name: `${iconName}_256`,\n sizes: PLATFORM_CONFIG.win.sizes,\n },\n });\n return path.join(\n platformOutputDir,\n `${iconName}_256${PLATFORM_CONFIG.win.format}`,\n );\n }\n\n if (IS_LINUX) {\n const outputPath = path.join(\n platformOutputDir,\n `${iconName}_${PLATFORM_CONFIG.linux.size}${PLATFORM_CONFIG.linux.format}`,\n );\n\n // Ensure we convert to proper PNG format with correct size\n await sharp(processedInputPath)\n .resize(PLATFORM_CONFIG.linux.size, PLATFORM_CONFIG.linux.size, {\n fit: 'contain',\n background: ICON_CONFIG.transparentBackground,\n })\n .ensureAlpha()\n .png()\n .toFile(outputPath);\n\n return outputPath;\n }\n\n // macOS\n const macIconPath = await applyMacOSMask(processedInputPath);\n await icongen(macIconPath, platformOutputDir, {\n report: false,\n icns: { name: iconName, sizes: PLATFORM_CONFIG.macos.sizes },\n });\n const outputPath = path.join(\n platformOutputDir,\n `${iconName}${PLATFORM_CONFIG.macos.format}`,\n );\n return (await fsExtra.pathExists(outputPath)) ? outputPath : null;\n } catch (error) {\n if (error instanceof Error) {\n logger.warn(`Icon format conversion failed: ${error.message}`);\n }\n return null;\n }\n}\n\n/**\n * Processes downloaded or local icon for platform-specific format\n */\nasync function processIcon(\n iconPath: string,\n appName: string,\n): Promise<string | null> {\n if (!iconPath || !appName) return iconPath;\n\n // Check if already in correct platform format\n const ext = path.extname(iconPath).toLowerCase();\n const isCorrectFormat =\n (IS_WIN && ext === '.ico') ||\n (IS_LINUX && ext === '.png') ||\n (!IS_WIN && !IS_LINUX && ext === '.icns');\n\n if (isCorrectFormat) {\n return await copyWindowsIconIfNeeded(iconPath, appName);\n }\n\n // Convert to platform format\n const convertedPath = await convertIconFormat(iconPath, appName);\n if (convertedPath) {\n return await copyWindowsIconIfNeeded(convertedPath, appName);\n }\n\n return iconPath;\n}\n\n/**\n * Gets default icon with platform-specific fallback logic\n */\nasync function getDefaultIcon(): Promise<string> {\n logger.info('✼ No icon provided, using default icon.');\n\n if (IS_WIN) {\n const defaultIcoPath = generateIconPath('icon', true);\n const defaultPngPath = path.join(\n npmDirectory,\n 'src-tauri/png/icon_512.png',\n );\n\n // Try default ico first\n if (await fsExtra.pathExists(defaultIcoPath)) {\n return defaultIcoPath;\n }\n\n // Convert from png if ico doesn't exist\n if (await fsExtra.pathExists(defaultPngPath)) {\n logger.info('✼ Default ico not found, converting from png...');\n try {\n const convertedPath = await convertIconFormat(defaultPngPath, 'icon');\n if (convertedPath && (await fsExtra.pathExists(convertedPath))) {\n return await copyWindowsIconIfNeeded(convertedPath, 'icon');\n }\n } catch (error) {\n logger.warn(\n `Failed to convert default png to ico: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n }\n\n // Fallback to png or empty\n if (await fsExtra.pathExists(defaultPngPath)) {\n logger.warn('✼ Using png as fallback for Windows (may cause issues).');\n return defaultPngPath;\n }\n\n logger.warn('✼ No default icon found, will use pake default.');\n return '';\n }\n\n // Linux and macOS defaults\n const iconPath = IS_LINUX\n ? 'src-tauri/png/icon_512.png'\n : 'src-tauri/icons/icon.icns';\n return path.join(npmDirectory, iconPath);\n}\n\n/**\n * Main icon handling function with simplified logic flow\n */\nexport async function handleIcon(\n options: PakeAppOptions,\n url?: string,\n): Promise<string> {\n // Handle custom icon (local file or remote URL)\n if (options.icon) {\n if (options.icon.startsWith('http')) {\n const downloadedPath = await downloadIcon(options.icon);\n if (downloadedPath) {\n const result = await processIcon(downloadedPath, options.name || '');\n if (result) return result;\n }\n return '';\n }\n // Local file path\n const resolvedPath = path.resolve(options.icon);\n const result = await processIcon(resolvedPath, options.name || '');\n return result || resolvedPath;\n }\n\n // Try favicon from website\n if (url && options.name) {\n const faviconPath = await tryGetFavicon(url, options.name);\n if (faviconPath) return faviconPath;\n }\n\n // Use default icon\n return await getDefaultIcon();\n}\n\n/**\n * Generates icon service URLs for a domain\n */\nfunction generateIconServiceUrls(domain: string): string[] {\n const logoDevUrls = API_KEYS.logoDev\n .sort(() => Math.random() - 0.5)\n .map(\n (token) =>\n `https://img.logo.dev/${domain}?token=${token}&format=png&size=256`,\n );\n\n const brandfetchUrls = API_KEYS.brandfetch\n .sort(() => Math.random() - 0.5)\n .map((key) => `https://cdn.brandfetch.io/${domain}/w/400/h/400?c=${key}`);\n\n return [\n ...logoDevUrls,\n ...brandfetchUrls,\n `https://logo.clearbit.com/${domain}?size=256`,\n `https://www.google.com/s2/favicons?domain=${domain}&sz=256`,\n `https://favicon.is/${domain}`,\n `https://${domain}/favicon.ico`,\n `https://www.${domain}/favicon.ico`,\n ];\n}\n\n/**\n * Attempts to fetch favicon from website\n */\nasync function tryGetFavicon(\n url: string,\n appName: string,\n): Promise<string | null> {\n try {\n const domain = new URL(url).hostname;\n const spinner = getSpinner(`Fetching icon from ${domain}...`);\n\n const serviceUrls = generateIconServiceUrls(domain);\n\n const isCI =\n process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';\n const downloadTimeout = isCI\n ? ICON_CONFIG.downloadTimeout.ci\n : ICON_CONFIG.downloadTimeout.default;\n\n for (const serviceUrl of serviceUrls) {\n try {\n const faviconPath = await downloadIcon(\n serviceUrl,\n false,\n downloadTimeout,\n );\n if (!faviconPath) continue;\n\n const convertedPath = await convertIconFormat(faviconPath, appName);\n if (convertedPath) {\n const finalPath = await copyWindowsIconIfNeeded(\n convertedPath,\n appName,\n );\n spinner.succeed(\n chalk.green('Icon fetched and converted successfully!'),\n );\n return finalPath;\n }\n } catch (error: any) {\n if (error instanceof Error) {\n logger.debug(`Icon service ${serviceUrl} failed: ${error.message}`);\n }\n\n // Network error handling\n if ((IS_LINUX || IS_WIN) && error.code === 'ENOTFOUND') {\n return null;\n }\n\n // Icon generation error on Windows\n if (IS_WIN && error instanceof Error && error.message.includes('icongen')) {\n return null;\n }\n\n continue;\n }\n }\n\n spinner.warn(`No favicon found for ${domain}. Using default.`);\n return null;\n } catch (error) {\n if (error instanceof Error) {\n logger.warn(`Failed to fetch favicon: ${error.message}`);\n }\n return null;\n }\n}\n\n/**\n * Downloads icon from URL\n */\nexport async function downloadIcon(\n iconUrl: string,\n showSpinner = true,\n customTimeout?: number,\n): Promise<string | null> {\n try {\n const response = await axios.get(iconUrl, {\n responseType: 'arraybuffer',\n timeout: customTimeout || 10000,\n });\n\n const iconData = response.data;\n if (!iconData || iconData.byteLength < ICON_CONFIG.minFileSize) return null;\n\n const fileDetails = await fileTypeFromBuffer(iconData);\n if (\n !fileDetails ||\n !ICON_CONFIG.supportedFormats.includes(fileDetails.ext as any)\n ) {\n return null;\n }\n\n return await saveIconFile(iconData, fileDetails.ext);\n } catch (error: any) {\n if (showSpinner && !(error.response?.status === 404)) {\n logger.error('Icon download failed!');\n }\n return null;\n }\n}\n\n/**\n * Saves icon file to temporary location\n */\nasync function saveIconFile(\n iconData: ArrayBuffer,\n extension: string,\n): Promise<string> {\n const buffer = Buffer.from(iconData);\n const { path: tempPath } = await dir();\n\n // Always save with the original extension first\n const originalIconPath = path.join(tempPath, `icon.${extension}`);\n await fsExtra.outputFile(originalIconPath, buffer);\n\n return originalIconPath;\n}\n","import * as psl from 'psl';\n\n// Extracts the domain from a given URL.\nexport function getDomain(inputUrl: string): string | null {\n try {\n const url = new URL(inputUrl);\n // Use PSL to parse domain names.\n const parsed = psl.parse(url.hostname);\n\n // If domain is available, split it and return the SLD.\n if ('domain' in parsed && parsed.domain) {\n return parsed.domain.split('.')[0];\n } else {\n return null;\n }\n } catch (error) {\n return null;\n }\n}\n\n// Appends 'https://' protocol to the URL if not present.\nexport function appendProtocol(inputUrl: string): string {\n try {\n new URL(inputUrl);\n return inputUrl;\n } catch {\n return `https://${inputUrl}`;\n }\n}\n\n// Normalizes the URL by ensuring it has a protocol and is valid.\nexport function normalizeUrl(urlToNormalize: string): string {\n const urlWithProtocol = appendProtocol(urlToNormalize);\n try {\n new URL(urlWithProtocol);\n return urlWithProtocol;\n } catch (err) {\n throw new Error(\n `Your url \"${urlWithProtocol}\" is invalid: ${(err as Error).message}`,\n );\n }\n}\n","import fsExtra from 'fs-extra';\nimport logger from '@/options/logger';\n\nimport { handleIcon } from './icon';\nimport { getDomain } from '@/utils/url';\nimport { getIdentifier, promptText, capitalizeFirstLetter } from '@/utils/info';\nimport { generateLinuxPackageName } from '@/utils/name';\nimport { PakeAppOptions, PakeCliOptions, PlatformMap } from '@/types';\n\nfunction resolveAppName(name: string, platform: NodeJS.Platform): string {\n const domain = getDomain(name) || 'pake';\n return platform !== 'linux' ? capitalizeFirstLetter(domain) : domain;\n}\n\nfunction isValidName(name: string, platform: NodeJS.Platform): boolean {\n const platformRegexMapping: PlatformMap = {\n linux: /^[a-z0-9\\u4e00-\\u9fff][a-z0-9\\u4e00-\\u9fff-]*$/,\n default: /^[a-zA-Z0-9\\u4e00-\\u9fff][a-zA-Z0-9\\u4e00-\\u9fff- ]*$/,\n };\n const reg = platformRegexMapping[platform] || platformRegexMapping.default;\n return !!name && reg.test(name);\n}\n\nexport default async function handleOptions(\n options: PakeCliOptions,\n url: string,\n): Promise<PakeAppOptions> {\n const { platform } = process;\n const isActions = process.env.GITHUB_ACTIONS;\n let name = options.name;\n\n const pathExists = await fsExtra.pathExists(url);\n if (!options.name) {\n const defaultName = pathExists ? '' : resolveAppName(url, platform);\n const promptMessage = 'Enter your application name';\n const namePrompt = await promptText(promptMessage, defaultName);\n name = namePrompt || defaultName;\n }\n\n if (name && platform === 'linux') {\n name = generateLinuxPackageName(name);\n }\n\n if (name && !isValidName(name, platform)) {\n const LINUX_NAME_ERROR = `✕ Name should only include lowercase letters, numbers, and dashes (not leading dashes). Examples: com-123-xxx, 123pan, pan123, weread, we-read, 123.`;\n const DEFAULT_NAME_ERROR = `✕ Name should only include letters, numbers, dashes, and spaces (not leading dashes and spaces). Examples: 123pan, 123Pan, Pan123, weread, WeRead, WERead, we-read, We Read, 123.`;\n const errorMsg =\n platform === 'linux' ? LINUX_NAME_ERROR : DEFAULT_NAME_ERROR;\n logger.error(errorMsg);\n if (isActions) {\n name = resolveAppName(url, platform);\n logger.warn(`✼ Inside github actions, use the default name: ${name}`);\n } else {\n process.exit(1);\n }\n }\n\n const appOptions: PakeAppOptions = {\n ...options,\n name,\n identifier: getIdentifier(url),\n };\n\n const iconPath = await handleIcon(appOptions, url);\n appOptions.icon = iconPath || '';\n\n return appOptions;\n}\n","import path from 'path';\nimport fsExtra from 'fs-extra';\nimport { npmDirectory } from '@/utils/dir';\n\n// Load configs from npm package directory, not from project source\nconst tauriSrcDir = path.join(npmDirectory, 'src-tauri');\nconst pakeConf = fsExtra.readJSONSync(path.join(tauriSrcDir, 'pake.json'));\nconst CommonConf = fsExtra.readJSONSync(\n path.join(tauriSrcDir, 'tauri.conf.json'),\n);\nconst WinConf = fsExtra.readJSONSync(\n path.join(tauriSrcDir, 'tauri.windows.conf.json'),\n);\nconst MacConf = fsExtra.readJSONSync(\n path.join(tauriSrcDir, 'tauri.macos.conf.json'),\n);\nconst LinuxConf = fsExtra.readJSONSync(\n path.join(tauriSrcDir, 'tauri.linux.conf.json'),\n);\n\nconst platformConfigs = {\n win32: WinConf,\n darwin: MacConf,\n linux: LinuxConf,\n};\n\nconst { platform } = process;\n// @ts-ignore\nconst platformConfig = platformConfigs[platform];\n\nlet tauriConfig = {\n ...CommonConf,\n bundle: platformConfig.bundle,\n app: {\n ...CommonConf.app,\n trayIcon: {\n ...(platformConfig?.app?.trayIcon ?? {}),\n },\n },\n build: CommonConf.build,\n pake: pakeConf,\n};\n\nexport default tauriConfig;\n","import { execa } from 'execa';\nimport { npmDirectory } from './dir';\n\nexport async function shellExec(\n command: string,\n timeout: number = 300000,\n env?: Record<string, string>,\n) {\n try {\n const { exitCode } = await execa(command, {\n cwd: npmDirectory,\n // Use 'inherit' to show all output directly to user in real-time.\n // This ensures linuxdeploy and other tool outputs are visible during builds.\n stdio: 'inherit',\n shell: true,\n timeout,\n env: env ? { ...process.env, ...env } : process.env,\n });\n return exitCode;\n } catch (error: any) {\n const exitCode = error.exitCode ?? 'unknown';\n const errorMessage = error.message || 'Unknown error occurred';\n\n if (error.timedOut) {\n throw new Error(\n `Command timed out after ${timeout}ms: \"${command}\". Try increasing timeout or check network connectivity.`,\n );\n }\n\n let errorMsg = `Error occurred while executing command \"${command}\". Exit code: ${exitCode}. Details: ${errorMessage}`;\n\n // Provide helpful guidance for common Linux AppImage build failures\n // caused by strip tool incompatibility with modern glibc (2.38+)\n const lowerError = errorMessage.toLowerCase();\n\n if (\n process.platform === 'linux' &&\n (lowerError.includes('linuxdeploy') ||\n lowerError.includes('appimage') ||\n lowerError.includes('strip'))\n ) {\n errorMsg +=\n '\\n\\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n' +\n 'Linux AppImage Build Failed\\n' +\n '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n\\n' +\n 'Cause: Strip tool incompatibility with glibc 2.38+\\n' +\n ' (affects Debian Trixie, Arch Linux, and other modern distros)\\n\\n' +\n 'Quick fix:\\n' +\n ' NO_STRIP=1 pake <url> --targets appimage --debug\\n\\n' +\n 'Alternatives:\\n' +\n ' • Use DEB format: pake <url> --targets deb\\n' +\n ' • Update binutils: sudo apt install binutils (or pacman -S binutils)\\n' +\n ' • Detailed guide: https://github.com/tw93/Pake/blob/main/docs/faq.md\\n' +\n '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━';\n\n if (\n lowerError.includes('fuse') ||\n lowerError.includes('operation not permitted') ||\n lowerError.includes('/dev/fuse')\n ) {\n errorMsg +=\n '\\n\\nDocker / Container hint:\\n' +\n ' AppImage tooling needs access to /dev/fuse. When running inside Docker, add:\\n' +\n ' --privileged --device /dev/fuse --security-opt apparmor=unconfined\\n' +\n ' or run on the host directly.';\n }\n }\n\n throw new Error(errorMsg);\n }\n}\n","import dns from 'dns';\nimport http from 'http';\nimport { promisify } from 'util';\n\nimport logger from '@/options/logger';\n\nconst resolve = promisify(dns.resolve);\n\nconst ping = async (host: string) => {\n const lookup = promisify(dns.lookup);\n const ip = await lookup(host);\n const start = new Date();\n\n // Prevent timeouts from affecting user experience.\n const requestPromise = new Promise<number>((resolve, reject) => {\n const req = http.get(`http://${ip.address}`, (res) => {\n const delay = new Date().getTime() - start.getTime();\n res.resume();\n resolve(delay);\n });\n\n req.on('error', (err) => {\n reject(err);\n });\n });\n\n const timeoutPromise = new Promise<number>((_, reject) => {\n setTimeout(() => {\n reject(new Error('Request timed out after 3 seconds'));\n }, 1000);\n });\n\n return Promise.race([requestPromise, timeoutPromise]);\n};\n\nasync function isChinaDomain(domain: string): Promise<boolean> {\n try {\n const [ip] = await resolve(domain);\n return await isChinaIP(ip, domain);\n } catch (error) {\n logger.debug(`${domain} can't be parse!`);\n return true;\n }\n}\n\nasync function isChinaIP(ip: string, domain: string): Promise<boolean> {\n try {\n const delay = await ping(ip);\n logger.debug(`${domain} latency is ${delay} ms`);\n return delay > 1000;\n } catch (error) {\n logger.debug(`ping ${domain} failed!`);\n return true;\n }\n}\n\nexport { isChinaDomain, isChinaIP };\n","import os from 'os';\nimport path from 'path';\nimport fsExtra from 'fs-extra';\nimport chalk from 'chalk';\nimport { execaSync } from 'execa';\n\nimport { getSpinner } from '@/utils/info';\nimport { IS_WIN } from '@/utils/platform';\nimport { shellExec } from '@/utils/shell';\nimport { isChinaDomain } from '@/utils/ip';\n\nfunction normalizePathForComparison(targetPath: string) {\n const normalized = path.normalize(targetPath);\n return IS_WIN ? normalized.toLowerCase() : normalized;\n}\n\nfunction getCargoHomeCandidates(): string[] {\n const candidates = new Set<string>();\n if (process.env.CARGO_HOME) {\n candidates.add(process.env.CARGO_HOME);\n }\n const homeDir = os.homedir();\n if (homeDir) {\n candidates.add(path.join(homeDir, '.cargo'));\n }\n if (IS_WIN && process.env.USERPROFILE) {\n candidates.add(path.join(process.env.USERPROFILE, '.cargo'));\n }\n return Array.from(candidates).filter(Boolean);\n}\n\nfunction ensureCargoBinOnPath() {\n const currentPath = process.env.PATH || '';\n const segments = currentPath.split(path.delimiter).filter(Boolean);\n const normalizedSegments = new Set(\n segments.map((segment) => normalizePathForComparison(segment)),\n );\n\n const additions: string[] = [];\n let cargoHomeSet = Boolean(process.env.CARGO_HOME);\n\n for (const cargoHome of getCargoHomeCandidates()) {\n const binDir = path.join(cargoHome, 'bin');\n if (\n fsExtra.pathExistsSync(binDir) &&\n !normalizedSegments.has(normalizePathForComparison(binDir))\n ) {\n additions.push(binDir);\n normalizedSegments.add(normalizePathForComparison(binDir));\n }\n\n if (!cargoHomeSet && fsExtra.pathExistsSync(cargoHome)) {\n process.env.CARGO_HOME = cargoHome;\n cargoHomeSet = true;\n }\n }\n\n if (additions.length) {\n const prefix = additions.join(path.delimiter);\n process.env.PATH = segments.length\n ? `${prefix}${path.delimiter}${segments.join(path.delimiter)}`\n : prefix;\n }\n}\n\nexport function ensureRustEnv() {\n ensureCargoBinOnPath();\n}\n\nexport async function installRust() {\n const isActions = process.env.GITHUB_ACTIONS;\n const isInChina = await isChinaDomain('sh.rustup.rs');\n const rustInstallScriptForMac =\n isInChina && !isActions\n ? 'export RUSTUP_DIST_SERVER=\"https://rsproxy.cn\" && export RUSTUP_UPDATE_ROOT=\"https://rsproxy.cn/rustup\" && curl --proto \"=https\" --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh'\n : \"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y\";\n const rustInstallScriptForWindows = 'winget install --id Rustlang.Rustup';\n\n const spinner = getSpinner('Downloading Rust...');\n\n try {\n await shellExec(\n IS_WIN ? rustInstallScriptForWindows : rustInstallScriptForMac,\n 300000,\n undefined,\n );\n spinner.succeed(chalk.green('✔ Rust installed successfully!'));\n ensureRustEnv();\n } catch (error) {\n spinner.fail(chalk.red('✕ Rust installation failed!'));\n if (error instanceof Error) {\n console.error(error.message);\n } else {\n console.error(error);\n }\n process.exit(1);\n }\n}\n\nexport function checkRustInstalled() {\n ensureCargoBinOnPath();\n try {\n execaSync('rustc', ['--version']);\n return true;\n } catch {\n return false;\n }\n}\n","import fs from 'fs';\n\nexport default async function combineFiles(files: string[], output: string) {\n const contents = files.map((file) => {\n if (file.endsWith('.css')) {\n const fileContent = fs.readFileSync(file, 'utf-8');\n return `window.addEventListener('DOMContentLoaded', (_event) => {\n const css = ${JSON.stringify(fileContent)};\n const style = document.createElement('style');\n style.innerHTML = css;\n document.head.appendChild(style);\n });`;\n }\n\n const fileContent = fs.readFileSync(file);\n return (\n \"window.addEventListener('DOMContentLoaded', (_event) => { \" +\n fileContent +\n ' });'\n );\n });\n fs.writeFileSync(output, contents.join('\\n'));\n return files;\n}\n","import path from 'path';\nimport fsExtra from 'fs-extra';\n\nimport combineFiles from '@/utils/combine';\nimport logger from '@/options/logger';\nimport { generateSafeFilename, generateIdentifierSafeName, getSafeAppName } from '@/utils/name';\nimport { PakeAppOptions, PlatformMap } from '@/types';\nimport { tauriConfigDirectory, npmDirectory } from '@/utils/dir';\n\nexport async function mergeConfig(\n url: string,\n options: PakeAppOptions,\n tauriConf: any,\n) {\n // Ensure .pake directory exists and copy source templates if needed\n const srcTauriDir = path.join(npmDirectory, 'src-tauri');\n await fsExtra.ensureDir(tauriConfigDirectory);\n\n // Copy source config files to .pake directory (as templates)\n const sourceFiles = [\n 'tauri.conf.json',\n 'tauri.macos.conf.json',\n 'tauri.windows.conf.json',\n 'tauri.linux.conf.json',\n 'pake.json',\n ];\n\n await Promise.all(\n sourceFiles.map(async (file) => {\n const sourcePath = path.join(srcTauriDir, file);\n const destPath = path.join(tauriConfigDirectory, file);\n\n if (\n (await fsExtra.pathExists(sourcePath)) &&\n !(await fsExtra.pathExists(destPath))\n ) {\n await fsExtra.copy(sourcePath, destPath);\n }\n }),\n );\n const {\n width,\n height,\n fullscreen,\n maximize,\n hideTitleBar,\n alwaysOnTop,\n appVersion,\n darkMode,\n disabledWebShortcuts,\n activationShortcut,\n userAgent,\n showSystemTray,\n systemTrayIcon,\n useLocalFile,\n identifier,\n name = 'pake-app',\n resizable = true,\n inject,\n proxyUrl,\n installerLanguage,\n hideOnClose,\n incognito,\n title,\n wasm,\n enableDragDrop,\n multiInstance,\n startToTray,\n forceInternalNavigation,\n zoom,\n minWidth,\n minHeight,\n ignoreCertificateErrors,\n } = options;\n\n const { platform } = process;\n\n const platformHideOnClose = hideOnClose ?? platform === 'darwin';\n\n const tauriConfWindowOptions = {\n width,\n height,\n fullscreen,\n maximize,\n resizable,\n hide_title_bar: hideTitleBar,\n activation_shortcut: activationShortcut,\n always_on_top: alwaysOnTop,\n dark_mode: darkMode,\n disabled_web_shortcuts: disabledWebShortcuts,\n hide_on_close: platformHideOnClose,\n incognito: incognito,\n title: title || null,\n enable_wasm: wasm,\n enable_drag_drop: enableDragDrop,\n start_to_tray: startToTray && showSystemTray,\n force_internal_navigation: forceInternalNavigation,\n zoom,\n min_width: minWidth,\n min_height: minHeight,\n ignore_certificate_errors: ignoreCertificateErrors,\n };\n Object.assign(tauriConf.pake.windows[0], { url, ...tauriConfWindowOptions });\n\n tauriConf.productName = name;\n tauriConf.identifier = identifier;\n tauriConf.version = appVersion;\n\n if (platform === 'linux') {\n tauriConf.mainBinaryName = `pake-${generateIdentifierSafeName(name)}`;\n }\n\n if (platform == 'win32') {\n tauriConf.bundle.windows.wix.language[0] = installerLanguage;\n }\n\n const pathExists = await fsExtra.pathExists(url);\n if (pathExists) {\n logger.warn('✼ Your input might be a local file.');\n tauriConf.pake.windows[0].url_type = 'local';\n\n const fileName = path.basename(url);\n const dirName = path.dirname(url);\n\n const distDir = path.join(npmDirectory, 'dist');\n const distBakDir = path.join(npmDirectory, 'dist_bak');\n\n if (!useLocalFile) {\n const urlPath = path.join(distDir, fileName);\n await fsExtra.copy(url, urlPath);\n } else {\n fsExtra.moveSync(distDir, distBakDir, { overwrite: true });\n fsExtra.copySync(dirName, distDir, { overwrite: true });\n\n // ignore it, because about_pake.html have be erased.\n // const filesToCopyBack = ['cli.js', 'about_pake.html'];\n const filesToCopyBack = ['cli.js'];\n await Promise.all(\n filesToCopyBack.map((file) =>\n fsExtra.copy(path.join(distBakDir, file), path.join(distDir, file)),\n ),\n );\n }\n\n tauriConf.pake.windows[0].url = fileName;\n tauriConf.pake.windows[0].url_type = 'local';\n } else {\n tauriConf.pake.windows[0].url_type = 'web';\n }\n\n const platformMap: PlatformMap = {\n win32: 'windows',\n linux: 'linux',\n darwin: 'macos',\n };\n const currentPlatform = platformMap[platform];\n\n if (userAgent.length > 0) {\n tauriConf.pake.user_agent[currentPlatform] = userAgent;\n }\n\n tauriConf.pake.system_tray[currentPlatform] = showSystemTray;\n\n // Processing targets are currently only open to Linux.\n if (platform === 'linux') {\n // Remove hardcoded desktop files and regenerate with correct app name\n delete tauriConf.bundle.linux.deb.files;\n\n // Generate correct desktop file configuration\n const appNameSafe = getSafeAppName(name);\n const identifier = `com.pake.${appNameSafe}`;\n const desktopFileName = `${identifier}.desktop`;\n\n // Create desktop file content\n // Determine if title contains Chinese characters for Name[zh_CN]\n const chineseName = title && /[\\u4e00-\\u9fa5]/.test(title) ? title : null;\n\n const desktopContent = `[Desktop Entry]\nVersion=1.0\nType=Application\nName=${name}\n${chineseName ? `Name[zh_CN]=${chineseName}` : ''}\nComment=${name}\nExec=pake-${appNameSafe}\nIcon=${appNameSafe}_512\nCategories=Network;WebBrowser;\nMimeType=text/html;text/xml;application/xhtml_xml;\nStartupNotify=true\n`;\n\n // Write desktop file to src-tauri/assets directory where Tauri expects it\n const srcAssetsDir = path.join(npmDirectory, 'src-tauri/assets');\n const srcDesktopFilePath = path.join(srcAssetsDir, desktopFileName);\n await fsExtra.ensureDir(srcAssetsDir);\n await fsExtra.writeFile(srcDesktopFilePath, desktopContent);\n\n // Set up desktop file in bundle configuration\n // Use absolute path from src-tauri directory to assets\n tauriConf.bundle.linux.deb.files = {\n [`/usr/share/applications/${desktopFileName}`]: `assets/${desktopFileName}`,\n };\n\n const validTargets = [\n 'deb',\n 'appimage',\n 'rpm',\n 'deb-arm64',\n 'appimage-arm64',\n 'rpm-arm64',\n ];\n const baseTarget = options.targets.includes('-arm64')\n ? options.targets.replace('-arm64', '')\n : options.targets;\n\n if (validTargets.includes(options.targets)) {\n tauriConf.bundle.targets = [baseTarget];\n } else {\n logger.warn(\n `✼ The target must be one of ${validTargets.join(', ')}, the default 'deb' will be used.`,\n );\n }\n }\n\n // Set macOS bundle targets (for app vs dmg)\n if (platform === 'darwin') {\n const validMacTargets = ['app', 'dmg'];\n if (validMacTargets.includes(options.targets)) {\n tauriConf.bundle.targets = [options.targets];\n }\n }\n\n // Set icon.\n const safeAppName = getSafeAppName(name);\n const platformIconMap: PlatformMap = {\n win32: {\n fileExt: '.ico',\n path: `png/${safeAppName}_256.ico`,\n defaultIcon: 'png/icon_256.ico',\n message: 'Windows icon must be .ico and 256x256px.',\n },\n linux: {\n fileExt: '.png',\n path: `png/${safeAppName}_512.png`,\n defaultIcon: 'png/icon_512.png',\n message: 'Linux icon must be .png and 512x512px.',\n },\n darwin: {\n fileExt: '.icns',\n path: `icons/${safeAppName}.icns`,\n defaultIcon: 'icons/icon.icns',\n message: 'macOS icon must be .icns type.',\n },\n };\n const iconInfo = platformIconMap[platform];\n const resolvedIconPath = options.icon ? path.resolve(options.icon) : null;\n const exists =\n resolvedIconPath && (await fsExtra.pathExists(resolvedIconPath));\n if (exists) {\n let updateIconPath = true;\n let customIconExt = path.extname(resolvedIconPath).toLowerCase();\n\n if (customIconExt !== iconInfo.fileExt) {\n updateIconPath = false;\n logger.warn(`✼ ${iconInfo.message}, but you give ${customIconExt}`);\n tauriConf.bundle.icon = [iconInfo.defaultIcon];\n } else {\n const iconPath = path.join(npmDirectory, 'src-tauri/', iconInfo.path);\n tauriConf.bundle.resources = [iconInfo.path];\n\n // Avoid copying if source and destination are the same\n const absoluteDestPath = path.resolve(iconPath);\n if (resolvedIconPath !== absoluteDestPath) {\n await fsExtra.copy(resolvedIconPath, iconPath);\n }\n }\n\n if (updateIconPath) {\n tauriConf.bundle.icon = [iconInfo.path];\n } else {\n logger.warn(`✼ Icon will remain as default.`);\n }\n } else {\n logger.warn(\n '✼ Custom icon path may be invalid, default icon will be used instead.',\n );\n tauriConf.bundle.icon = [iconInfo.defaultIcon];\n }\n\n // Set tray icon path.\n let trayIconPath =\n platform === 'darwin' ? 'png/icon_512.png' : tauriConf.bundle.icon[0];\n if (systemTrayIcon.length > 0) {\n try {\n await fsExtra.pathExists(systemTrayIcon);\n // 需要判断图标格式,默认只支持ico和png两种\n let iconExt = path.extname(systemTrayIcon).toLowerCase();\n if (iconExt == '.png' || iconExt == '.ico') {\n const trayIcoPath = path.join(\n npmDirectory,\n `src-tauri/png/${safeAppName}${iconExt}`,\n );\n trayIconPath = `png/${safeAppName}${iconExt}`;\n await fsExtra.copy(systemTrayIcon, trayIcoPath);\n } else {\n logger.warn(\n `✼ System tray icon must be .ico or .png, but you provided ${iconExt}.`,\n );\n logger.warn(`✼ Default system tray icon will be used.`);\n }\n } catch {\n logger.warn(`✼ ${systemTrayIcon} not exists!`);\n logger.warn(`✼ Default system tray icon will remain unchanged.`);\n }\n }\n\n tauriConf.app.trayIcon.iconPath = trayIconPath;\n tauriConf.pake.system_tray_path = trayIconPath;\n\n delete tauriConf.app.trayIcon;\n\n const injectFilePath = path.join(\n npmDirectory,\n `src-tauri/src/inject/custom.js`,\n );\n\n // inject js or css files\n if (inject?.length > 0) {\n // Ensure inject is an array before calling .every()\n const injectArray = Array.isArray(inject) ? inject : [inject];\n if (\n !injectArray.every(\n (item) => item.endsWith('.css') || item.endsWith('.js'),\n )\n ) {\n logger.error('The injected file must be in either CSS or JS format.');\n return;\n }\n const files = injectArray.map((filepath) =>\n path.isAbsolute(filepath) ? filepath : path.join(process.cwd(), filepath),\n );\n tauriConf.pake.inject = files;\n await combineFiles(files, injectFilePath);\n } else {\n tauriConf.pake.inject = [];\n await fsExtra.writeFile(injectFilePath, '');\n }\n tauriConf.pake.proxy_url = proxyUrl || '';\n tauriConf.pake.multi_instance = multiInstance;\n\n // Configure WASM support with required HTTP headers\n if (wasm) {\n tauriConf.app.security = {\n headers: {\n 'Cross-Origin-Opener-Policy': 'same-origin',\n 'Cross-Origin-Embedder-Policy': 'require-corp',\n },\n };\n }\n\n // Save config file.\n const platformConfigPaths: PlatformMap = {\n win32: 'tauri.windows.conf.json',\n darwin: 'tauri.macos.conf.json',\n linux: 'tauri.linux.conf.json',\n };\n\n const configPath = path.join(\n tauriConfigDirectory,\n platformConfigPaths[platform],\n );\n\n const bundleConf = { bundle: tauriConf.bundle };\n await fsExtra.outputJSON(configPath, bundleConf, { spaces: 4 });\n const pakeConfigPath = path.join(tauriConfigDirectory, 'pake.json');\n await fsExtra.outputJSON(pakeConfigPath, tauriConf.pake, { spaces: 4 });\n\n let tauriConf2 = JSON.parse(JSON.stringify(tauriConf));\n delete tauriConf2.pake;\n\n // delete tauriConf2.bundle;\n if (process.env.NODE_ENV === 'development') {\n tauriConf2.bundle = bundleConf.bundle;\n }\n const configJsonPath = path.join(tauriConfigDirectory, 'tauri.conf.json');\n await fsExtra.outputJSON(configJsonPath, tauriConf2, { spaces: 4 });\n}\n","import path from 'path';\nimport fsExtra from 'fs-extra';\nimport chalk from 'chalk';\nimport prompts from 'prompts';\n\nimport { PakeAppOptions } from '@/types';\nimport { checkRustInstalled, ensureRustEnv, installRust } from '@/helpers/rust';\nimport { mergeConfig } from '@/helpers/merge';\nimport tauriConfig from '@/helpers/tauriConfig';\nimport { generateIdentifierSafeName } from '@/utils/name';\nimport { npmDirectory } from '@/utils/dir';\nimport { getSpinner } from '@/utils/info';\nimport { shellExec } from '@/utils/shell';\nimport { isChinaDomain } from '@/utils/ip';\nimport { IS_MAC } from '@/utils/platform';\nimport logger from '@/options/logger';\n\nexport default abstract class BaseBuilder {\n protected options: PakeAppOptions;\n private static packageManagerCache: string | null = null;\n\n protected constructor(options: PakeAppOptions) {\n this.options = options;\n }\n\n private getBuildEnvironment() {\n return IS_MAC\n ? {\n CFLAGS: '-fno-modules',\n CXXFLAGS: '-fno-modules',\n MACOSX_DEPLOYMENT_TARGET: '14.0',\n }\n : undefined;\n }\n\n private getInstallTimeout(): number {\n // Windows needs more time due to native compilation and antivirus scanning\n return process.platform === 'win32' ? 900000 : 600000;\n }\n\n private getBuildTimeout(): number {\n return 900000;\n }\n\n private async detectPackageManager(): Promise<string> {\n if (BaseBuilder.packageManagerCache) {\n return BaseBuilder.packageManagerCache;\n }\n\n const { execa } = await import('execa');\n\n try {\n await execa('pnpm', ['--version'], { stdio: 'ignore' });\n logger.info('✺ Using pnpm for package management.');\n BaseBuilder.packageManagerCache = 'pnpm';\n return 'pnpm';\n } catch {\n try {\n await execa('npm', ['--version'], { stdio: 'ignore' });\n logger.info('✺ pnpm not available, using npm for package management.');\n BaseBuilder.packageManagerCache = 'npm';\n return 'npm';\n } catch {\n throw new Error(\n 'Neither pnpm nor npm is available. Please install a package manager.',\n );\n }\n }\n }\n\n async prepare() {\n const tauriSrcPath = path.join(npmDirectory, 'src-tauri');\n const tauriTargetPath = path.join(tauriSrcPath, 'target');\n const tauriTargetPathExists = await fsExtra.pathExists(tauriTargetPath);\n\n if (!IS_MAC && !tauriTargetPathExists) {\n logger.warn('✼ The first use requires installing system dependencies.');\n logger.warn('✼ See more in https://tauri.app/start/prerequisites/.');\n }\n\n ensureRustEnv();\n\n if (!checkRustInstalled()) {\n const res = await prompts({\n type: 'confirm',\n message: 'Rust not detected. Install now?',\n name: 'value',\n });\n\n if (res.value) {\n await installRust();\n } else {\n logger.error('✕ Rust required to package your webapp.');\n process.exit(0);\n }\n }\n\n const isChina = await isChinaDomain('www.npmjs.com');\n const spinner = getSpinner('Installing package...');\n const rustProjectDir = path.join(tauriSrcPath, '.cargo');\n const projectConf = path.join(rustProjectDir, 'config.toml');\n await fsExtra.ensureDir(rustProjectDir);\n\n // Detect available package manager\n const packageManager = await this.detectPackageManager();\n const registryOption = ' --registry=https://registry.npmmirror.com';\n const peerDepsOption =\n packageManager === 'npm' ? ' --legacy-peer-deps' : '';\n\n const timeout = this.getInstallTimeout();\n const buildEnv = this.getBuildEnvironment();\n\n // Show helpful message for first-time users\n if (!tauriTargetPathExists) {\n logger.info(\n process.platform === 'win32'\n ? '✺ First-time setup may take 10-15 minutes on Windows (compiling dependencies)...'\n : '✺ First-time setup may take 5-10 minutes (installing dependencies)...',\n );\n }\n\n let usedMirror = isChina;\n\n try {\n if (isChina) {\n logger.info(\n `✺ Located in China, using ${packageManager}/rsProxy CN mirror.`,\n );\n const projectCnConf = path.join(tauriSrcPath, 'rust_proxy.toml');\n await fsExtra.copy(projectCnConf, projectConf);\n await shellExec(\n `cd \"${npmDirectory}\" && ${packageManager} install${registryOption}${peerDepsOption}`,\n timeout,\n buildEnv,\n );\n } else {\n await shellExec(\n `cd \"${npmDirectory}\" && ${packageManager} install${peerDepsOption}`,\n timeout,\n buildEnv,\n );\n }\n spinner.succeed(chalk.green('Package installed!'));\n } catch (error: unknown) {\n // If installation times out and we haven't tried the mirror yet, retry with mirror\n if (\n error instanceof Error &&\n error.message.includes('timed out') &&\n !usedMirror\n ) {\n spinner.fail(\n chalk.yellow('Installation timed out, retrying with CN mirror...'),\n );\n logger.info(\n '✺ Retrying installation with CN mirror for better speed...',\n );\n\n const retrySpinner = getSpinner('Retrying installation...');\n usedMirror = true;\n\n try {\n const projectCnConf = path.join(tauriSrcPath, 'rust_proxy.toml');\n await fsExtra.copy(projectCnConf, projectConf);\n await shellExec(\n `cd \"${npmDirectory}\" && ${packageManager} install${registryOption}${peerDepsOption}`,\n timeout,\n buildEnv,\n );\n retrySpinner.succeed(\n chalk.green('Package installed with CN mirror!'),\n );\n } catch (retryError) {\n retrySpinner.fail(chalk.red('Installation failed'));\n throw retryError;\n }\n } else {\n spinner.fail(chalk.red('Installation failed'));\n throw error;\n }\n }\n\n if (!tauriTargetPathExists) {\n logger.warn(\n '✼ The first packaging may be slow, please be patient and wait, it will be faster afterwards.',\n );\n }\n }\n\n async build(url: string) {\n await this.buildAndCopy(url, this.options.targets);\n }\n\n async start(url: string) {\n logger.info('Pake dev server starting...');\n await mergeConfig(url, this.options, tauriConfig);\n\n const packageManager = await this.detectPackageManager();\n const configPath = path.join(\n npmDirectory,\n 'src-tauri',\n '.pake',\n 'tauri.conf.json',\n );\n\n const features = this.getBuildFeatures();\n const featureArgs =\n features.length > 0 ? `--features ${features.join(',')}` : '';\n\n const argSeparator = packageManager === 'npm' ? ' --' : '';\n const command = `cd \"${npmDirectory}\" && ${packageManager} run tauri${argSeparator} dev --config \"${configPath}\" ${featureArgs}`;\n\n await shellExec(command);\n }\n\n async buildAndCopy(url: string, target: string) {\n const { name = 'pake-app' } = this.options;\n await mergeConfig(url, this.options, tauriConfig);\n\n // Detect available package manager\n const packageManager = await this.detectPackageManager();\n\n // Build app\n const buildSpinner = getSpinner('Building app...');\n // Let spinner run for a moment so user can see it, then stop before package manager command\n await new Promise((resolve) => setTimeout(resolve, 500));\n buildSpinner.stop();\n // Show static message to keep the status visible\n logger.warn('✸ Building app...');\n\n const baseEnv = this.getBuildEnvironment();\n let buildEnv: Record<string, string> = {\n ...(baseEnv ?? {}),\n ...(process.env.NO_STRIP ? { NO_STRIP: process.env.NO_STRIP } : {}),\n };\n\n const resolveExecEnv = () =>\n Object.keys(buildEnv).length > 0 ? buildEnv : undefined;\n\n // Warn users about potential AppImage build failures on modern Linux systems.\n // The linuxdeploy tool bundled in Tauri uses an older strip tool that doesn't\n // recognize the .relr.dyn section introduced in glibc 2.38+.\n if (process.platform === 'linux' && this.options.targets === 'appimage') {\n if (!buildEnv.NO_STRIP) {\n logger.warn(\n '⚠ Building AppImage on Linux may fail due to strip incompatibility with glibc 2.38+',\n );\n logger.warn(\n '⚠ If build fails, retry with: NO_STRIP=1 pake <url> --targets appimage',\n );\n }\n }\n\n const buildCommand = `cd \"${npmDirectory}\" && ${this.getBuildCommand(packageManager)}`;\n const buildTimeout = this.getBuildTimeout();\n\n try {\n await shellExec(buildCommand, buildTimeout, resolveExecEnv());\n } catch (error) {\n const shouldRetryWithoutStrip =\n process.platform === 'linux' &&\n this.options.targets === 'appimage' &&\n !buildEnv.NO_STRIP &&\n this.isLinuxDeployStripError(error);\n\n if (shouldRetryWithoutStrip) {\n logger.warn(\n '⚠ AppImage build failed during linuxdeploy strip step, retrying with NO_STRIP=1 automatically.',\n );\n buildEnv = {\n ...buildEnv,\n NO_STRIP: '1',\n };\n await shellExec(buildCommand, buildTimeout, resolveExecEnv());\n } else {\n throw error;\n }\n }\n\n // Copy app\n const fileName = this.getFileName();\n const fileType = this.getFileType(target);\n const appPath = this.getBuildAppPath(npmDirectory, fileName, fileType);\n const distPath = path.resolve(`${name}.${fileType}`);\n await fsExtra.copy(appPath, distPath);\n\n // Copy raw binary if requested\n if (this.options.keepBinary) {\n await this.copyRawBinary(npmDirectory, name);\n }\n\n await fsExtra.remove(appPath);\n logger.success('✔ Build success!');\n logger.success('✔ App installer located in', distPath);\n\n // Log binary location if preserved\n if (this.options.keepBinary) {\n const binaryPath = this.getRawBinaryPath(name);\n logger.success('✔ Raw binary located in', path.resolve(binaryPath));\n }\n }\n\n protected getFileType(target: string): string {\n return target;\n }\n\n abstract getFileName(): string;\n\n private isLinuxDeployStripError(error: unknown): boolean {\n if (!(error instanceof Error) || !error.message) {\n return false;\n }\n const message = error.message.toLowerCase();\n return (\n message.includes('linuxdeploy') ||\n message.includes('failed to run linuxdeploy') ||\n message.includes('strip:') ||\n message.includes('unable to recognise the format of the input file') ||\n message.includes('appimage tool failed') ||\n message.includes('strip tool')\n );\n }\n\n // 架构映射配置\n protected static readonly ARCH_MAPPINGS: Record<\n string,\n Record<string, string>\n > = {\n darwin: {\n arm64: 'aarch64-apple-darwin',\n x64: 'x86_64-apple-darwin',\n universal: 'universal-apple-darwin',\n },\n win32: {\n arm64: 'aarch64-pc-windows-msvc',\n x64: 'x86_64-pc-windows-msvc',\n },\n linux: {\n arm64: 'aarch64-unknown-linux-gnu',\n x64: 'x86_64-unknown-linux-gnu',\n },\n };\n\n // 架构名称映射(用于文件名生成)\n protected static readonly ARCH_DISPLAY_NAMES: Record<string, string> = {\n arm64: 'aarch64',\n x64: 'x64',\n universal: 'universal',\n };\n\n /**\n * 解析目标架构\n */\n protected resolveTargetArch(requestedArch?: string): string {\n if (requestedArch === 'auto' || !requestedArch) {\n return process.arch;\n }\n return requestedArch;\n }\n\n /**\n * 获取Tauri构建目标\n */\n protected getTauriTarget(\n arch: string,\n platform: NodeJS.Platform = process.platform,\n ): string | null {\n const platformMappings = BaseBuilder.ARCH_MAPPINGS[platform];\n if (!platformMappings) return null;\n return platformMappings[arch] || null;\n }\n\n /**\n * 获取架构显示名称(用于文件名)\n */\n protected getArchDisplayName(arch: string): string {\n return BaseBuilder.ARCH_DISPLAY_NAMES[arch] || arch;\n }\n\n /**\n * 构建基础构建命令\n */\n protected buildBaseCommand(\n packageManager: string,\n configPath: string,\n target?: string,\n ): string {\n const baseCommand = this.options.debug\n ? `${packageManager} run build:debug`\n : `${packageManager} run build`;\n\n const argSeparator = packageManager === 'npm' ? ' --' : '';\n let fullCommand = `${baseCommand}${argSeparator} -c \"${configPath}\"`;\n\n if (target) {\n fullCommand += ` --target ${target}`;\n }\n\n // Enable verbose output in debug mode to help diagnose build issues.\n // This provides detailed logs from Tauri CLI and bundler tools.\n if (this.options.debug) {\n fullCommand += ' --verbose';\n }\n\n return fullCommand;\n }\n\n /**\n * 获取构建特性列表\n */\n protected getBuildFeatures(): string[] {\n const features = ['cli-build'];\n\n // Add macos-proxy feature for modern macOS (Darwin 23+ = macOS 14+)\n if (IS_MAC) {\n const macOSVersion = this.getMacOSMajorVersion();\n if (macOSVersion >= 23) {\n features.push('macos-proxy');\n }\n }\n\n return features;\n }\n\n protected getBuildCommand(packageManager: string = 'pnpm'): string {\n // Use temporary config directory to avoid modifying source files\n const configPath = path.join(\n npmDirectory,\n 'src-tauri',\n '.pake',\n 'tauri.conf.json',\n );\n\n let fullCommand = this.buildBaseCommand(packageManager, configPath);\n\n // For macOS, use app bundles by default unless DMG is explicitly requested\n if (IS_MAC && this.options.targets === 'app') {\n fullCommand += ' --bundles app';\n }\n\n // Add features\n const features = this.getBuildFeatures();\n if (features.length > 0) {\n fullCommand += ` --features ${features.join(',')}`;\n }\n\n return fullCommand;\n }\n\n protected getMacOSMajorVersion(): number {\n try {\n const os = require('os');\n const release = os.release();\n const majorVersion = parseInt(release.split('.')[0], 10);\n return majorVersion;\n } catch (error) {\n return 0; // Disable proxy feature if version detection fails\n }\n }\n\n protected getBasePath(): string {\n const basePath = this.options.debug ? 'debug' : 'release';\n return `src-tauri/target/${basePath}/bundle/`;\n }\n\n protected getBuildAppPath(\n npmDirectory: string,\n fileName: string,\n fileType: string,\n ): string {\n // For app bundles on macOS, the directory is 'macos', not 'app'\n const bundleDir =\n fileType.toLowerCase() === 'app' ? 'macos' : fileType.toLowerCase();\n return path.join(\n npmDirectory,\n this.getBasePath(),\n bundleDir,\n `${fileName}.${fileType}`,\n );\n }\n\n /**\n * Copy raw binary file to output directory\n */\n protected async copyRawBinary(\n npmDirectory: string,\n appName: string,\n ): Promise<void> {\n const binaryPath = this.getRawBinarySourcePath(npmDirectory, appName);\n const outputPath = this.getRawBinaryPath(appName);\n\n if (await fsExtra.pathExists(binaryPath)) {\n await fsExtra.copy(binaryPath, outputPath);\n // Make binary executable on Unix-like systems\n if (process.platform !== 'win32') {\n await fsExtra.chmod(outputPath, 0o755);\n }\n } else {\n logger.warn(`✼ Raw binary not found at ${binaryPath}, skipping...`);\n }\n }\n\n /**\n * Get the source path of the raw binary file in the build directory\n */\n protected getRawBinarySourcePath(\n npmDirectory: string,\n appName: string,\n ): string {\n const basePath = this.options.debug ? 'debug' : 'release';\n const binaryName = this.getBinaryName(appName);\n\n // Handle cross-platform builds\n if (this.options.multiArch || this.hasArchSpecificTarget()) {\n return path.join(\n npmDirectory,\n this.getArchSpecificPath(),\n basePath,\n binaryName,\n );\n }\n\n return path.join(npmDirectory, 'src-tauri/target', basePath, binaryName);\n }\n\n /**\n * Get the output path for the raw binary file\n */\n protected getRawBinaryPath(appName: string): string {\n const extension = process.platform === 'win32' ? '.exe' : '';\n const suffix = process.platform === 'win32' ? '' : '-binary';\n return `${appName}${suffix}${extension}`;\n }\n\n /**\n * Get the binary name based on app name and platform\n */\n protected getBinaryName(appName: string): string {\n const extension = process.platform === 'win32' ? '.exe' : '';\n\n // Linux uses the unique binary name we set in merge.ts\n if (process.platform === 'linux') {\n return `pake-${generateIdentifierSafeName(appName)}${extension}`;\n }\n\n // Windows and macOS use 'pake' as binary name\n return `pake${extension}`;\n }\n\n /**\n * Check if this build has architecture-specific target\n */\n protected hasArchSpecificTarget(): boolean {\n return false; // Override in subclasses if needed\n }\n\n /**\n * Get architecture-specific path for binary\n */\n protected getArchSpecificPath(): string {\n return 'src-tauri/target'; // Override in subclasses if needed\n }\n}\n","import path from 'path';\nimport tauriConfig from '@/helpers/tauriConfig';\nimport { PakeAppOptions } from '@/types';\nimport BaseBuilder from './BaseBuilder';\n\nexport default class MacBuilder extends BaseBuilder {\n private buildFormat: string;\n private buildArch: string;\n\n constructor(options: PakeAppOptions) {\n super(options);\n\n const validArchs = ['intel', 'apple', 'universal', 'auto', 'x64', 'arm64'];\n this.buildArch = validArchs.includes(options.targets || '')\n ? options.targets\n : 'auto';\n\n if (options.iterativeBuild || process.env.PAKE_CREATE_APP === '1') {\n this.buildFormat = 'app';\n } else {\n this.buildFormat = 'dmg';\n }\n\n this.options.targets = this.buildFormat;\n }\n\n getFileName(): string {\n const { name = 'pake-app' } = this.options;\n\n if (this.buildFormat === 'app') {\n return name;\n }\n\n let arch: string;\n if (this.buildArch === 'universal' || this.options.multiArch) {\n arch = 'universal';\n } else if (this.buildArch === 'apple') {\n arch = 'aarch64';\n } else if (this.buildArch === 'intel') {\n arch = 'x64';\n } else {\n arch = this.getArchDisplayName(this.resolveTargetArch(this.buildArch));\n }\n return `${name}_${tauriConfig.version}_${arch}`;\n }\n\n private getActualArch(): string {\n if (this.buildArch === 'universal' || this.options.multiArch) {\n return 'universal';\n } else if (this.buildArch === 'apple') {\n return 'arm64';\n } else if (this.buildArch === 'intel') {\n return 'x64';\n }\n return this.resolveTargetArch(this.buildArch);\n }\n\n protected getBuildCommand(packageManager: string = 'pnpm'): string {\n const configPath = path.join('src-tauri', '.pake', 'tauri.conf.json');\n const actualArch = this.getActualArch();\n\n const buildTarget = this.getTauriTarget(actualArch, 'darwin');\n if (!buildTarget) {\n throw new Error(`Unsupported architecture: ${actualArch} for macOS`);\n }\n\n let fullCommand = this.buildBaseCommand(\n packageManager,\n configPath,\n buildTarget,\n );\n\n const features = this.getBuildFeatures();\n if (features.length > 0) {\n fullCommand += ` --features ${features.join(',')}`;\n }\n\n return fullCommand;\n }\n\n protected getBasePath(): string {\n const basePath = this.options.debug ? 'debug' : 'release';\n const actualArch = this.getActualArch();\n const target = this.getTauriTarget(actualArch, 'darwin');\n\n return `src-tauri/target/${target}/${basePath}/bundle`;\n }\n\n protected hasArchSpecificTarget(): boolean {\n return true;\n }\n\n protected getArchSpecificPath(): string {\n const actualArch = this.getActualArch();\n const target = this.getTauriTarget(actualArch, 'darwin');\n return `src-tauri/target/${target}`;\n }\n}\n","import path from 'path';\nimport BaseBuilder from './BaseBuilder';\nimport { PakeAppOptions } from '@/types';\nimport tauriConfig from '@/helpers/tauriConfig';\n\nexport default class WinBuilder extends BaseBuilder {\n private buildFormat: string = 'msi';\n private buildArch: string;\n\n constructor(options: PakeAppOptions) {\n super(options);\n const validArchs = ['x64', 'arm64', 'auto'];\n this.buildArch = validArchs.includes(options.targets || '')\n ? this.resolveTargetArch(options.targets)\n : this.resolveTargetArch('auto');\n this.options.targets = this.buildFormat;\n }\n\n getFileName(): string {\n const { name } = this.options;\n const language = tauriConfig.bundle.windows.wix.language[0];\n const targetArch = this.getArchDisplayName(this.buildArch);\n return `${name}_${tauriConfig.version}_${targetArch}_${language}`;\n }\n\n protected getBuildCommand(packageManager: string = 'pnpm'): string {\n const configPath = path.join('src-tauri', '.pake', 'tauri.conf.json');\n const buildTarget = this.getTauriTarget(this.buildArch, 'win32');\n\n if (!buildTarget) {\n throw new Error(\n `Unsupported architecture: ${this.buildArch} for Windows`,\n );\n }\n\n let fullCommand = this.buildBaseCommand(\n packageManager,\n configPath,\n buildTarget,\n );\n\n const features = this.getBuildFeatures();\n if (features.length > 0) {\n fullCommand += ` --features ${features.join(',')}`;\n }\n\n return fullCommand;\n }\n\n protected getBasePath(): string {\n const basePath = this.options.debug ? 'debug' : 'release';\n const target = this.getTauriTarget(this.buildArch, 'win32');\n return `src-tauri/target/${target}/${basePath}/bundle/`;\n }\n\n protected hasArchSpecificTarget(): boolean {\n return true;\n }\n\n protected getArchSpecificPath(): string {\n const target = this.getTauriTarget(this.buildArch, 'win32');\n return `src-tauri/target/${target}`;\n }\n}\n","import path from 'path';\nimport BaseBuilder from './BaseBuilder';\nimport { PakeAppOptions } from '@/types';\nimport tauriConfig from '@/helpers/tauriConfig';\n\nexport default class LinuxBuilder extends BaseBuilder {\n private buildFormat: string;\n private buildArch: string;\n\n constructor(options: PakeAppOptions) {\n super(options);\n\n const target = options.targets || 'deb';\n if (target.includes('-arm64')) {\n this.buildFormat = target.replace('-arm64', '');\n this.buildArch = 'arm64';\n } else {\n this.buildFormat = target;\n this.buildArch = this.resolveTargetArch('auto');\n }\n\n this.options.targets = this.buildFormat;\n }\n\n getFileName() {\n const { name = 'pake-app', targets } = this.options;\n const version = tauriConfig.version;\n\n let arch: string;\n if (this.buildArch === 'arm64') {\n arch = targets === 'rpm' || targets === 'appimage' ? 'aarch64' : 'arm64';\n } else {\n if (this.buildArch === 'x64') {\n arch = targets === 'rpm' ? 'x86_64' : 'amd64';\n } else {\n arch = this.buildArch;\n if (\n this.buildArch === 'arm64' &&\n (targets === 'rpm' || targets === 'appimage')\n ) {\n arch = 'aarch64';\n }\n }\n }\n\n if (targets === 'rpm') {\n return `${name}-${version}-1.${arch}`;\n }\n\n return `${name}_${version}_${arch}`;\n }\n\n async build(url: string) {\n const targetTypes = ['deb', 'appimage', 'rpm'];\n for (const target of targetTypes) {\n if (this.options.targets === target) {\n await this.buildAndCopy(url, target);\n }\n }\n }\n\n protected getBuildCommand(packageManager: string = 'pnpm'): string {\n const configPath = path.join('src-tauri', '.pake', 'tauri.conf.json');\n\n const buildTarget =\n this.buildArch === 'arm64'\n ? (this.getTauriTarget(this.buildArch, 'linux') ?? undefined)\n : undefined;\n\n let fullCommand = this.buildBaseCommand(\n packageManager,\n configPath,\n buildTarget,\n );\n\n const features = this.getBuildFeatures();\n if (features.length > 0) {\n fullCommand += ` --features ${features.join(',')}`;\n }\n\n // Enable verbose output for AppImage builds when debugging or PAKE_VERBOSE is set.\n // AppImage builds often fail with minimal error messages from linuxdeploy,\n // so verbose mode helps diagnose issues like strip failures and missing dependencies.\n if (\n this.options.targets === 'appimage' &&\n (this.options.debug || process.env.PAKE_VERBOSE)\n ) {\n fullCommand += ' --verbose';\n }\n\n return fullCommand;\n }\n\n protected getBasePath(): string {\n const basePath = this.options.debug ? 'debug' : 'release';\n\n if (this.buildArch === 'arm64') {\n const target = this.getTauriTarget(this.buildArch, 'linux');\n return `src-tauri/target/${target}/${basePath}/bundle/`;\n }\n\n return super.getBasePath();\n }\n\n protected getFileType(target: string): string {\n if (target === 'appimage') {\n return 'AppImage';\n }\n return super.getFileType(target);\n }\n\n protected hasArchSpecificTarget(): boolean {\n return this.buildArch === 'arm64';\n }\n\n protected getArchSpecificPath(): string {\n if (this.buildArch === 'arm64') {\n const target = this.getTauriTarget(this.buildArch, 'linux');\n return `src-tauri/target/${target}`;\n }\n return super.getArchSpecificPath();\n }\n}\n","import BaseBuilder from './BaseBuilder';\nimport MacBuilder from './MacBuilder';\nimport WinBuilder from './WinBuilder';\nimport LinuxBuilder from './LinuxBuilder';\nimport { PakeAppOptions } from '@/types';\n\nconst { platform } = process;\n\nconst buildersMap: Record<\n string,\n new (options: PakeAppOptions) => BaseBuilder\n> = {\n darwin: MacBuilder,\n win32: WinBuilder,\n linux: LinuxBuilder,\n};\n\nexport default class BuilderProvider {\n static create(options: PakeAppOptions): BaseBuilder {\n const Builder = buildersMap[platform];\n if (!Builder) {\n throw new Error('The current system is not supported!');\n }\n return new Builder(options);\n }\n}\n","import { PakeCliOptions } from './types.js';\n\nexport const DEFAULT_PAKE_OPTIONS: PakeCliOptions = {\n icon: '',\n height: 780,\n width: 1200,\n fullscreen: false,\n maximize: false,\n resizable: true,\n hideTitleBar: false,\n alwaysOnTop: false,\n appVersion: '1.0.0',\n darkMode: false,\n disabledWebShortcuts: false,\n activationShortcut: '',\n userAgent: '',\n showSystemTray: false,\n multiArch: false,\n targets: (() => {\n switch (process.platform) {\n case 'linux':\n return 'deb';\n case 'darwin':\n return 'dmg';\n case 'win32':\n return 'msi';\n default:\n return 'deb';\n }\n })(),\n useLocalFile: false,\n systemTrayIcon: '',\n proxyUrl: '',\n debug: false,\n inject: [],\n installerLanguage: 'en-US',\n hideOnClose: undefined, // Platform-specific: true for macOS, false for others\n incognito: false,\n wasm: false,\n enableDragDrop: false,\n keepBinary: false,\n multiInstance: false,\n startToTray: false,\n forceInternalNavigation: false,\n iterativeBuild: false,\n zoom: 100,\n minWidth: 0,\n minHeight: 0,\n ignoreCertificateErrors: false,\n};\n\n// Just for cli development\nexport const DEFAULT_DEV_PAKE_OPTIONS: PakeCliOptions & { url: string } = {\n ...DEFAULT_PAKE_OPTIONS,\n url: 'https://weekly.tw93.fun/',\n name: 'Weekly',\n hideTitleBar: true,\n};\n","import fs from 'fs';\nimport { InvalidArgumentError } from 'commander';\nimport { normalizeUrl } from './url';\n\nexport function validateNumberInput(value: string) {\n const parsedValue = Number(value);\n if (isNaN(parsedValue)) {\n throw new InvalidArgumentError('Not a number.');\n }\n return parsedValue;\n}\n\nexport function validateUrlInput(url: string) {\n const isFile = fs.existsSync(url);\n\n if (!isFile) {\n try {\n return normalizeUrl(url);\n } catch (error) {\n if (error instanceof Error) {\n throw new InvalidArgumentError(error.message);\n }\n throw error;\n }\n }\n\n return url;\n}\n","\nimport chalk from 'chalk';\nimport { program, Option } from 'commander';\nimport packageJson from '../../package.json';\nimport {\n DEFAULT_PAKE_OPTIONS as DEFAULT,\n DEFAULT_PAKE_OPTIONS,\n} from '../defaults';\nimport { validateNumberInput, validateUrlInput } from '../utils/validate';\n\nexport function getCliProgram() {\n const { green, yellow } = chalk;\n const logo = `${chalk.green(' ____ _')}\n${green('| _ \\\\ __ _| | _____')}\n${green('| |_) / _` | |/ / _ \\\\')}\n${green('| __/ (_| | < __/')} ${yellow('https://github.com/tw93/pake')}\n${green('|_| \\\\__,_|_|\\\\_\\\\___| can turn any webpage into a desktop app with Rust.')}\n`;\n\n return program\n .addHelpText('beforeAll', logo)\n .usage(`[url] [options]`)\n .showHelpAfterError()\n .argument('[url]', 'The web URL you want to package', validateUrlInput)\n .option('--name <string>', 'Application name')\n .option('--icon <string>', 'Application icon', DEFAULT.icon)\n .option(\n '--width <number>',\n 'Window width',\n validateNumberInput,\n DEFAULT.width,\n )\n .option(\n '--height <number>',\n 'Window height',\n validateNumberInput,\n DEFAULT.height,\n )\n .option('--use-local-file', 'Use local file packaging', DEFAULT.useLocalFile)\n .option('--fullscreen', 'Start in full screen', DEFAULT.fullscreen)\n .option('--hide-title-bar', 'For Mac, hide title bar', DEFAULT.hideTitleBar)\n .option('--multi-arch', 'For Mac, both Intel and M1', DEFAULT.multiArch)\n .option(\n '--inject <files>',\n 'Inject local CSS/JS files into the page',\n (val, previous) => {\n if (!val) return DEFAULT.inject;\n\n // Split by comma and trim whitespace, filter out empty strings\n const files = val\n .split(',')\n .map((item) => item.trim())\n .filter((item) => item.length > 0);\n\n // If previous values exist (from multiple --inject options), merge them\n return previous ? [...previous, ...files] : files;\n },\n DEFAULT.inject,\n )\n .option('--debug', 'Debug build and more output', DEFAULT.debug)\n .addOption(\n new Option(\n '--proxy-url <url>',\n 'Proxy URL for all network requests (http://, https://, socks5://)',\n )\n .default(DEFAULT_PAKE_OPTIONS.proxyUrl)\n .hideHelp(),\n )\n .addOption(\n new Option('--user-agent <string>', 'Custom user agent')\n .default(DEFAULT.userAgent)\n .hideHelp(),\n )\n .addOption(\n new Option(\n '--targets <string>',\n 'Build target format for your system',\n ).default(DEFAULT.targets),\n )\n .addOption(\n new Option(\n '--app-version <string>',\n 'App version, the same as package.json version',\n )\n .default(DEFAULT.appVersion)\n .hideHelp(),\n )\n .addOption(\n new Option('--always-on-top', 'Always on the top level')\n .default(DEFAULT.alwaysOnTop)\n .hideHelp(),\n )\n .addOption(\n new Option('--maximize', 'Start window maximized')\n .default(DEFAULT.maximize)\n .hideHelp(),\n )\n .addOption(\n new Option('--dark-mode', 'Force Mac app to use dark mode')\n .default(DEFAULT.darkMode)\n .hideHelp(),\n )\n .addOption(\n new Option('--disabled-web-shortcuts', 'Disabled webPage shortcuts')\n .default(DEFAULT.disabledWebShortcuts)\n .hideHelp(),\n )\n .addOption(\n new Option('--activation-shortcut <string>', 'Shortcut key to active App')\n .default(DEFAULT_PAKE_OPTIONS.activationShortcut)\n .hideHelp(),\n )\n .addOption(\n new Option('--show-system-tray', 'Show system tray in app')\n .default(DEFAULT.showSystemTray)\n .hideHelp(),\n )\n .addOption(\n new Option('--system-tray-icon <string>', 'Custom system tray icon')\n .default(DEFAULT.systemTrayIcon)\n .hideHelp(),\n )\n .addOption(\n new Option(\n '--hide-on-close [boolean]',\n 'Hide window on close instead of exiting (default: true for macOS, false for others)',\n )\n .default(DEFAULT.hideOnClose)\n .argParser((value) => {\n if (value === undefined) return true; // --hide-on-close without value\n if (value === 'true') return true;\n if (value === 'false') return false;\n throw new Error('--hide-on-close must be true or false');\n })\n .hideHelp(),\n )\n .addOption(new Option('--title <string>', 'Window title').hideHelp())\n .addOption(\n new Option('--incognito', 'Launch app in incognito/private mode')\n .default(DEFAULT.incognito)\n .hideHelp(),\n )\n .addOption(\n new Option('--wasm', 'Enable WebAssembly support (Flutter Web, etc.)')\n .default(DEFAULT.wasm)\n .hideHelp(),\n )\n .addOption(\n new Option('--enable-drag-drop', 'Enable drag and drop functionality')\n .default(DEFAULT.enableDragDrop)\n .hideHelp(),\n )\n .addOption(\n new Option('--keep-binary', 'Keep raw binary file alongside installer')\n .default(DEFAULT.keepBinary)\n .hideHelp(),\n )\n .addOption(\n new Option('--multi-instance', 'Allow multiple app instances')\n .default(DEFAULT.multiInstance)\n .hideHelp(),\n )\n .addOption(\n new Option('--start-to-tray', 'Start app minimized to tray')\n .default(DEFAULT.startToTray)\n .hideHelp(),\n )\n .addOption(\n new Option(\n '--force-internal-navigation',\n 'Keep every link inside the Pake window instead of opening external handlers',\n )\n .default(DEFAULT.forceInternalNavigation)\n .hideHelp(),\n )\n .addOption(\n new Option('--installer-language <string>', 'Installer language')\n .default(DEFAULT.installerLanguage)\n .hideHelp(),\n )\n .addOption(\n new Option('--zoom <number>', 'Initial page zoom level (50-200)')\n .default(DEFAULT.zoom)\n .argParser((value) => {\n const zoom = parseInt(value);\n if (isNaN(zoom) || zoom < 50 || zoom > 200) {\n throw new Error('--zoom must be a number between 50 and 200');\n }\n return zoom;\n })\n .hideHelp(),\n )\n .addOption(\n new Option('--min-width <number>', 'Minimum window width')\n .default(DEFAULT.minWidth)\n .argParser(validateNumberInput)\n .hideHelp(),\n )\n .addOption(\n new Option('--min-height <number>', 'Minimum window height')\n .default(DEFAULT.minHeight)\n .argParser(validateNumberInput)\n .hideHelp(),\n )\n .addOption(\n new Option(\n '--ignore-certificate-errors',\n 'Ignore certificate errors (for self-signed certificates)',\n )\n .default(DEFAULT.ignoreCertificateErrors)\n .hideHelp(),\n )\n .addOption(\n new Option(\n '--iterative-build',\n 'Turn on rapid build mode (app only, no dmg/deb/msi), good for debugging',\n )\n .default(DEFAULT.iterativeBuild)\n .hideHelp(),\n )\n .version(packageJson.version, '-v, --version')\n .configureHelp({\n sortSubcommands: true,\n optionTerm: (option) => {\n if (option.flags === '-v, --version' || option.flags === '-h, --help')\n return '';\n return option.flags;\n },\n optionDescription: (option) => {\n if (option.flags === '-v, --version' || option.flags === '-h, --help')\n return '';\n return option.description;\n },\n });\n}\n","import log from 'loglevel';\nimport { PakeCliOptions } from './types';\nimport handleInputOptions from './options/index';\nimport BuilderProvider from './builders/BuilderProvider';\nimport { getCliProgram } from './helpers/cli-program';\n\nconst program = getCliProgram();\n\nprogram.action(async (url: string, options: PakeCliOptions) => {\n log.setDefaultLevel('debug');\n\n const appOptions = await handleInputOptions(options, url);\n log.debug('PakeAppOptions', appOptions);\n\n const builder = BuilderProvider.create(appOptions);\n await builder.prepare();\n await builder.start(url);\n});\n\nprogram.parse();\n\n"],"names":["platform","program","DEFAULT","handleInputOptions"],"mappings":"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"}
|