pake-cli 3.6.4 โ 3.7.2
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 +66 -40
- package/dist/test-local.html +1 -0
- package/package.json +23 -18
- package/src-tauri/Cargo.lock +360 -417
- package/src-tauri/Cargo.toml +10 -3
- package/src-tauri/src/app/menu.rs +3 -0
- package/src-tauri/src/app/mod.rs +1 -0
- package/src-tauri/src/inject/event.js +64 -11
- package/src-tauri/src/inject/style.js +8 -0
- package/src-tauri/.pake/pake.json +0 -42
- package/src-tauri/.pake/tauri.conf.json +0 -28
- package/src-tauri/.pake/tauri.linux.conf.json +0 -12
- package/src-tauri/.pake/tauri.macos.conf.json +0 -14
- package/src-tauri/.pake/tauri.windows.conf.json +0 -15
package/dist/cli.js
CHANGED
|
@@ -22,12 +22,12 @@ import * as psl from 'psl';
|
|
|
22
22
|
import { InvalidArgumentError, program as program$1, Option } from 'commander';
|
|
23
23
|
|
|
24
24
|
var name = "pake-cli";
|
|
25
|
-
var version = "3.
|
|
25
|
+
var version = "3.7.2";
|
|
26
26
|
var description = "๐คฑ๐ป Turn any webpage into a desktop app with one command. ๐คฑ๐ป ไธ้ฎๆๅ
็ฝ้กต็ๆ่ฝป้ๆก้ขๅบ็จใ";
|
|
27
27
|
var engines = {
|
|
28
28
|
node: ">=18.0.0"
|
|
29
29
|
};
|
|
30
|
-
var packageManager = "pnpm@10.
|
|
30
|
+
var packageManager = "pnpm@10.26.2";
|
|
31
31
|
var bin = {
|
|
32
32
|
pake: "./dist/cli.js"
|
|
33
33
|
};
|
|
@@ -68,45 +68,50 @@ var scripts = {
|
|
|
68
68
|
prepublishOnly: "pnpm run cli:build"
|
|
69
69
|
};
|
|
70
70
|
var type = "module";
|
|
71
|
-
var exports = "./dist/cli.js";
|
|
71
|
+
var exports$1 = "./dist/cli.js";
|
|
72
72
|
var license = "MIT";
|
|
73
73
|
var dependencies = {
|
|
74
|
-
"@tauri-apps/api": "^2.9.
|
|
75
|
-
"@tauri-apps/cli": "^2.9.
|
|
74
|
+
"@tauri-apps/api": "^2.9.1",
|
|
75
|
+
"@tauri-apps/cli": "^2.9.6",
|
|
76
76
|
chalk: "^5.6.2",
|
|
77
|
-
commander: "^
|
|
78
|
-
execa: "^9.6.
|
|
79
|
-
"file-type": "^
|
|
80
|
-
"fs-extra": "^11.3.
|
|
77
|
+
commander: "^14.0.2",
|
|
78
|
+
execa: "^9.6.1",
|
|
79
|
+
"file-type": "^21.1.1",
|
|
80
|
+
"fs-extra": "^11.3.3",
|
|
81
81
|
"icon-gen": "^5.0.0",
|
|
82
82
|
loglevel: "^1.9.2",
|
|
83
|
-
ora: "^
|
|
83
|
+
ora: "^9.0.0",
|
|
84
84
|
prompts: "^2.4.2",
|
|
85
85
|
psl: "^1.15.0",
|
|
86
|
-
sharp: "^0.
|
|
86
|
+
sharp: "^0.34.5",
|
|
87
87
|
"tmp-promise": "^3.0.3",
|
|
88
88
|
"update-notifier": "^7.3.1"
|
|
89
89
|
};
|
|
90
90
|
var devDependencies = {
|
|
91
|
-
"@rollup/plugin-alias": "^
|
|
92
|
-
"@rollup/plugin-commonjs": "^
|
|
91
|
+
"@rollup/plugin-alias": "^6.0.0",
|
|
92
|
+
"@rollup/plugin-commonjs": "^29.0.0",
|
|
93
93
|
"@rollup/plugin-json": "^6.1.0",
|
|
94
|
-
"@rollup/plugin-replace": "^6.0.
|
|
94
|
+
"@rollup/plugin-replace": "^6.0.3",
|
|
95
95
|
"@rollup/plugin-terser": "^0.4.4",
|
|
96
96
|
"@types/fs-extra": "^11.0.4",
|
|
97
|
-
"@types/node": "^
|
|
97
|
+
"@types/node": "^25.0.3",
|
|
98
98
|
"@types/page-icon": "^0.3.6",
|
|
99
99
|
"@types/prompts": "^2.4.9",
|
|
100
100
|
"@types/tmp": "^0.2.6",
|
|
101
101
|
"@types/update-notifier": "^6.0.8",
|
|
102
102
|
"app-root-path": "^3.1.0",
|
|
103
|
-
"cross-env": "^
|
|
104
|
-
prettier: "^3.
|
|
105
|
-
rollup: "^4.
|
|
103
|
+
"cross-env": "^10.1.0",
|
|
104
|
+
prettier: "^3.7.4",
|
|
105
|
+
rollup: "^4.54.0",
|
|
106
106
|
"rollup-plugin-typescript2": "^0.36.0",
|
|
107
107
|
tslib: "^2.8.1",
|
|
108
108
|
typescript: "^5.9.3",
|
|
109
|
-
vitest: "^4.0.
|
|
109
|
+
vitest: "^4.0.16"
|
|
110
|
+
};
|
|
111
|
+
var pnpm = {
|
|
112
|
+
overrides: {
|
|
113
|
+
sharp: "^0.34.5"
|
|
114
|
+
}
|
|
110
115
|
};
|
|
111
116
|
var packageJson = {
|
|
112
117
|
name: name,
|
|
@@ -121,10 +126,11 @@ var packageJson = {
|
|
|
121
126
|
files: files,
|
|
122
127
|
scripts: scripts,
|
|
123
128
|
type: type,
|
|
124
|
-
exports: exports,
|
|
129
|
+
exports: exports$1,
|
|
125
130
|
license: license,
|
|
126
131
|
dependencies: dependencies,
|
|
127
|
-
devDependencies: devDependencies
|
|
132
|
+
devDependencies: devDependencies,
|
|
133
|
+
pnpm: pnpm
|
|
128
134
|
};
|
|
129
135
|
|
|
130
136
|
// Convert the current module URL to a file path
|
|
@@ -506,7 +512,10 @@ async function mergeConfig(url, options, tauriConf) {
|
|
|
506
512
|
tauriConf.version = appVersion;
|
|
507
513
|
// Always set mainBinaryName to ensure binary uniqueness
|
|
508
514
|
const linuxBinaryName = `pake-${generateLinuxPackageName(name)}`;
|
|
509
|
-
tauriConf.mainBinaryName =
|
|
515
|
+
tauriConf.mainBinaryName =
|
|
516
|
+
platform === 'linux'
|
|
517
|
+
? linuxBinaryName
|
|
518
|
+
: `pake-${generateIdentifierSafeName(name)}`;
|
|
510
519
|
if (platform == 'win32') {
|
|
511
520
|
tauriConf.bundle.windows.wix.language[0] = installerLanguage;
|
|
512
521
|
}
|
|
@@ -688,6 +697,10 @@ Terminal=false
|
|
|
688
697
|
logger.warn(`โผ Default system tray icon will remain unchanged.`);
|
|
689
698
|
}
|
|
690
699
|
}
|
|
700
|
+
// Ensure trayIcon object exists before setting iconPath
|
|
701
|
+
if (!tauriConf.app.trayIcon) {
|
|
702
|
+
tauriConf.app.trayIcon = {};
|
|
703
|
+
}
|
|
691
704
|
tauriConf.app.trayIcon.iconPath = trayIconPath;
|
|
692
705
|
tauriConf.pake.system_tray_path = trayIconPath;
|
|
693
706
|
delete tauriConf.app.trayIcon;
|
|
@@ -1093,7 +1106,9 @@ class BaseBuilder {
|
|
|
1093
1106
|
getBinaryName(appName) {
|
|
1094
1107
|
const extension = process.platform === 'win32' ? '.exe' : '';
|
|
1095
1108
|
// Use unique binary name for all platforms to avoid conflicts
|
|
1096
|
-
const nameToUse = process.platform === 'linux'
|
|
1109
|
+
const nameToUse = process.platform === 'linux'
|
|
1110
|
+
? generateLinuxPackageName(appName)
|
|
1111
|
+
: generateIdentifierSafeName(appName);
|
|
1097
1112
|
return `pake-${nameToUse}${extension}`;
|
|
1098
1113
|
}
|
|
1099
1114
|
/**
|
|
@@ -1293,8 +1308,11 @@ class LinuxBuilder extends BaseBuilder {
|
|
|
1293
1308
|
}
|
|
1294
1309
|
async build(url) {
|
|
1295
1310
|
const targetTypes = ['deb', 'appimage', 'rpm'];
|
|
1311
|
+
const requestedTargets = this.options.targets
|
|
1312
|
+
.split(',')
|
|
1313
|
+
.map((t) => t.trim());
|
|
1296
1314
|
for (const target of targetTypes) {
|
|
1297
|
-
if (
|
|
1315
|
+
if (requestedTargets.includes(target)) {
|
|
1298
1316
|
await this.buildAndCopy(url, target);
|
|
1299
1317
|
}
|
|
1300
1318
|
}
|
|
@@ -1380,9 +1398,7 @@ const API_KEYS = {
|
|
|
1380
1398
|
brandfetch: ['1idqvJC0CeFSeyp3Yf7', '1idej-yhU_ThggIHFyG'],
|
|
1381
1399
|
};
|
|
1382
1400
|
function generateIconPath(appName, isDefault = false) {
|
|
1383
|
-
const safeName = isDefault
|
|
1384
|
-
? 'icon'
|
|
1385
|
-
: generateSafeFilename(appName).toLowerCase();
|
|
1401
|
+
const safeName = isDefault ? 'icon' : getIconBaseName(appName);
|
|
1386
1402
|
const baseName = safeName;
|
|
1387
1403
|
if (IS_WIN) {
|
|
1388
1404
|
return path.join(npmDirectory, 'src-tauri', 'png', `${baseName}_256.ico`);
|
|
@@ -1392,6 +1408,12 @@ function generateIconPath(appName, isDefault = false) {
|
|
|
1392
1408
|
}
|
|
1393
1409
|
return path.join(npmDirectory, 'src-tauri', 'icons', `${baseName}.icns`);
|
|
1394
1410
|
}
|
|
1411
|
+
function getIconBaseName(appName) {
|
|
1412
|
+
const baseName = IS_LINUX
|
|
1413
|
+
? generateLinuxPackageName(appName)
|
|
1414
|
+
: generateSafeFilename(appName).toLowerCase();
|
|
1415
|
+
return baseName || 'pake-app';
|
|
1416
|
+
}
|
|
1395
1417
|
async function copyWindowsIconIfNeeded(convertedPath, appName) {
|
|
1396
1418
|
if (!IS_WIN || !convertedPath.endsWith('.ico')) {
|
|
1397
1419
|
return convertedPath;
|
|
@@ -1496,7 +1518,7 @@ async function convertIconFormat(inputPath, appName) {
|
|
|
1496
1518
|
const platformOutputDir = path.join(outputDir, 'converted-icons');
|
|
1497
1519
|
await fsExtra.ensureDir(platformOutputDir);
|
|
1498
1520
|
const processedInputPath = await preprocessIcon(inputPath);
|
|
1499
|
-
const iconName =
|
|
1521
|
+
const iconName = getIconBaseName(appName);
|
|
1500
1522
|
// Generate platform-specific format
|
|
1501
1523
|
if (IS_WIN) {
|
|
1502
1524
|
// Support multiple sizes for better Windows compatibility
|
|
@@ -1675,16 +1697,6 @@ async function tryGetFavicon(url, appName) {
|
|
|
1675
1697
|
if (error instanceof Error) {
|
|
1676
1698
|
logger.debug(`Icon service ${serviceUrl} failed: ${error.message}`);
|
|
1677
1699
|
}
|
|
1678
|
-
// Network error handling
|
|
1679
|
-
if ((IS_LINUX || IS_WIN) && error.code === 'ENOTFOUND') {
|
|
1680
|
-
return null;
|
|
1681
|
-
}
|
|
1682
|
-
// Icon generation error on Windows
|
|
1683
|
-
if (IS_WIN &&
|
|
1684
|
-
error instanceof Error &&
|
|
1685
|
-
error.message.includes('icongen')) {
|
|
1686
|
-
return null;
|
|
1687
|
-
}
|
|
1688
1700
|
continue;
|
|
1689
1701
|
}
|
|
1690
1702
|
}
|
|
@@ -1796,6 +1808,18 @@ function resolveAppName(name, platform) {
|
|
|
1796
1808
|
const domain = getDomain(name) || 'pake';
|
|
1797
1809
|
return platform !== 'linux' ? capitalizeFirstLetter(domain) : domain;
|
|
1798
1810
|
}
|
|
1811
|
+
function resolveLocalAppName(filePath, platform) {
|
|
1812
|
+
const baseName = path.parse(filePath).name || 'pake-app';
|
|
1813
|
+
if (platform === 'linux') {
|
|
1814
|
+
return generateLinuxPackageName(baseName) || 'pake-app';
|
|
1815
|
+
}
|
|
1816
|
+
const normalized = baseName
|
|
1817
|
+
.replace(/[^a-zA-Z0-9\u4e00-\u9fff -]/g, '')
|
|
1818
|
+
.replace(/^[ -]+/, '')
|
|
1819
|
+
.replace(/\s+/g, ' ')
|
|
1820
|
+
.trim();
|
|
1821
|
+
return normalized || 'pake-app';
|
|
1822
|
+
}
|
|
1799
1823
|
function isValidName(name, platform) {
|
|
1800
1824
|
const platformRegexMapping = {
|
|
1801
1825
|
linux: /^[a-z0-9\u4e00-\u9fff][a-z0-9\u4e00-\u9fff-]*$/,
|
|
@@ -1810,10 +1834,12 @@ async function handleOptions(options, url) {
|
|
|
1810
1834
|
let name = options.name;
|
|
1811
1835
|
const pathExists = await fsExtra.pathExists(url);
|
|
1812
1836
|
if (!options.name) {
|
|
1813
|
-
const defaultName = pathExists
|
|
1837
|
+
const defaultName = pathExists
|
|
1838
|
+
? resolveLocalAppName(url, platform)
|
|
1839
|
+
: resolveAppName(url, platform);
|
|
1814
1840
|
const promptMessage = 'Enter your application name';
|
|
1815
1841
|
const namePrompt = await promptText(promptMessage, defaultName);
|
|
1816
|
-
name = namePrompt || defaultName;
|
|
1842
|
+
name = namePrompt?.trim() || defaultName;
|
|
1817
1843
|
}
|
|
1818
1844
|
if (name && platform === 'linux') {
|
|
1819
1845
|
name = generateLinuxPackageName(name);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<html><body><h1>Hello Pake</h1></body></html>
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pake-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.2",
|
|
4
4
|
"description": "๐คฑ๐ป Turn any webpage into a desktop app with one command. ๐คฑ๐ป ไธ้ฎๆๅ
็ฝ้กต็ๆ่ฝป้ๆก้ขๅบ็จใ",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18.0.0"
|
|
7
7
|
},
|
|
8
|
-
"packageManager": "pnpm@10.
|
|
8
|
+
"packageManager": "pnpm@10.26.2",
|
|
9
9
|
"bin": {
|
|
10
10
|
"pake": "./dist/cli.js"
|
|
11
11
|
},
|
|
@@ -49,41 +49,46 @@
|
|
|
49
49
|
"exports": "./dist/cli.js",
|
|
50
50
|
"license": "MIT",
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@tauri-apps/api": "^2.9.
|
|
53
|
-
"@tauri-apps/cli": "^2.9.
|
|
52
|
+
"@tauri-apps/api": "^2.9.1",
|
|
53
|
+
"@tauri-apps/cli": "^2.9.6",
|
|
54
54
|
"chalk": "^5.6.2",
|
|
55
|
-
"commander": "^
|
|
56
|
-
"execa": "^9.6.
|
|
57
|
-
"file-type": "^
|
|
58
|
-
"fs-extra": "^11.3.
|
|
55
|
+
"commander": "^14.0.2",
|
|
56
|
+
"execa": "^9.6.1",
|
|
57
|
+
"file-type": "^21.1.1",
|
|
58
|
+
"fs-extra": "^11.3.3",
|
|
59
59
|
"icon-gen": "^5.0.0",
|
|
60
60
|
"loglevel": "^1.9.2",
|
|
61
|
-
"ora": "^
|
|
61
|
+
"ora": "^9.0.0",
|
|
62
62
|
"prompts": "^2.4.2",
|
|
63
63
|
"psl": "^1.15.0",
|
|
64
|
-
"sharp": "^0.
|
|
64
|
+
"sharp": "^0.34.5",
|
|
65
65
|
"tmp-promise": "^3.0.3",
|
|
66
66
|
"update-notifier": "^7.3.1"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@rollup/plugin-alias": "^
|
|
70
|
-
"@rollup/plugin-commonjs": "^
|
|
69
|
+
"@rollup/plugin-alias": "^6.0.0",
|
|
70
|
+
"@rollup/plugin-commonjs": "^29.0.0",
|
|
71
71
|
"@rollup/plugin-json": "^6.1.0",
|
|
72
|
-
"@rollup/plugin-replace": "^6.0.
|
|
72
|
+
"@rollup/plugin-replace": "^6.0.3",
|
|
73
73
|
"@rollup/plugin-terser": "^0.4.4",
|
|
74
74
|
"@types/fs-extra": "^11.0.4",
|
|
75
|
-
"@types/node": "^
|
|
75
|
+
"@types/node": "^25.0.3",
|
|
76
76
|
"@types/page-icon": "^0.3.6",
|
|
77
77
|
"@types/prompts": "^2.4.9",
|
|
78
78
|
"@types/tmp": "^0.2.6",
|
|
79
79
|
"@types/update-notifier": "^6.0.8",
|
|
80
80
|
"app-root-path": "^3.1.0",
|
|
81
|
-
"cross-env": "^
|
|
82
|
-
"prettier": "^3.
|
|
83
|
-
"rollup": "^4.
|
|
81
|
+
"cross-env": "^10.1.0",
|
|
82
|
+
"prettier": "^3.7.4",
|
|
83
|
+
"rollup": "^4.54.0",
|
|
84
84
|
"rollup-plugin-typescript2": "^0.36.0",
|
|
85
85
|
"tslib": "^2.8.1",
|
|
86
86
|
"typescript": "^5.9.3",
|
|
87
|
-
"vitest": "^4.0.
|
|
87
|
+
"vitest": "^4.0.16"
|
|
88
|
+
},
|
|
89
|
+
"pnpm": {
|
|
90
|
+
"overrides": {
|
|
91
|
+
"sharp": "^0.34.5"
|
|
92
|
+
}
|
|
88
93
|
}
|
|
89
94
|
}
|