nyashare 0.0.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.
- package/README.md +136 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +368 -0
- package/dist/cli.js.map +1 -0
- package/dist/diagnostic.d.ts +2 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +75 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/discovery.d.ts +24 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +188 -0
- package/dist/discovery.js.map +1 -0
- package/dist/drawing.d.ts +49 -0
- package/dist/drawing.d.ts.map +1 -0
- package/dist/drawing.js +167 -0
- package/dist/drawing.js.map +1 -0
- package/dist/server.d.ts +18 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +169 -0
- package/dist/server.js.map +1 -0
- package/dist/transfer.d.ts +8 -0
- package/dist/transfer.d.ts.map +1 -0
- package/dist/transfer.js +86 -0
- package/dist/transfer.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI/C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAwC;IAEnD,SAAS,CACb,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC;IAuDpB,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACtC,OAAO,CAAC,MAAM,CAAC;IA2BlB,YAAY,IAAI,YAAY,EAAE;CAG/B"}
|
package/dist/transfer.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FileTransferService = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
9
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const promises_1 = require("stream/promises");
|
|
13
|
+
class FileTransferService {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.transfers = new Map();
|
|
16
|
+
}
|
|
17
|
+
async sendFiles(files, device, onProgress) {
|
|
18
|
+
const transfers = [];
|
|
19
|
+
for (const filePath of files) {
|
|
20
|
+
const stat = await fs_extra_1.default.stat(filePath);
|
|
21
|
+
const transfer = {
|
|
22
|
+
id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
23
|
+
filename: path_1.default.basename(filePath),
|
|
24
|
+
size: stat.size,
|
|
25
|
+
progress: 0,
|
|
26
|
+
status: 'pending',
|
|
27
|
+
toDevice: device.name
|
|
28
|
+
};
|
|
29
|
+
this.transfers.set(transfer.id, transfer);
|
|
30
|
+
transfers.push(transfer);
|
|
31
|
+
try {
|
|
32
|
+
transfer.status = 'transferring';
|
|
33
|
+
const form = new form_data_1.default();
|
|
34
|
+
form.append('files', fs_extra_1.default.createReadStream(filePath), {
|
|
35
|
+
filename: path_1.default.basename(filePath),
|
|
36
|
+
knownLength: stat.size
|
|
37
|
+
});
|
|
38
|
+
await axios_1.default.post(`http://${device.ip}:${device.port}/api/upload`, form, {
|
|
39
|
+
headers: form.getHeaders(),
|
|
40
|
+
maxContentLength: Infinity,
|
|
41
|
+
maxBodyLength: Infinity,
|
|
42
|
+
onUploadProgress: (progressEvent) => {
|
|
43
|
+
if (progressEvent.total) {
|
|
44
|
+
transfer.progress = Math.round((progressEvent.loaded * 100) / progressEvent.total);
|
|
45
|
+
onProgress?.(transfer);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
transfer.status = 'completed';
|
|
50
|
+
transfer.progress = 100;
|
|
51
|
+
onProgress?.(transfer);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
transfer.status = 'failed';
|
|
55
|
+
onProgress?.(transfer);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return transfers;
|
|
60
|
+
}
|
|
61
|
+
async downloadFile(filename, device, downloadDir, onProgress) {
|
|
62
|
+
const outputPath = path_1.default.join(downloadDir, filename.replace(/^\d+-\d+-/, ''));
|
|
63
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(outputPath));
|
|
64
|
+
const response = await (0, axios_1.default)({
|
|
65
|
+
method: 'GET',
|
|
66
|
+
url: `http://${device.ip}:${device.port}/api/download/${filename}`,
|
|
67
|
+
responseType: 'stream'
|
|
68
|
+
});
|
|
69
|
+
const totalLength = parseInt(response.headers['content-length'] || '0', 10);
|
|
70
|
+
let downloadedLength = 0;
|
|
71
|
+
const writeStream = (0, fs_1.createWriteStream)(outputPath);
|
|
72
|
+
response.data.on('data', (chunk) => {
|
|
73
|
+
downloadedLength += chunk.length;
|
|
74
|
+
if (totalLength > 0) {
|
|
75
|
+
onProgress?.(Math.round((downloadedLength * 100) / totalLength));
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
await (0, promises_1.pipeline)(response.data, writeStream);
|
|
79
|
+
return outputPath;
|
|
80
|
+
}
|
|
81
|
+
getTransfers() {
|
|
82
|
+
return Array.from(this.transfers.values());
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.FileTransferService = FileTransferService;
|
|
86
|
+
//# sourceMappingURL=transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,0DAAiC;AACjC,wDAA0B;AAC1B,gDAAwB;AAExB,2BAAuC;AACvC,8CAA2C;AAE3C,MAAa,mBAAmB;IAAhC;QACU,cAAS,GAA8B,IAAI,GAAG,EAAE,CAAC;IAgG3D,CAAC;IA9FC,KAAK,CAAC,SAAS,CACb,KAAe,EACf,MAAc,EACd,UAA6C;QAE7C,MAAM,SAAS,GAAmB,EAAE,CAAC;QAErC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAiB;gBAC7B,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAC9D,QAAQ,EAAE,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,MAAM,CAAC,IAAI;aACtB,CAAC;YAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzB,IAAI,CAAC;gBACH,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC;gBAEjC,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;oBAClD,QAAQ,EAAE,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACjC,WAAW,EAAE,IAAI,CAAC,IAAI;iBACvB,CAAC,CAAC;gBAEH,MAAM,eAAK,CAAC,IAAI,CACd,UAAU,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,aAAa,EAC/C,IAAI,EACJ;oBACE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;oBAC1B,gBAAgB,EAAE,QAAQ;oBAC1B,aAAa,EAAE,QAAQ;oBACvB,gBAAgB,EAAE,CAAC,aAAa,EAAE,EAAE;wBAClC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;4BACxB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;4BACnF,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;wBACzB,CAAC;oBACH,CAAC;iBACF,CACF,CAAC;gBAEF,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC9B,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACxB,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC3B,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;gBACvB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,MAAc,EACd,WAAmB,EACnB,UAAuC;QAEvC,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC;YAC3B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,UAAU,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,iBAAiB,QAAQ,EAAE;YAClE,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,MAAM,WAAW,GAAG,IAAA,sBAAiB,EAAC,UAAU,CAAC,CAAC;QAElD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC;YACjC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,IAAA,mBAAQ,EAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAjGD,kDAiGC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface Device {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
ip: string;
|
|
5
|
+
port: number;
|
|
6
|
+
lastSeen: Date;
|
|
7
|
+
}
|
|
8
|
+
export interface FileTransfer {
|
|
9
|
+
id: string;
|
|
10
|
+
filename: string;
|
|
11
|
+
size: number;
|
|
12
|
+
progress: number;
|
|
13
|
+
status: 'pending' | 'transferring' | 'completed' | 'failed';
|
|
14
|
+
fromDevice?: string;
|
|
15
|
+
toDevice?: string;
|
|
16
|
+
localPath?: string;
|
|
17
|
+
remotePath?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface TransferRequest {
|
|
20
|
+
files: string[];
|
|
21
|
+
targetDevice: Device;
|
|
22
|
+
}
|
|
23
|
+
export interface ServerConfig {
|
|
24
|
+
port: number;
|
|
25
|
+
deviceName: string;
|
|
26
|
+
downloadDir: string;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nyashare",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "CLI tool to share files over local network",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"nyashare": "dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "ts-node src/cli.ts",
|
|
12
|
+
"start": "node dist/cli.js",
|
|
13
|
+
"lint": "eslint src/**/*.ts",
|
|
14
|
+
"typecheck": "tsc --noEmit",
|
|
15
|
+
"diagnose": "DEBUG=true ts-node src/diagnostic.ts",
|
|
16
|
+
"diagnose:build": "npm run build && DEBUG=true node dist/diagnostic.js"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"cli",
|
|
20
|
+
"file-sharing",
|
|
21
|
+
"local-network",
|
|
22
|
+
"p2p"
|
|
23
|
+
],
|
|
24
|
+
"author": "",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"axios": "^1.6.2",
|
|
28
|
+
"chalk": "^4.1.2",
|
|
29
|
+
"commander": "^11.1.0",
|
|
30
|
+
"express": "^4.18.2",
|
|
31
|
+
"form-data": "^4.0.0",
|
|
32
|
+
"fs-extra": "^11.2.0",
|
|
33
|
+
"inquirer": "^8.2.6",
|
|
34
|
+
"ip": "^1.1.8",
|
|
35
|
+
"mime-types": "^2.1.35",
|
|
36
|
+
"multer": "^1.4.5-lts.1",
|
|
37
|
+
"open": "^8.4.2",
|
|
38
|
+
"ora": "^5.4.1",
|
|
39
|
+
"ws": "^8.16.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/express": "^4.17.21",
|
|
43
|
+
"@types/fs-extra": "^11.0.4",
|
|
44
|
+
"@types/inquirer": "^9.0.7",
|
|
45
|
+
"@types/ip": "^1.1.3",
|
|
46
|
+
"@types/mime-types": "^2.1.4",
|
|
47
|
+
"@types/multer": "^1.4.11",
|
|
48
|
+
"@types/node": "^20.10.4",
|
|
49
|
+
"@types/ws": "^8.5.10",
|
|
50
|
+
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
|
51
|
+
"@typescript-eslint/parser": "^6.14.0",
|
|
52
|
+
"eslint": "^8.55.0",
|
|
53
|
+
"ts-node": "^10.9.2",
|
|
54
|
+
"typescript": "^5.3.3"
|
|
55
|
+
},
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=16.0.0"
|
|
58
|
+
},
|
|
59
|
+
"files": [
|
|
60
|
+
"dist/**/*",
|
|
61
|
+
"README.md",
|
|
62
|
+
"LICENSE"
|
|
63
|
+
]
|
|
64
|
+
}
|