amule-ec-client 0.4.3 → 0.5.0
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/index.d.ts +217 -197
- package/dist/index.js +374 -277
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1015,6 +1015,370 @@ var init_StatsResponse = __esm({
|
|
|
1015
1015
|
}
|
|
1016
1016
|
});
|
|
1017
1017
|
|
|
1018
|
+
// src/request/UpdateRequest.ts
|
|
1019
|
+
var UpdateRequest_exports = {};
|
|
1020
|
+
__export(UpdateRequest_exports, {
|
|
1021
|
+
UpdateRequest: () => UpdateRequest
|
|
1022
|
+
});
|
|
1023
|
+
var UpdateRequest;
|
|
1024
|
+
var init_UpdateRequest = __esm({
|
|
1025
|
+
"src/request/UpdateRequest.ts"() {
|
|
1026
|
+
"use strict";
|
|
1027
|
+
init_Request();
|
|
1028
|
+
init_Codes();
|
|
1029
|
+
init_Tag();
|
|
1030
|
+
UpdateRequest = class extends Request {
|
|
1031
|
+
constructor(detailLevel = 4 /* EC_DETAIL_INC_UPDATE */) {
|
|
1032
|
+
super(82 /* EC_OP_GET_UPDATE */);
|
|
1033
|
+
this.addTag(new UByteTag(4 /* EC_TAG_DETAIL_LEVEL */, detailLevel));
|
|
1034
|
+
}
|
|
1035
|
+
};
|
|
1036
|
+
}
|
|
1037
|
+
});
|
|
1038
|
+
|
|
1039
|
+
// src/response/utils.ts
|
|
1040
|
+
function formatIp(ip) {
|
|
1041
|
+
if (ip === void 0) return "";
|
|
1042
|
+
return [ip >>> 24 & 255, ip >>> 16 & 255, ip >>> 8 & 255, ip & 255].join(".");
|
|
1043
|
+
}
|
|
1044
|
+
function toOptionalNumber(value) {
|
|
1045
|
+
if (value === void 0) return void 0;
|
|
1046
|
+
return typeof value === "bigint" ? Number(value) : value;
|
|
1047
|
+
}
|
|
1048
|
+
function toOptionalBool(value) {
|
|
1049
|
+
if (value === void 0) return void 0;
|
|
1050
|
+
return value !== 0;
|
|
1051
|
+
}
|
|
1052
|
+
function toOptionalIp(value) {
|
|
1053
|
+
if (value === void 0) return void 0;
|
|
1054
|
+
return formatIp(value);
|
|
1055
|
+
}
|
|
1056
|
+
var init_utils = __esm({
|
|
1057
|
+
"src/response/utils.ts"() {
|
|
1058
|
+
"use strict";
|
|
1059
|
+
}
|
|
1060
|
+
});
|
|
1061
|
+
|
|
1062
|
+
// src/response/SharedFilesResponse.ts
|
|
1063
|
+
var SharedFilesResponse_exports = {};
|
|
1064
|
+
__export(SharedFilesResponse_exports, {
|
|
1065
|
+
SharedFilesResponseParser: () => SharedFilesResponseParser
|
|
1066
|
+
});
|
|
1067
|
+
var SharedFilesResponseParser;
|
|
1068
|
+
var init_SharedFilesResponse = __esm({
|
|
1069
|
+
"src/response/SharedFilesResponse.ts"() {
|
|
1070
|
+
"use strict";
|
|
1071
|
+
init_Codes();
|
|
1072
|
+
init_Tag();
|
|
1073
|
+
init_utils();
|
|
1074
|
+
SharedFilesResponseParser = class {
|
|
1075
|
+
static fromPacket(packet) {
|
|
1076
|
+
const files = [];
|
|
1077
|
+
const knownfileTags = packet.tags.filter((tag) => tag.name === 1024 /* EC_TAG_KNOWNFILE */);
|
|
1078
|
+
for (const fileTag of knownfileTags) {
|
|
1079
|
+
const tags = fileTag.nestedTags || [];
|
|
1080
|
+
const hashTag = findTag(tags, 798 /* EC_TAG_PARTFILE_HASH */);
|
|
1081
|
+
const fileNameTag = findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */);
|
|
1082
|
+
const file = {
|
|
1083
|
+
fileHashHexString: hashTag ? hashTag.getValue().toString("hex") : void 0,
|
|
1084
|
+
fileName: fileNameTag ? fileNameTag.getValue() : void 0,
|
|
1085
|
+
filePath: findTag(tags, 1032 /* EC_TAG_KNOWNFILE_FILENAME */)?.getValue(),
|
|
1086
|
+
sizeFull: toOptionalNumber(findNumericTag(tags, 771 /* EC_TAG_PARTFILE_SIZE_FULL */)?.getLong()),
|
|
1087
|
+
fileEd2kLink: findTag(tags, 782 /* EC_TAG_PARTFILE_ED2K_LINK */)?.getValue(),
|
|
1088
|
+
upPrio: findNumericTag(tags, 1035 /* EC_TAG_KNOWNFILE_PRIO */)?.getInt(),
|
|
1089
|
+
getRequests: findNumericTag(tags, 1027 /* EC_TAG_KNOWNFILE_REQ_COUNT */)?.getShort(),
|
|
1090
|
+
getAllRequests: findNumericTag(tags, 1028 /* EC_TAG_KNOWNFILE_REQ_COUNT_ALL */)?.getInt(),
|
|
1091
|
+
getAccepts: findNumericTag(tags, 1029 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT */)?.getShort(),
|
|
1092
|
+
getAllAccepts: findNumericTag(tags, 1030 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL */)?.getInt(),
|
|
1093
|
+
getXferred: toOptionalNumber(findNumericTag(tags, 1025 /* EC_TAG_KNOWNFILE_XFERRED */)?.getLong()),
|
|
1094
|
+
getAllXferred: toOptionalNumber(findNumericTag(tags, 1026 /* EC_TAG_KNOWNFILE_XFERRED_ALL */)?.getLong()),
|
|
1095
|
+
getCompleteSourcesLow: findNumericTag(tags, 1033 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW */)?.getShort(),
|
|
1096
|
+
getCompleteSourcesHigh: findNumericTag(tags, 1034 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH */)?.getShort(),
|
|
1097
|
+
getCompleteSources: findNumericTag(tags, 1037 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES */)?.getShort(),
|
|
1098
|
+
getOnQueue: findNumericTag(tags, 1036 /* EC_TAG_KNOWNFILE_ON_QUEUE */)?.getShort(),
|
|
1099
|
+
getComment: findTag(tags, 1038 /* EC_TAG_KNOWNFILE_COMMENT */)?.getValue(),
|
|
1100
|
+
getRating: findNumericTag(tags, 1039 /* EC_TAG_KNOWNFILE_RATING */)?.getInt()
|
|
1101
|
+
};
|
|
1102
|
+
files.push(file);
|
|
1103
|
+
}
|
|
1104
|
+
return { files };
|
|
1105
|
+
}
|
|
1106
|
+
};
|
|
1107
|
+
}
|
|
1108
|
+
});
|
|
1109
|
+
|
|
1110
|
+
// src/response/DownloadQueueResponse.ts
|
|
1111
|
+
var DownloadQueueResponse_exports = {};
|
|
1112
|
+
__export(DownloadQueueResponse_exports, {
|
|
1113
|
+
DownloadQueueResponseParser: () => DownloadQueueResponseParser
|
|
1114
|
+
});
|
|
1115
|
+
var DownloadQueueResponseParser;
|
|
1116
|
+
var init_DownloadQueueResponse = __esm({
|
|
1117
|
+
"src/response/DownloadQueueResponse.ts"() {
|
|
1118
|
+
"use strict";
|
|
1119
|
+
init_Codes();
|
|
1120
|
+
init_Tag();
|
|
1121
|
+
init_utils();
|
|
1122
|
+
DownloadQueueResponseParser = class {
|
|
1123
|
+
static fromPacket(packet) {
|
|
1124
|
+
const files = [];
|
|
1125
|
+
const partfileTags = packet.tags.filter((tag) => tag.name === 768 /* EC_TAG_PARTFILE */);
|
|
1126
|
+
for (const fileTag of partfileTags) {
|
|
1127
|
+
const tags = fileTag.nestedTags || [];
|
|
1128
|
+
const hashTag = findTag(tags, 798 /* EC_TAG_PARTFILE_HASH */);
|
|
1129
|
+
const fileNameTag = findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */);
|
|
1130
|
+
let a4afSources = void 0;
|
|
1131
|
+
const a4afSourcesTag = findTag(tags, 802 /* EC_TAG_PARTFILE_A4AF_SOURCES */);
|
|
1132
|
+
if (a4afSourcesTag) {
|
|
1133
|
+
a4afSources = [];
|
|
1134
|
+
a4afSourcesTag.nestedTags = a4afSourcesTag.nestedTags || [];
|
|
1135
|
+
for (const sourceTag of a4afSourcesTag.nestedTags) {
|
|
1136
|
+
if (sourceTag.name === 15 /* EC_TAG_ECID */) {
|
|
1137
|
+
a4afSources.push(sourceTag.getValue());
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
const file = {
|
|
1142
|
+
fileHashHexString: hashTag ? hashTag.getValue().toString("hex") : void 0,
|
|
1143
|
+
fileName: fileNameTag ? fileNameTag.getValue() : void 0,
|
|
1144
|
+
filePath: findTag(tags, 1032 /* EC_TAG_KNOWNFILE_FILENAME */)?.getValue(),
|
|
1145
|
+
sizeFull: toOptionalNumber(findNumericTag(tags, 771 /* EC_TAG_PARTFILE_SIZE_FULL */)?.getLong()),
|
|
1146
|
+
fileEd2kLink: findTag(tags, 782 /* EC_TAG_PARTFILE_ED2K_LINK */)?.getValue(),
|
|
1147
|
+
// Transfer info
|
|
1148
|
+
partMetID: findNumericTag(tags, 770 /* EC_TAG_PARTFILE_PARTMETID */)?.getShort(),
|
|
1149
|
+
sizeXfer: toOptionalNumber(findNumericTag(tags, 772 /* EC_TAG_PARTFILE_SIZE_XFER */)?.getLong()),
|
|
1150
|
+
sizeDone: toOptionalNumber(findNumericTag(tags, 774 /* EC_TAG_PARTFILE_SIZE_DONE */)?.getLong()),
|
|
1151
|
+
fileStatus: findNumericTag(tags, 776 /* EC_TAG_PARTFILE_STATUS */)?.getInt(),
|
|
1152
|
+
stopped: toOptionalBool(findNumericTag(tags, 791 /* EC_TAG_PARTFILE_STOPPED */)?.getInt()),
|
|
1153
|
+
sourceCount: findNumericTag(tags, 778 /* EC_TAG_PARTFILE_SOURCE_COUNT */)?.getShort(),
|
|
1154
|
+
sourceNotCurrCount: findNumericTag(tags, 780 /* EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT */)?.getShort(),
|
|
1155
|
+
sourceXferCount: findNumericTag(tags, 781 /* EC_TAG_PARTFILE_SOURCE_COUNT_XFER */)?.getShort(),
|
|
1156
|
+
sourceCountA4AF: findNumericTag(tags, 779 /* EC_TAG_PARTFILE_SOURCE_COUNT_A4AF */)?.getShort(),
|
|
1157
|
+
speed: toOptionalNumber(findNumericTag(tags, 775 /* EC_TAG_PARTFILE_SPEED */)?.getLong()),
|
|
1158
|
+
downPrio: findNumericTag(tags, 777 /* EC_TAG_PARTFILE_PRIO */)?.getInt(),
|
|
1159
|
+
fileCat: toOptionalNumber(findNumericTag(tags, 783 /* EC_TAG_PARTFILE_CAT */)?.getLong()),
|
|
1160
|
+
lastSeenComplete: toOptionalNumber(findNumericTag(tags, 785 /* EC_TAG_PARTFILE_LAST_SEEN_COMP */)?.getLong()),
|
|
1161
|
+
lastDateChanged: toOptionalNumber(findNumericTag(tags, 784 /* EC_TAG_PARTFILE_LAST_RECV */)?.getLong()),
|
|
1162
|
+
downloadActiveTime: findNumericTag(tags, 792 /* EC_TAG_PARTFILE_DOWNLOAD_ACTIVE */)?.getInt(),
|
|
1163
|
+
availablePartCount: findNumericTag(tags, 797 /* EC_TAG_PARTFILE_AVAILABLE_PARTS */)?.getShort(),
|
|
1164
|
+
a4AFAuto: toOptionalBool(findNumericTag(tags, 801 /* EC_TAG_PARTFILE_A4AFAUTO */)?.getInt()),
|
|
1165
|
+
hashingProgress: toOptionalBool(findNumericTag(tags, 800 /* EC_TAG_PARTFILE_HASHED_PART_COUNT */)?.getInt()),
|
|
1166
|
+
// Statistics
|
|
1167
|
+
getLostDueToCorruption: toOptionalNumber(findNumericTag(tags, 793 /* EC_TAG_PARTFILE_LOST_CORRUPTION */)?.getLong()),
|
|
1168
|
+
getGainDueToCompression: toOptionalNumber(findNumericTag(tags, 794 /* EC_TAG_PARTFILE_GAINED_COMPRESSION */)?.getLong()),
|
|
1169
|
+
totalPacketsSavedDueToICH: findNumericTag(tags, 795 /* EC_TAG_PARTFILE_SAVED_ICH */)?.getInt(),
|
|
1170
|
+
// Known file shared info
|
|
1171
|
+
upPrio: findNumericTag(tags, 1035 /* EC_TAG_KNOWNFILE_PRIO */)?.getInt(),
|
|
1172
|
+
getRequests: findNumericTag(tags, 1027 /* EC_TAG_KNOWNFILE_REQ_COUNT */)?.getShort(),
|
|
1173
|
+
getAllRequests: findNumericTag(tags, 1028 /* EC_TAG_KNOWNFILE_REQ_COUNT_ALL */)?.getInt(),
|
|
1174
|
+
getAccepts: findNumericTag(tags, 1029 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT */)?.getShort(),
|
|
1175
|
+
getAllAccepts: findNumericTag(tags, 1030 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL */)?.getInt(),
|
|
1176
|
+
getXferred: toOptionalNumber(findNumericTag(tags, 1025 /* EC_TAG_KNOWNFILE_XFERRED */)?.getLong()),
|
|
1177
|
+
getAllXferred: toOptionalNumber(findNumericTag(tags, 1026 /* EC_TAG_KNOWNFILE_XFERRED_ALL */)?.getLong()),
|
|
1178
|
+
getCompleteSourcesLow: findNumericTag(tags, 1033 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW */)?.getShort(),
|
|
1179
|
+
getCompleteSourcesHigh: findNumericTag(tags, 1034 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH */)?.getShort(),
|
|
1180
|
+
getCompleteSources: findNumericTag(tags, 1037 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES */)?.getShort(),
|
|
1181
|
+
getOnQueue: findNumericTag(tags, 1036 /* EC_TAG_KNOWNFILE_ON_QUEUE */)?.getShort(),
|
|
1182
|
+
getComment: findTag(tags, 1038 /* EC_TAG_KNOWNFILE_COMMENT */)?.getValue(),
|
|
1183
|
+
getRating: findNumericTag(tags, 1039 /* EC_TAG_KNOWNFILE_RATING */)?.getInt(),
|
|
1184
|
+
a4afSources
|
|
1185
|
+
};
|
|
1186
|
+
files.push(file);
|
|
1187
|
+
}
|
|
1188
|
+
return { files };
|
|
1189
|
+
}
|
|
1190
|
+
};
|
|
1191
|
+
}
|
|
1192
|
+
});
|
|
1193
|
+
|
|
1194
|
+
// src/response/ClientQueueResponse.ts
|
|
1195
|
+
var ClientQueueResponse_exports = {};
|
|
1196
|
+
__export(ClientQueueResponse_exports, {
|
|
1197
|
+
ClientQueueResponseParser: () => ClientQueueResponseParser
|
|
1198
|
+
});
|
|
1199
|
+
var ClientQueueResponseParser;
|
|
1200
|
+
var init_ClientQueueResponse = __esm({
|
|
1201
|
+
"src/response/ClientQueueResponse.ts"() {
|
|
1202
|
+
"use strict";
|
|
1203
|
+
init_Codes();
|
|
1204
|
+
init_Tag();
|
|
1205
|
+
init_utils();
|
|
1206
|
+
ClientQueueResponseParser = class {
|
|
1207
|
+
static fromPacket(packet) {
|
|
1208
|
+
return this.fromTags(packet.tags);
|
|
1209
|
+
}
|
|
1210
|
+
static fromTags(allTags) {
|
|
1211
|
+
const clients = [];
|
|
1212
|
+
const clientTags = allTags.filter((tag) => tag.name === 1536 /* EC_TAG_CLIENT */);
|
|
1213
|
+
for (const clientTag of clientTags) {
|
|
1214
|
+
const tags = clientTag.nestedTags || [];
|
|
1215
|
+
const client = {
|
|
1216
|
+
clientName: findTag(tags, 256 /* EC_TAG_CLIENT_NAME */)?.getValue(),
|
|
1217
|
+
userHashHexString: findTag(tags, 1539 /* EC_TAG_CLIENT_HASH */)?.getValue()?.toString("hex"),
|
|
1218
|
+
userID: findNumericTag(tags, 1566 /* EC_TAG_CLIENT_USER_ID */)?.getInt(),
|
|
1219
|
+
score: findNumericTag(tags, 1538 /* EC_TAG_CLIENT_SCORE */)?.getInt(),
|
|
1220
|
+
software: findTag(tags, 1537 /* EC_TAG_CLIENT_SOFTWARE */)?.getValue(),
|
|
1221
|
+
softVerStr: findTag(tags, 1557 /* EC_TAG_CLIENT_SOFT_VER_STR */)?.getValue(),
|
|
1222
|
+
userIP: toOptionalIp(findNumericTag(tags, 1552 /* EC_TAG_CLIENT_USER_IP */)?.getInt()),
|
|
1223
|
+
userPort: findNumericTag(tags, 1553 /* EC_TAG_CLIENT_USER_PORT */)?.getInt(),
|
|
1224
|
+
sourceFrom: toOptionalNumber(findNumericTag(tags, 1551 /* EC_TAG_CLIENT_FROM */)?.getLong()),
|
|
1225
|
+
serverIP: toOptionalIp(findNumericTag(tags, 1554 /* EC_TAG_CLIENT_SERVER_IP */)?.getInt()),
|
|
1226
|
+
serverPort: findNumericTag(tags, 1555 /* EC_TAG_CLIENT_SERVER_PORT */)?.getInt(),
|
|
1227
|
+
serverName: findTag(tags, 1556 /* EC_TAG_CLIENT_SERVER_NAME */)?.getValue(),
|
|
1228
|
+
upSpeed: toOptionalNumber(findNumericTag(tags, 1549 /* EC_TAG_CLIENT_UP_SPEED */)?.getLong()),
|
|
1229
|
+
downSpeed: toOptionalNumber(findNumericTag(tags, 1550 /* EC_TAG_CLIENT_DOWN_SPEED */)?.getLong()),
|
|
1230
|
+
uploadSession: toOptionalNumber(findNumericTag(tags, 1545 /* EC_TAG_CLIENT_UPLOAD_SESSION */)?.getLong()),
|
|
1231
|
+
transferredDown: toOptionalNumber(findNumericTag(tags, 772 /* EC_TAG_PARTFILE_SIZE_XFER */)?.getLong()),
|
|
1232
|
+
uploadedTotal: toOptionalNumber(findNumericTag(tags, 1546 /* EC_TAG_CLIENT_UPLOAD_TOTAL */)?.getLong()),
|
|
1233
|
+
downloadedTotal: toOptionalNumber(findNumericTag(tags, 1547 /* EC_TAG_CLIENT_DOWNLOAD_TOTAL */)?.getLong()),
|
|
1234
|
+
uploadState: findNumericTag(tags, 1564 /* EC_TAG_CLIENT_UPLOAD_STATE */)?.getInt(),
|
|
1235
|
+
downloadState: findNumericTag(tags, 1548 /* EC_TAG_CLIENT_DOWNLOAD_STATE */)?.getInt(),
|
|
1236
|
+
identState: findNumericTag(tags, 1559 /* EC_TAG_CLIENT_IDENT_STATE */)?.getInt(),
|
|
1237
|
+
extProtocol: findNumericTag(tags, 1565 /* EC_TAG_CLIENT_EXT_PROTOCOL */)?.getInt(),
|
|
1238
|
+
waitingPosition: findNumericTag(tags, 1558 /* EC_TAG_CLIENT_WAITING_POSITION */)?.getInt(),
|
|
1239
|
+
remoteQueueRank: findNumericTag(tags, 1562 /* EC_TAG_CLIENT_REMOTE_QUEUE_RANK */)?.getInt(),
|
|
1240
|
+
oldRemoteQueueRank: findNumericTag(tags, 1570 /* EC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK */)?.getInt(),
|
|
1241
|
+
obfuscationStatus: findNumericTag(tags, 1560 /* EC_TAG_CLIENT_OBFUSCATION_STATUS */)?.getInt(),
|
|
1242
|
+
kadPort: findNumericTag(tags, 1571 /* EC_TAG_CLIENT_KAD_PORT */)?.getInt(),
|
|
1243
|
+
friendSlot: findNumericTag(tags, 1540 /* EC_TAG_CLIENT_FRIEND_SLOT */)?.getInt(),
|
|
1244
|
+
uploadFileId: toOptionalNumber(findNumericTag(tags, 1567 /* EC_TAG_CLIENT_UPLOAD_FILE */)?.getLong()),
|
|
1245
|
+
uploadFilename: findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */)?.getValue(),
|
|
1246
|
+
requestFileId: toOptionalNumber(findNumericTag(tags, 1568 /* EC_TAG_CLIENT_REQUEST_FILE */)?.getLong()),
|
|
1247
|
+
remoteFilename: findTag(tags, 1575 /* EC_TAG_CLIENT_REMOTE_FILENAME */)?.getValue(),
|
|
1248
|
+
disableViewShared: toOptionalBool(findNumericTag(tags, 1563 /* EC_TAG_CLIENT_DISABLE_VIEW_SHARED */)?.getInt()),
|
|
1249
|
+
version: findNumericTag(tags, 257 /* EC_TAG_CLIENT_VERSION */)?.getInt(),
|
|
1250
|
+
modVersion: findTag(tags, 1576 /* EC_TAG_CLIENT_MOD_VERSION */)?.getValue(),
|
|
1251
|
+
osInfo: findTag(tags, 1577 /* EC_TAG_CLIENT_OS_INFO */)?.getValue(),
|
|
1252
|
+
availableParts: findNumericTag(tags, 1578 /* EC_TAG_CLIENT_AVAILABLE_PARTS */)?.getInt(),
|
|
1253
|
+
partStatus: findTag(tags, 1572 /* EC_TAG_CLIENT_PART_STATUS */)?.getValue(),
|
|
1254
|
+
nextRequestedPart: findNumericTag(tags, 1573 /* EC_TAG_CLIENT_NEXT_REQUESTED_PART */)?.getInt(),
|
|
1255
|
+
lastDownloadingPart: findNumericTag(tags, 1574 /* EC_TAG_CLIENT_LAST_DOWNLOADING_PART */)?.getInt(),
|
|
1256
|
+
uploadPartStatus: findTag(tags, 1579 /* EC_TAG_CLIENT_UPLOAD_PART_STATUS */)?.getValue()
|
|
1257
|
+
// Additional fields can be added here as needed
|
|
1258
|
+
};
|
|
1259
|
+
clients.push(client);
|
|
1260
|
+
}
|
|
1261
|
+
return { clients };
|
|
1262
|
+
}
|
|
1263
|
+
};
|
|
1264
|
+
}
|
|
1265
|
+
});
|
|
1266
|
+
|
|
1267
|
+
// src/response/ServerListResponse.ts
|
|
1268
|
+
var ServerListResponse_exports = {};
|
|
1269
|
+
__export(ServerListResponse_exports, {
|
|
1270
|
+
ServerListResponseParser: () => ServerListResponseParser
|
|
1271
|
+
});
|
|
1272
|
+
var ServerListResponseParser;
|
|
1273
|
+
var init_ServerListResponse = __esm({
|
|
1274
|
+
"src/response/ServerListResponse.ts"() {
|
|
1275
|
+
"use strict";
|
|
1276
|
+
init_Codes();
|
|
1277
|
+
init_Tag();
|
|
1278
|
+
init_utils();
|
|
1279
|
+
ServerListResponseParser = class {
|
|
1280
|
+
static fromPacket(packet) {
|
|
1281
|
+
return this.fromTags(packet.tags);
|
|
1282
|
+
}
|
|
1283
|
+
static fromTags(allTags) {
|
|
1284
|
+
const servers = [];
|
|
1285
|
+
const serverTags = allTags.filter((tag) => tag.name === 1280 /* EC_TAG_SERVER */);
|
|
1286
|
+
for (const serverTag of serverTags) {
|
|
1287
|
+
const nested = serverTag.nestedTags || [];
|
|
1288
|
+
const ipv4Tag = findTag(nested, 1292 /* EC_TAG_SERVER_IP */) || findTag(nested, 1283 /* EC_TAG_SERVER_ADDRESS */) || (serverTag.constructor.name.includes("Ipv4") ? serverTag : null);
|
|
1289
|
+
let ip = void 0;
|
|
1290
|
+
let port = void 0;
|
|
1291
|
+
if (ipv4Tag && ipv4Tag.getValue() && typeof ipv4Tag.getValue() === "object" && "address" in ipv4Tag.getValue()) {
|
|
1292
|
+
const val = ipv4Tag.getValue();
|
|
1293
|
+
ip = val.address;
|
|
1294
|
+
port = val.port;
|
|
1295
|
+
} else {
|
|
1296
|
+
const ipNum = findNumericTag(nested, 1292 /* EC_TAG_SERVER_IP */)?.getInt() || findNumericTag(allTags, 1292 /* EC_TAG_SERVER_IP */)?.getInt();
|
|
1297
|
+
port = findNumericTag(nested, 1293 /* EC_TAG_SERVER_PORT */)?.getInt() || findNumericTag(allTags, 1293 /* EC_TAG_SERVER_PORT */)?.getInt();
|
|
1298
|
+
ip = ipNum !== void 0 ? formatIp(ipNum) : void 0;
|
|
1299
|
+
}
|
|
1300
|
+
if (port === void 0 || port === 0) {
|
|
1301
|
+
const extraPort = findNumericTag(nested, 1293 /* EC_TAG_SERVER_PORT */)?.getInt();
|
|
1302
|
+
if (extraPort !== void 0) port = extraPort;
|
|
1303
|
+
}
|
|
1304
|
+
servers.push({
|
|
1305
|
+
name: findTag(nested, 1281 /* EC_TAG_SERVER_NAME */)?.getValue(),
|
|
1306
|
+
description: findTag(nested, 1282 /* EC_TAG_SERVER_DESC */)?.getValue(),
|
|
1307
|
+
address: findTag(nested, 1283 /* EC_TAG_SERVER_ADDRESS */)?.getValue(),
|
|
1308
|
+
ip,
|
|
1309
|
+
port,
|
|
1310
|
+
ping: findNumericTag(nested, 1284 /* EC_TAG_SERVER_PING */)?.getInt(),
|
|
1311
|
+
users: findNumericTag(nested, 1285 /* EC_TAG_SERVER_USERS */)?.getInt(),
|
|
1312
|
+
maxUsers: findNumericTag(nested, 1286 /* EC_TAG_SERVER_USERS_MAX */)?.getInt(),
|
|
1313
|
+
files: findNumericTag(nested, 1287 /* EC_TAG_SERVER_FILES */)?.getInt(),
|
|
1314
|
+
priority: findNumericTag(nested, 1288 /* EC_TAG_SERVER_PRIO */)?.getInt(),
|
|
1315
|
+
version: findTag(nested, 1291 /* EC_TAG_SERVER_VERSION */)?.getValue(),
|
|
1316
|
+
isStatic: toOptionalBool(findNumericTag(nested, 1290 /* EC_TAG_SERVER_STATIC */)?.getInt()),
|
|
1317
|
+
failedCount: findNumericTag(nested, 1289 /* EC_TAG_SERVER_FAILED */)?.getInt()
|
|
1318
|
+
});
|
|
1319
|
+
}
|
|
1320
|
+
return { servers };
|
|
1321
|
+
}
|
|
1322
|
+
};
|
|
1323
|
+
}
|
|
1324
|
+
});
|
|
1325
|
+
|
|
1326
|
+
// src/response/UpdateResponse.ts
|
|
1327
|
+
var UpdateResponse_exports = {};
|
|
1328
|
+
__export(UpdateResponse_exports, {
|
|
1329
|
+
UpdateResponseParser: () => UpdateResponseParser
|
|
1330
|
+
});
|
|
1331
|
+
var UpdateResponseParser;
|
|
1332
|
+
var init_UpdateResponse = __esm({
|
|
1333
|
+
"src/response/UpdateResponse.ts"() {
|
|
1334
|
+
"use strict";
|
|
1335
|
+
init_Codes();
|
|
1336
|
+
init_Tag();
|
|
1337
|
+
init_utils();
|
|
1338
|
+
init_SharedFilesResponse();
|
|
1339
|
+
init_DownloadQueueResponse();
|
|
1340
|
+
init_ClientQueueResponse();
|
|
1341
|
+
init_ServerListResponse();
|
|
1342
|
+
UpdateResponseParser = class {
|
|
1343
|
+
static fromPacket(packet) {
|
|
1344
|
+
const sharedFiles = SharedFilesResponseParser.fromPacket(packet).files;
|
|
1345
|
+
const downloadQueue = DownloadQueueResponseParser.fromPacket(packet).files;
|
|
1346
|
+
const clientContainer = findTag(packet.tags, 1536 /* EC_TAG_CLIENT */);
|
|
1347
|
+
const clients = clientContainer && clientContainer.nestedTags ? ClientQueueResponseParser.fromTags(clientContainer.nestedTags).clients : [];
|
|
1348
|
+
const serverContainer = findTag(packet.tags, 1280 /* EC_TAG_SERVER */);
|
|
1349
|
+
const servers = serverContainer && serverContainer.nestedTags ? ServerListResponseParser.fromTags(serverContainer.nestedTags).servers : [];
|
|
1350
|
+
const friendContainer = findTag(packet.tags, 2048 /* EC_TAG_FRIEND */);
|
|
1351
|
+
const friends = friendContainer && friendContainer.nestedTags ? this.parseFriends(friendContainer.nestedTags) : [];
|
|
1352
|
+
return {
|
|
1353
|
+
sharedFiles,
|
|
1354
|
+
downloadQueue,
|
|
1355
|
+
clients,
|
|
1356
|
+
servers,
|
|
1357
|
+
friends
|
|
1358
|
+
};
|
|
1359
|
+
}
|
|
1360
|
+
static parseFriends(tags) {
|
|
1361
|
+
const friends = [];
|
|
1362
|
+
const friendTags = tags.filter((t) => t.name === 2048 /* EC_TAG_FRIEND */);
|
|
1363
|
+
for (const friendTag of friendTags) {
|
|
1364
|
+
const nested = friendTag.nestedTags || [];
|
|
1365
|
+
friends.push({
|
|
1366
|
+
name: findTag(nested, 2049 /* EC_TAG_FRIEND_NAME */)?.getValue(),
|
|
1367
|
+
userHashHexString: findTag(nested, 2050 /* EC_TAG_FRIEND_HASH */)?.getValue()?.toString("hex"),
|
|
1368
|
+
ip: toOptionalIp(findNumericTag(nested, 2051 /* EC_TAG_FRIEND_IP */)?.getInt()),
|
|
1369
|
+
port: findNumericTag(nested, 2052 /* EC_TAG_FRIEND_PORT */)?.getInt(),
|
|
1370
|
+
friendSlot: toOptionalBool(findNumericTag(nested, 2056 /* EC_TAG_FRIEND_FRIENDSLOT */)?.getInt()),
|
|
1371
|
+
shared: toOptionalBool(findNumericTag(nested, 2057 /* EC_TAG_FRIEND_SHARED */)?.getInt()),
|
|
1372
|
+
// Friend client information might be nested as a client tag
|
|
1373
|
+
client: ClientQueueResponseParser.fromTags(nested).clients[0]
|
|
1374
|
+
});
|
|
1375
|
+
}
|
|
1376
|
+
return friends;
|
|
1377
|
+
}
|
|
1378
|
+
};
|
|
1379
|
+
}
|
|
1380
|
+
});
|
|
1381
|
+
|
|
1018
1382
|
// src/model/index.ts
|
|
1019
1383
|
var model_exports = {};
|
|
1020
1384
|
__export(model_exports, {
|
|
@@ -1318,92 +1682,6 @@ var init_DownloadQueueRequest = __esm({
|
|
|
1318
1682
|
}
|
|
1319
1683
|
});
|
|
1320
1684
|
|
|
1321
|
-
// src/response/DownloadQueueResponse.ts
|
|
1322
|
-
var DownloadQueueResponse_exports = {};
|
|
1323
|
-
__export(DownloadQueueResponse_exports, {
|
|
1324
|
-
DownloadQueueResponseParser: () => DownloadQueueResponseParser
|
|
1325
|
-
});
|
|
1326
|
-
function toNumber(value, defaultValue = 0) {
|
|
1327
|
-
if (value === void 0) return defaultValue;
|
|
1328
|
-
return typeof value === "bigint" ? Number(value) : value;
|
|
1329
|
-
}
|
|
1330
|
-
var DownloadQueueResponseParser;
|
|
1331
|
-
var init_DownloadQueueResponse = __esm({
|
|
1332
|
-
"src/response/DownloadQueueResponse.ts"() {
|
|
1333
|
-
"use strict";
|
|
1334
|
-
init_Codes();
|
|
1335
|
-
init_Tag();
|
|
1336
|
-
DownloadQueueResponseParser = class {
|
|
1337
|
-
static fromPacket(packet) {
|
|
1338
|
-
const files = [];
|
|
1339
|
-
const partfileTags = packet.tags.filter((tag) => tag.name === 768 /* EC_TAG_PARTFILE */);
|
|
1340
|
-
for (const fileTag of partfileTags) {
|
|
1341
|
-
const tags = fileTag.nestedTags || [];
|
|
1342
|
-
const hashTag = findTag(tags, 798 /* EC_TAG_PARTFILE_HASH */);
|
|
1343
|
-
const fileNameTag = findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */);
|
|
1344
|
-
const a4afSources = [];
|
|
1345
|
-
const a4afSourcesTag = findTag(tags, 802 /* EC_TAG_PARTFILE_A4AF_SOURCES */);
|
|
1346
|
-
if (a4afSourcesTag) {
|
|
1347
|
-
a4afSourcesTag.nestedTags = a4afSourcesTag.nestedTags || [];
|
|
1348
|
-
for (const sourceTag of a4afSourcesTag.nestedTags) {
|
|
1349
|
-
if (sourceTag.name === 15 /* EC_TAG_ECID */) {
|
|
1350
|
-
a4afSources.push(sourceTag.getValue());
|
|
1351
|
-
}
|
|
1352
|
-
}
|
|
1353
|
-
}
|
|
1354
|
-
const file = {
|
|
1355
|
-
fileHashHexString: hashTag ? hashTag.getValue().toString("hex") : void 0,
|
|
1356
|
-
fileName: fileNameTag ? fileNameTag.getValue() : void 0,
|
|
1357
|
-
filePath: findTag(tags, 1032 /* EC_TAG_KNOWNFILE_FILENAME */)?.getValue(),
|
|
1358
|
-
sizeFull: toNumber(findNumericTag(tags, 771 /* EC_TAG_PARTFILE_SIZE_FULL */)?.getLong()),
|
|
1359
|
-
fileEd2kLink: findTag(tags, 782 /* EC_TAG_PARTFILE_ED2K_LINK */)?.getValue(),
|
|
1360
|
-
// Transfer info
|
|
1361
|
-
partMetID: findNumericTag(tags, 770 /* EC_TAG_PARTFILE_PARTMETID */)?.getShort(),
|
|
1362
|
-
sizeXfer: toNumber(findNumericTag(tags, 772 /* EC_TAG_PARTFILE_SIZE_XFER */)?.getLong()),
|
|
1363
|
-
sizeDone: toNumber(findNumericTag(tags, 774 /* EC_TAG_PARTFILE_SIZE_DONE */)?.getLong()),
|
|
1364
|
-
fileStatus: findNumericTag(tags, 776 /* EC_TAG_PARTFILE_STATUS */)?.getInt() ?? 0,
|
|
1365
|
-
stopped: (findNumericTag(tags, 791 /* EC_TAG_PARTFILE_STOPPED */)?.getInt() ?? 0) !== 0,
|
|
1366
|
-
sourceCount: findNumericTag(tags, 778 /* EC_TAG_PARTFILE_SOURCE_COUNT */)?.getShort() ?? 0,
|
|
1367
|
-
sourceNotCurrCount: findNumericTag(tags, 780 /* EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT */)?.getShort() ?? 0,
|
|
1368
|
-
sourceXferCount: findNumericTag(tags, 781 /* EC_TAG_PARTFILE_SOURCE_COUNT_XFER */)?.getShort() ?? 0,
|
|
1369
|
-
sourceCountA4AF: findNumericTag(tags, 779 /* EC_TAG_PARTFILE_SOURCE_COUNT_A4AF */)?.getShort() ?? 0,
|
|
1370
|
-
speed: toNumber(findNumericTag(tags, 775 /* EC_TAG_PARTFILE_SPEED */)?.getLong()),
|
|
1371
|
-
downPrio: findNumericTag(tags, 777 /* EC_TAG_PARTFILE_PRIO */)?.getInt() ?? 0,
|
|
1372
|
-
fileCat: toNumber(findNumericTag(tags, 783 /* EC_TAG_PARTFILE_CAT */)?.getLong()),
|
|
1373
|
-
lastSeenComplete: toNumber(findNumericTag(tags, 785 /* EC_TAG_PARTFILE_LAST_SEEN_COMP */)?.getLong()),
|
|
1374
|
-
lastDateChanged: toNumber(findNumericTag(tags, 784 /* EC_TAG_PARTFILE_LAST_RECV */)?.getLong()),
|
|
1375
|
-
downloadActiveTime: findNumericTag(tags, 792 /* EC_TAG_PARTFILE_DOWNLOAD_ACTIVE */)?.getInt() ?? 0,
|
|
1376
|
-
availablePartCount: findNumericTag(tags, 797 /* EC_TAG_PARTFILE_AVAILABLE_PARTS */)?.getShort() ?? 0,
|
|
1377
|
-
a4AFAuto: (findNumericTag(tags, 801 /* EC_TAG_PARTFILE_A4AFAUTO */)?.getInt() ?? 0) !== 0,
|
|
1378
|
-
hashingProgress: (findNumericTag(tags, 800 /* EC_TAG_PARTFILE_HASHED_PART_COUNT */)?.getInt() ?? 0) !== 0,
|
|
1379
|
-
// Statistics
|
|
1380
|
-
getLostDueToCorruption: toNumber(findNumericTag(tags, 793 /* EC_TAG_PARTFILE_LOST_CORRUPTION */)?.getLong()),
|
|
1381
|
-
getGainDueToCompression: toNumber(findNumericTag(tags, 794 /* EC_TAG_PARTFILE_GAINED_COMPRESSION */)?.getLong()),
|
|
1382
|
-
totalPacketsSavedDueToICH: findNumericTag(tags, 795 /* EC_TAG_PARTFILE_SAVED_ICH */)?.getInt() ?? 0,
|
|
1383
|
-
// Known file shared info (defaults)
|
|
1384
|
-
upPrio: findNumericTag(tags, 1035 /* EC_TAG_KNOWNFILE_PRIO */)?.getInt() ?? 0,
|
|
1385
|
-
getRequests: findNumericTag(tags, 1027 /* EC_TAG_KNOWNFILE_REQ_COUNT */)?.getShort() ?? 0,
|
|
1386
|
-
getAllRequests: findNumericTag(tags, 1028 /* EC_TAG_KNOWNFILE_REQ_COUNT_ALL */)?.getInt() ?? 0,
|
|
1387
|
-
getAccepts: findNumericTag(tags, 1029 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT */)?.getShort() ?? 0,
|
|
1388
|
-
getAllAccepts: findNumericTag(tags, 1030 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL */)?.getInt() ?? 0,
|
|
1389
|
-
getXferred: toNumber(findNumericTag(tags, 1025 /* EC_TAG_KNOWNFILE_XFERRED */)?.getLong()),
|
|
1390
|
-
getAllXferred: toNumber(findNumericTag(tags, 1026 /* EC_TAG_KNOWNFILE_XFERRED_ALL */)?.getLong()),
|
|
1391
|
-
getCompleteSourcesLow: findNumericTag(tags, 1033 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW */)?.getShort() ?? 0,
|
|
1392
|
-
getCompleteSourcesHigh: findNumericTag(tags, 1034 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH */)?.getShort() ?? 0,
|
|
1393
|
-
getCompleteSources: findNumericTag(tags, 1037 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES */)?.getShort() ?? 0,
|
|
1394
|
-
getOnQueue: findNumericTag(tags, 1036 /* EC_TAG_KNOWNFILE_ON_QUEUE */)?.getShort() ?? 0,
|
|
1395
|
-
getComment: findTag(tags, 1038 /* EC_TAG_KNOWNFILE_COMMENT */)?.getValue(),
|
|
1396
|
-
getRating: findNumericTag(tags, 1039 /* EC_TAG_KNOWNFILE_RATING */)?.getInt(),
|
|
1397
|
-
a4afSources
|
|
1398
|
-
};
|
|
1399
|
-
files.push(file);
|
|
1400
|
-
}
|
|
1401
|
-
return { files };
|
|
1402
|
-
}
|
|
1403
|
-
};
|
|
1404
|
-
}
|
|
1405
|
-
});
|
|
1406
|
-
|
|
1407
1685
|
// src/request/SharedFilesRequest.ts
|
|
1408
1686
|
var SharedFilesRequest_exports = {};
|
|
1409
1687
|
__export(SharedFilesRequest_exports, {
|
|
@@ -1425,57 +1703,6 @@ var init_SharedFilesRequest = __esm({
|
|
|
1425
1703
|
}
|
|
1426
1704
|
});
|
|
1427
1705
|
|
|
1428
|
-
// src/response/SharedFilesResponse.ts
|
|
1429
|
-
var SharedFilesResponse_exports = {};
|
|
1430
|
-
__export(SharedFilesResponse_exports, {
|
|
1431
|
-
SharedFilesResponseParser: () => SharedFilesResponseParser
|
|
1432
|
-
});
|
|
1433
|
-
function toNumber2(value, defaultValue = 0) {
|
|
1434
|
-
if (value === void 0) return defaultValue;
|
|
1435
|
-
return typeof value === "bigint" ? Number(value) : value;
|
|
1436
|
-
}
|
|
1437
|
-
var SharedFilesResponseParser;
|
|
1438
|
-
var init_SharedFilesResponse = __esm({
|
|
1439
|
-
"src/response/SharedFilesResponse.ts"() {
|
|
1440
|
-
"use strict";
|
|
1441
|
-
init_Codes();
|
|
1442
|
-
init_Tag();
|
|
1443
|
-
SharedFilesResponseParser = class {
|
|
1444
|
-
static fromPacket(packet) {
|
|
1445
|
-
const files = [];
|
|
1446
|
-
const knownfileTags = packet.tags.filter((tag) => tag.name === 1024 /* EC_TAG_KNOWNFILE */);
|
|
1447
|
-
for (const fileTag of knownfileTags) {
|
|
1448
|
-
const tags = fileTag.nestedTags || [];
|
|
1449
|
-
const hashTag = findTag(tags, 798 /* EC_TAG_PARTFILE_HASH */);
|
|
1450
|
-
const fileNameTag = findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */);
|
|
1451
|
-
const file = {
|
|
1452
|
-
fileHashHexString: hashTag ? hashTag.getValue().toString("hex") : void 0,
|
|
1453
|
-
fileName: fileNameTag ? fileNameTag.getValue() : void 0,
|
|
1454
|
-
filePath: findTag(tags, 1032 /* EC_TAG_KNOWNFILE_FILENAME */)?.getValue(),
|
|
1455
|
-
sizeFull: toNumber2(findNumericTag(tags, 771 /* EC_TAG_PARTFILE_SIZE_FULL */)?.getLong()),
|
|
1456
|
-
fileEd2kLink: findTag(tags, 782 /* EC_TAG_PARTFILE_ED2K_LINK */)?.getValue(),
|
|
1457
|
-
upPrio: findNumericTag(tags, 1035 /* EC_TAG_KNOWNFILE_PRIO */)?.getInt() ?? 0,
|
|
1458
|
-
getRequests: findNumericTag(tags, 1027 /* EC_TAG_KNOWNFILE_REQ_COUNT */)?.getShort() ?? 0,
|
|
1459
|
-
getAllRequests: findNumericTag(tags, 1028 /* EC_TAG_KNOWNFILE_REQ_COUNT_ALL */)?.getInt() ?? 0,
|
|
1460
|
-
getAccepts: findNumericTag(tags, 1029 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT */)?.getShort() ?? 0,
|
|
1461
|
-
getAllAccepts: findNumericTag(tags, 1030 /* EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL */)?.getInt() ?? 0,
|
|
1462
|
-
getXferred: toNumber2(findNumericTag(tags, 1025 /* EC_TAG_KNOWNFILE_XFERRED */)?.getLong()),
|
|
1463
|
-
getAllXferred: toNumber2(findNumericTag(tags, 1026 /* EC_TAG_KNOWNFILE_XFERRED_ALL */)?.getLong()),
|
|
1464
|
-
getCompleteSourcesLow: findNumericTag(tags, 1033 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW */)?.getShort() ?? 0,
|
|
1465
|
-
getCompleteSourcesHigh: findNumericTag(tags, 1034 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH */)?.getShort() ?? 0,
|
|
1466
|
-
getCompleteSources: findNumericTag(tags, 1037 /* EC_TAG_KNOWNFILE_COMPLETE_SOURCES */)?.getShort() ?? 0,
|
|
1467
|
-
getOnQueue: findNumericTag(tags, 1036 /* EC_TAG_KNOWNFILE_ON_QUEUE */)?.getShort() ?? 0,
|
|
1468
|
-
getComment: findTag(tags, 1038 /* EC_TAG_KNOWNFILE_COMMENT */)?.getValue(),
|
|
1469
|
-
getRating: findNumericTag(tags, 1039 /* EC_TAG_KNOWNFILE_RATING */)?.getInt()
|
|
1470
|
-
};
|
|
1471
|
-
files.push(file);
|
|
1472
|
-
}
|
|
1473
|
-
return { files };
|
|
1474
|
-
}
|
|
1475
|
-
};
|
|
1476
|
-
}
|
|
1477
|
-
});
|
|
1478
|
-
|
|
1479
1706
|
// src/request/ClientQueueRequest.ts
|
|
1480
1707
|
var ClientQueueRequest_exports = {};
|
|
1481
1708
|
__export(ClientQueueRequest_exports, {
|
|
@@ -1497,91 +1724,6 @@ var init_ClientQueueRequest = __esm({
|
|
|
1497
1724
|
}
|
|
1498
1725
|
});
|
|
1499
1726
|
|
|
1500
|
-
// src/response/utils.ts
|
|
1501
|
-
function formatIp(ip) {
|
|
1502
|
-
if (ip === void 0) return "";
|
|
1503
|
-
return [ip >>> 24 & 255, ip >>> 16 & 255, ip >>> 8 & 255, ip & 255].join(".");
|
|
1504
|
-
}
|
|
1505
|
-
var init_utils = __esm({
|
|
1506
|
-
"src/response/utils.ts"() {
|
|
1507
|
-
"use strict";
|
|
1508
|
-
}
|
|
1509
|
-
});
|
|
1510
|
-
|
|
1511
|
-
// src/response/ClientQueueResponse.ts
|
|
1512
|
-
var ClientQueueResponse_exports = {};
|
|
1513
|
-
__export(ClientQueueResponse_exports, {
|
|
1514
|
-
ClientQueueResponseParser: () => ClientQueueResponseParser
|
|
1515
|
-
});
|
|
1516
|
-
function toNumber3(value, defaultValue = 0) {
|
|
1517
|
-
if (value === void 0) return defaultValue;
|
|
1518
|
-
return typeof value === "bigint" ? Number(value) : value;
|
|
1519
|
-
}
|
|
1520
|
-
var ClientQueueResponseParser;
|
|
1521
|
-
var init_ClientQueueResponse = __esm({
|
|
1522
|
-
"src/response/ClientQueueResponse.ts"() {
|
|
1523
|
-
"use strict";
|
|
1524
|
-
init_Codes();
|
|
1525
|
-
init_Tag();
|
|
1526
|
-
init_utils();
|
|
1527
|
-
ClientQueueResponseParser = class {
|
|
1528
|
-
static fromPacket(packet) {
|
|
1529
|
-
const clients = [];
|
|
1530
|
-
const clientTags = packet.tags.filter((tag) => tag.name === 1536 /* EC_TAG_CLIENT */);
|
|
1531
|
-
for (const clientTag of clientTags) {
|
|
1532
|
-
const tags = clientTag.nestedTags || [];
|
|
1533
|
-
const client = {
|
|
1534
|
-
clientName: findTag(tags, 256 /* EC_TAG_CLIENT_NAME */)?.getValue(),
|
|
1535
|
-
userHashHexString: findTag(tags, 1539 /* EC_TAG_CLIENT_HASH */)?.getValue().toString("hex"),
|
|
1536
|
-
userID: findNumericTag(tags, 1566 /* EC_TAG_CLIENT_USER_ID */)?.getInt(),
|
|
1537
|
-
score: findNumericTag(tags, 1538 /* EC_TAG_CLIENT_SCORE */)?.getInt(),
|
|
1538
|
-
software: findTag(tags, 1537 /* EC_TAG_CLIENT_SOFTWARE */)?.getValue(),
|
|
1539
|
-
softVerStr: findTag(tags, 1557 /* EC_TAG_CLIENT_SOFT_VER_STR */)?.getValue(),
|
|
1540
|
-
userIP: formatIp(findNumericTag(tags, 1552 /* EC_TAG_CLIENT_USER_IP */)?.getInt()),
|
|
1541
|
-
userPort: findNumericTag(tags, 1553 /* EC_TAG_CLIENT_USER_PORT */)?.getInt(),
|
|
1542
|
-
sourceFrom: toNumber3(findNumericTag(tags, 1551 /* EC_TAG_CLIENT_FROM */)?.getLong()),
|
|
1543
|
-
serverIP: formatIp(findNumericTag(tags, 1554 /* EC_TAG_CLIENT_SERVER_IP */)?.getInt()),
|
|
1544
|
-
serverPort: findNumericTag(tags, 1555 /* EC_TAG_CLIENT_SERVER_PORT */)?.getInt(),
|
|
1545
|
-
serverName: findTag(tags, 1556 /* EC_TAG_CLIENT_SERVER_NAME */)?.getValue(),
|
|
1546
|
-
upSpeed: toNumber3(findNumericTag(tags, 1549 /* EC_TAG_CLIENT_UP_SPEED */)?.getLong()),
|
|
1547
|
-
downSpeed: toNumber3(findNumericTag(tags, 1550 /* EC_TAG_CLIENT_DOWN_SPEED */)?.getLong()),
|
|
1548
|
-
uploadSession: toNumber3(findNumericTag(tags, 1545 /* EC_TAG_CLIENT_UPLOAD_SESSION */)?.getLong()),
|
|
1549
|
-
transferredDown: toNumber3(findNumericTag(tags, 772 /* EC_TAG_PARTFILE_SIZE_XFER */)?.getLong()),
|
|
1550
|
-
uploadedTotal: toNumber3(findNumericTag(tags, 1546 /* EC_TAG_CLIENT_UPLOAD_TOTAL */)?.getLong()),
|
|
1551
|
-
downloadedTotal: toNumber3(findNumericTag(tags, 1547 /* EC_TAG_CLIENT_DOWNLOAD_TOTAL */)?.getLong()),
|
|
1552
|
-
uploadState: findNumericTag(tags, 1564 /* EC_TAG_CLIENT_UPLOAD_STATE */)?.getInt(),
|
|
1553
|
-
downloadState: findNumericTag(tags, 1548 /* EC_TAG_CLIENT_DOWNLOAD_STATE */)?.getInt(),
|
|
1554
|
-
identState: findNumericTag(tags, 1559 /* EC_TAG_CLIENT_IDENT_STATE */)?.getInt(),
|
|
1555
|
-
extProtocol: findNumericTag(tags, 1565 /* EC_TAG_CLIENT_EXT_PROTOCOL */)?.getInt(),
|
|
1556
|
-
waitingPosition: findNumericTag(tags, 1558 /* EC_TAG_CLIENT_WAITING_POSITION */)?.getInt(),
|
|
1557
|
-
remoteQueueRank: findNumericTag(tags, 1562 /* EC_TAG_CLIENT_REMOTE_QUEUE_RANK */)?.getInt(),
|
|
1558
|
-
oldRemoteQueueRank: findNumericTag(tags, 1570 /* EC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK */)?.getInt(),
|
|
1559
|
-
obfuscationStatus: findNumericTag(tags, 1560 /* EC_TAG_CLIENT_OBFUSCATION_STATUS */)?.getInt(),
|
|
1560
|
-
kadPort: findNumericTag(tags, 1571 /* EC_TAG_CLIENT_KAD_PORT */)?.getInt(),
|
|
1561
|
-
friendSlot: findNumericTag(tags, 1540 /* EC_TAG_CLIENT_FRIEND_SLOT */)?.getInt(),
|
|
1562
|
-
uploadFileId: toNumber3(findNumericTag(tags, 1567 /* EC_TAG_CLIENT_UPLOAD_FILE */)?.getLong()),
|
|
1563
|
-
uploadFilename: findTag(tags, 769 /* EC_TAG_PARTFILE_NAME */)?.getValue(),
|
|
1564
|
-
requestFileId: toNumber3(findNumericTag(tags, 1568 /* EC_TAG_CLIENT_REQUEST_FILE */)?.getLong()),
|
|
1565
|
-
remoteFilename: findTag(tags, 1575 /* EC_TAG_CLIENT_REMOTE_FILENAME */)?.getValue(),
|
|
1566
|
-
disableViewShared: !!findNumericTag(tags, 1563 /* EC_TAG_CLIENT_DISABLE_VIEW_SHARED */)?.getInt(),
|
|
1567
|
-
version: findNumericTag(tags, 257 /* EC_TAG_CLIENT_VERSION */)?.getInt(),
|
|
1568
|
-
modVersion: findTag(tags, 1576 /* EC_TAG_CLIENT_MOD_VERSION */)?.getValue(),
|
|
1569
|
-
osInfo: findTag(tags, 1577 /* EC_TAG_CLIENT_OS_INFO */)?.getValue(),
|
|
1570
|
-
availableParts: findNumericTag(tags, 1578 /* EC_TAG_CLIENT_AVAILABLE_PARTS */)?.getInt(),
|
|
1571
|
-
partStatus: findTag(tags, 1572 /* EC_TAG_CLIENT_PART_STATUS */)?.getValue(),
|
|
1572
|
-
nextRequestedPart: findNumericTag(tags, 1573 /* EC_TAG_CLIENT_NEXT_REQUESTED_PART */)?.getInt(),
|
|
1573
|
-
lastDownloadingPart: findNumericTag(tags, 1574 /* EC_TAG_CLIENT_LAST_DOWNLOADING_PART */)?.getInt(),
|
|
1574
|
-
uploadPartStatus: findTag(tags, 1579 /* EC_TAG_CLIENT_UPLOAD_PART_STATUS */)?.getValue()
|
|
1575
|
-
// Additional fields can be added here as needed
|
|
1576
|
-
};
|
|
1577
|
-
clients.push(client);
|
|
1578
|
-
}
|
|
1579
|
-
return { clients };
|
|
1580
|
-
}
|
|
1581
|
-
};
|
|
1582
|
-
}
|
|
1583
|
-
});
|
|
1584
|
-
|
|
1585
1727
|
// src/request/ServerListRequest.ts
|
|
1586
1728
|
var ServerListRequest_exports = {};
|
|
1587
1729
|
__export(ServerListRequest_exports, {
|
|
@@ -1601,61 +1743,6 @@ var init_ServerListRequest = __esm({
|
|
|
1601
1743
|
}
|
|
1602
1744
|
});
|
|
1603
1745
|
|
|
1604
|
-
// src/response/ServerListResponse.ts
|
|
1605
|
-
var ServerListResponse_exports = {};
|
|
1606
|
-
__export(ServerListResponse_exports, {
|
|
1607
|
-
ServerListResponseParser: () => ServerListResponseParser
|
|
1608
|
-
});
|
|
1609
|
-
var ServerListResponseParser;
|
|
1610
|
-
var init_ServerListResponse = __esm({
|
|
1611
|
-
"src/response/ServerListResponse.ts"() {
|
|
1612
|
-
"use strict";
|
|
1613
|
-
init_Codes();
|
|
1614
|
-
init_Tag();
|
|
1615
|
-
init_utils();
|
|
1616
|
-
ServerListResponseParser = class {
|
|
1617
|
-
static fromPacket(packet) {
|
|
1618
|
-
const servers = [];
|
|
1619
|
-
const serverTags = packet.tags.filter((tag) => tag.name === 1280 /* EC_TAG_SERVER */);
|
|
1620
|
-
for (const serverTag of serverTags) {
|
|
1621
|
-
const nested = serverTag.nestedTags || [];
|
|
1622
|
-
const ipv4Tag = findTag(nested, 1292 /* EC_TAG_SERVER_IP */) || findTag(nested, 1283 /* EC_TAG_SERVER_ADDRESS */) || (serverTag.constructor.name.includes("Ipv4") ? serverTag : null);
|
|
1623
|
-
let ip = "";
|
|
1624
|
-
let port = 0;
|
|
1625
|
-
if (ipv4Tag && ipv4Tag.getValue() && typeof ipv4Tag.getValue() === "object" && "address" in ipv4Tag.getValue()) {
|
|
1626
|
-
const val = ipv4Tag.getValue();
|
|
1627
|
-
ip = val.address;
|
|
1628
|
-
port = val.port;
|
|
1629
|
-
} else {
|
|
1630
|
-
const ipNum = findNumericTag(nested, 1292 /* EC_TAG_SERVER_IP */)?.getInt() || findNumericTag(packet.tags, 1292 /* EC_TAG_SERVER_IP */)?.getInt();
|
|
1631
|
-
port = findNumericTag(nested, 1293 /* EC_TAG_SERVER_PORT */)?.getInt() || findNumericTag(packet.tags, 1293 /* EC_TAG_SERVER_PORT */)?.getInt() || 0;
|
|
1632
|
-
ip = formatIp(ipNum);
|
|
1633
|
-
}
|
|
1634
|
-
if (port === 0) {
|
|
1635
|
-
port = findNumericTag(nested, 1293 /* EC_TAG_SERVER_PORT */)?.getInt() || 0;
|
|
1636
|
-
}
|
|
1637
|
-
servers.push({
|
|
1638
|
-
name: findTag(nested, 1281 /* EC_TAG_SERVER_NAME */)?.getValue() || "Unknown",
|
|
1639
|
-
description: findTag(nested, 1282 /* EC_TAG_SERVER_DESC */)?.getValue(),
|
|
1640
|
-
address: findTag(nested, 1283 /* EC_TAG_SERVER_ADDRESS */)?.getValue(),
|
|
1641
|
-
ip,
|
|
1642
|
-
port,
|
|
1643
|
-
ping: findNumericTag(nested, 1284 /* EC_TAG_SERVER_PING */)?.getInt(),
|
|
1644
|
-
users: findNumericTag(nested, 1285 /* EC_TAG_SERVER_USERS */)?.getInt(),
|
|
1645
|
-
maxUsers: findNumericTag(nested, 1286 /* EC_TAG_SERVER_USERS_MAX */)?.getInt(),
|
|
1646
|
-
files: findNumericTag(nested, 1287 /* EC_TAG_SERVER_FILES */)?.getInt(),
|
|
1647
|
-
priority: findNumericTag(nested, 1288 /* EC_TAG_SERVER_PRIO */)?.getInt() || 0,
|
|
1648
|
-
version: findTag(nested, 1291 /* EC_TAG_SERVER_VERSION */)?.getValue(),
|
|
1649
|
-
isStatic: !!findNumericTag(nested, 1290 /* EC_TAG_SERVER_STATIC */)?.getInt(),
|
|
1650
|
-
failedCount: findNumericTag(nested, 1289 /* EC_TAG_SERVER_FAILED */)?.getInt() || 0
|
|
1651
|
-
});
|
|
1652
|
-
}
|
|
1653
|
-
return { servers };
|
|
1654
|
-
}
|
|
1655
|
-
};
|
|
1656
|
-
}
|
|
1657
|
-
});
|
|
1658
|
-
|
|
1659
1746
|
// src/request/ServerConnectRequest.ts
|
|
1660
1747
|
var ServerConnectRequest_exports = {};
|
|
1661
1748
|
__export(ServerConnectRequest_exports, {
|
|
@@ -2803,6 +2890,16 @@ var AmuleClient = class {
|
|
|
2803
2890
|
const packet = await this.connection.sendRequest(request);
|
|
2804
2891
|
return StatsResponseParser2.fromPacket(packet);
|
|
2805
2892
|
}
|
|
2893
|
+
/**
|
|
2894
|
+
* Get incremental updates for files, clients, servers, and friends
|
|
2895
|
+
*/
|
|
2896
|
+
async getUpdate(detailLevel = 4 /* EC_DETAIL_INC_UPDATE */) {
|
|
2897
|
+
const { UpdateRequest: UpdateRequest2 } = await Promise.resolve().then(() => (init_UpdateRequest(), UpdateRequest_exports));
|
|
2898
|
+
const { UpdateResponseParser: UpdateResponseParser2 } = await Promise.resolve().then(() => (init_UpdateResponse(), UpdateResponse_exports));
|
|
2899
|
+
const request = new UpdateRequest2(detailLevel);
|
|
2900
|
+
const packet = await this.connection.sendRequest(request);
|
|
2901
|
+
return UpdateResponseParser2.fromPacket(packet);
|
|
2902
|
+
}
|
|
2806
2903
|
/**
|
|
2807
2904
|
* Start an asynchronous search
|
|
2808
2905
|
*/
|