@trap_stevo/filetide 0.0.42 → 0.0.43

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.
@@ -211,15 +211,23 @@ class FileMessager {
211
211
  totalChunks
212
212
  } = chunkData;
213
213
  console.log(`[FileTide ~ File Messager] ~ Transferring file ~ ${fileName} | chunk ${chunkIndex + 1} >> ${completedChunks} of ${totalChunks} to client (${recipientId})`);
214
+ const recipientClient = FileNetClientManager.getOnlineClient(recipientId);
215
+ const senderClient = FileNetClientManager.getOnlineClient(senderID);
214
216
  this.sendFileChunkToClient({
215
217
  userID: senderID,
216
- id: FileNetClientManager.getOnlineClient(senderID).id
218
+ id: senderClient.id
217
219
  }, {
218
220
  userID: recipientId,
219
- id: FileNetClientManager.getOnlineClient(recipientId).id
221
+ id: recipientClient.id
220
222
  }, fileChunk, fileName, chunkIndex, chunkSize, totalChunks, filePath, fileSize);
221
223
  if (completedChunks === totalChunks) {
222
- this.fileNet.emit("transfer-complete", {
224
+ this.fileNet.emitToTide(recipientClient.tideID, "transfer-complete", {
225
+ senderID,
226
+ recipientId,
227
+ fileName,
228
+ filePath
229
+ });
230
+ this.fileNet.emitToTide(senderClient.tideID, "transfer-complete", {
223
231
  senderID,
224
232
  recipientId,
225
233
  fileName,
@@ -247,15 +255,23 @@ class FileMessager {
247
255
  totalChunks
248
256
  } = transferData;
249
257
  console.log(`[FileTide ~ File Messager] ~ Transferring file ~ ${fileName} | chunk ${chunkIndex + 1} >> ${completedChunks} of ${totalChunks} to client (${recipientId})`);
258
+ const recipientClient = FileNetClientManager.getOnlineClient(recipientId);
259
+ const senderClient = FileNetClientManager.getOnlineClient(senderID);
250
260
  this.sendFileChunkToClient({
251
261
  userID: senderID,
252
- id: FileNetClientManager.getOnlineClient(senderID).id
262
+ id: senderClient.id
253
263
  }, {
254
264
  userID: recipientId,
255
- id: FileNetClientManager.getOnlineClient(recipientId).id
265
+ id: recipientClient.id
256
266
  }, fileChunk, fileName, chunkIndex, chunkSize, totalChunks, filePath, fileSize);
257
267
  if (chunkIndex + 1 === totalChunks) {
258
- this.fileNet.emit("transfer-complete", {
268
+ this.fileNet.emitToTide(recipientClient.tideID, "transfer-complete", {
269
+ senderID,
270
+ recipientId,
271
+ fileName,
272
+ filePath
273
+ });
274
+ this.fileNet.emitToTide(senderClient.tideID, "transfer-complete", {
259
275
  senderID,
260
276
  recipientId,
261
277
  fileName,
@@ -480,9 +496,17 @@ class FileMessager {
480
496
  const tidingTransfers = this.currentTidingTransfers.get(clientData.clientID);
481
497
  if (tidingTransfers && tidingTransfers.size > 0) {
482
498
  for (let recipientID of tidingTransfers.keys()) {
483
- this.fileNet.emit("save-current-transfer-states", {
484
- clientID: recipientID
485
- });
499
+ try {
500
+ const recipientConnectionID = FileNetClientManager.getOnlineClient(data.recipientID).id;
501
+ const client = this.getClientFromID(recipientConnectionID);
502
+ if (client) {
503
+ this.fileNet.emitToTide(client.tideID, "save-current-transfer-states", {
504
+ clientID: recipientID
505
+ });
506
+ }
507
+ } catch (error) {
508
+ console.log(`[FileTide ~ Net Activity] ~ Did not save current transfer state signal to ~ ${recipientID}\n\t${error}`);
509
+ }
486
510
  }
487
511
  }
488
512
  this.currentTidingTransfers.delete(clientData.clientID);
@@ -170,13 +170,14 @@ class FileMessagerClient {
170
170
  });
171
171
  }
172
172
  this.transporter.sendFile(file, {
173
- onSendChunk: (transferId, chunkIndex, chunkSize, chunkData, totalChunks) => {
173
+ onSendChunk: (transferId, chunkIndex, chunkSize, chunkData, totalChunks, completedChunks) => {
174
174
  return new Promise((resolve, reject) => {
175
175
  this.clientTide.emitEvent(clientID, "client-to-client-transfer", {
176
176
  senderID: clientID,
177
177
  recipientId,
178
178
  fileName,
179
179
  fileChunk: chunkData,
180
+ completedChunks,
180
181
  totalChunks,
181
182
  chunkIndex,
182
183
  chunkSize,
@@ -188,6 +189,7 @@ class FileMessagerClient {
188
189
  },
189
190
  onComplete: () => {
190
191
  return new Promise((resolve, reject) => {
192
+ FileTransferRecoveryManager.clearTransferState(recipientId, clientID, `${filePath}-${fileName}`);
191
193
  this.clientTide.emitEvent(clientID, "transfer-complete", {
192
194
  senderID: clientID,
193
195
  recipientId,
@@ -293,6 +295,7 @@ class FileMessagerClient {
293
295
  });
294
296
  chunkBatch.length = 0;
295
297
  }
298
+ FileTransferRecoveryManager.clearTransferState(recipientId, clientID, `${filePath}-${fileName}`);
296
299
  this.clientTide.emitEvent(clientID, "transfer-complete", {
297
300
  senderID: clientID,
298
301
  recipientId,
@@ -357,6 +360,7 @@ class FileMessagerClient {
357
360
  },
358
361
  onComplete: () => {
359
362
  return new Promise((resolve, reject) => {
363
+ FileTransferRecoveryManager.clearTransferState(recipientId, clientID, `${filePath}-${fileName}`);
360
364
  this.clientTide.emitEvent(clientID, "transfer-complete", {
361
365
  senderID: clientID,
362
366
  recipientId,
@@ -481,7 +481,6 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
481
481
  _FileTide.outputGradient(`[${userID}] File transfer complete : ${data.fileName}`, significantMessageColors);
482
482
  const transferState = fileTransferReceiver.activeTransfers.get(data.fileName);
483
483
  if (!transferState) {
484
- FileTransferRecoveryManager.clearTransferState(userID, data.senderID, `${data.filePath}-${data.fileName}`);
485
484
  return;
486
485
  }
487
486
  fileTransferReceiver.completeTransfer(data, (transferData, transfers, success, error) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trap_stevo/filetide",
3
- "version": "0.0.42",
3
+ "version": "0.0.43",
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": {
@@ -1,379 +0,0 @@
1
- "use strict";
2
-
3
- const {
4
- HUDIoTide
5
- } = require("@trap_stevo/iotide-client");
6
- const IoTide = require("@trap_stevo/iotide");
7
- const Loml = require("@trap_stevo/loml");
8
- class LomlLoggingSystem {
9
- constructor(config = {}, ...args) {
10
- this.lomlLogging = null;
11
- this.clientInstance = config.clientInstance || false;
12
- this.serverInstance = config.serverInstance || false;
13
- this.setupIoTideInstance(config.lomlLoggingSystemOptions, ...args);
14
- if (this.clientInstance) {
15
- this.lomlLoggerClient = new HUDIoTide();
16
- this.initializeClient(config.clientOptions);
17
- }
18
- if (this.serverInstance) {
19
- this.lomlLogging.on("external-log", data => {
20
- this.processExternalLog(data);
21
- });
22
- }
23
- }
24
- setupIoTideInstance(lomlLoggingSystemOptions, ...args) {
25
- if (this.serverInstance) {
26
- this.lomlLogging = new IoTide(lomlLoggingSystemOptions.port || 3069, lomlLoggingSystemOptions.options || {}, ...args);
27
- this.lomlLogging.server.listen(lomlLoggingSystemOptions.port || 3069, "0.0.0.0", () => {
28
- console.log(`LomlLoggingSystem ~ ${lomlLoggingSystemOptions.port || 3069}`);
29
- });
30
- }
31
- }
32
- initializeClient(clientOptions) {
33
- const {
34
- socketName,
35
- url,
36
- options,
37
- onConnect
38
- } = clientOptions;
39
- this.lomlLoggerClient.createIO(socketName, url, options);
40
- this.lomlLoggerClient.onEvent(socketName, "connect", () => {
41
- console.log("Connected to the LomlLoggingSystem!");
42
- if (onConnect) {
43
- onConnect(this.lomlLoggerClient);
44
- }
45
- });
46
- }
47
- processExternalLog(data) {
48
- const {
49
- roomName,
50
- tideID,
51
- text,
52
- styles,
53
- colors,
54
- direction,
55
- href,
56
- tag,
57
- type,
58
- protocol
59
- } = data;
60
- const loml = new Loml();
61
- let formattedMessage;
62
- switch (type) {
63
- case "text":
64
- formattedMessage = loml.text(text, styles).build();
65
- break;
66
- case "bold":
67
- formattedMessage = loml.bold(text, styles).build();
68
- break;
69
- case "italic":
70
- formattedMessage = loml.italic(text, styles).build();
71
- break;
72
- case "link":
73
- formattedMessage = loml.link(text, href, styles).build();
74
- break;
75
- case "color":
76
- formattedMessage = loml.color(text, styles.color, styles).build();
77
- break;
78
- case "gradientText":
79
- formattedMessage = loml.gradientText(text, colors, direction, styles).build();
80
- break;
81
- case "customElement":
82
- formattedMessage = loml.element(tag, text, styles).build();
83
- break;
84
- default:
85
- formattedMessage = loml.text(text, styles).build();
86
- }
87
- if (protocol && protocol === "system") {
88
- this.lomlLogging.emitTide("log", {
89
- message: formattedMessage
90
- });
91
- return formattedMessage;
92
- }
93
- if (roomName) {
94
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
95
- message: formattedMessage
96
- });
97
- return formattedMessage;
98
- }
99
- this.lomlLogging.emit("log", {
100
- message: formattedMessage
101
- });
102
- return formattedMessage;
103
- }
104
- logToAll(text, styles = {}) {
105
- const loml = new Loml();
106
- const formattedMessage = loml.text(text, styles).build();
107
- this.lomlLogging.emit("log", {
108
- message: formattedMessage
109
- });
110
- return formattedMessage;
111
- }
112
- logToRoom(tideID, roomName, text, styles = {}) {
113
- const loml = new Loml();
114
- const formattedMessage = loml.text(text, styles).build();
115
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
116
- message: formattedMessage
117
- });
118
- return formattedMessage;
119
- }
120
- logBoldToAll(text, styles = {}) {
121
- const loml = new Loml();
122
- const formattedMessage = loml.bold(text, styles).build();
123
- this.lomlLogging.emit("log", {
124
- message: formattedMessage
125
- });
126
- return formattedMessage;
127
- }
128
- logBoldToRoom(tideID, roomName, text, styles = {}) {
129
- const loml = new Loml();
130
- const formattedMessage = loml.bold(text, styles).build();
131
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
132
- message: formattedMessage
133
- });
134
- return formattedMessage;
135
- }
136
- logItalicToAll(text, styles = {}) {
137
- const loml = new Loml();
138
- const formattedMessage = loml.italic(text, styles).build();
139
- this.lomlLogging.emit("log", {
140
- message: formattedMessage
141
- });
142
- return formattedMessage;
143
- }
144
- logItalicToRoom(tideID, roomName, text, styles = {}) {
145
- const loml = new Loml();
146
- const formattedMessage = loml.italic(text, styles).build();
147
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
148
- message: formattedMessage
149
- });
150
- return formattedMessage;
151
- }
152
- logLinkToAll(text, href, styles = {}) {
153
- const loml = new Loml();
154
- const formattedMessage = loml.link(text, href, styles).build();
155
- this.lomlLogging.emit("log", {
156
- message: formattedMessage
157
- });
158
- return formattedMessage;
159
- }
160
- logLinkToRoom(tideID, roomName, text, href, styles = {}) {
161
- const loml = new Loml();
162
- const formattedMessage = loml.link(text, href, styles).build();
163
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
164
- message: formattedMessage
165
- });
166
- return formattedMessage;
167
- }
168
- logColorToAll(text, color, styles = {}) {
169
- const loml = new Loml();
170
- const formattedMessage = loml.color(text, color, styles).build();
171
- this.lomlLogging.emit("log", {
172
- message: formattedMessage
173
- });
174
- return formattedMessage;
175
- }
176
- logColorToRoom(tideID, roomName, text, color, styles = {}) {
177
- const loml = new Loml();
178
- const formattedMessage = loml.color(text, color, styles).build();
179
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
180
- message: formattedMessage
181
- });
182
- return formattedMessage;
183
- }
184
- logGradientTextToRoom(tideID, roomName, text, colors, direction = "to right", styles = {}) {
185
- const loml = new Loml();
186
- const formattedMessage = loml.gradientText(text, colors, direction, styles).build();
187
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
188
- message: formattedMessage
189
- });
190
- return formattedMessage;
191
- }
192
- logGradientTextToAll(text, colors, direction = "to right", styles = {}) {
193
- const loml = new Loml();
194
- const formattedMessage = loml.gradientText(text, colors, direction, styles).build();
195
- this.lomlLogging.emit("log", {
196
- message: formattedMessage
197
- });
198
- return formattedMessage;
199
- }
200
- logCustomElementToAll(tag, text, styles = {}) {
201
- const loml = new Loml();
202
- const formattedMessage = loml.element(tag, text, styles).build();
203
- this.lomlLogging.emit("log", {
204
- message: formattedMessage
205
- });
206
- return formattedMessage;
207
- }
208
- logCustomElementToRoom(tideID, roomName, tag, text, styles = {}) {
209
- const loml = new Loml();
210
- const formattedMessage = loml.element(tag, text, styles).build();
211
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
212
- message: formattedMessage
213
- });
214
- return formattedMessage;
215
- }
216
- logLineBreakToAll() {
217
- const loml = new Loml();
218
- const formattedMessage = loml.br().build();
219
- this.lomlLogging.emit("log", {
220
- message: formattedMessage
221
- });
222
- return formattedMessage;
223
- }
224
- logLineBreakToRoom(tideID, roomName) {
225
- const loml = new Loml();
226
- const formattedMessage = loml.br().build();
227
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
228
- message: formattedMessage
229
- });
230
- return formattedMessage;
231
- }
232
- logStyledMessageToAll(messageParts) {
233
- const loml = new Loml();
234
- messageParts.forEach(part => {
235
- if (typeof loml[part.method] === "function") {
236
- loml[part.method](...part.args);
237
- }
238
- });
239
- const formattedMessage = loml.build();
240
- this.lomlLogging.emit("log", {
241
- message: formattedMessage
242
- });
243
- return formattedMessage;
244
- }
245
- logStyledMessageToRoom(tideID, roomName, messageParts) {
246
- const loml = new Loml();
247
- messageParts.forEach(part => {
248
- if (typeof loml[part.method] === "function") {
249
- loml[part.method](...part.args);
250
- }
251
- });
252
- const formattedMessage = loml.build();
253
- this.lomlLogging.emitToChannel(tideID, roomName, "log", {
254
- message: formattedMessage
255
- });
256
- return formattedMessage;
257
- }
258
- logTextToSystem(text, styles = {}) {
259
- const loml = new Loml();
260
- const formattedMessage = loml.text(text, styles).build();
261
- this.lomlLogging.emitTide("log", {
262
- message: formattedMessage
263
- });
264
- return formattedMessage;
265
- }
266
- logBoldToSystem(text, styles = {}) {
267
- const loml = new Loml();
268
- const formattedMessage = loml.bold(text, styles).build();
269
- this.lomlLogging.emitTide("log", {
270
- message: formattedMessage
271
- });
272
- return formattedMessage;
273
- }
274
- logItalicToSystem(text, styles = {}) {
275
- const loml = new Loml();
276
- const formattedMessage = loml.italic(text, styles).build();
277
- this.lomlLogging.emitTide("log", {
278
- message: formattedMessage
279
- });
280
- return formattedMessage;
281
- }
282
- logLinkToSystem(text, href, styles = {}) {
283
- const loml = new Loml();
284
- const formattedMessage = loml.link(text, href, styles).build();
285
- this.lomlLogging.emitTide("log", {
286
- message: formattedMessage
287
- });
288
- return formattedMessage;
289
- }
290
- logColorToSystem(text, color, styles = {}) {
291
- const loml = new Loml();
292
- const formattedMessage = loml.color(text, color, styles).build();
293
- this.lomlLogging.emitTide("log", {
294
- message: formattedMessage
295
- });
296
- return formattedMessage;
297
- }
298
- logGradientTextToSystem(text, colors, direction = "to right", styles = {}) {
299
- const loml = new Loml();
300
- const formattedMessage = loml.gradientText(text, colors, direction, styles).build();
301
- this.lomlLogging.emitTide("log", {
302
- message: formattedMessage
303
- });
304
- return formattedMessage;
305
- }
306
- logCustomElementToSystem(tag, text, styles = {}) {
307
- const loml = new Loml();
308
- const formattedMessage = loml.element(tag, text, styles).build();
309
- this.lomlLogging.emitTide("log", {
310
- message: formattedMessage
311
- });
312
- return formattedMessage;
313
- }
314
- logLineBreakToSystem() {
315
- const loml = new Loml();
316
- const formattedMessage = loml.br().build();
317
- this.lomlLogging.emitTide("log", {
318
- message: formattedMessage
319
- });
320
- return formattedMessage;
321
- }
322
- logStyledMessageToSystem(messageParts) {
323
- const loml = new Loml();
324
- messageParts.forEach(part => {
325
- if (typeof loml[part.method] === "function") {
326
- loml[part.method](...part.args);
327
- }
328
- });
329
- const formattedMessage = loml.build();
330
- this.lomlLogging.emitTide("log", {
331
- message: formattedMessage
332
- });
333
- return formattedMessage;
334
- }
335
- static log(options = {}) {
336
- const {
337
- text = "Sample text",
338
- type = "text",
339
- direction = "to right",
340
- colors = [],
341
- styles = {},
342
- href = "",
343
- tag = "span",
344
- logToConsole = true
345
- } = options;
346
- const loml = new Loml();
347
- let formattedMessage;
348
- switch (type) {
349
- case "text":
350
- formattedMessage = loml.text(text, styles).build();
351
- break;
352
- case "bold":
353
- formattedMessage = loml.bold(text, styles).build();
354
- break;
355
- case "italic":
356
- formattedMessage = loml.italic(text, styles).build();
357
- break;
358
- case "link":
359
- formattedMessage = loml.link(text, href, styles).build();
360
- break;
361
- case "color":
362
- formattedMessage = loml.color(text, styles.color, styles).build();
363
- break;
364
- case "gradientText":
365
- formattedMessage = loml.gradientText(text, colors, direction, styles).build();
366
- break;
367
- case "customElement":
368
- formattedMessage = loml.element(tag, text, styles).build();
369
- break;
370
- default:
371
- formattedMessage = loml.text(text, styles).build();
372
- }
373
- if (logToConsole) {
374
- console.log(`${type.charAt(0).toUpperCase() + type.slice(1)} Log:`, formattedMessage);
375
- }
376
- return formattedMessage;
377
- }
378
- }
379
- module.exports = LomlLoggingSystem;