@trap_stevo/filetide 0.0.61 → 0.0.63
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 +628 -17
- package/dist/cjs/FileMessagerClient.js +6 -3
- package/dist/cjs/FileTide.js +56 -1
- package/dist/cjs/HUDManagers/TidalyticsInstanceManager.js +69 -0
- package/dist/cjs/HUDManagers/TidalyticsManager.js +9 -0
- package/dist/cjs/HUDManagers/TideSentinelManager.js +143 -0
- package/filetide_core/.tidalytics/000005.ldb +0 -0
- package/filetide_core/.tidalytics/000008.ldb +0 -0
- package/filetide_core/.tidalytics/000011.ldb +0 -0
- package/filetide_core/.tidalytics/000014.ldb +0 -0
- package/filetide_core/.tidalytics/000017.ldb +0 -0
- package/filetide_core/.tidalytics/000020.ldb +0 -0
- package/filetide_core/.tidalytics/000023.ldb +0 -0
- package/filetide_core/.tidalytics/000026.ldb +0 -0
- package/filetide_core/.tidalytics/000029.ldb +0 -0
- package/filetide_core/.tidalytics/000032.ldb +0 -0
- package/filetide_core/.tidalytics/000035.ldb +0 -0
- package/filetide_core/.tidalytics/000038.ldb +0 -0
- package/filetide_core/.tidalytics/000041.ldb +0 -0
- package/filetide_core/.tidalytics/000044.ldb +0 -0
- package/filetide_core/.tidalytics/000047.ldb +0 -0
- package/filetide_core/.tidalytics/000050.ldb +0 -0
- package/filetide_core/.tidalytics/000053.ldb +0 -0
- package/filetide_core/.tidalytics/000056.ldb +0 -0
- package/filetide_core/.tidalytics/000059.ldb +0 -0
- package/filetide_core/.tidalytics/000062.ldb +0 -0
- package/filetide_core/.tidalytics/000065.ldb +0 -0
- package/filetide_core/.tidalytics/000068.ldb +0 -0
- package/filetide_core/.tidalytics/000071.ldb +0 -0
- package/filetide_core/.tidalytics/000074.ldb +0 -0
- package/filetide_core/.tidalytics/000077.ldb +0 -0
- package/filetide_core/.tidalytics/000080.ldb +0 -0
- package/filetide_core/.tidalytics/000083.ldb +0 -0
- package/filetide_core/.tidalytics/000086.ldb +0 -0
- package/filetide_core/.tidalytics/000089.ldb +0 -0
- package/filetide_core/.tidalytics/000090.log +0 -0
- package/filetide_core/.tidalytics/CURRENT +1 -0
- package/filetide_core/.tidalytics/LOCK +0 -0
- package/filetide_core/.tidalytics/LOG +0 -0
- package/filetide_core/.tidalytics/LOG.old +6 -0
- package/filetide_core/.tidalytics/MANIFEST-000088 +0 -0
- package/filetide_core/tide_sentinel/banned-tiders/000092.log +0 -0
- package/filetide_core/tide_sentinel/banned-tiders/CURRENT +1 -0
- package/filetide_core/tide_sentinel/banned-tiders/LOCK +0 -0
- package/filetide_core/tide_sentinel/banned-tiders/LOG +3 -0
- package/filetide_core/tide_sentinel/banned-tiders/LOG.old +3 -0
- package/filetide_core/tide_sentinel/banned-tiders/MANIFEST-000091 +0 -0
- package/iotide_client/tide_session_id.json +1 -0
- package/iotide_client/tide_session_ids.json +5 -0
- package/package.json +5 -3
- package/transfer_states/FileNetServer_FileNetClient_-Documents-TestFileTideDropZone-TidalCore.txt.json +7 -0
|
@@ -41,18 +41,21 @@ class FileMessagerClient {
|
|
|
41
41
|
this.clientOptions = FileMessagerConfigManager.getClientOptions(options);
|
|
42
42
|
this.transporter = new FileTransferManager(transportOptions);
|
|
43
43
|
this.activeTransferTypes = new Map();
|
|
44
|
-
this.clientTide = new HUDIoTide(maxReconnectionAttempts, reconnectionAttempts, maxReconnectionDelay
|
|
44
|
+
this.clientTide = new HUDIoTide(maxReconnectionAttempts, reconnectionAttempts, maxReconnectionDelay, {
|
|
45
|
+
persistentTideIDs: true,
|
|
46
|
+
persistentTideID: true
|
|
47
|
+
});
|
|
45
48
|
this.clients = new Map();
|
|
46
49
|
}
|
|
47
50
|
createClientInstance(clientID, clientOptions, options = {}, headers = {}, onConnect = null, onDisconnect = null, authURL = "", authHeaders = {}, useAuthentication = false, queryAuthToken = false) {
|
|
48
51
|
this.clientTide.createIO(clientID, clientOptions.url, {
|
|
49
52
|
transports: ["websocket"],
|
|
50
53
|
...options
|
|
51
|
-
}, headers, authURL, authHeaders, useAuthentication, queryAuthToken, onConnect, () => {
|
|
54
|
+
}, headers, authURL, authHeaders, useAuthentication, queryAuthToken, onConnect, async () => {
|
|
52
55
|
FileTransferTrackingManager.outputCurrentTransfers();
|
|
53
56
|
FileTransferRecoveryManager.flushToDisk();
|
|
54
57
|
if (onDisconnect) {
|
|
55
|
-
onDisconnect();
|
|
58
|
+
await onDisconnect();
|
|
56
59
|
}
|
|
57
60
|
});
|
|
58
61
|
FileTideDebugUtilityManager.outputGradient(`\n[FileTide ~ File Messager] ~ Created client with ID ${clientID} and socket ${clientID}!`, significantMessageColors);
|
package/dist/cjs/FileTide.js
CHANGED
|
@@ -47,6 +47,7 @@ class FileTide {
|
|
|
47
47
|
});
|
|
48
48
|
this.clientShorePolicies = new Map();
|
|
49
49
|
this.transferBarrier = false;
|
|
50
|
+
this.clientDetails = new Map();
|
|
50
51
|
this.clients = new Map();
|
|
51
52
|
this.currentUserID = "";
|
|
52
53
|
this.runningOn = os.platform();
|
|
@@ -109,11 +110,29 @@ class FileTide {
|
|
|
109
110
|
if (this.clients.has(userID)) {
|
|
110
111
|
this.stopMessager(userID);
|
|
111
112
|
}
|
|
113
|
+
const currentClientDetails = this.clientDetails.get(userID);
|
|
114
|
+
if (currentClientDetails && currentClientDetails.unauthorized) {
|
|
115
|
+
const {
|
|
116
|
+
onCurrentClientUnauthorized
|
|
117
|
+
} = options;
|
|
118
|
+
FileTide.outputGradient(`[FileTide ~ FileNet] ~ Unauthorized access detected.`, errorMessageColors);
|
|
119
|
+
if (onCurrentClientUnauthorized) {
|
|
120
|
+
onCurrentClientUnauthorized({
|
|
121
|
+
...currentClientDetails,
|
|
122
|
+
userID
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
112
127
|
const newClient = new FileMessagerClient(clientOptions, transportOptions, messagerSettings);
|
|
113
128
|
const enterRoom = newClient.joinRoom(userID, roomName, connectionOptions, headers, onConnect, onDisconnect, authURL, authHeaders, useAuthentication, queryAuthToken);
|
|
114
129
|
this.transferBarrier = enableTransferBarrier;
|
|
115
130
|
this.clientShorePolicies.set(userID, [FileUtilityManager.getTidePath(">Downloads"), FileUtilityManager.getTidePath(">Documents"), FileUtilityManager.getTidePath(">Desktop"), FileUtilityManager.getTidePath(">Photos"), FileUtilityManager.getTidePath(">Videos"), FileUtilityManager.getTidePath(">Music")]);
|
|
116
131
|
this.clients.set(userID, newClient);
|
|
132
|
+
this.clientDetails.set(userID, {
|
|
133
|
+
unauthorized: false,
|
|
134
|
+
userID
|
|
135
|
+
});
|
|
117
136
|
FileTide.outputGradient(`[FileTide] ~ Messager launched successfully for client ~ ${userID}!`, significantMessageColors);
|
|
118
137
|
_assertClassBrand(_FileTide_brand, this, _setupFileEventListeners).call(this, userID, newClient, onTransferProgress, onIncomingTransfer, onIncomingFile, onTransferBarrier, options);
|
|
119
138
|
if (onLaunch) {
|
|
@@ -153,6 +172,10 @@ class FileTide {
|
|
|
153
172
|
FileTide.outputGradient(`[FileTide] Client ~ ${clientID} not found.`, errorMessageColors);
|
|
154
173
|
return;
|
|
155
174
|
}
|
|
175
|
+
clientMessager.clientTide.emitEvent(clientID, "check-client-banned", {
|
|
176
|
+
clientID,
|
|
177
|
+
tideID: clientMessager.clientTide.sockets[clientID].tideID
|
|
178
|
+
});
|
|
156
179
|
clientMessager.listFiles(clientID, recipientID, depth);
|
|
157
180
|
}
|
|
158
181
|
async listFiles(directories, depth = 1, onDirectory) {
|
|
@@ -201,6 +224,10 @@ class FileTide {
|
|
|
201
224
|
FileTide.outputGradient(`[FileTide] Client ~ ${clientID} not found.`, errorMessageColors);
|
|
202
225
|
return false;
|
|
203
226
|
}
|
|
227
|
+
clientMessager.clientTide.emitEvent(clientID, "check-client-banned", {
|
|
228
|
+
clientID,
|
|
229
|
+
tideID: clientMessager.clientTide.sockets[clientID].tideID
|
|
230
|
+
});
|
|
204
231
|
const recipientOnline = await clientMessager.clientTide.emitEventWithResponse(clientID, "check-client-online", "retrieved-client-online", {
|
|
205
232
|
clientID: recipientID
|
|
206
233
|
}, 5000);
|
|
@@ -254,6 +281,7 @@ class FileTide {
|
|
|
254
281
|
stopFileTide() {
|
|
255
282
|
if (this.fileNet) {
|
|
256
283
|
FileTide.outputGradient("Stopping FileTide...", significantMessageColors);
|
|
284
|
+
this.fileNet.close();
|
|
257
285
|
this.fileNet = null;
|
|
258
286
|
FileTide.outputGradient("Stopped FileTide.", significantMessageColors);
|
|
259
287
|
}
|
|
@@ -349,7 +377,10 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
349
377
|
onFileListReceived,
|
|
350
378
|
onCurrentOnlineClients,
|
|
351
379
|
onClientTiding,
|
|
352
|
-
onCurrentClientIDAlreadyOnline
|
|
380
|
+
onCurrentClientIDAlreadyOnline,
|
|
381
|
+
onCurrentClientUnauthorized,
|
|
382
|
+
onBeforeCurrentClientUnauthorizedDisconnect,
|
|
383
|
+
onCurrentClientUnauthorizedDisconnect
|
|
353
384
|
} = options;
|
|
354
385
|
const cliTable = new ConsoleTable({
|
|
355
386
|
padding: 2,
|
|
@@ -379,6 +410,10 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
379
410
|
});
|
|
380
411
|
const fileTransferReceiver = new FileTransferReceiverManager();
|
|
381
412
|
client.clientTide.onEvent(userID, "current-online-clients", data => {
|
|
413
|
+
client.clientTide.emitEvent(userID, "check-client-banned", {
|
|
414
|
+
clientID: userID,
|
|
415
|
+
tideID: client.clientTide.sockets[userID].tideID
|
|
416
|
+
});
|
|
382
417
|
const currentClients = {};
|
|
383
418
|
Object.keys(data).forEach(key => {
|
|
384
419
|
if (key !== userID) {
|
|
@@ -429,6 +464,22 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
429
464
|
}
|
|
430
465
|
return;
|
|
431
466
|
});
|
|
467
|
+
client.clientTide.onEvent(userID, "retrieved-client-banned", async bannedDetails => {
|
|
468
|
+
const clientID = bannedDetails.clientID;
|
|
469
|
+
if (userID !== clientID) {
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
if (!bannedDetails.banned) {
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
_FileTide.outputGradient(`[FileTide ~ FileNet] ~ Unauthorized access detected.`, errorMessageColors);
|
|
476
|
+
await this.stopAllMessagers(onBeforeCurrentClientUnauthorizedDisconnect, onCurrentClientUnauthorizedDisconnect, async () => {
|
|
477
|
+
if (onCurrentClientUnauthorized) {
|
|
478
|
+
onCurrentClientUnauthorized(bannedDetails);
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
return;
|
|
482
|
+
});
|
|
432
483
|
client.clientTide.onEvent(userID, "save-current-transfer-states", async data => {
|
|
433
484
|
this.saveTransferStates();
|
|
434
485
|
return;
|
|
@@ -686,6 +737,10 @@ function _setupFileEventListeners(userID, client, onTransferProgress, onIncoming
|
|
|
686
737
|
}
|
|
687
738
|
});
|
|
688
739
|
client.clientTide.onEvent(userID, "client-file-list", async data => {
|
|
740
|
+
client.clientTide.emitEvent(userID, "check-client-banned", {
|
|
741
|
+
clientID: userID,
|
|
742
|
+
tideID: client.clientTide.sockets[userID].tideID
|
|
743
|
+
});
|
|
689
744
|
_FileTide.outputGradient(`[${userID}] Received ${HUDUtilityManager.convertNumberToMoneyFormat(data.totalItems, false)} directory contents from ${data.senderID}'s file list!`, significantMessageColors);
|
|
690
745
|
if (onListFiles) {
|
|
691
746
|
onListFiles(data);
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const MetricTide = require("@trap_stevo/metrictide");
|
|
4
|
+
class TidalyticsInstanceManager {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.instances = new Map();
|
|
7
|
+
}
|
|
8
|
+
createInstance(name = "default", config = {}) {
|
|
9
|
+
if (this.instances.has(name)) {
|
|
10
|
+
return this.instances.get(name);
|
|
11
|
+
}
|
|
12
|
+
const defaultConfig = {
|
|
13
|
+
dbPath: "./filetide_core/.tidalytics",
|
|
14
|
+
persistence: {
|
|
15
|
+
alwaysOn: true
|
|
16
|
+
},
|
|
17
|
+
loadMetricsOnLaunch: false,
|
|
18
|
+
onTrack: record => {
|
|
19
|
+
console.log("[Tidalytics] Tracked:", record.name, record.value);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const mergedConfig = {
|
|
23
|
+
...defaultConfig,
|
|
24
|
+
...config,
|
|
25
|
+
persistence: {
|
|
26
|
+
...defaultConfig.persistence,
|
|
27
|
+
...(config.persistence || {})
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const instance = new MetricTide(mergedConfig);
|
|
31
|
+
this.instances.set(name, instance);
|
|
32
|
+
return instance;
|
|
33
|
+
}
|
|
34
|
+
getInstance(name = "default", configurations = {}) {
|
|
35
|
+
if (!this.instances.has(name)) {
|
|
36
|
+
if (configurations) {
|
|
37
|
+
return this.createInstance(name, configurations);
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return this.instances.get(name);
|
|
42
|
+
}
|
|
43
|
+
containsInstance(name = "default") {
|
|
44
|
+
return this.instances.has(name);
|
|
45
|
+
}
|
|
46
|
+
clearInstance(name = "default") {
|
|
47
|
+
this.instances.delete(name);
|
|
48
|
+
}
|
|
49
|
+
listInstances() {
|
|
50
|
+
return Array.from(this.instances.entries());
|
|
51
|
+
}
|
|
52
|
+
clearAll() {
|
|
53
|
+
this.instances.clear();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
;
|
|
57
|
+
let singleton = null;
|
|
58
|
+
const Tidalytics = {
|
|
59
|
+
get() {
|
|
60
|
+
if (!singleton) {
|
|
61
|
+
singleton = new TidalyticsInstanceManager();
|
|
62
|
+
}
|
|
63
|
+
return singleton;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
module.exports = {
|
|
67
|
+
TidalyticsInstanceManager,
|
|
68
|
+
Tidalytics
|
|
69
|
+
};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
|
4
|
+
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
|
5
|
+
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
|
6
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
|
7
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
|
8
|
+
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"); }
|
|
9
|
+
const Timelyst = require("@trap_stevo/timelyst");
|
|
10
|
+
var _config = /*#__PURE__*/new WeakMap();
|
|
11
|
+
var _lists = /*#__PURE__*/new WeakMap();
|
|
12
|
+
var _manager = /*#__PURE__*/new WeakMap();
|
|
13
|
+
var _onEntryAddedHooks = /*#__PURE__*/new WeakMap();
|
|
14
|
+
var _onExpireHooks = /*#__PURE__*/new WeakMap();
|
|
15
|
+
var _TideSentinelManager_brand = /*#__PURE__*/new WeakSet();
|
|
16
|
+
class TideSentinelManager {
|
|
17
|
+
constructor(config = {}) {
|
|
18
|
+
_classPrivateMethodInitSpec(this, _TideSentinelManager_brand);
|
|
19
|
+
_classPrivateFieldInitSpec(this, _config, void 0);
|
|
20
|
+
_classPrivateFieldInitSpec(this, _lists, void 0);
|
|
21
|
+
_classPrivateFieldInitSpec(this, _manager, void 0);
|
|
22
|
+
_classPrivateFieldInitSpec(this, _onEntryAddedHooks, {});
|
|
23
|
+
_classPrivateFieldInitSpec(this, _onExpireHooks, {});
|
|
24
|
+
const {
|
|
25
|
+
lists = {},
|
|
26
|
+
enableOfflineStorage = true,
|
|
27
|
+
autoCleanupInterval = "15s",
|
|
28
|
+
basePath = "./filetide_core/tide_sentinel",
|
|
29
|
+
...rest
|
|
30
|
+
} = config;
|
|
31
|
+
_classPrivateFieldSet(_config, this, {
|
|
32
|
+
enableOfflineStorage,
|
|
33
|
+
autoCleanupInterval,
|
|
34
|
+
basePath,
|
|
35
|
+
...rest
|
|
36
|
+
});
|
|
37
|
+
_classPrivateFieldSet(_lists, this, lists);
|
|
38
|
+
_classPrivateFieldSet(_manager, this, new Timelyst(_classPrivateFieldGet(_config, this)));
|
|
39
|
+
_classPrivateFieldGet(_manager, this).on("entry-expired", (list, key, entry) => {
|
|
40
|
+
const hook = _classPrivateFieldGet(_onExpireHooks, this)[list];
|
|
41
|
+
if (typeof hook === "function") {
|
|
42
|
+
hook(key, entry);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
_classPrivateFieldGet(_manager, this).on("entry-added", (list, key, entry) => {
|
|
46
|
+
const hook = _classPrivateFieldGet(_onEntryAddedHooks, this)[list];
|
|
47
|
+
if (typeof hook === "function") {
|
|
48
|
+
hook(key, entry);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
registerEntryAddedHook(list, callback) {
|
|
53
|
+
if (typeof callback === "function") {
|
|
54
|
+
_classPrivateFieldGet(_onEntryAddedHooks, this)[list] = callback;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
registerExpireHook(list, callback) {
|
|
58
|
+
if (typeof callback === "function") {
|
|
59
|
+
_classPrivateFieldGet(_onExpireHooks, this)[list] = callback;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async createList(name, options = {}) {
|
|
63
|
+
_classPrivateFieldGet(_lists, this)[name] = options;
|
|
64
|
+
return _classPrivateFieldGet(_manager, this).createList(name, options);
|
|
65
|
+
}
|
|
66
|
+
async deleteList(name) {
|
|
67
|
+
delete _classPrivateFieldGet(_lists, this)[name];
|
|
68
|
+
return _classPrivateFieldGet(_manager, this).deleteList(name);
|
|
69
|
+
}
|
|
70
|
+
async reconfigureList(name, newOptions = {}) {
|
|
71
|
+
Object.assign(_classPrivateFieldGet(_lists, this)[name] = _classPrivateFieldGet(_lists, this)[name] || {}, newOptions);
|
|
72
|
+
await _classPrivateFieldGet(_manager, this).deleteList(name);
|
|
73
|
+
return _classPrivateFieldGet(_manager, this).createList(name, _classPrivateFieldGet(_lists, this)[name]);
|
|
74
|
+
}
|
|
75
|
+
async banClient(clientID, options = {}) {
|
|
76
|
+
const {
|
|
77
|
+
reason = "Unspecified.",
|
|
78
|
+
duration = null,
|
|
79
|
+
tags = [],
|
|
80
|
+
priority = 10,
|
|
81
|
+
category = "ban",
|
|
82
|
+
details = {}
|
|
83
|
+
} = options;
|
|
84
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, "banned-tiders");
|
|
85
|
+
return _classPrivateFieldGet(_manager, this).addToList("banned-tiders", clientID, {
|
|
86
|
+
expiresIn: duration,
|
|
87
|
+
priority,
|
|
88
|
+
category,
|
|
89
|
+
tags,
|
|
90
|
+
details
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
async unbanClient(clientID) {
|
|
94
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, "banned-tiders");
|
|
95
|
+
return _classPrivateFieldGet(_manager, this).removeFromList("banned-tiders", clientID);
|
|
96
|
+
}
|
|
97
|
+
async clientBanned(clientID) {
|
|
98
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, "banned-tiders");
|
|
99
|
+
return _classPrivateFieldGet(_manager, this).inList("banned-tiders", clientID);
|
|
100
|
+
}
|
|
101
|
+
async getBanEntry(clientID) {
|
|
102
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, "banned-tiders");
|
|
103
|
+
return _classPrivateFieldGet(_manager, this).getEntryByKey("banned-tiders", clientID);
|
|
104
|
+
}
|
|
105
|
+
async filterBannedClients(filter = {}) {
|
|
106
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, "banned-tiders");
|
|
107
|
+
return _classPrivateFieldGet(_manager, this).filterList("banned-tiders", filter);
|
|
108
|
+
}
|
|
109
|
+
async addToList(list, key, data) {
|
|
110
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, list);
|
|
111
|
+
return _classPrivateFieldGet(_manager, this).addToList(list, key, data);
|
|
112
|
+
}
|
|
113
|
+
async removeFromList(list, key) {
|
|
114
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, list);
|
|
115
|
+
return _classPrivateFieldGet(_manager, this).removeFromList(list, key);
|
|
116
|
+
}
|
|
117
|
+
async inList(list, key) {
|
|
118
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, list);
|
|
119
|
+
return _classPrivateFieldGet(_manager, this).inList(list, key);
|
|
120
|
+
}
|
|
121
|
+
async getEntry(list, key) {
|
|
122
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, list);
|
|
123
|
+
return _classPrivateFieldGet(_manager, this).getEntryByKey(list, key);
|
|
124
|
+
}
|
|
125
|
+
async filterList(list, filter = {}) {
|
|
126
|
+
await _assertClassBrand(_TideSentinelManager_brand, this, _ensureList).call(this, list);
|
|
127
|
+
return _classPrivateFieldGet(_manager, this).filterList(list, filter);
|
|
128
|
+
}
|
|
129
|
+
async findSimilarKeys(key, options = {}) {
|
|
130
|
+
return _classPrivateFieldGet(_manager, this).findSimilarKeys(key, options);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async function _ensureList(name) {
|
|
134
|
+
if (!_classPrivateFieldGet(_lists, this)[name]) {
|
|
135
|
+
_classPrivateFieldGet(_lists, this)[name] = {};
|
|
136
|
+
}
|
|
137
|
+
const exists = await _classPrivateFieldGet(_manager, this).listOperational(name);
|
|
138
|
+
if (!exists) {
|
|
139
|
+
await _classPrivateFieldGet(_manager, this).createList(name, _classPrivateFieldGet(_lists, this)[name]);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
;
|
|
143
|
+
module.exports = TideSentinelManager;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MANIFEST-000088
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
2025/04/26-16:56:15.117 8174 Recovering log #84
|
|
2
|
+
2025/04/26-16:56:15.117 8174 Level-0 table #86: started
|
|
3
|
+
2025/04/26-16:56:15.122 8174 Level-0 table #86: 529 bytes OK
|
|
4
|
+
2025/04/26-16:56:15.130 8174 Delete type=0 #84
|
|
5
|
+
2025/04/26-16:56:15.130 8174 Delete type=3 #82
|
|
6
|
+
2025/04/26-16:56:15.133 3da4 Moved #77 to level-1 1047 bytes OK: files[ 3 25 0 0 0 0 0 ]
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MANIFEST-000091
|
|
File without changes
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b27541b4-aa20-4f49-8e88-4854fd97faf6
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trap_stevo/filetide",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.63",
|
|
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": {
|
|
@@ -34,9 +34,11 @@
|
|
|
34
34
|
"author": "Steven Compton",
|
|
35
35
|
"license": "See License in LICENSE.md",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@trap_stevo/iotide": "^0.0.
|
|
38
|
-
"@trap_stevo/iotide-client": "^0.0.
|
|
37
|
+
"@trap_stevo/iotide": "^0.0.43",
|
|
38
|
+
"@trap_stevo/iotide-client": "^0.0.25",
|
|
39
39
|
"@trap_stevo/legendarybuilderpronodejs-utilities": "^1.0.43",
|
|
40
|
+
"@trap_stevo/metrictide": "^0.0.3",
|
|
41
|
+
"@trap_stevo/timelyst": "^0.0.5",
|
|
40
42
|
"chalk": "^4.1.2",
|
|
41
43
|
"readline": "^1.3.0"
|
|
42
44
|
},
|