@trap_stevo/filetide 0.0.41 → 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,
@@ -326,7 +342,7 @@ class FileMessager {
326
342
  }
327
343
  handleGetClientTransferState(data) {
328
344
  const filePath = data.filePath || data.path;
329
- console.log(`[FileTide ~ Net] Getting ${data.recipientID}'s transfer state for ~ ${filePath}...`);
345
+ console.log(`[FileTide ~ Net] ~ Getting ${data.recipientID}'s transfer state for ~ ${filePath}...`);
330
346
  try {
331
347
  const recipientConnectionID = FileNetClientManager.getOnlineClient(data.recipientID).id;
332
348
  const client = this.getClientFromID(recipientConnectionID);
@@ -335,6 +351,7 @@ class FileMessager {
335
351
  }
336
352
  this.fileNet.emitToTide(client.tideID, "current-transfer-state", {
337
353
  senderID: data.senderID,
354
+ fileName: data.fileName,
338
355
  filePath
339
356
  });
340
357
  } catch (error) {
@@ -342,7 +359,7 @@ class FileMessager {
342
359
  }
343
360
  }
344
361
  handleGetClient(data) {
345
- console.log(`[FileTide ~ Net] Getting client ~ ${data.clientID}...`);
362
+ console.log(`[FileTide ~ Net] ~ Getting client ~ ${data.clientID}...`);
346
363
  try {
347
364
  const senderConnectionID = FileNetClientManager.getOnlineClient(data.senderID).id;
348
365
  const clientConnectionID = FileNetClientManager.getOnlineClient(data.clientID).id;
@@ -456,12 +473,13 @@ class FileMessager {
456
473
  clientID,
457
474
  activeTransferBarrier
458
475
  });
459
- this.fileNet.emitToTide(tideID, "current-online-clients", Object.fromEntries(FileNetClientManager.getOnlineClients()));
460
- this.fileNet.emit("current-clients", Object.fromEntries(FileNetClientManager.getOnlineClients()));
476
+ const currentOnlineClients = Object.fromEntries(FileNetClientManager.getOnlineClients());
477
+ this.fileNet.emit("current-online-clients", currentOnlineClients);
478
+ this.fileNet.emit("current-clients", currentOnlineClients);
461
479
  return;
462
480
  }
463
481
  handleClientOffline(clientData) {
464
- console.log(`Client ~ ${clientData.clientID} | connection origin ~ ${clientData.connectionID} going offline...`);
482
+ console.log(`[FileTide ~ Net Activity] ~ Client ~ ${clientData.clientID} | connection origin ~ ${clientData.connectionID} going offline...`);
465
483
  try {
466
484
  const clientDetails = FileNetClientManager.getOnlineClient(clientData.clientID);
467
485
  if (!clientDetails || clientDetails.id !== clientData.connectionID) {
@@ -469,16 +487,26 @@ class FileMessager {
469
487
  return;
470
488
  }
471
489
  FileNetClientManager.clearOnlineClient(clientData.clientID);
472
- this.fileNet.emit("current-clients", Object.fromEntries(FileNetClientManager.getOnlineClients()));
490
+ const currentOnlineClients = Object.fromEntries(FileNetClientManager.getOnlineClients());
491
+ this.fileNet.emit("current-online-clients", currentOnlineClients);
492
+ this.fileNet.emit("current-clients", currentOnlineClients);
473
493
  this.fileNet.emit("save-current-transfer-states", {
474
494
  clientID: clientData.clientID
475
495
  });
476
496
  const tidingTransfers = this.currentTidingTransfers.get(clientData.clientID);
477
497
  if (tidingTransfers && tidingTransfers.size > 0) {
478
498
  for (let recipientID of tidingTransfers.keys()) {
479
- this.fileNet.emit("save-current-transfer-states", {
480
- clientID: recipientID
481
- });
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
+ }
482
510
  }
483
511
  }
484
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,
@@ -176,6 +176,13 @@ class FileTide {
176
176
  FileTide.outputGradient(`[FileTide] Client ~ ${clientID} not found.`, ["#F94144", "#F3722C"]);
177
177
  return;
178
178
  }
179
+ const recipientOnline = await clientMessager.clientTide.emitEventWithResponse(clientID, "check-client-online", "retrieved-client-online", {
180
+ clientID: recipientID
181
+ }, 5000);
182
+ if (!recipientOnline || !recipientOnline.online) {
183
+ FileTide.outputGradient(`[FileTide] ${recipientID} currently not tiding.`, ["#F94144", "#F3722C"]);
184
+ return;
185
+ }
179
186
  const fileDetails = await this.getPathData(filePath, filterDirectoryContent);
180
187
  if (!fileDetails) {
181
188
  FileTide.outputGradient(`[${clientID}] File at path ${filePath} not found.`, ["#F94144", "#F3722C"]);
@@ -350,9 +357,10 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
350
357
  client.clientTide.onEvent(userID, "current-transfer-state", async data => {
351
358
  const {
352
359
  senderID,
360
+ fileName,
353
361
  filePath
354
362
  } = data;
355
- const currentTransferState = FileTransferRecoveryManager.getTransferState(userID, senderID, filePath);
363
+ const currentTransferState = FileTransferRecoveryManager.getTransferState(userID, senderID, `${filePath}-${fileName}`);
356
364
  client.clientTide.emitEvent(userID, "send-current-transfer-state", {
357
365
  recipientID: userID,
358
366
  senderID,
@@ -439,11 +447,11 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
439
447
  }
440
448
  await fileTransferReceiver.handleTransferProgress(data);
441
449
  this.progressBarManager.updateTaskProgress(data.fileName, data.chunkSize || 512 * 1024);
442
- const currentTransferState = FileTransferRecoveryManager.getTransferState(userID, data.senderName, data.path) || {
450
+ const currentTransferState = FileTransferRecoveryManager.getTransferState(userID, data.senderName, `${data.path}-${data.fileName}`) || {
443
451
  transferredSize: 0
444
452
  };
445
453
  currentTransferState.transferredSize += data.chunkSize || 512 * 1024;
446
- FileTransferRecoveryManager.saveTransferState(userID, data.senderName, data.path, data.chunkIndex, currentTransferState.transferredSize);
454
+ FileTransferRecoveryManager.saveTransferState(userID, data.senderName, `${data.path}-${data.fileName}`, data.chunkIndex, currentTransferState.transferredSize);
447
455
  if (onTransferProgress) {
448
456
  onTransferProgress(data);
449
457
  }
@@ -477,7 +485,7 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
477
485
  }
478
486
  fileTransferReceiver.completeTransfer(data, (transferData, transfers, success, error) => {
479
487
  if (success) {
480
- FileTransferRecoveryManager.clearTransferState(userID, data.senderID, data.filePath);
488
+ FileTransferRecoveryManager.clearTransferState(userID, data.senderID, `${data.filePath}-${data.fileName}`);
481
489
  _FileTide.outputGradient(`[${userID}] File saved at : ${savePath}\n`, significantMessageColors);
482
490
  } else if (!success) {
483
491
  _FileTide.outputGradient(`[${userID}] Did not save file at : ${savePath}\n\t${error}\n`, errorMessageColors);
@@ -43,7 +43,8 @@ class FileTransferManager {
43
43
  const recoveredTransferState = (await clientTide.emitEventWithResponse(originDetails.senderID, "get-client-transfer-state", "sent-current-transfer-state", {
44
44
  recipientID,
45
45
  senderID: originDetails.senderID,
46
- filePath: fileDetails.destinationPath
46
+ filePath: fileDetails.destinationPath,
47
+ fileName: fileDetails.name
47
48
  }, 30000)) || {
48
49
  transferredSize: 0,
49
50
  lastChunkSent: 0
@@ -134,7 +135,8 @@ async function _startTransfer(file, transferId, fileDetails, originDetails, onSe
134
135
  const recoveredTransferState = (await clientTide.emitEventWithResponse(originDetails.senderID, "get-client-transfer-state", "sent-current-transfer-state", {
135
136
  recipientID: originDetails.recipientID,
136
137
  senderID: originDetails.senderID,
137
- filePath: fileDetails.destinationPath
138
+ filePath: fileDetails.destinationPath,
139
+ fileName: fileDetails.name
138
140
  }, 30000)) || {
139
141
  transferredSize: 0,
140
142
  lastChunkSent: 0
@@ -78,7 +78,6 @@ class FileTransferRecoveryManager {
78
78
  }
79
79
  }
80
80
  flushToDisk() {
81
- console.log(this.memoryStorage);
82
81
  for (const [key, state] of this.memoryStorage.entries()) {
83
82
  const {
84
83
  clientName,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trap_stevo/filetide",
3
- "version": "0.0.41",
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;