cfpan-cli 0.1.0

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 (74) hide show
  1. package/README.md +69 -0
  2. package/dist/api/auth.d.ts +15 -0
  3. package/dist/api/auth.d.ts.map +1 -0
  4. package/dist/api/auth.js +20 -0
  5. package/dist/api/auth.js.map +1 -0
  6. package/dist/api/client.d.ts +20 -0
  7. package/dist/api/client.d.ts.map +1 -0
  8. package/dist/api/client.js +81 -0
  9. package/dist/api/client.js.map +1 -0
  10. package/dist/api/download.d.ts +3 -0
  11. package/dist/api/download.d.ts.map +1 -0
  12. package/dist/api/download.js +50 -0
  13. package/dist/api/download.js.map +1 -0
  14. package/dist/api/files.d.ts +50 -0
  15. package/dist/api/files.d.ts.map +1 -0
  16. package/dist/api/files.js +56 -0
  17. package/dist/api/files.js.map +1 -0
  18. package/dist/api/share.d.ts +15 -0
  19. package/dist/api/share.d.ts.map +1 -0
  20. package/dist/api/share.js +21 -0
  21. package/dist/api/share.js.map +1 -0
  22. package/dist/api/upload.d.ts +35 -0
  23. package/dist/api/upload.d.ts.map +1 -0
  24. package/dist/api/upload.js +65 -0
  25. package/dist/api/upload.js.map +1 -0
  26. package/dist/commands/download.d.ts +3 -0
  27. package/dist/commands/download.d.ts.map +1 -0
  28. package/dist/commands/download.js +33 -0
  29. package/dist/commands/download.js.map +1 -0
  30. package/dist/commands/login.d.ts +3 -0
  31. package/dist/commands/login.d.ts.map +1 -0
  32. package/dist/commands/login.js +35 -0
  33. package/dist/commands/login.js.map +1 -0
  34. package/dist/commands/logout.d.ts +3 -0
  35. package/dist/commands/logout.d.ts.map +1 -0
  36. package/dist/commands/logout.js +16 -0
  37. package/dist/commands/logout.js.map +1 -0
  38. package/dist/commands/ls.d.ts +3 -0
  39. package/dist/commands/ls.d.ts.map +1 -0
  40. package/dist/commands/ls.js +92 -0
  41. package/dist/commands/ls.js.map +1 -0
  42. package/dist/commands/mkdir.d.ts +3 -0
  43. package/dist/commands/mkdir.d.ts.map +1 -0
  44. package/dist/commands/mkdir.js +29 -0
  45. package/dist/commands/mkdir.js.map +1 -0
  46. package/dist/commands/rm.d.ts +4 -0
  47. package/dist/commands/rm.d.ts.map +1 -0
  48. package/dist/commands/rm.js +69 -0
  49. package/dist/commands/rm.js.map +1 -0
  50. package/dist/commands/share.d.ts +3 -0
  51. package/dist/commands/share.d.ts.map +1 -0
  52. package/dist/commands/share.js +64 -0
  53. package/dist/commands/share.js.map +1 -0
  54. package/dist/commands/upload.d.ts +3 -0
  55. package/dist/commands/upload.d.ts.map +1 -0
  56. package/dist/commands/upload.js +44 -0
  57. package/dist/commands/upload.js.map +1 -0
  58. package/dist/config.d.ts +15 -0
  59. package/dist/config.d.ts.map +1 -0
  60. package/dist/config.js +52 -0
  61. package/dist/config.js.map +1 -0
  62. package/dist/index.d.ts +3 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +27 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/utils/format.d.ts +10 -0
  67. package/dist/utils/format.d.ts.map +1 -0
  68. package/dist/utils/format.js +66 -0
  69. package/dist/utils/format.js.map +1 -0
  70. package/dist/utils/progress.d.ts +8 -0
  71. package/dist/utils/progress.d.ts.map +1 -0
  72. package/dist/utils/progress.js +40 -0
  73. package/dist/utils/progress.js.map +1 -0
  74. package/package.json +40 -0
