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.
- package/README.md +69 -0
- package/dist/api/auth.d.ts +15 -0
- package/dist/api/auth.d.ts.map +1 -0
- package/dist/api/auth.js +20 -0
- package/dist/api/auth.js.map +1 -0
- package/dist/api/client.d.ts +20 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +81 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/download.d.ts +3 -0
- package/dist/api/download.d.ts.map +1 -0
- package/dist/api/download.js +50 -0
- package/dist/api/download.js.map +1 -0
- package/dist/api/files.d.ts +50 -0
- package/dist/api/files.d.ts.map +1 -0
- package/dist/api/files.js +56 -0
- package/dist/api/files.js.map +1 -0
- package/dist/api/share.d.ts +15 -0
- package/dist/api/share.d.ts.map +1 -0
- package/dist/api/share.js +21 -0
- package/dist/api/share.js.map +1 -0
- package/dist/api/upload.d.ts +35 -0
- package/dist/api/upload.d.ts.map +1 -0
- package/dist/api/upload.js +65 -0
- package/dist/api/upload.js.map +1 -0
- package/dist/commands/download.d.ts +3 -0
- package/dist/commands/download.d.ts.map +1 -0
- package/dist/commands/download.js +33 -0
- package/dist/commands/download.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +35 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +16 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/ls.d.ts +3 -0
- package/dist/commands/ls.d.ts.map +1 -0
- package/dist/commands/ls.js +92 -0
- package/dist/commands/ls.js.map +1 -0
- package/dist/commands/mkdir.d.ts +3 -0
- package/dist/commands/mkdir.d.ts.map +1 -0
- package/dist/commands/mkdir.js +29 -0
- package/dist/commands/mkdir.js.map +1 -0
- package/dist/commands/rm.d.ts +4 -0
- package/dist/commands/rm.d.ts.map +1 -0
- package/dist/commands/rm.js +69 -0
- package/dist/commands/rm.js.map +1 -0
- package/dist/commands/share.d.ts +3 -0
- package/dist/commands/share.d.ts.map +1 -0
- package/dist/commands/share.js +64 -0
- package/dist/commands/share.js.map +1 -0
- package/dist/commands/upload.d.ts +3 -0
- package/dist/commands/upload.d.ts.map +1 -0
- package/dist/commands/upload.js +44 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +52 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/format.d.ts +10 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +66 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/progress.d.ts +8 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +40 -0
- package/dist/utils/progress.js.map +1 -0
- 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
|
+
}
|