pake-cli 0.0.1-beta.1

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.
Files changed (70) hide show
  1. package/README.md +110 -0
  2. package/README_EN.md +110 -0
  3. package/dist/.gitkeep +0 -0
  4. package/dist/builders/BuilderFactory.js +11 -0
  5. package/dist/builders/BuilderFactory.js.map +1 -0
  6. package/dist/builders/LinuxBuilder.js +2 -0
  7. package/dist/builders/LinuxBuilder.js.map +1 -0
  8. package/dist/builders/MacBuilder.js +74 -0
  9. package/dist/builders/MacBuilder.js.map +1 -0
  10. package/dist/builders/WinBulider.js +2 -0
  11. package/dist/builders/WinBulider.js.map +1 -0
  12. package/dist/builders/base.js +2 -0
  13. package/dist/builders/base.js.map +1 -0
  14. package/dist/builders/common.js +38 -0
  15. package/dist/builders/common.js.map +1 -0
  16. package/dist/cli.js +34 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/defaults.js +10 -0
  19. package/dist/defaults.js.map +1 -0
  20. package/dist/helpers/dir.js +9 -0
  21. package/dist/helpers/dir.js.map +1 -0
  22. package/dist/helpers/path.js +2 -0
  23. package/dist/helpers/path.js.map +1 -0
  24. package/dist/helpers/prepareCheck.js +53 -0
  25. package/dist/helpers/prepareCheck.js.map +1 -0
  26. package/dist/helpers/rust.js +31 -0
  27. package/dist/helpers/rust.js.map +1 -0
  28. package/dist/helpers/tauriConfig.js +8 -0
  29. package/dist/helpers/tauriConfig.js.map +1 -0
  30. package/dist/options/icon.js +111 -0
  31. package/dist/options/icon.js.map +1 -0
  32. package/dist/options/index.js +27 -0
  33. package/dist/options/index.js.map +1 -0
  34. package/dist/options/title.js +25 -0
  35. package/dist/options/title.js.map +1 -0
  36. package/dist/pake.js +43 -0
  37. package/dist/pake.js.map +1 -0
  38. package/dist/types.js +2 -0
  39. package/dist/types.js.map +1 -0
  40. package/dist/utils/platform.js +4 -0
  41. package/dist/utils/platform.js.map +1 -0
  42. package/dist/utils/shell.js +14 -0
  43. package/dist/utils/shell.js.map +1 -0
  44. package/dist/utils/url.js +20 -0
  45. package/dist/utils/url.js.map +1 -0
  46. package/dist/utils/validate.js +18 -0
  47. package/dist/utils/validate.js.map +1 -0
  48. package/package.json +60 -0
  49. package/src-tauri/Cargo.lock +3609 -0
  50. package/src-tauri/Cargo.toml +30 -0
  51. package/src-tauri/build.rs +3 -0
  52. package/src-tauri/icons/anymind.icns +0 -0
  53. package/src-tauri/icons/code.icns +0 -0
  54. package/src-tauri/icons/fanfou.icns +0 -0
  55. package/src-tauri/icons/flomo.icns +0 -0
  56. package/src-tauri/icons/fone.icns +0 -0
  57. package/src-tauri/icons/jdread.icns +0 -0
  58. package/src-tauri/icons/jike.icns +0 -0
  59. package/src-tauri/icons/roam.icns +0 -0
  60. package/src-tauri/icons/tool.icns +0 -0
  61. package/src-tauri/icons/twitter.icns +0 -0
  62. package/src-tauri/icons/vercel.icns +0 -0
  63. package/src-tauri/icons/weRead.icns +0 -0
  64. package/src-tauri/icons/whatsapp.icns +0 -0
  65. package/src-tauri/icons/witeboard.icns +0 -0
  66. package/src-tauri/icons/yuque.icns +0 -0
  67. package/src-tauri/src/main.rs +114 -0
  68. package/src-tauri/src/pake.js +130 -0
  69. package/src-tauri/tauri.conf.json +63 -0
  70. package/tsconfig.json +17 -0