@@ -0,0 +1,66 @@
1
+ import chalk from 'chalk';
2
+ export function formatSize(bytes) {
3
+ if (bytes === 0)
4
+ return '0 B';
5
+ const k = 1024;
6
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
7
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
8
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
9
+ }
10
+ export function formatDate(dateString) {
11
+ const date = new Date(dateString);
12
+ const now = new Date();
13
+ const diff = now.getTime() - date.getTime();
14
+ const days = Math.floor(diff / (1000 * 60 * 60 * 24));
15
+ if (days === 0) {
16
+ const hours = Math.floor(diff / (1000 * 60 * 60));
17
+ if (hours === 0) {
18
+ const minutes = Math.floor(diff / (1000 * 60));
19
+ return minutes === 0 ? 'just now' : `${minutes}m ago`;
20
+ }
21
+ return `${hours}h ago`;
22
+ }
23
+ if (days < 7)
24
+ return `${days}d ago`;
25
+ if (days < 30)
26
+ return `${Math.floor(days / 7)}w ago`;
27
+ if (days < 365)
28
+ return `${Math.floor(days / 30)}mo ago`;
29
+ return `${Math.floor(days / 365)}y ago`;
30
+ }
31
+ export function success(message) {
32
+ console.log(chalk.green('✓'), message);
33
+ }
34
+ export function error(message) {
35
+ console.error(chalk.red('✗'), message);
36
+ }
37
+ export function info(message) {
38
+ console.log(chalk.blue('ℹ'), message);
39
+ }
40
+ export function warn(message) {
41
+ console.log(chalk.yellow('⚠'), message);
42
+ }
43
+ export function table(headers, rows, options = {}) {
44
+ const padding = options.padding ?? 2;
45
+ // Calculate column widths
46
+ const widths = headers.map((header, i) => {
47
+ const maxRowWidth = Math.max(...rows.map((row) => row[i]?.length ?? 0), header.length);
48
+ return maxRowWidth;
49
+ });
50
+ // Print header
51
+ const headerRow = headers
52
+ .map((header, i) => header.padEnd(widths[i] + padding))
53
+ .join('');
54
+ console.log(chalk.bold(headerRow));
55
+ // Print separator
56
+ const separator = widths.map((w) => '─'.repeat(w + padding)).join('');
57
+ console.log(chalk.gray(separator));
58
+ // Print rows
59
+ for (const row of rows) {
60
+ const rowStr = row
61
+ .map((cell, i) => (cell ?? '').padEnd(widths[i] + padding))
62
+ .join('');
63
+ console.log(rowStr);
64
+ }
65
+ }
66
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import cliProgress from 'cli-progress';
2
+ export declare function createProgressBar(): cliProgress.SingleBar;
3
+ export interface ProgressTracker {
4
+ update(current: number, total: number): void;
5
+ finish(): void;
6
+ }
7
+ export declare function createFileProgressBar(fileName: string): ProgressTracker;
8
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AAIvC,wBAAgB,iBAAiB,IAAI,WAAW,CAAC,SAAS,CAYzD;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA+BvE"}
@@ -0,0 +1,40 @@
1
+ import cliProgress from 'cli-progress';
2
+ import chalk from 'chalk';
3
+ import { formatSize } from './format.js';
4
+ export function createProgressBar() {
5
+ return new cliProgress.SingleBar({
6
+ format: chalk.cyan('{bar}') +
7
+ ' | {percentage}% | {value}/{total} | {speed} | ETA: {eta}s',
8
+ barCompleteChar: '█',
9
+ barIncompleteChar: '░',
10
+ hideCursor: true,
11
+ }, cliProgress.Presets.shades_classic);
12
+ }
13
+ export function createFileProgressBar(fileName) {
14
+ const bar = new cliProgress.SingleBar({
15
+ format: `${chalk.cyan('{bar}')} | {percentage}% | ${chalk.yellow(fileName)} | {size}`,
16
+ barCompleteChar: '█',
17
+ barIncompleteChar: '░',
18
+ hideCursor: true,
19
+ }, cliProgress.Presets.shades_classic);
20
+ let started = false;
21
+ return {
22
+ update(current, total) {
23
+ if (!started) {
24
+ bar.start(100, 0, { size: formatSize(current) });
25
+ started = true;
26
+ }
27
+ const percentage = Math.floor((current / total) * 100);
28
+ bar.update(percentage, {
29
+ size: `${formatSize(current)}/${formatSize(total)}`,
30
+ });
31
+ },
32
+ finish() {
33
+ if (started) {
34
+ bar.update(100);
35
+ bar.stop();
36
+ }
37
+ },
38
+ };
39
+ }
40
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,WAAW,CAAC,SAAS,CAC9B;QACE,MAAM,EACJ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YACnB,4DAA4D;QAC9D,eAAe,EAAE,GAAG;QACpB,iBAAiB,EAAE,GAAG;QACtB,UAAU,EAAE,IAAI;KACjB,EACD,WAAW,CAAC,OAAO,CAAC,cAAc,CACnC,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CACnC;QACE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW;QACrF,eAAe,EAAE,GAAG;QACpB,iBAAiB,EAAE,GAAG;QACtB,UAAU,EAAE,IAAI;KACjB,EACD,WAAW,CAAC,OAAO,CAAC,cAAc,CACnC,CAAC;IAEF,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO;QACL,MAAM,CAAC,OAAe,EAAE,KAAa;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACjD,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;YACvD,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;gBACrB,IAAI,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;aACpD,CAAC,CAAC;QACL,CAAC;QACD,MAAM;YACJ,IAAI,OAAO,EAAE,CAAC;gBACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "cfpan-cli",
3
+ "version": "0.1.0",
4
+ "description": "CLI tool for CFpan - self-hosted netdisk on Cloudflare Workers",
5
+ "type": "module",
6
+ "bin": {
7
+ "cfpan": "./dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "dev": "tsc --watch",
15
+ "prepublishOnly": "npm run build"
16
+ },
17
+ "keywords": [
18
+ "cfpan",
19
+ "cli",
20
+ "cloudflare",
21
+ "storage",
22
+ "file-sharing"
23
+ ],
24
+ "author": "CFpan Contributors",
25
+ "license": "MIT",
26
+ "engines": {
27
+ "node": ">=18.0.0"
28
+ },
29
+ "dependencies": {
30
+ "commander": "^12.1.0",
31
+ "node-fetch": "^3.3.2",
32
+ "cli-progress": "^3.12.0",
33
+ "chalk": "^5.3.0"
34
+ },
35
+ "devDependencies": {
36
+ "@types/cli-progress": "^3.11.6",
37
+ "@types/node": "^22.0.0",
38
+ "typescript": "^5.7.3"
39
+ }
40
+ }