@iksdev/shard-cli 0.1.10 → 0.1.11
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/bin/shard.js +8 -7
- package/package.json +4 -1
package/bin/shard.js
CHANGED
|
@@ -5,6 +5,7 @@ const fsp = require('fs/promises');
|
|
|
5
5
|
const os = require('os');
|
|
6
6
|
const path = require('path');
|
|
7
7
|
const crypto = require('crypto');
|
|
8
|
+
const { WebSocket } = require('ws');
|
|
8
9
|
const { Readable } = require('stream');
|
|
9
10
|
const { pipeline } = require('stream/promises');
|
|
10
11
|
|
|
@@ -375,11 +376,11 @@ async function shareFile(positionals, flags) {
|
|
|
375
376
|
reject(new Error('Timeout connexion relay'));
|
|
376
377
|
}, 15000);
|
|
377
378
|
|
|
378
|
-
relaySocket.
|
|
379
|
+
relaySocket.on('open', () => {
|
|
379
380
|
clearTimeout(timer);
|
|
380
381
|
resolve();
|
|
381
382
|
});
|
|
382
|
-
relaySocket.
|
|
383
|
+
relaySocket.on('error', (event) => {
|
|
383
384
|
clearTimeout(timer);
|
|
384
385
|
reject(new Error(`Echec connexion relay: ${event?.message || 'ws error'}`));
|
|
385
386
|
});
|
|
@@ -390,9 +391,9 @@ async function shareFile(positionals, flags) {
|
|
|
390
391
|
|
|
391
392
|
const helloPromise = new Promise((resolve, reject) => {
|
|
392
393
|
const timer = setTimeout(() => reject(new Error('Handshake relay timeout')), 12000);
|
|
393
|
-
relaySocket.
|
|
394
|
+
relaySocket.on('message', (event) => {
|
|
394
395
|
let msg = null;
|
|
395
|
-
try { msg = JSON.parse(String(event
|
|
396
|
+
try { msg = JSON.parse(String(event || '')); } catch (_) { return; }
|
|
396
397
|
if (!msg || typeof msg !== 'object') return;
|
|
397
398
|
if (msg.type === 'hello_ack' && msg.relayClientId) {
|
|
398
399
|
clearTimeout(timer);
|
|
@@ -403,9 +404,9 @@ async function shareFile(positionals, flags) {
|
|
|
403
404
|
});
|
|
404
405
|
await helloPromise;
|
|
405
406
|
|
|
406
|
-
relaySocket.
|
|
407
|
+
relaySocket.on('message', async (event) => {
|
|
407
408
|
let msg = null;
|
|
408
|
-
try { msg = JSON.parse(String(event
|
|
409
|
+
try { msg = JSON.parse(String(event || '')); } catch (_) { return; }
|
|
409
410
|
if (!msg || typeof msg !== 'object') return;
|
|
410
411
|
if (msg.type === 'heartbeat_ack') return;
|
|
411
412
|
if (msg.type !== 'stream_request') return;
|
|
@@ -468,7 +469,7 @@ async function shareFile(positionals, flags) {
|
|
|
468
469
|
console.log('Laisse cette commande ouverte tant que le partage doit fonctionner.');
|
|
469
470
|
|
|
470
471
|
await new Promise((resolve) => {
|
|
471
|
-
relaySocket.
|
|
472
|
+
relaySocket.on('close', () => resolve());
|
|
472
473
|
});
|
|
473
474
|
clearInterval(heartbeat);
|
|
474
475
|
for (const sig of stopSignals) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iksdev/shard-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"description": "CLI pour synchroniser un dossier local avec Shard",
|
|
5
5
|
"bin": {
|
|
6
6
|
"shard": "bin/shard.js"
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"check": "node --check bin/shard.js"
|
|
11
11
|
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"ws": "^8.18.3"
|
|
14
|
+
},
|
|
12
15
|
"engines": {
|
|
13
16
|
"node": ">=20.0.0"
|
|
14
17
|
},
|