@trap_stevo/filetide 0.0.80 → 0.0.81
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/dist/cjs/FileMessager.js
CHANGED
|
@@ -80,11 +80,9 @@ class FileMessager {
|
|
|
80
80
|
}
|
|
81
81
|
start() {
|
|
82
82
|
this.fileNet.on("get-client-transfer-barrier-response", this.handleClientTransferBarrierResponse.bind(this));
|
|
83
|
-
this.fileNet.on("get-client-transfer-state", this.handleGetClientTransferState.bind(this));
|
|
84
83
|
this.fileNet.on("get-client", this.handleGetClient.bind(this));
|
|
85
84
|
this.fileNet.on("acknowledge-transfer-tide", this.handleAcknowledgeTransferTide.bind(this));
|
|
86
85
|
this.fileNet.on("notify-transfer-barrier", this.handleNotifyTransferBarrier.bind(this));
|
|
87
|
-
this.fileNet.on("send-current-transfer-state", this.handleSendCurrentTransferState.bind(this));
|
|
88
86
|
this.fileNet.on("sent-file-list-to-client", this.handleSentFileListToClient.bind(this));
|
|
89
87
|
this.fileNet.on("send-file-list-to-client", this.handleSendFileListToClient.bind(this));
|
|
90
88
|
this.fileNet.on("list-client-files", this.handleListClientFiles.bind(this));
|
|
@@ -1560,21 +1558,6 @@ class FileMessager {
|
|
|
1560
1558
|
});
|
|
1561
1559
|
}
|
|
1562
1560
|
}
|
|
1563
|
-
saveClientTransferStates(data) {
|
|
1564
|
-
const tidingTransfers = this.currentTidingTransfers.get(data.clientID);
|
|
1565
|
-
if (tidingTransfers && tidingTransfers.size > 0) {
|
|
1566
|
-
for (let recipientID of tidingTransfers.keys()) {
|
|
1567
|
-
const recipientConnectionID = FileNetClientManager.getOnlineClient(data.recipientID ?? recipientID).id;
|
|
1568
|
-
const client = this.getClientFromID(recipientConnectionID);
|
|
1569
|
-
if (client) {
|
|
1570
|
-
this.fileNet.emitToTide(client.tideID, "save-current-transfer-states", {
|
|
1571
|
-
clientID: recipientID
|
|
1572
|
-
});
|
|
1573
|
-
}
|
|
1574
|
-
}
|
|
1575
|
-
this.currentTidingTransfers.delete(data.clientID);
|
|
1576
|
-
}
|
|
1577
|
-
}
|
|
1578
1561
|
|
|
1579
1562
|
// --- File Messager Event Management ---
|
|
1580
1563
|
|
|
@@ -2008,42 +1991,6 @@ class FileMessager {
|
|
|
2008
1991
|
return;
|
|
2009
1992
|
}
|
|
2010
1993
|
}
|
|
2011
|
-
handleSendCurrentTransferState(senderTide, data) {
|
|
2012
|
-
try {
|
|
2013
|
-
const senderConnectionID = FileNetClientManager.getOnlineClient(data.senderID).id;
|
|
2014
|
-
const senderClient = this.getClientFromID(senderConnectionID);
|
|
2015
|
-
if (!senderClient) {
|
|
2016
|
-
console.log(`[FileTide ~ Net Transfers] ~ Sender ~ ${senderConnectionID.truncate(0, senderConnectionID.length / 2)}... not found.`);
|
|
2017
|
-
return;
|
|
2018
|
-
}
|
|
2019
|
-
this.fileNet.emitToTide(senderClient.tideID, "sent-current-transfer-state", data.transferState || {
|
|
2020
|
-
transferredSize: 0,
|
|
2021
|
-
lastChunkSent: 0
|
|
2022
|
-
});
|
|
2023
|
-
} catch (error) {
|
|
2024
|
-
console.error(`[FileTide ~ Net Transfers] ~ `, error);
|
|
2025
|
-
return;
|
|
2026
|
-
}
|
|
2027
|
-
}
|
|
2028
|
-
handleGetClientTransferState(senderTide, data) {
|
|
2029
|
-
const filePath = data.filePath || data.path;
|
|
2030
|
-
console.log(`[FileTide ~ Net] ~ Getting ${data.recipientID}'s transfer state for ~ ${filePath}...`);
|
|
2031
|
-
try {
|
|
2032
|
-
const recipientConnectionID = FileNetClientManager.getOnlineClient(data.recipientID).id;
|
|
2033
|
-
const client = this.getClientFromID(recipientConnectionID);
|
|
2034
|
-
if (!client) {
|
|
2035
|
-
return;
|
|
2036
|
-
}
|
|
2037
|
-
this.fileNet.emitToTide(client.tideID, "current-transfer-state", {
|
|
2038
|
-
senderID: data.senderID,
|
|
2039
|
-
fileName: data.fileName,
|
|
2040
|
-
filePath
|
|
2041
|
-
});
|
|
2042
|
-
} catch (error) {
|
|
2043
|
-
console.error(`[FileTide ~ Net Transfers] ~ `, error);
|
|
2044
|
-
return;
|
|
2045
|
-
}
|
|
2046
|
-
}
|
|
2047
1994
|
handleGetClient(senderTide, data) {
|
|
2048
1995
|
console.log(`[FileTide ~ Net] ~ Getting client ~ ${data.clientID}...`);
|
|
2049
1996
|
try {
|
|
@@ -2423,11 +2370,6 @@ class FileMessager {
|
|
|
2423
2370
|
const currentOnlineClients = Object.fromEntries(FileNetClientManager.getOnlineClients());
|
|
2424
2371
|
this.fileNet.emit("current-online-clients", currentOnlineClients);
|
|
2425
2372
|
this.fileNet.emit("current-clients", currentOnlineClients);
|
|
2426
|
-
const senderClient = this.getClientFromID(clientDetails.id);
|
|
2427
|
-
this.fileNet.emitToTide(senderClient.tideID, "save-current-transfer-states", {
|
|
2428
|
-
clientID: clientData.clientID
|
|
2429
|
-
});
|
|
2430
|
-
this.saveClientTransferStates(clientData);
|
|
2431
2373
|
} catch (error) {
|
|
2432
2374
|
console.log(`[FileTide ~ Net Activity] ~ Did not process client ~ ${clientData} offline signal ~ ${error}`);
|
|
2433
2375
|
}
|
|
@@ -17,7 +17,6 @@ const {
|
|
|
17
17
|
const {
|
|
18
18
|
FileTransferTrackingManager
|
|
19
19
|
} = require("./HUDManagers/FileTransferTrackingManager.js");
|
|
20
|
-
const FileTransferRecoveryManager = require("./HUDManagers/FileTransferRecoveryManager");
|
|
21
20
|
const {
|
|
22
21
|
FileMessagerConfigManager
|
|
23
22
|
} = require("./HUDManagers/FileMessagerConfigManager");
|
|
@@ -285,7 +284,6 @@ class FileMessagerClient {
|
|
|
285
284
|
});
|
|
286
285
|
chunkBatch.length = 0;
|
|
287
286
|
}
|
|
288
|
-
FileTransferRecoveryManager.clearTransferState(clientID, recipientId, `${filePath}-${fileName}`);
|
|
289
287
|
this.clientTide.emitEvent(clientID, "transfer-complete", {
|
|
290
288
|
senderID: clientID,
|
|
291
289
|
recipientId,
|
|
@@ -317,7 +315,6 @@ function _createClientInstance(clientID, clientOptions, options = {}, headers =
|
|
|
317
315
|
...options
|
|
318
316
|
}, headers, authURL, authHeaders, useAuthentication, queryAuthToken, onConnect, async () => {
|
|
319
317
|
FileTransferTrackingManager.outputCurrentTransfers();
|
|
320
|
-
FileTransferRecoveryManager.flushToDisk();
|
|
321
318
|
if (onDisconnect) {
|
|
322
319
|
await onDisconnect();
|
|
323
320
|
}
|
package/dist/cjs/FileTide.js
CHANGED
|
@@ -29,7 +29,6 @@ const {
|
|
|
29
29
|
const {
|
|
30
30
|
FileTransferReceiverManager
|
|
31
31
|
} = require("./HUDManagers/FileTransferReceiverManager.js");
|
|
32
|
-
const FileTransferRecoveryManager = require("./HUDManagers/FileTransferRecoveryManager.js");
|
|
33
32
|
const TideTokenEnforcer = require("./HUDManagers/TideTokenEnforcementManager.js");
|
|
34
33
|
const {
|
|
35
34
|
FileNetConfigManager
|
|
@@ -198,15 +197,6 @@ class FileTide {
|
|
|
198
197
|
|
|
199
198
|
// --- FileTide Transfer State Management ---
|
|
200
199
|
|
|
201
|
-
async getTidingTransferStates() {
|
|
202
|
-
return await TideTokenEnforcer.protect(() => FileTransferRecoveryManager.memoryStorage, "default")();
|
|
203
|
-
}
|
|
204
|
-
saveTransferStates() {
|
|
205
|
-
TideTokenEnforcer.protect(() => {
|
|
206
|
-
FileTransferRecoveryManager.flushToDisk();
|
|
207
|
-
}, "default")();
|
|
208
|
-
}
|
|
209
|
-
|
|
210
200
|
// --- FileTide Remote Files Management ---
|
|
211
201
|
|
|
212
202
|
listFilesFromClient(recipientID, depth = 1) {
|
|
@@ -572,24 +562,6 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
572
562
|
});
|
|
573
563
|
return;
|
|
574
564
|
});
|
|
575
|
-
client.clientTide.onEvent(userID, "save-current-transfer-states", async data => {
|
|
576
|
-
this.saveTransferStates();
|
|
577
|
-
return;
|
|
578
|
-
});
|
|
579
|
-
client.clientTide.onEvent(userID, "current-transfer-state", async data => {
|
|
580
|
-
const {
|
|
581
|
-
senderID,
|
|
582
|
-
fileName,
|
|
583
|
-
filePath
|
|
584
|
-
} = data;
|
|
585
|
-
const currentTransferState = FileTransferRecoveryManager.getTransferState(userID, senderID, `${filePath}-${fileName}`);
|
|
586
|
-
client.clientTide.emitEvent(userID, "send-current-transfer-state", {
|
|
587
|
-
recipientID: userID,
|
|
588
|
-
senderID,
|
|
589
|
-
transferState: currentTransferState
|
|
590
|
-
});
|
|
591
|
-
return;
|
|
592
|
-
});
|
|
593
565
|
client.clientTide.onEvent(userID, "queue-incoming-transfer", async data => {
|
|
594
566
|
if (this.transferBarrier && onIncomingTransfer) {
|
|
595
567
|
onIncomingTransfer(data, status => {
|
|
@@ -675,11 +647,6 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
675
647
|
}
|
|
676
648
|
await fileTransferReceiver.handleTransferProgress(data);
|
|
677
649
|
this.progressBarManager.updateTaskProgress(data.fileName, data.chunkSize || 512 * 1024);
|
|
678
|
-
const currentTransferState = FileTransferRecoveryManager.getTransferState(userID, data.senderName, `${data.path}-${data.fileName}`) || {
|
|
679
|
-
transferredSize: 0
|
|
680
|
-
};
|
|
681
|
-
currentTransferState.transferredSize += data.chunkSize || 512 * 1024;
|
|
682
|
-
FileTransferRecoveryManager.saveTransferState(userID, data.senderName, `${data.path}-${data.fileName}`, data.chunkIndex, currentTransferState.transferredSize);
|
|
683
650
|
const taskBarStats = this.progressBarManager.getTaskBar(data.fileName);
|
|
684
651
|
client.clientTide.emitEvent(userID, "acknowledge-transfer-tide", {
|
|
685
652
|
fileName: data.fileName,
|
|
@@ -736,7 +703,6 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
736
703
|
if (transferState.fileStream) {
|
|
737
704
|
fileTransferReceiver.completeTransfer(data, (transferData, transfers, success, error) => {
|
|
738
705
|
if (success) {
|
|
739
|
-
FileTransferRecoveryManager.clearTransferState(userID, data.senderID, `${data.filePath}-${data.fileName}`);
|
|
740
706
|
_FileTide.outputGradient(`[${userID}] File saved at ~ ${savePath}\n`, significantMessageColors);
|
|
741
707
|
} else if (!success) {
|
|
742
708
|
_FileTide.outputGradient(`[${userID}] Did not save file at ~ ${savePath}\n\t${error}\n`, errorMessageColors);
|
|
@@ -755,7 +721,6 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
755
721
|
});
|
|
756
722
|
return;
|
|
757
723
|
}
|
|
758
|
-
FileTransferRecoveryManager.clearTransferState(userID, data.senderID, `${data.filePath}-${data.fileName}`);
|
|
759
724
|
FileTransferTrackingManager.untrackTransfer(data.fileName);
|
|
760
725
|
_FileTide.outputGradient(`[${userID}] Transfer successfully sent to ~ ${data.recipientId} and saved at ~ ${path.join(data.filePath, data.fileName)}\n`, significantMessageColors);
|
|
761
726
|
if (onTransferComplete) {
|
|
@@ -4,7 +4,6 @@ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a
|
|
|
4
4
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
|
5
5
|
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
6
6
|
const fs = require("fs");
|
|
7
|
-
const FileTransferRecoveryManager = require("./FileTransferRecoveryManager.js");
|
|
8
7
|
var _FileTransferManager_brand = /*#__PURE__*/new WeakSet();
|
|
9
8
|
class FileTransferManager {
|
|
10
9
|
constructor({
|
|
@@ -41,23 +40,14 @@ class FileTransferManager {
|
|
|
41
40
|
onTiding
|
|
42
41
|
}, clientTide) {
|
|
43
42
|
const transferId = _assertClassBrand(_FileTransferManager_brand, this, _generateTransferId).call(this, fileDetails);
|
|
44
|
-
const recoveredTransferState = (await clientTide.emitEventWithResponse(originDetails.senderID, "get-client-transfer-state", "sent-current-transfer-state", {
|
|
45
|
-
recipientID,
|
|
46
|
-
senderID: originDetails.senderID,
|
|
47
|
-
filePath: fileDetails.destinationPath,
|
|
48
|
-
fileName: fileDetails.name
|
|
49
|
-
}, 30000)) || {
|
|
50
|
-
transferredSize: 0,
|
|
51
|
-
lastChunkSent: 0
|
|
52
|
-
};
|
|
53
43
|
const totalChunks = Math.ceil(fileDetails.size / this.chunkSize);
|
|
54
44
|
this.activeTransfers.set(transferId, {
|
|
55
45
|
totalChunks,
|
|
56
|
-
transferredSize:
|
|
57
|
-
completedChunks:
|
|
46
|
+
transferredSize: 0,
|
|
47
|
+
completedChunks: 0,
|
|
58
48
|
activeChunks: 0,
|
|
59
49
|
failedChunks: new Map(),
|
|
60
|
-
currentChunk:
|
|
50
|
+
currentChunk: 0,
|
|
61
51
|
size: fileDetails.size
|
|
62
52
|
});
|
|
63
53
|
const updateProgress = () => {
|
|
@@ -67,7 +57,7 @@ class FileTransferManager {
|
|
|
67
57
|
}
|
|
68
58
|
};
|
|
69
59
|
const exponentialBackoff = retryCount => Math.min(1000 * 2 ** retryCount, 10000);
|
|
70
|
-
let nextExpectedChunk =
|
|
60
|
+
let nextExpectedChunk = 0;
|
|
71
61
|
const chunkBuffer = new Map();
|
|
72
62
|
const sendChunk = async chunkIndex => {
|
|
73
63
|
const start = chunkIndex * this.chunkSize;
|
|
@@ -145,25 +135,16 @@ class FileTransferManager {
|
|
|
145
135
|
}
|
|
146
136
|
}
|
|
147
137
|
async function _startTransfer(file, transferId, fileDetails, originDetails, onSendChunk, onComplete, onProgress, onStart, onTiding, clientTide) {
|
|
148
|
-
const recoveredTransferState = (await clientTide.emitEventWithResponse(originDetails.senderID, "get-client-transfer-state", "sent-current-transfer-state", {
|
|
149
|
-
recipientID: originDetails.recipientID,
|
|
150
|
-
senderID: originDetails.senderID,
|
|
151
|
-
filePath: fileDetails.destinationPath,
|
|
152
|
-
fileName: fileDetails.name
|
|
153
|
-
}, 30000)) || {
|
|
154
|
-
transferredSize: 0,
|
|
155
|
-
lastChunkSent: 0
|
|
156
|
-
};
|
|
157
138
|
const totalChunks = Math.ceil(file.length / this.chunkSize);
|
|
158
|
-
let nextExpectedChunk =
|
|
139
|
+
let nextExpectedChunk = 0;
|
|
159
140
|
const chunkBuffer = new Map();
|
|
160
141
|
this.activeTransfers.set(transferId, {
|
|
161
142
|
totalChunks,
|
|
162
|
-
transferredSize:
|
|
163
|
-
completedChunks:
|
|
143
|
+
transferredSize: 0,
|
|
144
|
+
completedChunks: 0,
|
|
164
145
|
activeChunks: 0,
|
|
165
146
|
failedChunks: new Map(),
|
|
166
|
-
currentChunk:
|
|
147
|
+
currentChunk: 0,
|
|
167
148
|
size: fileDetails.size
|
|
168
149
|
});
|
|
169
150
|
const transferState = this.activeTransfers.get(transferId);
|
|
@@ -235,17 +216,15 @@ async function _startTransfer(file, transferId, fileDetails, originDetails, onSe
|
|
|
235
216
|
}
|
|
236
217
|
/*async #startTransfer(file, transferId, fileDetails, originDetails, onSendChunk, onComplete, onProgress, onStart, onTiding, clientTide)
|
|
237
218
|
{
|
|
238
|
-
const recoveredTransferState = await clientTide.emitEventWithResponse(originDetails.senderID, "get-client-transfer-state", "sent-current-transfer-state", { recipientID : originDetails.recipientID, senderID : originDetails.senderID, filePath : fileDetails.destinationPath, fileName : fileDetails.name }, 30000) || { transferredSize : 0, lastChunkSent : 0 };
|
|
239
|
-
|
|
240
219
|
const totalChunks = Math.ceil(file.length / this.chunkSize);
|
|
241
220
|
|
|
242
221
|
this.activeTransfers.set(transferId, {
|
|
243
222
|
totalChunks,
|
|
244
|
-
transferredSize :
|
|
245
|
-
completedChunks :
|
|
223
|
+
transferredSize : 0,
|
|
224
|
+
completedChunks : 0,
|
|
246
225
|
activeChunks : 0,
|
|
247
226
|
failedChunks : new Map(),
|
|
248
|
-
currentChunk :
|
|
227
|
+
currentChunk : 0,
|
|
249
228
|
size : fileDetails.size
|
|
250
229
|
});
|
|
251
230
|
const updateProgress = () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trap_stevo/filetide",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.81",
|
|
4
4
|
"description": "Revolutionizing real-time file transfer with seamless, instant communication across any device. Deliver files instantly, regardless of platform, and experience unparalleled speed and control in managing transfers. Elevate your file-sharing capabilities with a tool designed for precision, efficiency, and effortless connectivity.",
|
|
5
5
|
"main": "dist/cjs/FileTide.js",
|
|
6
6
|
"scripts": {
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"license": "See License in LICENSE.md",
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@trap_stevo/iotide": "^0.0.46",
|
|
39
|
-
"@trap_stevo/iotide-client": "^0.0.
|
|
40
|
-
"@trap_stevo/legendarybuilderpronodejs-utilities": "^1.0.
|
|
39
|
+
"@trap_stevo/iotide-client": "^0.0.27",
|
|
40
|
+
"@trap_stevo/legendarybuilderpronodejs-utilities": "^1.0.51",
|
|
41
41
|
"@trap_stevo/lockline": "^0.0.11",
|
|
42
|
-
"@trap_stevo/logictide": "^0.0.
|
|
43
|
-
"@trap_stevo/metrictide": "^0.0.
|
|
42
|
+
"@trap_stevo/logictide": "^0.0.2",
|
|
43
|
+
"@trap_stevo/metrictide": "^0.0.10",
|
|
44
44
|
"@trap_stevo/timelyst": "^0.0.7",
|
|
45
45
|
"chalk": "^4.1.2",
|
|
46
46
|
"readline": "^1.3.0"
|