@@ -0,0 +1,111 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import axios from 'axios';
11
+ import { fileTypeFromBuffer } from 'file-type';
12
+ import { dir } from 'tmp-promise';
13
+ import path from 'path';
14
+ import pageIcon from 'page-icon';
15
+ import png2icons from 'png2icons';
16
+ import ICO from 'icojs';
17
+ import fs from 'fs/promises';
18
+ export function handleIcon(options, url) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ console.log(options.icon);
21
+ if (options.icon) {
22
+ if (options.icon.startsWith('http')) {
23
+ return downloadIcon(options.icon);
24
+ }
25
+ else {
26
+ return path.resolve(options.icon);
27
+ }
28
+ }
29
+ if (!options.icon) {
30
+ return inferIcon(options.name, url);
31
+ }
32
+ });
33
+ }
34
+ export function inferIcon(name, url) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ let icon = yield getIconFromMacosIcons(name);
37
+ if (!icon) {
38
+ icon = yield getIconFromPageUrl(url);
39
+ }
40
+ if (!icon) {
41
+ // TODO default icon
42
+ }
43
+ return icon;
44
+ });
45
+ }
46
+ export function getIconFromPageUrl(url) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const icon = yield pageIcon(url);
49
+ console.log(icon);
50
+ if (icon.ext === '.ico') {
51
+ const a = yield ICO.parse(icon.data);
52
+ icon.data = Buffer.from(a[0].buffer);
53
+ }
54
+ const iconDir = (yield dir()).path;
55
+ const iconPath = path.join(iconDir, `/icon.icns`);
56
+ const out = png2icons.createICNS(icon.data, png2icons.BILINEAR, 0);
57
+ yield fs.writeFile(iconPath, out);
58
+ return iconPath;
59
+ });
60
+ }
61
+ export function getIconFromMacosIcons(name) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const data = {
64
+ query: name,
65
+ filters: 'approved:true',
66
+ hitsPerPage: 10,
67
+ page: 1,
68
+ };
69
+ const res = yield axios.post('https://p1txh7zfb3-2.algolianet.com/1/indexes/macOSicons/query?x-algolia-agent=Algolia%20for%20JavaScript%20(4.13.1)%3B%20Browser', data, {
70
+ headers: {
71
+ 'x-algolia-api-key': '0ba04276e457028f3e11e38696eab32c',
72
+ 'x-algolia-application-id': 'P1TXH7ZFB3',
73
+ },
74
+ });
75
+ if (!res.data.hits.length) {
76
+ return '';
77
+ }
78
+ else {
79
+ return downloadIcon(res.data.hits[0].icnsUrl);
80
+ }
81
+ });
82
+ }
83
+ export function downloadIcon(iconUrl) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ let iconResponse;
86
+ try {
87
+ iconResponse = yield axios.get(iconUrl, {
88
+ responseType: 'arraybuffer',
89
+ });
90
+ }
91
+ catch (error) {
92
+ if (error.response && error.response.status === 404) {
93
+ return null;
94
+ }
95
+ throw error;
96
+ }
97
+ const iconData = yield iconResponse.data;
98
+ if (!iconData) {
99
+ return null;
100
+ }
101
+ const fileDetails = yield fileTypeFromBuffer(iconData);
102
+ if (!fileDetails) {
103
+ return null;
104
+ }
105
+ const { path } = yield dir();
106
+ const iconPath = `${path}/icon.${fileDetails.ext}`;
107
+ yield fs.writeFile(iconPath, iconData);
108
+ return iconPath;
109
+ });
110
+ }
111
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../bin/options/icon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { getIdentifier } from '../helpers/tauriConfig.js';
11
+ import { handleIcon } from './icon.js';
12
+ import { getTitleByURL } from './title.js';
13
+ export default function handleOptions(options, url) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const appOptions = Object.assign(Object.assign({}, options), { identifier: '' });
16
+ if (!appOptions.title) {
17
+ appOptions.title = yield getTitleByURL(url);
18
+ }
19
+ if (!appOptions.name) {
20
+ appOptions.name = appOptions.title;
21
+ }
22
+ appOptions.identifier = getIdentifier(appOptions.name, url);
23
+ appOptions.icon = yield handleIcon(appOptions, url);
24
+ return appOptions;
25
+ });
26
+ }
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../bin/options/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAgB,aAAa,CAAC,OAAuB,EAAE,GAAW;;QAC9E,MAAM,UAAU,mCACX,OAAO,KACV,UAAU,EAAE,EAAE,GACf,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACrB,UAAU,CAAC,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACpB,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;SACpC;QAED,UAAU,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE5D,UAAU,CAAC,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEpD,OAAO,UAAU,CAAC;IACpB,CAAC;CAAA"}
@@ -0,0 +1,25 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import axios from 'axios';
11
+ const USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36';
12
+ export function getTitleByURL(url) {
13
+ var _a, _b, _c;
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const { data } = yield axios.get(url, {
16
+ headers: {
17
+ // Fake user agent for pages like http://messenger.com
18
+ 'User-Agent': USER_AGENT,
19
+ },
20
+ });
21
+ const title = (_c = (_b = (_a = /<\s*title.*?>(?<title>.+?)<\s*\/title\s*?>/i.exec(data)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : 'Webapp';
22
+ return title;
23
+ });
24
+ }
25
+ //# sourceMappingURL=title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title.js","sourceRoot":"","sources":["../../bin/options/title.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,GAAG,uHAAuH,CAAC;AAE3I,MAAM,UAAgB,aAAa,CAAC,GAAW;;;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAS,GAAG,EAAE;YAC5C,OAAO,EAAE;gBACP,sDAAsD;gBACtD,YAAY,EAAE,UAAU;aACzB;SACF,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAA,MAAA,MAAA,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,0CAAE,MAAM,0CAAE,KAAK,mCAAI,QAAQ,CAAC;QAClG,OAAO,KAAK,CAAC;;CACd"}
package/dist/pake.js ADDED
@@ -0,0 +1,43 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import fs from 'fs/promises';
11
+ import path from 'path';
12
+ import shelljs from 'shelljs';
13
+ import { getDirName } from './helpers/dir.js';
14
+ export default function pake(url, options) {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ console.log('PakeAppOptions', options);
17
+ const tauriConfPath = path.join(getDirName(), '../..', 'src-tauri/tauri.conf.json');
18
+ const tauriConfString = yield fs.readFile(tauriConfPath, 'utf-8');
19
+ try {
20
+ const tauriConf = JSON.parse(tauriConfString);
21
+ const { width, height, fullscreen, transparent, title, resizable, identifier, name } = options;
22
+ const tauriConfWindowOptions = {
23
+ width,
24
+ height,
25
+ fullscreen,
26
+ transparent,
27
+ title,
28
+ resizable,
29
+ };
30
+ Object.assign(tauriConf.tauri.windows[0], Object.assign({ url }, tauriConfWindowOptions));
31
+ tauriConf.package.productName = name;
32
+ tauriConf.tauri.bundle.identifier = identifier;
33
+ tauriConf.tauri.bundle.icon = [options.icon];
34
+ yield fs.writeFile(tauriConfPath, JSON.stringify(tauriConf, null, 2));
35
+ shelljs.exec('npm run build');
36
+ }
37
+ catch (error) {
38
+ console.error('handle auri.conf.json error', error);
39
+ return;
40
+ }
41
+ });
42
+ }
43
+ //# sourceMappingURL=pake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pake.js","sourceRoot":"","sources":["../bin/pake.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,OAAO,UAAgB,IAAI,CAAC,GAAW,EAAE,OAAuB;;QACrE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC;QACpF,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI;YACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAE9C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YAE/F,MAAM,sBAAsB,GAAG;gBAC7B,KAAK;gBACL,MAAM;gBACN,UAAU;gBACV,WAAW;gBACX,KAAK;gBACL,SAAS;aACV,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAI,GAAG,IAAK,sBAAsB,EAAG,CAAC;YAC9E,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YACrC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/C,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE7C,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC/B;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO;SACR;IACH,CAAC;CAAA"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../bin/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export const IS_MAC = process.platform === 'darwin';
2
+ export const IS_WIN = process.platform === 'win32';
3
+ export const IS_LINUX = process.platform === 'linux';
4
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../bin/utils/platform.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAEpD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAEnD,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC"}
@@ -0,0 +1,14 @@
1
+ import shelljs from 'shelljs';
2
+ export function shellExec(command) {
3
+ return new Promise((resolve, reject) => {
4
+ shelljs.exec(command, { async: true, silent: false }, (code) => {
5
+ if (code === 0) {
6
+ resolve(0);
7
+ }
8
+ else {
9
+ reject(new Error(`${code}`));
10
+ }
11
+ });
12
+ });
13
+ }
14
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../bin/utils/shell.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAC,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/D,IAAI,IAAI,KAAK,CAAC,EAAE;gBACf,OAAO,CAAC,CAAC,CAAC,CAAC;aACX;iBAAM;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;aAC7B;QACF,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ import url from 'url';
2
+ import isurl from 'is-url';
3
+ function appendProtocol(inputUrl) {
4
+ const parsed = url.parse(inputUrl);
5
+ if (!parsed.protocol) {
6
+ const urlWithProtocol = `https://${inputUrl}`;
7
+ return urlWithProtocol;
8
+ }
9
+ return inputUrl;
10
+ }
11
+ export function normalizeUrl(urlToNormalize) {
12
+ const urlWithProtocol = appendProtocol(urlToNormalize);
13
+ if (isurl(urlWithProtocol)) {
14
+ return urlWithProtocol;
15
+ }
16
+ else {
17
+ throw new Error(`Your url "${urlWithProtocol}" is invalid`);
18
+ }
19
+ }
20
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../bin/utils/url.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,QAAQ,CAAC;AAE3B,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpB,MAAM,eAAe,GAAG,WAAW,QAAQ,EAAE,CAAC;QAC9C,OAAO,eAAe,CAAC;KACxB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,cAAsB;IACjD,MAAM,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEvD,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;QAC1B,OAAO,eAAe,CAAC;KACxB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,aAAa,eAAe,cAAc,CAAC,CAAC;KAC7D;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as Commander from 'commander';
2
+ import { normalizeUrl } from './url.js';
3
+ export function validateNumberInput(value) {
4
+ const parsedValue = Number(value);
5
+ if (isNaN(parsedValue)) {
6
+ throw new Commander.InvalidArgumentError('Not a number.');
7
+ }
8
+ return parsedValue;
9
+ }
10
+ export function validateUrlInput(url) {
11
+ try {
12
+ return normalizeUrl(url);
13
+ }
14
+ catch (error) {
15
+ throw new Commander.InvalidArgumentError(error.message);
16
+ }
17
+ }
18
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../bin/utils/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;QACtB,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;KAC3D;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI;QACF,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;KAC1B;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACzD;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "pake-cli",
3
+ "version": "0.0.1-beta.1",
4
+ "description": "用 Rust 来打包你的 App,底层使用 Tauri,当前支持微信读书、Flomo、Vercel",
5
+ "bin": {
6
+ "pake": "dist/cli.js"
7
+ },
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/tw93/pake.git"
11
+ },
12
+ "author": {
13
+ "name": "Tw93",
14
+ "email": "tw93@qq.com"
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "src-tauri",
19
+ "README_EN.md",
20
+ "README.md",
21
+ "tsconfig.json"
22
+ ],
23
+ "scripts": {
24
+ "start": "npm run dev",
25
+ "dev": "npm run tauri dev",
26
+ "build": "npm run tauri build -- --target universal-apple-darwin",
27
+ "tauri": "tauri",
28
+ "cli": "tsc && (concurrently \"tsc -w\" \"tsc-alias -w\")",
29
+ "cli:build": "tsc && tsc-alias"
30
+ },
31
+ "type": "module",
32
+ "exports": "./dist/pake.js",
33
+ "license": "MIT",
34
+ "dependencies": {
35
+ "@tauri-apps/api": "^1.0.2",
36
+ "app-root-path": "^3.1.0",
37
+ "axios": "^1.1.3",
38
+ "file-type": "^18.0.0",
39
+ "icojs": "^0.17.0",
40
+ "is-url": "^1.2.4",
41
+ "ora": "^6.1.2",
42
+ "page-icon": "^0.4.0",
43
+ "png2icons": "^2.0.1",
44
+ "prompts": "^2.4.2",
45
+ "tmp-promise": "^3.0.3"
46
+ },
47
+ "devDependencies": {
48
+ "@tauri-apps/cli": "^1.0.2",
49
+ "@types/is-url": "^1.2.30",
50
+ "@types/page-icon": "^0.3.4",
51
+ "@types/prompts": "^2.4.1",
52
+ "@types/shelljs": "^0.8.11",
53
+ "@types/tmp": "^0.2.3",
54
+ "commander": "^9.4.1",
55
+ "concurrently": "^7.5.0",
56
+ "shelljs": "^0.8.5",
57
+ "tsc-alias": "^1.7.1",
58
+ "typescript": "^4.8.4"
59
+ }
60
+ }